PKc\- uninstall.phpnuW+A sfwd-courses sfwd-lessons sfwd-topic sfwd-quiz sfwd-question sfwd-assignment sfwd-essays groups sfwd-certificates sfwd-transactions ld_course_category ld_course_tag ld_lesson_category ld_lesson_tag ld_topic_category ld_topic_tag course_id lesson_id course_price_billing_p3 course_price_billing_t3 course_sections ld_course_steps course_access_list quiz_pro_id ld_course_steps_dirty ld_auto_enroll_group_courses question_pro_id course_points ld_quiz_questions ld_quiz_questions_dirty learndash_certificate_options question_id ld_essay_grading_response question_points question_type question_pro_id question_pro_category _sfwd-courses _sfwd-lessons _sfwd-topic _sfwd-quiz _sfwd-question PKc\ӟ8assets/images/question.pngnuW+APNG  IHDR((mIDATxMKQP. QҝjN#X[骛*Ԧ63Zx|r{l\́a89wޛNwJ`%X e{!Nĩ-M&XX ̈#.Hb"ŕHD\Z"HNMcG|/BX*qfQ+:v LA KIYx5ŀoR+n,l ò"'F ܥ "SsE⩧T=?n}>E/!V׌|VX f9A'yxDFvJ3uO'D퍳َi5*kr+R#z,O²f9w!ʼ uP,_w!XKx}9 xV*'D&; ŏM_&bE'J!knYY 漟>[WuQ558l("97/b-,hRӌ] Q4 k1ggA#U-1X)T|5Wqͧ*b]p6k3%4Z8&ɛ%O`}J$N"S~ @X4h^ƪ,T+Jb *IENDB`PKc\-~w w !assets/images/ld-plugin-image.jpgnuW+AJFIFC     C   " 5!1AVQa"2q#38t.!1"SaAQq2B ?DEYxDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDE9e2\1֘;EE,ZFԇ<伇S;\CbYPI? eMu^CG|*SEW[?SElG|*>_%?JOo/G[?SE=x2|vq=e 3gs@P*TJRGRJ->+륲UKGT56 \Fnz_ˊ?cڽ g$}0339o-n `P|LqO tnx^ڢVu;[-kv6{܀*K7u[0a'Dm<-TlX.u9Guh%홏-sIkJ{UUF=p 'VSVCuH;p((o,׶V'w[<4Q/Y'%Y}0߫{%,=>\W5j:1>l8;^ZФ*.( QӨd0^~PǬxڣSM5Ipp'Sۋ9ZAn 9byk3L8z"5m䌦+}s/쬯ccNCkF}t;9uU[ ӟ1ϙ['$$` F8,NvaE$ڜI>FWdʶI?g{)urUY56ʉb|9::zw^ZMΦW+ $B9A>?^t&ު׶;%8(QcU Y/t3w@_yFf=%#-P1lRXmuGF>Y)C$q'.7eJ0 4p˫Q!@LgN W:NYkx<7PdyHzޗ@d:>pgl76nԕ=M8SO?/Kvk}MlTޙH;v' B7EBYcFqy,3sB:QB%@QP:uFs&P7Y}vf蠤Uj06I -kKvzG_9ٛB/;i`::n5ofs"""NYs4֌j.0V !s:!zd4*U`șl|V>.g_:d?UU4TKM~Uf[>.g_:d?UOΙgM[kfO^s"4ls$;VWK36<844{H*Ԭڪ1cs!!!!!!!!!!!!!!'PKc\]_ )assets/images/gray_arrow_collapse_rtl.pngnuW+APNG  IHDR+>} AiCCPICC ProfileH wTSϽ7" %z ;HQIP&vDF)VdTG"cE b PQDE݌k 5ޚYg}׺PtX4X\XffGD=HƳ.d,P&s"7C$ E6<~&S2)212 "įl+ɘ&Y4Pޚ%ᣌ\%g|eTI(L0_&l2E9r9hxgIbטifSb1+MxL 0oE%YmhYh~S=zU&ϞAYl/$ZUm@O ޜl^ ' lsk.+7oʿ9V;?#I3eE妧KD d9i,UQ h A1vjpԁzN6p\W p G@ K0ށiABZyCAP8C@&*CP=#t] 4}a ٰ;GDxJ>,_“@FXDBX$!k"EHqaYbVabJ0՘cVL6f3bձX'?v 6-V``[a;p~\2n5׌ &x*sb|! ߏƿ' Zk! $l$T4QOt"y\b)AI&NI$R$)TIj"]&=&!:dGrY@^O$ _%?P(&OJEBN9J@y@yCR nXZOD}J}/G3ɭk{%Oחw_.'_!JQ@SVF=IEbbbb5Q%O@%!BӥyҸM:e0G7ӓ e%e[(R0`3R46i^)*n*|"fLUo՝mO0j&jajj.ϧwϝ_4갺zj=U45nɚ4ǴhZ ZZ^0Tf%9->ݫ=cXgN].[7A\SwBOK/X/_Q>QG[ `Aaac#*Z;8cq>[&IIMST`ϴ kh&45ǢYYF֠9<|y+ =X_,,S-,Y)YXmĚk]c}džjcΦ浭-v};]N"&1=xtv(}'{'IߝY) Σ -rqr.d._xpUەZM׍vm=+KGǔ ^WWbj>:>>>v}/avO8 FV> 2 u/_$\BCv< 5 ]s.,4&yUx~xw-bEDCĻHGKwFGEGME{EEKX,YFZ ={$vrK .3\rϮ_Yq*©L_wד+]eD]cIIIOAu_䩔)3ѩiB%a+]3='/40CiU@ёL(sYfLH$%Y jgGeQn~5f5wugv5k֮\۹Nw]m mHFˍenQQ`hBBQ-[lllfjۗ"^bO%ܒY}WwvwXbY^Ю]WVa[q`id2JjGէ{׿m>PkAma꺿g_DHGGu;776ƱqoC{P38!9 ҝˁ^r۽Ug9];}}_~imp㭎}]/}.{^=}^?z8hc' O*?f`ϳgC/Oϩ+FFGGόzˌㅿ)ѫ~wgbk?Jި9mdwi獵ޫ?cǑOO?w| x&mf2:Y~ pHYs  eIDAT(c`2320⒇JcUiP,]E6I\`$A 30n|̙&& @`S ħ"\P`S"V #]-adm~IENDB`PKc\33 *assets/images/green_arrow_collapse_rtl.pngnuW+APNG  IHDR+>} AiCCPICC ProfileH wTSϽ7" %z ;HQIP&vDF)VdTG"cE b PQDE݌k 5ޚYg}׺PtX4X\XffGD=HƳ.d,P&s"7C$ E6<~&S2)212 "įl+ɘ&Y4Pޚ%ᣌ\%g|eTI(L0_&l2E9r9hxgIbטifSb1+MxL 0oE%YmhYh~S=zU&ϞAYl/$ZUm@O ޜl^ ' lsk.+7oʿ9V;?#I3eE妧KD d9i,UQ h A1vjpԁzN6p\W p G@ K0ށiABZyCAP8C@&*CP=#t] 4}a ٰ;GDxJ>,_“@FXDBX$!k"EHqaYbVabJ0՘cVL6f3bձX'?v 6-V``[a;p~\2n5׌ &x*sb|! ߏƿ' Zk! $l$T4QOt"y\b)AI&NI$R$)TIj"]&=&!:dGrY@^O$ _%?P(&OJEBN9J@y@yCR nXZOD}J}/G3ɭk{%Oחw_.'_!JQ@SVF=IEbbbb5Q%O@%!BӥyҸM:e0G7ӓ e%e[(R0`3R46i^)*n*|"fLUo՝mO0j&jajj.ϧwϝ_4갺zj=U45nɚ4ǴhZ ZZ^0Tf%9->ݫ=cXgN].[7A\SwBOK/X/_Q>QG[ `Aaac#*Z;8cq>[&IIMST`ϴ kh&45ǢYYF֠9<|y+ =X_,,S-,Y)YXmĚk]c}džjcΦ浭-v};]N"&1=xtv(}'{'IߝY) Σ -rqr.d._xpUەZM׍vm=+KGǔ ^WWbj>:>>>v}/avO8 FV> 2 u/_$\BCv< 5 ]s.,4&yUx~xw-bEDCĻHGKwFGEGME{EEKX,YFZ ={$vrK .3\rϮ_Yq*©L_wד+]eD]cIIIOAu_䩔)3ѩiB%a+]3='/40CiU@ёL(sYfLH$%Y jgGeQn~5f5wugv5k֮\۹Nw]m mHFˍenQQ`hBBQ-[lllfjۗ"^bO%ܒY}WwvwXbY^Ю]WVa[q`id2JjGէ{׿m>PkAma꺿g_DHGGu;776ƱqoC{P38!9 ҝˁ^r۽Ug9];}}_~imp㭎}]/}.{^=}^?z8hc' O*?f`ϳgC/Oϩ+FFGGόzˌㅿ)ѫ~wgbk?Jި9mdwi獵ޫ?cǑOO?w| x&mf2:Y~ pHYs  bIDAT(} Edt ƫ>i_*YE/ c>NEY`6qflQ{}l k&PQt_3,=KIENDB`PKc\EUassets/images/arrow_left.pngnuW+APNG  IHDRw=tEXtSoftwareAdobe ImageReadyqe<IDATHc`x>h>TΟ `P\>TQq?!S`8 ϧ Ğ0JIxxR$6lI?;̠OĻ DJ80.3pJ'1l|Z[y ǁqZ@Hy2yFyQAŽ5]*Ttl:IENDB`PKc\$[?0$assets/images/green_arrow_expand.pngnuW+APNG  IHDRv cHRMz%u0`:o_F pHYs  d_DIDAT(Sc#?Yx{ f t0@!4^CiP !U3 S9QIENDB`PKc\-assets/images/view.pngnuW+APNG  IHDR'ՆIDAT(KE[|Z!1ʋK!]"ި!ʠ R:y(pIN E۳ƘS˹͍ԹoM|Dgv1>TW_hny@uި%[h +<ɄQ63?E >aDK$ ,!13~I*Fe Vp0&m$2>2_yJk$*T#`Lbڱ:(IJ0?>~2&4}yϾ0,^ /n\h rk5D( "LeYyER=עa8q⬳ v %j/o~1b x8R[R7/.͌ֈ'\ِ))JGpԙk/[G ;'%r&,ٛ#)u/Gfj(E";;1<ɪ.P:),ɐmbbIIENDB`PKc\v}assets/images/checkmark.pngnuW+APNG  IHDR22?sRGBgAMA a pHYs  ~tEXtSoftwarepaint.net 4.1.6N IDAThC͚kQSQAt!ELܨ@\ (B] 5M҇.Q-*6E)6EW>Lw&wlgf|Ӷ˽wνT%t)I定R|?'Y% ӡ o 4%cEI}ExǶ0ްaNiMQ "o2 2A] #FSU 3FɩFˆkcc^PakIuR*zmivG m|z5RC"Jz 9]E/0IG_N!S,/J2vLFx`~b$gmH;*0-mقH>d :~xdaʀy %F'W0U&tQ)[ |kh~\]ƚ~%^oך>fϯ2j 3A<!׊ HBOg&~$h:0 W>|b8iMNjKʜѥ fT N?뀸֓A@"G99G,AW[t[)Il=kz0-=goZl0[v:k?ggOvn򄓉@\%D9dW􈵲-wZyHv.mQ>@ov'yPUf-T/L)|Rnkn 54ދ=#L0LQE-1!LPb^N2XhqVv7oB7ް׎y"Ѿ |{'~@:IRɸK(]b} e1G"숇bEIENDB`PKc\oddassets/images/nologo.jpgnuW+AJFIFHHCC E  !"1A24Vt#7BQSauR$q%38C ?\[bvRX.\E?F?RF~17Vun*$Z.3h~6{gy^P=3<_Gׯy#j|@s>  ޶b;SͿ"ÉFjAn"#YB薠/*uJ\QHM)䔠0G("Nّn#/30Wyv~ސWFNK+\>Kߠ[pϩC= ;c&mN{G'yE->3Pb%NP_p:-.4GYqn/"# `%%E*O22>#O˳~􀢺4zuZS)_ (w{-?$:{\Di5V~O)^I~䫟>JwX'Ib6\*Sb ץ+rSի5%ܮ4#%)&FFY#./@5S)_ (w{-?$֠+T?JWH +G]OI4hw[(fE%.96GMdI*,¶4OeB*UuJOQɚ>VXZ2Gd\ȏY 3ޭk -=l$۝=8R),lGD/P'}=f|4_|OGY;}.ZLtDɐȔo9Q֣Gn.O, Ǘ2n3Iw ;K}ⶡ&mmRx.D3>,7x÷*[.w i2Vs,/NJQj~ ..SMEЖ&)dy_g &8sj)%t45M$fd<~F2NK~&SeJ ks'Ye,% vx{phPIE(,'yI/Sx T Zm&~ %>@2#RnuUtRpFyY1$=q.>՛4$ːr.rD(*2Y"<-[7pf\;v+U#XQoWDV?Tn!)Js8/  u-*Ӹt[im2Ҍ)\^p{[|2L]"[S|UujKhFZ`ɬs--yE0׀1E_I/zc.\B4PI/Kx\9i/?inV/b5)y9Q?e}+".+J&㤟S\~ J&p;x|@I^W4Źߒ1e&j4 p!2|)I2sg[z+SbSjsR>P;CoDV[#=7cNs$PI3L֨s'V4f\F[(-Q#Q\ӗc'c\(SِښyYꝆEN 9D X6M~b},sMژˌ)Iti?#Rrwe#LͮyO3D? w$Mwo>zqAl6ql*ݔHn}kh9#᛻yr9 սyUvbqӏ)S5o˹tC)qMoEqHk-kg?Q5}k)8MTf ',1~@-ѹghNE-)SXT)TSrٍ)MUh\UoZ I-򣦗=/%U.MB iG $̰Dg^C-%cA:xDk' hCw|̺ܳ/8 [8:l*>e*H>:IdrX<)82?2G̀R%%*\D}2[Yq4e1CX#mHm ςRD@9 ?PKc\c7assets/images/incompletex.pngnuW+APNG  IHDR22?sRGBgAMA a pHYs  ~tEXtSoftwarepaint.net 4.1.6N IDAThC͚K@?(ֲୈ=+*CO"k/`mBz҂ARg>OvbdMfyflXoo'o6p= >o2-dMc,B0Y; G'A_pT^S`?Pjԅb(=D`~ڪgmmmwḀ*S!Hg𛿐z @_qmV$3Bџ舱♂+8mx5sjF鰻 Soc7OhhEB ~~ɫpe.M# XFLqeKq3aBxf O ulJylȦXɎ}5 7iJcȝ/Q܎'،t0)kf8 RlNa;c a&M&a7ãkbN|a0IfcF{wcrkBӜLNڝ&^DLƊnt"DfOyGp xDI!Fk8zkV 1~wP 3[IS&,t CIENDB`PKc\cassets/images/expand.pngnuW+APNG  IHDRaIDATxݒNa-mTP UD0 éaH5#Oj끓Zt%bQ11>7<ɴBbb:IcBg/h$_ow+_-pMx4}BSSX֮a3H޾e)}`GJr%*g1vC2M$S|f:֦KaV`XzدNdSh͙{Hc@v"#l>AeIț ͚|&xx 2 ҙ]'Y5U]AWAY XyASSΕ'ECPC&b Hp] d't%Tc7hAB'QDaaܒ\V"P[AP>X20H0 uZT]LVk"ւ_n}IENDB`PKc\C[Z^^)assets/images/ui-icons_222222_256x240.pngnuW+APNG  IHDREr@gAMA a cHRMz&u0`:pQ<bKGD"bTIDATxm%Uy $!,h ,%&@|IEMrݱD2;f ܉A^$5Ƣj^K@U-wWD`|q"t>ν3}S~9}<>|Dg7\J{4K 3tfZޱ`7u7Yɶ~f]<4m*<%%{^`FR l8<Oh8<Ok2n6cL`>]=u$,`&+hk6J_*|K0?@lxdom]L3ݞߌ0.;TE,;4tMOmPLUA&e+`8u]577~"h8<Oh8<]C8YsZ}iA ֠)ȞsW.!m. z[#R䨚 \R{v r R ?˝#[|f`y)A-QN 4wϮ:Kr{河3ZP!0t{l\YwSnPIA.Vm-R $ysI@;eغX.vYvB n]gWcVn*ôyT=Mhpt +3 '@ px4 '@ pC`=x?.jlk]R Q.ޫ5@P,[Zj6ƵKɟڕ[ ,P/5/thzG]Yn!wk9څR+@K tťa.mKu DM篂U!LgK\At$VrX˒`LoMe/R+X.X.]L]Nq%e7w"< ּp뻴ʩ@  uǤ OO7 '@ px4 PdrvM{wQve{Ȯ]0d1w%L,vQwqyyx`]jW.!WWl/D3,v܁6]iZ<:IݯtM~9UPi!snS!QyU緯lJ Ț!$(7-/ޮB¤F[^)F#*U$`7\!OUŪ3ǐ_J:𨃏ܽX6X!|.!}t$ePROQա/P[Cmb,=XA!tho14]Zh=Oh8<#@keEٲM&IKѢ&b04(.%thtIH2>Dgͳ]ݢ@NE]hɟ|T=m5@ .#BW2wQ׿¨alrvEb)n#ය݄F/N6%t]KX" nz"t.'`[A-y-LTi rgW=)lj&˺;YeF,6CG_0l;y1|5'@ px4SLT_ʿߐ:ADV\cK !e8L}F{=.y0~w,ݭ9^n gH]Y,b}H!0 La4-Uڣ$R|crQx/a _seRmDz$V\ 3<ɔ0㗹1VD#a=5!*,6~ ^#Jt Wg{ȃsd,o9X1 ?*uuB,=`޻'1l$[Gx4 '@ DΞ-z)E}:g˖ gÁyk>fiNa~  ɏk`.73PȸҜ;+ ZpMlbinFݬLپȓ4 :a.0JN.pk8NPx\lh݅x2iǹ?OH5M@.K4p\a/>ay%^zU25O'0VOsMR4"0VܞFqyYEL0])PK~Irx /Qs*SL1fn>6U4>i#\}cJjrjo_u8n,JFgyFk6a[0y|kS\6 + )L*g EDخq|Y_'-?Z";<Wϼ= [\IL}‹7OqX 4<z7=~CP6w'ƟL~*?7ȳg%npMBC{ L^O2;C!-c%DP]y_VaX1uҗEc_t'[PP> `4B "O7ՑF3 <5ϝ|B.0#bb],ҥK{/QWܯd0~.ꏜ}eK Y@3>?_"X,u5OԘ(xsG4DI 4 '@ p4XNIMs(,ѡކ<&R=>@]ZG^ _Hk|p7rFp,/^>G-B+7(z3d-A^'qzj z_`I:L0T|aɄ܇'/CTS̤ U (.2Rr ?< aGBKsRƔ[IlcylU_ɷxO QH1NcӺ#?5f4ߣ3lgGAnjԄ&"\r'VZvD)ykCbW;I[‰k!fuiQ*tWsN_~W< g)'8}ږjHzD66Dkx3?xFy znoO+v,bcxsLwxtnGĝlNn2ھIOΐlƟw g kг=ޜlAl)l; )"W2:-.H٥aq66$\0oqnjcC[Oh8<O":F@j1Xg dbݖ3zELHWW+wx0- pxk` px4 '@ pAܣDkH2u]AzwnPExFyAum 0F0bG:1;L6|CGICHRݿ6y~˘{o}@]Q~"h8<Oh8/~B P-d׻͒£"D ;R򠫹 `d] a{ -+PS#R3@O z-̒ ¿rvJQz`W_9HGx\EA2͌r͠&~U>wS[Σ- `9'C~ C@eCٹq_ XzN%tEXtdate:create2014-10-16T11:14:19-04:00}#`%tEXtdate:modify2014-05-26T11:47:31-04:00(tEXtSoftwareAdobe ImageReadyqe<IENDB`PKc\,#assets/images/gray_arrow_expand.pngnuW+APNG  IHDRv cHRMz%u0`:o_F pHYs  ~DIDAT(S n[K馾@Pm R%T3"y2b3D H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FzIDATxڌ1QFrЋZB2 a'"1'lGM;m͋B2Q "E{1D]pژ`5@Yg)螑^'ڡn\a;^ncoIENDB`PKc\%assets/images/gray_arrow_collapse.pngnuW+APNG  IHDR+>} cHRMz%u0`:o_F pHYs  d_QIDAT(S}A [?RjӢv!ɛX牂U}#r#'kOĞ~dVRD)Q(E&}IENDB`PKc\e&assets/images/green_arrow_collapse.pngnuW+APNG  IHDR+>} cHRMz%u0`:o_F pHYs  ~OIDAT(S} 0 CQ CFv *Ӈh>}! tBm jCcb1Øa0f%-ܧ9cٟIENDB`PKc\wᣨ'assets/images/post-type-empty-state.jpgnuW+AJFIFC     C   X"?!1AQ"aq2B#R3b$r%C1!AQaq ?$̐~UbMAAzM 8O?:@?= *E$Ȋ 4%<*ґ$9Ҟ N:`#; IǸ:ԙhbA΀"Pb'" PHQj@3# MTӤsҩJ'=sL^OTBڠTf)F*ւ¨dP T__ޓ̘QG®;wGjw胁LB)⦅J''?n>@R N)!$**G)˅2q<'j~y GI:y{Hv r$NX}0AdGR$D|84eXQd?yHAQ)F'SڪC.V H$u2- < YP$w0OƊnB=+`ې}27փ5 {s\!"V2I= 1PR$h2Rdc||1Af='X̀bUL_࢐:Nf@@ ?ϝp V>5 I'x4-\mXqĨA @ 9ꄧbҡx$?/qN1Z##ҦJP't;U4IJ zL|_XZ:ύ8PCsD24VgꋈBOsAiu֐Hi"AY!+ {) )#De'vP?~7)H$* J7)]v9ZRJ?V0H*݂`W ʜ!)R $-.%p7)&`B ~GƲ[[Ip?lsX(ִr:g>77(.P9~M(rT&ӽXF>񥞠MOʁ"(GNi3@Aj4@㚜Ҁd֏R~T m =I"hE ĜL(sM@(MPaR.hFH;b{P+HU(" 1LD,4s uޘ&!Szn Г֑=gӴKmiNm&Oơpq'޽Gg F]3϶B)$Ba0DJ]U#ikinBrR%$A!Bz1Uq fEېJ" 03]؅6}P8!)FJ{'Ct#LuV%EԱt}{)- UoqxTZ^@I#chJq$ ' .4-ii]l<7n]% IFLg`ΏGfj<)!@d $ Yq svΔG}g~ݼBF[OTђÚǘ\ C`FdI' ʤĕlaY.O\dpcV>`L.'h$9O H[:搤#OJ>hH`s5*uB{]3NQo|;J¤2 VKlo+"P>sL)'vj_xJaEqs2ē();0H&Mˍyo-@C޹SN-RIJNA{}BꖦKPJ#h$IaI22k_togmWfrC>RST&w'IJJ ^+Nr ͳ+!GrABGx?XR mIp G癪LuŽ%0A*ТJгc1TG_6mhIG#-;T6T*NDg#j x IˆPJQR L†LaS#GNEOT9L }J>bH"OUQ'~FAVD$TFޠ^sC+cz@!ToR`\U6R )P;?m+f0z X9JRZ %?8WNr1AKjǬIv:8$&O"*tnRRdfAsd!)$iLL1@@ !I}ĐkqJR7mߑY CiQ% u4dR3 1|CLT#88?N L”S7}@e I~M\P=kI0Ir:dH5{S&dH̘< 'jjBD w֑)szLqل2)@ -$$UJihT+qRq϶OA x$%MOJ ăź\R9) 4 c{R%[^ }2jL)gޘb#iڌEH=( P})Rx${0 H֗&3ڎ˥AH"sG9:1PKA梧r5YW|bT$*On DD1@1"ʕJ;du@QăH sM(*( $߈sF)(AGcFLPc8pA8b?ךh կ,h|0 >$I¸AclcyB׼x;w:^^E-;DR 28[ J*+tn.]Se %.0g!Xfk MN,4~]#xd*H}138wpQ8*J c;c>)-R:Vm]@TUH$kS۵.ӊn.grQdzxloml˄ii~VJH J))$FHQr.E֗}rKVչˋA@ h'K{VycV )ݣ%e.-;7!JDm'k [wIfRZ Hvj ?5QxZPoCy_rHR@P##w6MSR m+Q  L&VmWY^7[v2  qZ ܫ*`$$=)MOB֚bml^RJ_i"2;k|!{Q_Z1AVɜn0 ֕-~u-̺>3 0!D @HtmKIN$v0@UF/twmPƟ嬹nIijʷ  @ JdHu4whPWYS#c)>}Q@nDW)'r\@ X+HR%` -6|-jTRdIe2@Yϔܕ t*˅. ( >iK $f! )RLmO gQ)&Nsޛk Au!מYRVJ DJ& tlI3={S,J"1s?C L'O*D`~嵭 R:<|P^EEI OqҨ1)?BUCHYS0zlһh )A*20:;V&FFԧỠ" meĨm`#(2C HP#n ܈=['p cumBT JA#V;hQ@ p$ L|شCQID\Hl,9m$vɘ;M^a>` O^HAX"1N0rg>Jܔ:@"gUH[nrc:93LLԉAI#.3 QnRdp78=I$z϶>^HJӵIm=(!  R~^ݣR%wLߜP+KHsv܀ {|Gޝ.H($NyP]`*2JJ9i+ =\uPϿ5xSZvʭ0 e*@# b ž.ޱp4aOP2v'D'N< n\ <%)tw#Ogúzu=DFqlϛ¥R %8#q~+vٗoXKym ĢzL`5V;a|[kY$Y +vjzP 6cpJԥdP6pI"l<5nm+֒m|;0Ze+ ֎A{uv|> =6ilcWӟmy=n^AIcl'Bqt.TFN xY[sD]-wu;IInDDj-WHXnP_6]i$%J f1OPCGZ?{ҙ@JR$oBPL ̈$Al57K>K7%mFУ-ҧ}BG庯5+K0j˪O^p2v(`H)X6Wu.Zd-VPWh$ gvTٸvWkSanJa.OCxLNr*hV:E:zti~.|  IO]H~Ma% UF*Bğ,Q31 &}Tnor)ZdwO1"=(׻[iVn=OZX@%XzTgnOlt_#]g9p7;r\JPH'@ouoľ zR[PwAL$Ses\n+1[iЭč$@d!4}c]v{eڷ@uz7IB"A}mZE2֪e dRRFH3{~~Yyܠ %%'&2"UΝ"rޡpmj )1d`+ހjCHہN 1W.ZnPHIaC 9EUw7 P(.}\p@I9r7d72-SdQH H`B8`] n# y'XcCiI/Mn-@i(L#*ROt*0&wnmݚˎ:ˍ =^un^^Ze/TS%#xP21djƉiK}5*ղI 썩B39BW^_*nq吕힧QiXp&Vʷ NԥJJ@LO5VN #m[޸PpY!DP1+Sd+z~%\$ɌbBG30aYҎ͠ĩ0WӚ 7&xHZd%L;}@± c[RĨm$e"T  P @ĦydGVd:e;3?gR 'VkXRLN"Bۮ=tYOcPWmH$ ;~UBJBVpG2DI@ݙvfdRJJ¡I8DI'X)*;|W|2r`?1Eu(Ĕ~0p~S֬He* RHtTm^BГs;E*.jH8y -H@ Vݧf.*ctf'3q2 jHPI H;q1'N8*ВTCw|+SN< 㨁?hԧQ!P":ₛo($̌GkmBJS؟H gۮI@BTJIf1h'5bu [dQ93dKQI H& ZK 4ܭKcu)ÉP9#=q^S8dGsjA L-B(r T*NdrA8ӼBԖ I ZJO8?1.cj3)IP0#h*An#Eei^ԁ!Fvti)q !b?Ȉ"`IZTҐdH˷ bm[4s?KPV' I\!E[wsVm> ?YCZHZSB?ZrP!a@$B`~_ AJ1DVD/^y R`T7 T9@AGYP>Ԥ6 |oNLs@:(L*5 uRw&?:Q"(,@0f ˜zc'0 S6A=bp~5Is@Bg;byC>zF:AZ5(8J޽o\jvNk,jvڕs{x.9nPIZRa(" ''"׉56ʙŷ!j2eaE2@"c96#Nմ4+.]LNՒpLDe_izݪ-K'J7(Ts@8)c.ꖈYC--ٽJD#@°SQyn.i8S F; O?i4PVT 0T?]3Sngo,[O=|($TBQ kHF暴޸u7#RAVA) `k6X] ho2ڐlW㝣h $O+ Yjn3kpzZ(mRQ d ]zO(B[7IJF@Եf.WAԐO8 $'vws$ DV\w V{'Ar$[dc~K .}C}i K33;爎zQo;(J- 9c T#=zթ Re %RL}9%iRS 沔('YoJܥ FzҶ+ uq4J JT1 f[ {w9) )xddHL~QsU*xZRR'f#MX/v҂Tiܒ@Je:72{N>TȖ erN$sNm'*Tnw$ Ց$4.BNc_ڂиRRFэ#8Fy%zDG悴-Hݻf#f$Ϩyzqk%M[ +ڴ$qgJⶬۅ'Ol`h$9c&`IJS橵 (;@<3?$y$B +攡PT#px"r]I"IJ&}NîP ix?Q)J}Szi QpArf@DJN$A Oh~ӰAcxo4@R *@%k{bJԵu$rdQqBBag~'u5 AA J7=i^QRI;uU6N #'1`)b2J|A'OAN;~35_ނTN$c׏h'ࡖQ_~ AY&D1cC,=&TJH"qԩFj*|xCcjRq&p(Әd|*G=)dw;TG4A(y^AJ= 1siTA9 pS4RH"$bM8NjN} gJ=8 @NƢF@Ӄ' Iڔ #h&sY6Ve֟Qm*$ |׎OS=xI:[ ۹r[QG=~By{7Ҵ= NҮi;ɷۏCs$̒Iɮz3]'w˻RΜH&pbpHej[i6{:!W G WA1rIX?JLJAy7w ,[Ej;U $LV_\Pe0?n*oT6>o&ٵ.gjVI PIQ!DrN2S5]օiZbТimbfH A&:6`yvWN4g^P2 aI'n4 AcSa$)֛iT6V$BL9:uk]mĪRTJ8LH#5Vmt[zVN^!QˇhQRx;= ] sL]6-Hi~lu(*ܓ5^m410zÚC`+UaN(V$^hŭks'r)q%H0&% )4ˋ׵Nٮ% B<9123%h4jƭ۰n.BScjӸr%'ENj[MifؖTRă/໛_wv:@W+r@Ju3j7m1#qN)MЙ2 TiQYxJHlZn4A(”=gm~ǀ*r $HAlH {IV|3ܲ֠6I L(cxSۧͶBq* H `jAOt[q_8!וe'nd+~~JJ wa, I VS"I#W[ VSm :hRgD1=*ܭΧs[J*azt1v='W6xͣK\È'p3g85j $M5\ClV>WuX_>ڷ K!H9 >[.<-Jb K>@= #ﳽcAӨiv춲ypq FMt Fﮑ^-wR>bPl P&d2EfYYL[% X+c:W.\iwm[ɷiԨ%@1۴:5n맛O]ai[@`̍5ޖ$5g+qYG)PlfB Xjžwq9*-z^|d)a;@p+#! l-kw5D\\) u:ڷN `Dɪ7&d.{QR{yHޒJBRHDAi/}-帣l,F ODHE]|Skn$\@P Tr(E6V VеR%Fa JjN[0ޚ.P[A*u.%K(đԘ}"]{h%8 3c߇Y[keVy;qJ2LxOVfm{n-Z[JI'DQ'K۵U]YIFr{#+Ǿ4vnee $$@"q@-K3 ۽ej (YpH$('&j.صcz\>i@V#jτ!m@I * Ic@QJLGl <!JBUA1AmAzր֎ҟ69 vek `~ Wn&J V +ɉcZRP VvU n)`-2?+JH#>ԩR(1?>U%J0wr=@VTP#nwwJHF18Ԩ<|jPcW6 RSF34z MDs(|(b* D?NzH(h &y3>@`Eۘ20jSpA"m">T1<| q@&0F:ULzRJjd zc&s?=HM$|@7zf=E$b {׼?`?Ѯׯn<=P\hz) OS-$$nQ05xeu[6tn0"MEzߊYҭY5 AA#l1eƯDYhe(PsyjCK8 HN МM N&i_:գ[ަwv%J;J$u^jF$P?@H &1[gzvαn?%C$s܆ڱ^\]CVuZpIJVpA=SEYp )Bf'Hn4;V|kWD[ f dWr(IETεybw?rZ *3$D,RJla_zvۅ\۬$F@9<焘Zyr֢o PRdSDZߋ[]_i6 ޤFh! ed fFFL_ euW3 D)C,3ڴ)3!!&6N#o0 V7HL\pD3[h־[hoT_S.Rj$Byct:NbƧy=k}py :VNB#SLeviQ}*_ZJXtTJ=D 8) 4EsNn &ݳfo+G!E+v "xFwB-)ǖ!`‰NW+uA)  Ê%{tϸwVV}?Ta*#%YMJ} m )"GqO1"fyH vGL G8r@)l%ADFg*SVP < xOXndڕZϜO9HzbtA.nnKe*Q*J#a$V'blAaiNy׆GwQk)qHI7`]/-iV: qG#bχBδBvm &6#pb-/Z5ܿ|mA+=K?' H5ۖ^lW赳2ƝtʜCR@%$#3:5R ⷩir+Hܵa 9B0AQMVhZգN]U%* ̑8?U+_]vOڛE% 8Y-@*eΝT1ن636Cm9)R:3GX9Yj:NҮ]ϜːRRՀ7s$N$B5/8T*ZvLD׍HkI֖ݻh) -&S1%~`J%iOxq]6~&Qi< O$O9Eq&-i %P%&8?[s m=iÊI @r0ٟ8JTcIj}*RL(I#TXXv~K!%>b'*RIAsS;Z8 q*P8؅tqq=JԤLHpGZZ-E*<*_w~b?QRRRp`D)fU|Š)Y\ o[Btz&O="BAGlFjJm{}R9hCTG ኹ!\״cbXHrq$֦ 78R@{H[<)J 7Gf4DL:9.m#ҥ%JpoĀ#ʘ0RZ$ZI+Fʒ"2Fx޳%kA$s<:҆TTRqLT-*QޘQ"GAʔ;>"s? T77$)YUH3j1*;GCENҔh2Jd:?ᢖAVQp{IFO ϧ0gUyK 0;]Q 6LBE(. H!?Z;8tLy3Tl;3$z-jJ`H<z wzrDj;'qBr6Jyz7r)>#iA>_iQR$Ԫ< z~ ?؜ɨ)@ވGju 'މ_΀;|h$T+!3B'J%$fhfh$n@)qy >#4g#AvE{ 3RqpZ0THhN 9:J :pߘ xg+];YNպ<&bRl*D*8H9|ե%}ohJ޾4֦t)Wa[JDTǏ]ۮjn R}BIzI8wt ?N-.i.ؒ? &MluތعIi JAsu:.\"PEv>t*v{ȜHVtJI옵mmfTP'Ok\7@պ*[pAR2AG;OKSW-|cR[MlZ)IRJJz$LG VTQBKljw|*sp L !0Tz(x_O -8WB$"Ymiڍ []u:N6DU NoSay8 ;KnؔA9":nc:Y>խ¯`ͱ`$2I*$Da]9/}(\xmBիroDpF#v%,ڇR02 1=ej J7KYM=j۵R=U`9=MR Bf #{Tx׊umwNKl%B'ApqN;AȘ՗n8JDMRPA AtsT wRJ x"yIT?DrDXBy) +I f'bTvJHE^$B1Q W29գJT1(/ Tsȯ@oMy&iFtIP0HbNrfH𖠭ZuJOT qx_G떶/2ˇnqZ6x/]ehkz(HP(zcT hi2wB2OgFZuG,pU&Redj?7{۫\[*RJ `pTH>Roz5^y]jeJSEN3y$W]w3ݲ.@dH)B'z!nPj͋շ{oJ fI "w,+)~!E7څq帤®RM;%I^L"BrdMPkZ5kxVv/ J>I3[Rz} zI ;wq2FssWCNzЅΪ§6%0J C1b/Zjڶhb26 *@I g&d>׼6Ws[ @J@ 9u6@%_W} >S <Y^Ԁ JO#xC{ԓAչ|1W%ƖPQ%J!'lQ>. PR:ܕzޫ'- ,HK>\wJH^ |tXSrv*JB>珥=@SjII$GÉqAz\\sӊvТid,G>}~URZC%LL.y>MnFqQAz[TlJd(,N:@힝)ФK%ʒzz֫S$+QP#q duh$6q;BRJqۉv@!>);9J jIvBW)3?ΕPRX JHGSeim;> (3TP @oaK*K4܅ zc~uD)(w(ShH*.'鎣?ɠrݦ(?֥5mꂒ|&CJBJ[Rr?ϝWon"Gg#}|@#t$=/6@rb)#'~EFV%*_1qK rFd{qU>mV*"Q[rv/'Թϱǚ{8|9geH$2q NNߦGB:tp#k1_!JB)*'b|K>xq6nG@ҢґxAO"))*Z Vh <Ɏ1߯ϰV> #9Qg#*utH ُH1~3AɁ 0#@@ D|DN3@p(A'"IuDL0F"=d8'"hMB13a83@b28@ϴw@jHN~4SH$@pyO~QJrxd(=zGkQi2sUJҦ'sN±O{i m6DۥO`)2P$PyJ_)\ #JJa:C6(~̲2RZ>\<F嶍a Kvm"rLIV?2>rEҦDK cǷٿCZS9@0$㩈毘x{^Zسwgwdउ i*lnHJ2FdfNmoCl@$1q^dՋ}߽i׬V(Xy;vaQ ȂR fݸ-"!810I-xz{+v Sjy!E)JfLɀL%וfVMX2z9?I yMT FvWCi- Kzj/Q q\OBLҜVb;;xm9o-d=O)83^5/\mHt%J8Mz?exS:Z.tREJ!E[ P$O_;$q=AO(80RzGRUD`Jm¹={VBڙDDR z(  0ʟrRH *5YVbdɧRRA)Tbjw4_@j2NҘsO*BM股z*RL¢D9*B3>_kCh!C(hTBOr|}GFi[(%!I3:zrut@$Jbp+;]ޗ]r@+D8޷84#{x_QrM̦D'NQLO&pF6*//[[7n:|6҉mi# `ǽq|[<˚떚`jTi0$$o4)v8 -&0NOIĹm2^ܩn H*PrƩgWәӮd)݋Pg$c<`EQkpӑopGpJ[TDFHQP83vVݪN[i _ߴ-[(x^)ӏlm n:4ymjY.@QDb' 4]r$--wH$ 'iw@'<Ƒ[Ttkg,>Wmr|ҢIIGsh+&Ʀ-ۆaJFIY-9ehdT$x1>^4|$=f],. f.lځRV<BIqN}qצ+.Hp#j7`ZTTLVoZV)* W2;[,:Z B=q>EPp ~|cj%?6{QR%l=L9`+q 9 )23f?nJi[\TyV^K̏NJ~ڤg#~Zqy{P=*.S)+h%*JIұP N=AJI[.&&~ӇUd?? O|)L$ܔqSn] = njV*_3ׯZv 3> (~ʹ6ozAT@d>u P@4"Gzg'ƔHQ"&H$j@Dˆ&'4DUmz8c28U1q2JxT#=s֙" * hTg's3OzNGJ)1q#DsM ÂլCDS-@H'5Y$3QI{qMI@*¹p'CUG3@s2dz%X Dr*6ԓ>T^Q2G@zQ'#U%S$qRv=]'p߭VHP"22*IW8j07s?* cE*5R< ՠ c 2jdϗ' ˆII94 j֮J8$D*ّ_3Vڭ45<9'Ҙ#7Mm>4Gﵴ` vTR@RQ~"mobr(LghV:e)6l$ LЬn54=E.^9.Xܐ S?@>ONGs(r\4?𼭥E '#?%cKmIAݸZpT2H'Ib7hw)JKW% PZu H&k48E3ȹKwnT}^JDl*QRK|@; k{k;uܭе/A(&1$~ ׭7q\&ˤ4KhS'h 浯.=Zu u]RZ r#PD$F*qɦm Z.-' H>?OϚdQq4;bQ'?ύO6E)[k 0J8?Oݷu(+ *i5< T D`hT'rw^b:}[S@DZ:JtRIEV[ZOL }K$l+h;G\@L{FmL~ >*=}*h9n%xJ'rBۃA%^_}RIOʇ峹$aą,o^'ۿ֥Uy`~RQP4p@ OA\;t}u$S3ޡ'*,tP@ &N;I($ce]}bqҀN(s@=c}A>`58yA׽/2c >#Q>4OJ&fM#A} Ii=4`zu1*#?$+hyǧ&N~pDҕHvIIj($֜$+":` q𠔅\qi?DB@[[&qA(&d(?'h7@8_~1 |+Gx}E*NV0=@`{wO,]S ILT̏zάm>R<ү”IW_k])QR ϥXO3iz;6:.TàaJ\>[h4&gh $))*Lz'"{i?Yh۶Nyžv+ a@ ۿ]-=ON,YTO+RȔȘ&LN&[VeĻrS%NGSk/hjԛҮB.lXH ܘNA^[i~"nm-nA !{vq4-]e[Ϊ 5sk4T*! %;Udeq-3Tּ+tϖ/N/jB2d dw^!ӓԫ;0 dF͆T*N0FE/6oIq%¥G0UWwNh >¥؟!n(%{BvNP4]֛aCG,tfu\兀LrT65_ [jZ]v/*>bDH$ sp+ 4VAS˽ހJH*$$3vVZmIq]vZ JR9XbAEE-PU(DR8sZ~ r7/nC+Rn6D 14g[uAMڬ-m9A8}Mx5"6vi}KKKAJ+i+3QH"p1V%nj)QQ3j*R)8(⤨@rz׽%)INA0mP*NL$?ȫC{ҀA d>I)'0LH6(p+}(2VXS;p/NBB y?.򠅩1%GB@-6F3c^[[ ڟ-i=uP)*ʠm'jv,yA$vN9A`RQ-1w6~YqJ{{ira$AOx= _# *#AJej8O)}JTI '?bmAH_ Jؙ{^52$J}8D,d}QT! Y;AӟV9- OvP3N*mdX8Y4L;?jV& T]&r!*փepߖ[k+d) V9q)R1#O2B5k2RCgkLG?VyjJqA%BwGH1UP;N*Op,Zvl"h3i+Q  ?ΕOÀ`N?TNҐR= 'ƢԧI/Of=ďE!@'ޑ*YPRLnhy*yՠ )4->fe`J9!R}\=VG2s"= @~Dpk UCD>14fH4$u1B;P6#h ^Dw2}(۵'Oz?ɠazB;4w9`|*`Ԍ=fD c5jo29Pޏ&;L3>"*g"ODI?Zp@78gQ"D')FD~sP{GƘ@PG>B:>ӄFLԀ3h)3ޙ):zILN]~=hbР0hDb 2')&AFHjD8 Si$uOlSuy dF*$$cTLLh ըj6)AyVa2Lgfom4v<ڔ[0@2Dk^ ]lZU)!$Az޾mw[rиu]NUD 6 ߆kt۶W*RSIijBTBH &pzcw\P[i[.vۣn7P@fd &GK{iZnm@- f+{Jiv*j٦JN,8 B[H\ړ 4(A j8%EE C?JURNI|z8JP-%+D& UOba;"$jM6yFqߵZĤ}\ P'OAaxu*e`̥ 3Yj 3X.7Ӑ*p!i$}-#sD)BwB 7AGYqIZX#?Ju+@VݤOq@d-<85 q>bGCP:n9'"BԃulPd\Q=3o>(A#Xo0AL􎧏ژ)iʕytTiύ9SnBV0;P!NVnd~qRz<cm*|͹ЎIPTP TߥTHVR#T$q@ʽ )PeNy~C`QmA0:~TA%;g?" *ڣd`@ R})RW&:RS#3ȩS ցVG@R&C Go|I(Ofh$;T4.2c5"O?Zd8HRr*SluێgʉΠ Q|r3MFb)4 S $H1'i$ s ~i1PˈI =@ dxa8O`9T?.XM@6c?6%>YBzۭcv=$i,!kJS |"PRiHHp^\[wr`H: NQ8*. 6]K!yPӗ "Aw eS h@H?)iH܄L~M )$H$}āRԢ"Gq qs҂^ J`rwm!R ˟4ӵJ );D~$}?_ d`,*RP'{ЖBI;x"~ S@.nEy=?T:`-C򠒢B\I& ue`(<𑘤)SOEqh2:B O| 'OޱI 3#U=$(Gj*yd ;O?/+.XAA?Tn( qsAnP>Z?^j*d!JLt>?IpɟU{8 *WI)ҥz'SŃS&ET+*A`pglG T*ORC5$Ec޹&:ԉ#I('qRcG#ց3($)1M/Jq3P*F 8zH04dNif"2Hhi7Iiy@g&hD9zdpE:UjB1h'\P%Q9"2IΘ:2F 9q4X1? 0HO19: Hi $A} !p SVpz ЏN=l#T=? ZR8Pca*T T'q>u*H=>.o_2ҟH&s' QNj-ޣkl'_[4PJ%QLQ'2k/QmukV\մ6e),6PIH\5{rսQh#>zR7* 0Zt{߹#!v}\p`"ԭ׊|Pu-Jm‹.JDI2 ʆEYewvmVCK9;AV2 N(fMԛjy*q,T>$;022Z;ƶ29och-nJp:@8""+ZfZT%{S-$&@'$]6K?̼^Y>C]gcONdj<ơksi..Zj-4zJǤm9vVsGƏOXB9 eͩQCP HH#THdgyN0 `‚H’@TI' -D4UBe<Фcɑ>tP#`Lg \J%¢p Lܐ2 IWd &LUT!P9h-Jי8` 7${U(bHSL)9JIz T7#$N~TB Tv=oVJJVR9HHRRN \ZDH+ JB Hq?j¼H?jťi*x0LjJIpVgv 'r ӏJ%2QH?'h2]@ș1Vܭ H}@*Z #z%KRFJZ *"Iڭ!Aduȥ$%$`J$I?qg20r>_(!^i (RFQщ=?D$OA)OuH܅pH i!Dc'L8"zPNA2v) -'+JHRӂ=rws8ނLzI ħ8*!jLIV`I(9,w QL#;d3Ҥ!<T~ UQzb3x&gDT) P30 s3>8$~;Q #\#{c3)#3? 9!\4O4@5Pđ'P$qCgE6GʂL&$i@W>CLJ(Nr`UED„J''3Fb#d Z؄L &>ƊHCm GŒOs1JnRg1Sp&- A"U9H12fcxtAzpwP=Ɋp $*I(u3j?^juN7f6ˎ$TcW8 /Zy6P@P@&'zjνC&zs’%+(h6Q"NO%mt-9i){(ؒwNG?-so7iGWMu 0 S^xLQO@%wNr Ƶ7-[}l1ޥ[) p=R28Q;6heu1aG by!2#'WCxcN%;wBv%[@6 `xV:/4{;lpԕD0$zd**kFd/0FG[)INVB)$v}0WmlJVqR&A!'jIEyF?cO7ڗE J` g&c=5-ZhҭP-y-jBTU$$ &mˣ\i:ݚ7.;@c+Zyq?ʛq}HvHLb=y6PAiDOõ#2gZ'iV@1~T9~T !`G4ʐUxU66bz~N` &E iS}F8B UdO2*{tdLT*rD$m9ƈ HU.H#3$ B1M;Le;N9FR(m18#ިB&B ,~8O?C1N7O4CA3.yI M 20pj%$zgڲc+ p??άܕA9xV JG%Ae.S1I= j&R1$P?xW2V\H*T~J 06pOS Hq.%r zځRTHٱCdw,O r.J )v̘4 2vij{XVNO*tߨ) `j ڟZATz~-$o?δ%| Ν&NL-$A$9#q(r ]$O ҂ڄDzV3Tj1&f( N)@84&DО(ӊ ? PA$:ID9 1.c{PXMOL(SR8|T<#0nɟjS))8Tc@1@$8g3R6z`ISP$'h<T'_ҪG'2'D*T{D{R ֜xG#TLB8.H }3iR$DčqB,TCdDDRI@M; d4BL 8$`A^@` $ħzpg'˟H[gE)Zz*DS,fR1$R!ؕB@=PGQ=JmVH&AP)*~"$HHF@BĀNܪvGֱQm ֭SR}Ҩx*=U(mpgH^)#Ӄ&dR-q;OM- *$~jbY^zF#8O(_1$H3oLD$*J$N~5YXz(SՕf:d{֚.qFIpB'(%P$k*$`(,IFGΘH#jVV֤!<-{q2*)J$́U>hRw%a*u{f~SU]F}INO_DTx)=@U%[HL7@L@Br(cT@d~U*N1PthLk`<ďLEN4_g3>֭n 1D$E;)c]m|@R0AJ9]ݰ,,(!{i)3#O>ۻ:RSHtR@#$z Wz4 QnӄL0[xTm"BBTBDu\ݫfkUrJRFL+T^4i(y)[J 1 HF@W.wNhXYٵuu$6J[䁐HNkQy`ճeŊJ1$fcb{fA jyn\I20S)*F:fO,ߵIWT(xJJ0; :urH+ҼcvG--Qt.w%l(7LD++H='}3hD~]!JNA=$)91AΜ8=p{QI{QEPR>IQr)IQRS#s@B<9FvUkLsX3$AbU&'sQ$&.Ai'i)#4$@ Hf8GcJ aF?UL$Lj OVA*QDSp).)i(H;&G"0T3,/(GHwAJNFdfTNh sXlÃT2E@F9LDuvTH?"I*('L13NF1'BDd$EVDj&I$UZL*B`$LjPRj 戏zQ'0h戁ךz# ~T#'"ޛnb&L=($gE3#<P I~/TO7҂IRv*.R}P%s3c09="{„ 8J`f(B h5DLH)$ =~4H ϵXF'@lLYuVR8#EWo;DNh:[_~ܲ7LIP9'3MMwzɺ'py.((c'tyP9A;d(XK:%d/Orz5kKykHI 늆|;d@3#' ԅ#hzf'E9p$( G HTO*%I*qځ <:DzF}GҤH4CيLA2 AzE@BI“F IcHddH D UfW$F qZHdD$i7Fґ߼L+9TbfIjm$֊}Nd f``ӤɎ=H cQCA+I vS1S5Izm0bԯ pNi I3$@T)#>➁*H*;z~ZFy=0#vL ' L .D{⭐$$(* $)*GIp,@̜Gi9h RR! Ny^P|*#Z,(V=FL'I!=2npc@LVzQDD=zb(IFqP, 䙏"rNؓ4Q^ްpHTwGj!6Q$ED⊓(t>iI#l&HA7;wQGrD~D(m)rG?01Cr@I"8 gۭVr (&sJ$ޤL!FH&@ItU#)3: g 4(CRCU:TQN8?o42@'cD,2>f/bpiR$DӤe'ez@:E)]{ < LE2`IDR&& R0HށN{ҥ!TA DǯZx=tgVjRa ;V4v) );GZ̙ކDDq1dA;w)FMBS̑t'gW[>K@(:/ })YMmРYy&2 Ȋ\.Zu#ʔTԘ= x'V[ݷTTډY $VKKE栫x6R!)G !<s"eHKE-}%>F;+ &ҜK67*qF% A98= LC?|}7%KtxR RaX#yt [}IjٲC;@Q$JGlNz\^1IJ`IG<ݒ~%H.S$QZҘNq >= zW$34H2 L*JdI(bA? n$+OҀx֏#V2=]$OҗiIRx*$ D,Ƞ)I Lvd&{Q (d4B19 #׸&}?:AQUAs_O1Q2 ݞHP1z*%D1ܚ  GB0Oq*c2 8$~E]w)#L= P2g>JG'9@P#CDS<;@#j)PDV=A&QN,rnUGq T$#?: gCt'Jd=C (u8REa94]"lBp'5t(#UA`P2N491HhT)I9QMAHޗt hnP8;9I4Q' ΜGjX HHOc]Ru=>6iCO6 (DJp(@Uu}i4Kমn4SrfU A) 6+1DZՎpvڃš厜2qpS]7-:U6zS6R7APA 1\uV,U]>Qm~nJt!" $]pƢ{lR.XID)91O+: 3 RAnv^nx-OTN:O1X.08h@qP4;H:SOP#G(ڊ6'ߓR@9.='i7 "HT&9ZI@F;SfdMUAEPZW#'pJs_ PÃR8ށ7d/0`D9?Z*A~4|F$&IGj Th-J KNcۥ A'] 1=iDM DEAL@vA.v8#h*#NLY8z㚉?: A~9wN9*LEtTQD/yJ);0 ,I&3sE:ʊ.cյ^Dq<b#z);Cވd)LjQ) qRjysJ;™#ZbDfoT 3zRBDRffJ>4B)c1tҦ4{T#RdE4bc„<ԟjH|jt4& 3ށ8ҏC@bz)a(qւw3&fhP0 A3֐ ǥ2# vA@\gI pqT:}]u@8>5'"$d?I' HG3N0d (iLT{5Ti%ĥI0G ӤaFF-[ Uˮ J>1gY% 6EƇP>c^xi:[,n@@XWA$ Njۤ]6m%@` fDW'a]_q,Hqw `;xM97wȻy7:T Ԣ'B$ +н_DFhܺ`[[n[I <&Prq`{LIRպFJܠrF’$7FVoQ`\zRB҇ BFI?" O5h-kRgXu?S֖?zmES;RHj( JA {w=hB=  @I$Q(!)4H8v4J@ sLPL@ s=:S=P %D&;h ARQnR zT隃ްi4g P uB*p;Pޡ3BPCg599 8Գ=IqF1A"jOHF?jMI5tY&aUR`,@8? j55K!xTTmױJv c|dp ?}[Ak; ~Rٸ;(cȚq+C^?1_Ie`BfÝmx~͛Wc7n]*BF=$&k_OcUyV/k}ۖogB%RpF@ɿ7}ݴ-iAda F `w]\YJTw+~َ 84ʀ)zƔOoB' 6sZ椙Oc¥#RXS4 WyfLo.DEaX>T`_+#if"D~Udg֢j' 1R=>${>g "36ȨsU1N&=m`;b@1HfA*Ȟ'i‚4ہ@H銆~?*f&$t&G$P( Ͻ@ x:13'(;Nd 8G4=Sn4 T 3~u(?PKc\assets/images/arrow_right.pngnuW+APNG  IHDRw=tEXtSoftwareAdobe ImageReadyqe<IDATHc`x>h>TΟ `P\>TQq?!S`8 ϧ Ğ0JIxxR$eƕ?9kOBOj|b ~XĤ[0PZP˓D4d'Sg4t)h^\ӥ¡KIJ5Ǜ-19]IENDB`PKc\ v:v:0assets/vendor/select2-jquery/css/select2.min.cssnuW+A.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px;padding:1px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} PKc\h֒!!*assets/vendor/select2-jquery/js/i18n/et.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var n=e.input.length-e.maximum,t="Sisesta "+n+" täht";return 1!=n&&(t+="e"),t+=" vähem"},inputTooShort:function(e){var n=e.minimum-e.input.length,t="Sisesta "+n+" täht";return 1!=n&&(t+="e"),t+=" rohkem"},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var n="Saad vaid "+e.maximum+" tulemus";return 1==e.maximum?n+="e":n+="t",n+=" valida"},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"},removeAllItems:function(){return"Eemalda kõik esemed"}}}),e.define,e.require}();PKc\=2&&t<=4?"Prosím, zadajte o "+e[t](!0)+" znaky menej":"Prosím, zadajte o "+t+" znakov menej"},inputTooShort:function(n){var t=n.minimum-n.input.length;return 1==t?"Prosím, zadajte ešte jeden znak":t<=4?"Prosím, zadajte ešte ďalšie "+e[t](!0)+" znaky":"Prosím, zadajte ešte ďalších "+t+" znakov"},loadingMore:function(){return"Načítanie ďalších výsledkov…"},maximumSelected:function(n){return 1==n.maximum?"Môžete zvoliť len jednu položku":n.maximum>=2&&n.maximum<=4?"Môžete zvoliť najviac "+e[n.maximum](!1)+" položky":"Môžete zvoliť najviac "+n.maximum+" položiek"},noResults:function(){return"Nenašli sa žiadne položky"},searching:function(){return"Vyhľadávanie…"},removeAllItems:function(){return"Odstráňte všetky položky"}}}),e.define,e.require}();PKc\L++*assets/vendor/select2-jquery/js/i18n/ms.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ms",[],function(){return{errorLoading:function(){return"Keputusan tidak berjaya dimuatkan."},inputTooLong:function(n){return"Sila hapuskan "+(n.input.length-n.maximum)+" aksara"},inputTooShort:function(n){return"Sila masukkan "+(n.minimum-n.input.length)+" atau lebih aksara"},loadingMore:function(){return"Sedang memuatkan keputusan…"},maximumSelected:function(n){return"Anda hanya boleh memilih "+n.maximum+" pilihan"},noResults:function(){return"Tiada padanan yang ditemui"},searching:function(){return"Mencari…"},removeAllItems:function(){return"Keluarkan semua item"}}}),n.define,n.require}();PKc\}N05*assets/vendor/select2-jquery/js/i18n/lt.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/lt",[],function(){function n(n,e,i,t){return n%10==1&&(n%100<11||n%100>19)?e:n%10>=2&&n%10<=9&&(n%100<11||n%100>19)?i:t}return{inputTooLong:function(e){var i=e.input.length-e.maximum,t="Pašalinkite "+i+" simbol";return t+=n(i,"į","ius","ių")},inputTooShort:function(e){var i=e.minimum-e.input.length,t="Įrašykite dar "+i+" simbol";return t+=n(i,"į","ius","ių")},loadingMore:function(){return"Kraunama daugiau rezultatų…"},maximumSelected:function(e){var i="Jūs galite pasirinkti tik "+e.maximum+" element";return i+=n(e.maximum,"ą","us","ų")},noResults:function(){return"Atitikmenų nerasta"},searching:function(){return"Ieškoma…"},removeAllItems:function(){return"Pašalinti visus elementus"}}}),n.define,n.require}();PKc\آ  *assets/vendor/select2-jquery/js/i18n/cs.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/cs",[],function(){function e(e,n){switch(e){case 2:return n?"dva":"dvě";case 3:return"tři";case 4:return"čtyři"}return""}return{errorLoading:function(){return"Výsledky nemohly být načteny."},inputTooLong:function(n){var t=n.input.length-n.maximum;return 1==t?"Prosím, zadejte o jeden znak méně.":t<=4?"Prosím, zadejte o "+e(t,!0)+" znaky méně.":"Prosím, zadejte o "+t+" znaků méně."},inputTooShort:function(n){var t=n.minimum-n.input.length;return 1==t?"Prosím, zadejte ještě jeden znak.":t<=4?"Prosím, zadejte ještě další "+e(t,!0)+" znaky.":"Prosím, zadejte ještě dalších "+t+" znaků."},loadingMore:function(){return"Načítají se další výsledky…"},maximumSelected:function(n){var t=n.maximum;return 1==t?"Můžete zvolit jen jednu položku.":t<=4?"Můžete zvolit maximálně "+e(t,!1)+" položky.":"Můžete zvolit maximálně "+t+" položek."},noResults:function(){return"Nenalezeny žádné položky."},searching:function(){return"Vyhledávání…"},removeAllItems:function(){return"Odstraňte všechny položky"}}}),e.define,e.require}();PKc\ibb*assets/vendor/select2-jquery/js/i18n/de.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/de",[],function(){return{errorLoading:function(){return"Die Ergebnisse konnten nicht geladen werden."},inputTooLong:function(e){return"Bitte "+(e.input.length-e.maximum)+" Zeichen weniger eingeben"},inputTooShort:function(e){return"Bitte "+(e.minimum-e.input.length)+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var n="Sie können nur "+e.maximum+" Element";return 1!=e.maximum&&(n+="e"),n+=" auswählen"},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"},removeAllItems:function(){return"Entferne alle Elemente"}}}),e.define,e.require}();PKc\|-assets/vendor/select2-jquery/js/i18n/zh-CN.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/zh-CN",[],function(){return{errorLoading:function(){return"无法载入结果。"},inputTooLong:function(n){return"请删除"+(n.input.length-n.maximum)+"个字符"},inputTooShort:function(n){return"请再输入至少"+(n.minimum-n.input.length)+"个字符"},loadingMore:function(){return"载入更多结果…"},maximumSelected:function(n){return"最多只能选择"+n.maximum+"个项目"},noResults:function(){return"未找到结果"},searching:function(){return"搜索中…"},removeAllItems:function(){return"删除所有项目"}}}),n.define,n.require}();PKc\rXm*assets/vendor/select2-jquery/js/i18n/nl.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){return"Gelieve "+(e.input.length-e.maximum)+" karakters te verwijderen"},inputTooShort:function(e){return"Gelieve "+(e.minimum-e.input.length)+" of meer karakters in te voeren"},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var n=1==e.maximum?"kan":"kunnen",r="Er "+n+" maar "+e.maximum+" item";return 1!=e.maximum&&(r+="s"),r+=" worden geselecteerd"},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"},removeAllItems:function(){return"Verwijder alle items"}}}),e.define,e.require}();PKc\]X8nn*assets/vendor/select2-jquery/js/i18n/pt.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var r=e.input.length-e.maximum,n="Por favor apague "+r+" ";return n+=1!=r?"caracteres":"caractere"},inputTooShort:function(e){return"Introduza "+(e.minimum-e.input.length)+" ou mais caracteres"},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var r="Apenas pode seleccionar "+e.maximum+" ";return r+=1!=e.maximum?"itens":"item"},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"},removeAllItems:function(){return"Remover todos os itens"}}}),e.define,e.require}();PKc\)ܛ+assets/vendor/select2-jquery/js/i18n/hsb.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/hsb",[],function(){var n=["znamješko","znamješce","znamješka","znamješkow"],e=["zapisk","zapiskaj","zapiski","zapiskow"],u=function(n,e){return 1===n?e[0]:2===n?e[1]:n>2&&n<=4?e[2]:n>=5?e[3]:void 0};return{errorLoading:function(){return"Wuslědki njedachu so začitać."},inputTooLong:function(e){var a=e.input.length-e.maximum;return"Prošu zhašej "+a+" "+u(a,n)},inputTooShort:function(e){var a=e.minimum-e.input.length;return"Prošu zapodaj znajmjeńša "+a+" "+u(a,n)},loadingMore:function(){return"Dalše wuslědki so začitaja…"},maximumSelected:function(n){return"Móžeš jenož "+n.maximum+" "+u(n.maximum,e)+"wubrać"},noResults:function(){return"Žane wuslědki namakane"},searching:function(){return"Pyta so…"},removeAllItems:function(){return"Remove all items"}}}),n.define,n.require}();PKc\c UU/assets/vendor/select2-jquery/js/i18n/sr-Cyrl.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/sr-Cyrl",[],function(){function n(n,e,r,u){return n%10==1&&n%100!=11?e:n%10>=2&&n%10<=4&&(n%100<12||n%100>14)?r:u}return{errorLoading:function(){return"Преузимање није успело."},inputTooLong:function(e){var r=e.input.length-e.maximum,u="Обришите "+r+" симбол";return u+=n(r,"","а","а")},inputTooShort:function(e){var r=e.minimum-e.input.length,u="Укуцајте бар још "+r+" симбол";return u+=n(r,"","а","а")},loadingMore:function(){return"Преузимање још резултата…"},maximumSelected:function(e){var r="Можете изабрати само "+e.maximum+" ставк";return r+=n(e.maximum,"у","е","и")},noResults:function(){return"Ништа није пронађено"},searching:function(){return"Претрага…"},removeAllItems:function(){return"Уклоните све ставке"}}}),n.define,n.require}();PKc\׆u-assets/vendor/select2-jquery/js/i18n/zh-TW.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/zh-TW",[],function(){return{inputTooLong:function(n){return"請刪掉"+(n.input.length-n.maximum)+"個字元"},inputTooShort:function(n){return"請再輸入"+(n.minimum-n.input.length)+"個字元"},loadingMore:function(){return"載入中…"},maximumSelected:function(n){return"你只能選擇最多"+n.maximum+"項"},noResults:function(){return"沒有找到相符的項目"},searching:function(){return"搜尋中…"},removeAllItems:function(){return"刪除所有項目"}}}),n.define,n.require}();PKc\ͱ*assets/vendor/select2-jquery/js/i18n/gl.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/gl",[],function(){return{errorLoading:function(){return"Non foi posíbel cargar os resultados."},inputTooLong:function(e){var n=e.input.length-e.maximum;return 1===n?"Elimine un carácter":"Elimine "+n+" caracteres"},inputTooShort:function(e){var n=e.minimum-e.input.length;return 1===n?"Engada un carácter":"Engada "+n+" caracteres"},loadingMore:function(){return"Cargando máis resultados…"},maximumSelected:function(e){return 1===e.maximum?"Só pode seleccionar un elemento":"Só pode seleccionar "+e.maximum+" elementos"},noResults:function(){return"Non se atoparon resultados"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Elimina todos os elementos"}}}),e.define,e.require}();PKc\/Hkdd*assets/vendor/select2-jquery/js/i18n/eu.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Idatzi ";return n+=1==t?"karaktere bat":t+" karaktere",n+=" gutxiago"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Idatzi ";return n+=1==t?"karaktere bat":t+" karaktere",n+=" gehiago"},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return 1===e.maximum?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"},removeAllItems:function(){return"Kendu elementu guztiak"}}}),e.define,e.require}();PKc\;qW*assets/vendor/select2-jquery/js/i18n/hi.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/hi",[],function(){return{errorLoading:function(){return"परिणामों को लोड नहीं किया जा सका।"},inputTooLong:function(n){var e=n.input.length-n.maximum,r=e+" अक्षर को हटा दें";return e>1&&(r=e+" अक्षरों को हटा दें "),r},inputTooShort:function(n){return"कृपया "+(n.minimum-n.input.length)+" या अधिक अक्षर दर्ज करें"},loadingMore:function(){return"अधिक परिणाम लोड हो रहे है..."},maximumSelected:function(n){return"आप केवल "+n.maximum+" आइटम का चयन कर सकते हैं"},noResults:function(){return"कोई परिणाम नहीं मिला"},searching:function(){return"खोज रहा है..."},removeAllItems:function(){return"सभी वस्तुओं को हटा दें"}}}),n.define,n.require}();PKc\22*assets/vendor/select2-jquery/js/i18n/th.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/th",[],function(){return{errorLoading:function(){return"ไม่สามารถค้นข้อมูลได้"},inputTooLong:function(n){return"โปรดลบออก "+(n.input.length-n.maximum)+" ตัวอักษร"},inputTooShort:function(n){return"โปรดพิมพ์เพิ่มอีก "+(n.minimum-n.input.length)+" ตัวอักษร"},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(n){return"คุณสามารถเลือกได้ไม่เกิน "+n.maximum+" รายการ"},noResults:function(){return"ไม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"},removeAllItems:function(){return"ลบรายการทั้งหมด"}}}),n.define,n.require}();PKc\JCw*assets/vendor/select2-jquery/js/i18n/ka.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ka",[],function(){return{errorLoading:function(){return"მონაცემების ჩატვირთვა შეუძლებელია."},inputTooLong:function(n){return"გთხოვთ აკრიფეთ "+(n.input.length-n.maximum)+" სიმბოლოთი ნაკლები"},inputTooShort:function(n){return"გთხოვთ აკრიფეთ "+(n.minimum-n.input.length)+" სიმბოლო ან მეტი"},loadingMore:function(){return"მონაცემების ჩატვირთვა…"},maximumSelected:function(n){return"თქვენ შეგიძლიათ აირჩიოთ არაუმეტეს "+n.maximum+" ელემენტი"},noResults:function(){return"რეზულტატი არ მოიძებნა"},searching:function(){return"ძიება…"},removeAllItems:function(){return"ამოიღე ყველა ელემენტი"}}}),n.define,n.require}();PKc\##*assets/vendor/select2-jquery/js/i18n/fi.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/fi",[],function(){return{errorLoading:function(){return"Tuloksia ei saatu ladattua."},inputTooLong:function(n){return"Ole hyvä ja anna "+(n.input.length-n.maximum)+" merkkiä vähemmän"},inputTooShort:function(n){return"Ole hyvä ja anna "+(n.minimum-n.input.length)+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(n){return"Voit valita ainoastaan "+n.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){return"Haetaan…"},removeAllItems:function(){return"Poista kaikki kohteet"}}}),n.define,n.require}();PKc\+assets/vendor/select2-jquery/js/i18n/dsb.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/dsb",[],function(){var n=["znamuško","znamušce","znamuška","znamuškow"],e=["zapisk","zapiska","zapiski","zapiskow"],u=function(n,e){return 1===n?e[0]:2===n?e[1]:n>2&&n<=4?e[2]:n>=5?e[3]:void 0};return{errorLoading:function(){return"Wuslědki njejsu se dali zacytaś."},inputTooLong:function(e){var a=e.input.length-e.maximum;return"Pšosym lašuj "+a+" "+u(a,n)},inputTooShort:function(e){var a=e.minimum-e.input.length;return"Pšosym zapódaj nanejmjenjej "+a+" "+u(a,n)},loadingMore:function(){return"Dalšne wuslědki se zacytaju…"},maximumSelected:function(n){return"Móžoš jano "+n.maximum+" "+u(n.maximum,e)+"wubraś."},noResults:function(){return"Žedne wuslědki namakane"},searching:function(){return"Pyta se…"},removeAllItems:function(){return"Remove all items"}}}),n.define,n.require}();PKc\Ln*assets/vendor/select2-jquery/js/i18n/ro.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/ro",[],function(){return{errorLoading:function(){return"Rezultatele nu au putut fi incărcate."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vă rugăm să ștergeți"+t+" caracter";return 1!==t&&(n+="e"),n},inputTooShort:function(e){return"Vă rugăm să introduceți "+(e.minimum-e.input.length)+" sau mai multe caractere"},loadingMore:function(){return"Se încarcă mai multe rezultate…"},maximumSelected:function(e){var t="Aveți voie să selectați cel mult "+e.maximum;return t+=" element",1!==e.maximum&&(t+="e"),t},noResults:function(){return"Nu au fost găsite rezultate"},searching:function(){return"Căutare…"},removeAllItems:function(){return"Eliminați toate elementele"}}}),e.define,e.require}();PKc\%ʻ*assets/vendor/select2-jquery/js/i18n/lv.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/lv",[],function(){function e(e,n,u,i){return 11===e?n:e%10==1?u:i}return{inputTooLong:function(n){var u=n.input.length-n.maximum,i="Lūdzu ievadiet par "+u;return(i+=" simbol"+e(u,"iem","u","iem"))+" mazāk"},inputTooShort:function(n){var u=n.minimum-n.input.length,i="Lūdzu ievadiet vēl "+u;return i+=" simbol"+e(u,"us","u","us")},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(n){var u="Jūs varat izvēlēties ne vairāk kā "+n.maximum;return u+=" element"+e(n.maximum,"us","u","us")},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"},removeAllItems:function(){return"Noņemt visus vienumus"}}}),e.define,e.require}();PKc\LEN*assets/vendor/select2-jquery/js/i18n/az.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/az",[],function(){return{inputTooLong:function(n){return n.input.length-n.maximum+" simvol silin"},inputTooShort:function(n){return n.minimum-n.input.length+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(n){return"Sadəcə "+n.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"},removeAllItems:function(){return"Bütün elementləri sil"}}}),n.define,n.require}();PKc\X*assets/vendor/select2-jquery/js/i18n/ps.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ps",[],function(){return{errorLoading:function(){return"پايلي نه سي ترلاسه کېدای"},inputTooLong:function(n){var e=n.input.length-n.maximum,r="د مهربانۍ لمخي "+e+" توری ړنګ کړئ";return 1!=e&&(r=r.replace("توری","توري")),r},inputTooShort:function(n){return"لږ تر لږه "+(n.minimum-n.input.length)+" يا ډېر توري وليکئ"},loadingMore:function(){return"نوري پايلي ترلاسه کيږي..."},maximumSelected:function(n){var e="تاسو يوازي "+n.maximum+" قلم په نښه کولای سی";return 1!=n.maximum&&(e=e.replace("قلم","قلمونه")),e},noResults:function(){return"پايلي و نه موندل سوې"},searching:function(){return"لټول کيږي..."},removeAllItems:function(){return"ټول توکي لرې کړئ"}}}),n.define,n.require}();PKc\*assets/vendor/select2-jquery/js/i18n/es.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"No se pudieron cargar los resultados"},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Por favor, elimine "+n+" car";return r+=1==n?"ácter":"acteres"},inputTooShort:function(e){var n=e.minimum-e.input.length,r="Por favor, introduzca "+n+" car";return r+=1==n?"ácter":"acteres"},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(e){var n="Sólo puede seleccionar "+e.maximum+" elemento";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Eliminar todos los elementos"}}}),e.define,e.require}();PKc\*assets/vendor/select2-jquery/js/i18n/sl.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/sl",[],function(){return{errorLoading:function(){return"Zadetkov iskanja ni bilo mogoče naložiti."},inputTooLong:function(e){var n=e.input.length-e.maximum,t="Prosim zbrišite "+n+" znak";return 2==n?t+="a":1!=n&&(t+="e"),t},inputTooShort:function(e){var n=e.minimum-e.input.length,t="Prosim vpišite še "+n+" znak";return 2==n?t+="a":1!=n&&(t+="e"),t},loadingMore:function(){return"Nalagam več zadetkov…"},maximumSelected:function(e){var n="Označite lahko največ "+e.maximum+" predmet";return 2==e.maximum?n+="a":1!=e.maximum&&(n+="e"),n},noResults:function(){return"Ni zadetkov."},searching:function(){return"Iščem…"},removeAllItems:function(){return"Odstranite vse elemente"}}}),e.define,e.require}();PKc\*assets/vendor/select2-jquery/js/i18n/bs.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/bs",[],function(){function e(e,n,r,t){return e%10==1&&e%100!=11?n:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?r:t}return{errorLoading:function(){return"Preuzimanje nije uspijelo."},inputTooLong:function(n){var r=n.input.length-n.maximum,t="Obrišite "+r+" simbol";return t+=e(r,"","a","a")},inputTooShort:function(n){var r=n.minimum-n.input.length,t="Ukucajte bar još "+r+" simbol";return t+=e(r,"","a","a")},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(n){var r="Možete izabrati samo "+n.maximum+" stavk";return r+=e(n.maximum,"u","e","i")},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Uklonite sve stavke"}}}),e.define,e.require}();PKc\N*assets/vendor/select2-jquery/js/i18n/uk.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/uk",[],function(){function n(n,e,u,r){return n%100>10&&n%100<15?r:n%10==1?e:n%10>1&&n%10<5?u:r}return{errorLoading:function(){return"Неможливо завантажити результати"},inputTooLong:function(e){return"Будь ласка, видаліть "+(e.input.length-e.maximum)+" "+n(e.maximum,"літеру","літери","літер")},inputTooShort:function(n){return"Будь ласка, введіть "+(n.minimum-n.input.length)+" або більше літер"},loadingMore:function(){return"Завантаження інших результатів…"},maximumSelected:function(e){return"Ви можете вибрати лише "+e.maximum+" "+n(e.maximum,"пункт","пункти","пунктів")},noResults:function(){return"Нічого не знайдено"},searching:function(){return"Пошук…"},removeAllItems:function(){return"Видалити всі елементи"}}}),n.define,n.require}();PKc\*assets/vendor/select2-jquery/js/i18n/bg.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/bg",[],function(){return{inputTooLong:function(n){var e=n.input.length-n.maximum,u="Моля въведете с "+e+" по-малко символ";return e>1&&(u+="a"),u},inputTooShort:function(n){var e=n.minimum-n.input.length,u="Моля въведете още "+e+" символ";return e>1&&(u+="a"),u},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(n){var e="Можете да направите до "+n.maximum+" ";return n.maximum>1?e+="избора":e+="избор",e},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"},removeAllItems:function(){return"Премахнете всички елементи"}}}),n.define,n.require}();PKc\n*assets/vendor/select2-jquery/js/i18n/hy.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/hy",[],function(){return{errorLoading:function(){return"Արդյունքները հնարավոր չէ բեռնել։"},inputTooLong:function(n){return"Խնդրում ենք հեռացնել "+(n.input.length-n.maximum)+" նշան"},inputTooShort:function(n){return"Խնդրում ենք մուտքագրել "+(n.minimum-n.input.length)+" կամ ավել նշաններ"},loadingMore:function(){return"Բեռնվում են նոր արդյունքներ․․․"},maximumSelected:function(n){return"Դուք կարող եք ընտրել առավելագույնը "+n.maximum+" կետ"},noResults:function(){return"Արդյունքներ չեն գտնվել"},searching:function(){return"Որոնում․․․"},removeAllItems:function(){return"Հեռացնել բոլոր տարրերը"}}}),n.define,n.require}();PKc\^^*assets/vendor/select2-jquery/js/i18n/ja.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ja",[],function(){return{errorLoading:function(){return"結果が読み込まれませんでした"},inputTooLong:function(n){return n.input.length-n.maximum+" 文字を削除してください"},inputTooShort:function(n){return"少なくとも "+(n.minimum-n.input.length)+" 文字を入力してください"},loadingMore:function(){return"読み込み中…"},maximumSelected:function(n){return n.maximum+" 件しか選択できません"},noResults:function(){return"対象が見つかりません"},searching:function(){return"検索しています…"},removeAllItems:function(){return"すべてのアイテムを削除"}}}),n.define,n.require}();PKc\`<<*assets/vendor/select2-jquery/js/i18n/da.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){return"Angiv venligst "+(e.input.length-e.maximum)+" tegn mindre"},inputTooShort:function(e){return"Angiv venligst "+(e.minimum-e.input.length)+" tegn mere"},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var n="Du kan kun vælge "+e.maximum+" emne";return 1!=e.maximum&&(n+="r"),n},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"},removeAllItems:function(){return"Fjern alle elementer"}}}),e.define,e.require}();PKc\K~*assets/vendor/select2-jquery/js/i18n/ca.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Si us plau, elimina "+n+" car";return r+=1==n?"àcter":"àcters"},inputTooShort:function(e){var n=e.minimum-e.input.length,r="Si us plau, introdueix "+n+" car";return r+=1==n?"àcter":"àcters"},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var n="Només es pot seleccionar "+e.maximum+" element";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"},removeAllItems:function(){return"Treu tots els elements"}}}),e.define,e.require}();PKc\HE $*assets/vendor/select2-jquery/js/i18n/vi.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/vi",[],function(){return{inputTooLong:function(n){return"Vui lòng xóa bớt "+(n.input.length-n.maximum)+" ký tự"},inputTooShort:function(n){return"Vui lòng nhập thêm từ "+(n.minimum-n.input.length)+" ký tự trở lên"},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(n){return"Chỉ có thể chọn được "+n.maximum+" lựa chọn"},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"},removeAllItems:function(){return"Xóa tất cả các mục"}}}),n.define,n.require}();PKc\WW*assets/vendor/select2-jquery/js/i18n/ko.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(n){return"너무 깁니다. "+(n.input.length-n.maximum)+" 글자 지워주세요."},inputTooShort:function(n){return"너무 짧습니다. "+(n.minimum-n.input.length)+" 글자 더 입력해주세요."},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(n){return"최대 "+n.maximum+"개까지만 선택 가능합니다."},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"},removeAllItems:function(){return"모든 항목 삭제"}}}),n.define,n.require}();PKc\,bb*assets/vendor/select2-jquery/js/i18n/af.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/af",[],function(){return{errorLoading:function(){return"Die resultate kon nie gelaai word nie."},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Verwyders asseblief "+n+" character";return 1!=n&&(r+="s"),r},inputTooShort:function(e){return"Voer asseblief "+(e.minimum-e.input.length)+" of meer karakters"},loadingMore:function(){return"Meer resultate word gelaai…"},maximumSelected:function(e){var n="Kies asseblief net "+e.maximum+" item";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"Geen resultate gevind"},searching:function(){return"Besig…"},removeAllItems:function(){return"Verwyder alle items"}}}),e.define,e.require}();PKc\<+&LL*assets/vendor/select2-jquery/js/i18n/en.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Please delete "+n+" character";return 1!=n&&(r+="s"),r},inputTooShort:function(e){return"Please enter "+(e.minimum-e.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var n="You can only select "+e.maximum+" item";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"No results found"},searching:function(){return"Searching…"},removeAllItems:function(){return"Remove all items"}}}),e.define,e.require}();PKc\*assets/vendor/select2-jquery/js/i18n/sq.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/sq",[],function(){return{errorLoading:function(){return"Rezultatet nuk mund të ngarkoheshin."},inputTooLong:function(e){var n=e.input.length-e.maximum,t="Të lutem fshi "+n+" karakter";return 1!=n&&(t+="e"),t},inputTooShort:function(e){return"Të lutem shkruaj "+(e.minimum-e.input.length)+" ose më shumë karaktere"},loadingMore:function(){return"Duke ngarkuar më shumë rezultate…"},maximumSelected:function(e){var n="Mund të zgjedhësh vetëm "+e.maximum+" element";return 1!=e.maximum&&(n+="e"),n},noResults:function(){return"Nuk u gjet asnjë rezultat"},searching:function(){return"Duke kërkuar…"},removeAllItems:function(){return"Hiq të gjitha sendet"}}}),e.define,e.require}();PKc\ğL  *assets/vendor/select2-jquery/js/i18n/bn.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/bn",[],function(){return{errorLoading:function(){return"ফলাফলগুলি লোড করা যায়নি।"},inputTooLong:function(n){var e=n.input.length-n.maximum,u="অনুগ্রহ করে "+e+" টি অক্ষর মুছে দিন।";return 1!=e&&(u="অনুগ্রহ করে "+e+" টি অক্ষর মুছে দিন।"),u},inputTooShort:function(n){return n.minimum-n.input.length+" টি অক্ষর অথবা অধিক অক্ষর লিখুন।"},loadingMore:function(){return"আরো ফলাফল লোড হচ্ছে ..."},maximumSelected:function(n){var e=n.maximum+" টি আইটেম নির্বাচন করতে পারবেন।";return 1!=n.maximum&&(e=n.maximum+" টি আইটেম নির্বাচন করতে পারবেন।"),e},noResults:function(){return"কোন ফলাফল পাওয়া যায়নি।"},searching:function(){return"অনুসন্ধান করা হচ্ছে ..."}}}),n.define,n.require}();PKc\*assets/vendor/select2-jquery/js/i18n/el.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/el",[],function(){return{errorLoading:function(){return"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν."},inputTooLong:function(n){var e=n.input.length-n.maximum,u="Παρακαλώ διαγράψτε "+e+" χαρακτήρ";return 1==e&&(u+="α"),1!=e&&(u+="ες"),u},inputTooShort:function(n){return"Παρακαλώ συμπληρώστε "+(n.minimum-n.input.length)+" ή περισσότερους χαρακτήρες"},loadingMore:function(){return"Φόρτωση περισσότερων αποτελεσμάτων…"},maximumSelected:function(n){var e="Μπορείτε να επιλέξετε μόνο "+n.maximum+" επιλογ";return 1==n.maximum&&(e+="ή"),1!=n.maximum&&(e+="ές"),e},noResults:function(){return"Δεν βρέθηκαν αποτελέσματα"},searching:function(){return"Αναζήτηση…"},removeAllItems:function(){return"Καταργήστε όλα τα στοιχεία"}}}),n.define,n.require}();PKc\W*assets/vendor/select2-jquery/js/i18n/mk.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/mk",[],function(){return{inputTooLong:function(n){var e=(n.input.length,n.maximum,"Ве молиме внесете "+n.maximum+" помалку карактер");return 1!==n.maximum&&(e+="и"),e},inputTooShort:function(n){var e=(n.minimum,n.input.length,"Ве молиме внесете уште "+n.maximum+" карактер");return 1!==n.maximum&&(e+="и"),e},loadingMore:function(){return"Вчитување резултати…"},maximumSelected:function(n){var e="Можете да изберете само "+n.maximum+" ставк";return 1===n.maximum?e+="а":e+="и",e},noResults:function(){return"Нема пронајдено совпаѓања"},searching:function(){return"Пребарување…"},removeAllItems:function(){return"Отстрани ги сите предмети"}}}),n.define,n.require}();PKc\9TT*assets/vendor/select2-jquery/js/i18n/hr.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/hr",[],function(){function n(n){var e=" "+n+" znak";return n%10<5&&n%10>0&&(n%100<5||n%100>19)?n%10>1&&(e+="a"):e+="ova",e}return{errorLoading:function(){return"Preuzimanje nije uspjelo."},inputTooLong:function(e){return"Unesite "+n(e.input.length-e.maximum)},inputTooShort:function(e){return"Unesite još "+n(e.minimum-e.input.length)},loadingMore:function(){return"Učitavanje rezultata…"},maximumSelected:function(n){return"Maksimalan broj odabranih stavki je "+n.maximum},noResults:function(){return"Nema rezultata"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Ukloni sve stavke"}}}),n.define,n.require}();PKc\T$=*assets/vendor/select2-jquery/js/i18n/fr.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/fr",[],function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(e){var n=e.input.length-e.maximum;return"Supprimez "+n+" caractère"+(n>1?"s":"")},inputTooShort:function(e){var n=e.minimum-e.input.length;return"Saisissez au moins "+n+" caractère"+(n>1?"s":"")},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){return"Vous pouvez seulement sélectionner "+e.maximum+" élément"+(e.maximum>1?"s":"")},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"},removeAllItems:function(){return"Supprimer tous les éléments"}}}),e.define,e.require}();PKc\!ll-assets/vendor/select2-jquery/js/i18n/pt-BR.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Apague "+n+" caracter";return 1!=n&&(r+="es"),r},inputTooShort:function(e){return"Digite "+(e.minimum-e.input.length)+" ou mais caracteres"},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(e){var n="Você só pode selecionar "+e.maximum+" ite";return 1==e.maximum?n+="m":n+="ns",n},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"},removeAllItems:function(){return"Remover todos os itens"}}}),e.define,e.require}();PKc\@*assets/vendor/select2-jquery/js/i18n/ar.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ar",[],function(){return{errorLoading:function(){return"لا يمكن تحميل النتائج"},inputTooLong:function(n){return"الرجاء حذف "+(n.input.length-n.maximum)+" عناصر"},inputTooShort:function(n){return"الرجاء إضافة "+(n.minimum-n.input.length)+" عناصر"},loadingMore:function(){return"جاري تحميل نتائج إضافية..."},maximumSelected:function(n){return"تستطيع إختيار "+n.maximum+" بنود فقط"},noResults:function(){return"لم يتم العثور على أي نتائج"},searching:function(){return"جاري البحث…"},removeAllItems:function(){return"قم بإزالة كل العناصر"}}}),n.define,n.require}();PKc\)zܰ*assets/vendor/select2-jquery/js/i18n/pl.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/pl",[],function(){var n=["znak","znaki","znaków"],e=["element","elementy","elementów"],r=function(n,e){return 1===n?e[0]:n>1&&n<=4?e[1]:n>=5?e[2]:void 0};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Usuń "+t+" "+r(t,n)},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Podaj przynajmniej "+t+" "+r(t,n)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(n){return"Możesz zaznaczyć tylko "+n.maximum+" "+r(n.maximum,e)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"},removeAllItems:function(){return"Usuń wszystkie przedmioty"}}}),n.define,n.require}();PKc\ @@*assets/vendor/select2-jquery/js/i18n/km.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/km",[],function(){return{errorLoading:function(){return"មិនអាចទាញយកទិន្នន័យ"},inputTooLong:function(n){return"សូមលុបចេញ "+(n.input.length-n.maximum)+" អក្សរ"},inputTooShort:function(n){return"សូមបញ្ចូល"+(n.minimum-n.input.length)+" អក្សរ រឺ ច្រើនជាងនេះ"},loadingMore:function(){return"កំពុងទាញយកទិន្នន័យបន្ថែម..."},maximumSelected:function(n){return"អ្នកអាចជ្រើសរើសបានតែ "+n.maximum+" ជម្រើសប៉ុណ្ណោះ"},noResults:function(){return"មិនមានលទ្ធផល"},searching:function(){return"កំពុងស្វែងរក..."},removeAllItems:function(){return"លុបធាតុទាំងអស់"}}}),n.define,n.require}();PKc\%4  *assets/vendor/select2-jquery/js/i18n/nb.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/nb",[],function(){return{errorLoading:function(){return"Kunne ikke hente resultater."},inputTooLong:function(e){return"Vennligst fjern "+(e.input.length-e.maximum)+" tegn"},inputTooShort:function(e){return"Vennligst skriv inn "+(e.minimum-e.input.length)+" tegn til"},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"},removeAllItems:function(){return"Fjern alle elementer"}}}),e.define,e.require}();PKc\&{K*assets/vendor/select2-jquery/js/i18n/it.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var n=e.input.length-e.maximum,t="Per favore cancella "+n+" caratter";return t+=1!==n?"i":"e"},inputTooShort:function(e){return"Per favore inserisci "+(e.minimum-e.input.length)+" o più caratteri"},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var n="Puoi selezionare solo "+e.maximum+" element";return 1!==e.maximum?n+="i":n+="o",n},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"},removeAllItems:function(){return"Rimuovi tutti gli oggetti"}}}),e.define,e.require}();PKc\n3*assets/vendor/select2-jquery/js/i18n/ru.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ru",[],function(){function n(n,e,r,u){return n%10<5&&n%10>0&&n%100<5||n%100>20?n%10>1?r:e:u}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(e){var r=e.input.length-e.maximum,u="Пожалуйста, введите на "+r+" символ";return u+=n(r,"","a","ов"),u+=" меньше"},inputTooShort:function(e){var r=e.minimum-e.input.length,u="Пожалуйста, введите ещё хотя бы "+r+" символ";return u+=n(r,"","a","ов")},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(e){var r="Вы можете выбрать не более "+e.maximum+" элемент";return r+=n(e.maximum,"","a","ов")},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"},removeAllItems:function(){return"Удалить все элементы"}}}),n.define,n.require}();PKc\T$*assets/vendor/select2-jquery/js/i18n/he.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/he",[],function(){return{errorLoading:function(){return"שגיאה בטעינת התוצאות"},inputTooLong:function(n){var e=n.input.length-n.maximum,r="נא למחוק ";return r+=1===e?"תו אחד":e+" תווים"},inputTooShort:function(n){var e=n.minimum-n.input.length,r="נא להכניס ";return r+=1===e?"תו אחד":e+" תווים",r+=" או יותר"},loadingMore:function(){return"טוען תוצאות נוספות…"},maximumSelected:function(n){var e="באפשרותך לבחור עד ";return 1===n.maximum?e+="פריט אחד":e+=n.maximum+" פריטים",e},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"},removeAllItems:function(){return"הסר את כל הפריטים"}}}),n.define,n.require}();PKc\|G*assets/vendor/select2-jquery/js/i18n/sr.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/sr",[],function(){function n(n,e,r,t){return n%10==1&&n%100!=11?e:n%10>=2&&n%10<=4&&(n%100<12||n%100>14)?r:t}return{errorLoading:function(){return"Preuzimanje nije uspelo."},inputTooLong:function(e){var r=e.input.length-e.maximum,t="Obrišite "+r+" simbol";return t+=n(r,"","a","a")},inputTooShort:function(e){var r=e.minimum-e.input.length,t="Ukucajte bar još "+r+" simbol";return t+=n(r,"","a","a")},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(e){var r="Možete izabrati samo "+e.maximum+" stavk";return r+=n(e.maximum,"u","e","i")},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Уклоните све ставке"}}}),n.define,n.require}();PKc\*assets/vendor/select2-jquery/js/i18n/tr.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/tr",[],function(){return{errorLoading:function(){return"Sonuç yüklenemedi"},inputTooLong:function(n){return n.input.length-n.maximum+" karakter daha girmelisiniz"},inputTooShort:function(n){return"En az "+(n.minimum-n.input.length)+" karakter daha girmelisiniz"},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(n){return"Sadece "+n.maximum+" seçim yapabilirsiniz"},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"},removeAllItems:function(){return"Tüm öğeleri kaldır"}}}),n.define,n.require}();PKc\ *assets/vendor/select2-jquery/js/i18n/fa.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(n){return"لطفاً "+(n.input.length-n.maximum)+" کاراکتر را حذف نمایید"},inputTooShort:function(n){return"لطفاً تعداد "+(n.minimum-n.input.length)+" کاراکتر یا بیشتر وارد نمایید"},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(n){return"شما تنها می‌توانید "+n.maximum+" آیتم را انتخاب نمایید"},noResults:function(){return"هیچ نتیجه‌ای یافت نشد"},searching:function(){return"در حال جستجو..."},removeAllItems:function(){return"همه موارد را حذف کنید"}}}),n.define,n.require}();PKc\ܓ*assets/vendor/select2-jquery/js/i18n/sv.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(n){return"Vänligen sudda ut "+(n.input.length-n.maximum)+" tecken"},inputTooShort:function(n){return"Vänligen skriv in "+(n.minimum-n.input.length)+" eller fler tecken"},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(n){return"Du kan max välja "+n.maximum+" element"},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"},removeAllItems:function(){return"Ta bort alla objekt"}}}),n.define,n.require}();PKc\?MM*assets/vendor/select2-jquery/js/i18n/ne.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ne",[],function(){return{errorLoading:function(){return"नतिजाहरु देखाउन सकिएन।"},inputTooLong:function(n){var e=n.input.length-n.maximum,u="कृपया "+e+" अक्षर मेटाउनुहोस्।";return 1!=e&&(u+="कृपया "+e+" अक्षरहरु मेटाउनुहोस्।"),u},inputTooShort:function(n){return"कृपया बाँकी रहेका "+(n.minimum-n.input.length)+" वा अरु धेरै अक्षरहरु भर्नुहोस्।"},loadingMore:function(){return"अरु नतिजाहरु भरिँदैछन् …"},maximumSelected:function(n){var e="तँपाई "+n.maximum+" वस्तु मात्र छान्न पाउँनुहुन्छ।";return 1!=n.maximum&&(e="तँपाई "+n.maximum+" वस्तुहरु मात्र छान्न पाउँनुहुन्छ।"),e},noResults:function(){return"कुनै पनि नतिजा भेटिएन।"},searching:function(){return"खोजि हुँदैछ…"}}}),n.define,n.require}();PKc\(''*assets/vendor/select2-jquery/js/i18n/is.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/is",[],function(){return{inputTooLong:function(n){var t=n.input.length-n.maximum,e="Vinsamlegast styttið texta um "+t+" staf";return t<=1?e:e+"i"},inputTooShort:function(n){var t=n.minimum-n.input.length,e="Vinsamlegast skrifið "+t+" staf";return t>1&&(e+="i"),e+=" í viðbót"},loadingMore:function(){return"Sæki fleiri niðurstöður…"},maximumSelected:function(n){return"Þú getur aðeins valið "+n.maximum+" atriði"},noResults:function(){return"Ekkert fannst"},searching:function(){return"Leita…"},removeAllItems:function(){return"Fjarlægðu öll atriði"}}}),n.define,n.require}();PKc\??*assets/vendor/select2-jquery/js/i18n/hu.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/hu",[],function(){return{errorLoading:function(){return"Az eredmények betöltése nem sikerült."},inputTooLong:function(e){return"Túl hosszú. "+(e.input.length-e.maximum)+" karakterrel több, mint kellene."},inputTooShort:function(e){return"Túl rövid. Még "+(e.minimum-e.input.length)+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(e){return"Csak "+e.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"},removeAllItems:function(){return"Távolítson el minden elemet"}}}),e.define,e.require}();PKc\4*assets/vendor/select2-jquery/js/i18n/id.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/id",[],function(){return{errorLoading:function(){return"Data tidak boleh diambil."},inputTooLong:function(n){return"Hapuskan "+(n.input.length-n.maximum)+" huruf"},inputTooShort:function(n){return"Masukkan "+(n.minimum-n.input.length)+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(n){return"Anda hanya dapat memilih "+n.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"},removeAllItems:function(){return"Hapus semua item"}}}),n.define,n.require}();PKc\u-͎.assets/vendor/select2-jquery/js/select2.min.jsnuW+A/*! Select2 4.0.10 | https://github.com/select2/select2/blob/master/LICENSE.md */ !function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),n(t),t}:n(jQuery)}(function(u){var e=function(){if(u&&u.fn&&u.fn.select2&&u.fn.select2.amd)var e=u.fn.select2.amd;var t,n,r,h,o,s,f,g,m,v,y,_,i,a,w;function b(e,t){return i.call(e,t)}function l(e,t){var n,r,i,o,s,a,l,c,u,d,p,h=t&&t.split("/"),f=y.map,g=f&&f["*"]||{};if(e){for(s=(e=e.split("/")).length-1,y.nodeIdCompat&&w.test(e[s])&&(e[s]=e[s].replace(w,"")),"."===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),u=0;u":">",'"':""","'":"'","/":"/"};return"string"!=typeof e?e:String(e).replace(/[&<>"'\/\\]/g,function(e){return t[e]})},i.appendMany=function(e,t){if("1.7"===o.fn.jquery.substr(0,3)){var n=o();o.map(t,function(e){n=n.add(e)}),t=n}e.append(t)},i.__cache={};var n=0;return i.GetUniqueElementId=function(e){var t=e.getAttribute("data-select2-id");return null==t&&(e.id?(t=e.id,e.setAttribute("data-select2-id",t)):(e.setAttribute("data-select2-id",++n),t=n.toString())),t},i.StoreData=function(e,t,n){var r=i.GetUniqueElementId(e);i.__cache[r]||(i.__cache[r]={}),i.__cache[r][t]=n},i.GetData=function(e,t){var n=i.GetUniqueElementId(e);return t?i.__cache[n]&&null!=i.__cache[n][t]?i.__cache[n][t]:o(e).data(t):i.__cache[n]},i.RemoveData=function(e){var t=i.GetUniqueElementId(e);null!=i.__cache[t]&&delete i.__cache[t],e.removeAttribute("data-select2-id")},i}),e.define("select2/results",["jquery","./utils"],function(h,f){function r(e,t,n){this.$element=e,this.data=n,this.options=t,r.__super__.constructor.call(this)}return f.Extend(r,f.Observable),r.prototype.render=function(){var e=h('
    ');return this.options.get("multiple")&&e.attr("aria-multiselectable","true"),this.$results=e},r.prototype.clear=function(){this.$results.empty()},r.prototype.displayMessage=function(e){var t=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var n=h(''),r=this.options.get("translations").get(e.message);n.append(t(r(e.args))),n[0].className+=" select2-results__message",this.$results.append(n)},r.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},r.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n",{class:"select2-results__options select2-results__options--nested"});p.append(l),s.append(a),s.append(p)}else this.template(e,t);return f.StoreData(t,"data",e),t},r.prototype.bind=function(t,e){var l=this,n=t.id+"-results";this.$results.attr("id",n),t.on("results:all",function(e){l.clear(),l.append(e.data),t.isOpen()&&(l.setClasses(),l.highlightFirstItem())}),t.on("results:append",function(e){l.append(e.data),t.isOpen()&&l.setClasses()}),t.on("query",function(e){l.hideMessages(),l.showLoading(e)}),t.on("select",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("unselect",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("open",function(){l.$results.attr("aria-expanded","true"),l.$results.attr("aria-hidden","false"),l.setClasses(),l.ensureHighlightVisible()}),t.on("close",function(){l.$results.attr("aria-expanded","false"),l.$results.attr("aria-hidden","true"),l.$results.removeAttr("aria-activedescendant")}),t.on("results:toggle",function(){var e=l.getHighlightedResults();0!==e.length&&e.trigger("mouseup")}),t.on("results:select",function(){var e=l.getHighlightedResults();if(0!==e.length){var t=f.GetData(e[0],"data");"true"==e.attr("aria-selected")?l.trigger("close",{}):l.trigger("select",{data:t})}}),t.on("results:previous",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e);if(!(n<=0)){var r=n-1;0===e.length&&(r=0);var i=t.eq(r);i.trigger("mouseenter");var o=l.$results.offset().top,s=i.offset().top,a=l.$results.scrollTop()+(s-o);0===r?l.$results.scrollTop(0):s-o<0&&l.$results.scrollTop(a)}}),t.on("results:next",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e)+1;if(!(n>=t.length)){var r=t.eq(n);r.trigger("mouseenter");var i=l.$results.offset().top+l.$results.outerHeight(!1),o=r.offset().top+r.outerHeight(!1),s=l.$results.scrollTop()+o-i;0===n?l.$results.scrollTop(0):ithis.$results.outerHeight()||o<0)&&this.$results.scrollTop(i)}},r.prototype.template=function(e,t){var n=this.options.get("templateResult"),r=this.options.get("escapeMarkup"),i=n(e,t);null==i?t.style.display="none":"string"==typeof i?t.innerHTML=r(i):h(t).append(i)},r}),e.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),e.define("select2/selection/base",["jquery","../utils","../keys"],function(n,r,i){function o(e,t){this.$element=e,this.options=t,o.__super__.constructor.call(this)}return r.Extend(o,r.Observable),o.prototype.render=function(){var e=n('');return this._tabindex=0,null!=r.GetData(this.$element[0],"old-tabindex")?this._tabindex=r.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),e.attr("title",this.$element.attr("title")),e.attr("tabindex",this._tabindex),e.attr("aria-disabled","false"),this.$selection=e},o.prototype.bind=function(e,t){var n=this,r=e.id+"-results";this.container=e,this.$selection.on("focus",function(e){n.trigger("focus",e)}),this.$selection.on("blur",function(e){n._handleBlur(e)}),this.$selection.on("keydown",function(e){n.trigger("keypress",e),e.which===i.SPACE&&e.preventDefault()}),e.on("results:focus",function(e){n.$selection.attr("aria-activedescendant",e.data._resultId)}),e.on("selection:update",function(e){n.update(e.data)}),e.on("open",function(){n.$selection.attr("aria-expanded","true"),n.$selection.attr("aria-owns",r),n._attachCloseHandler(e)}),e.on("close",function(){n.$selection.attr("aria-expanded","false"),n.$selection.removeAttr("aria-activedescendant"),n.$selection.removeAttr("aria-owns"),n.$selection.trigger("focus"),n._detachCloseHandler(e)}),e.on("enable",function(){n.$selection.attr("tabindex",n._tabindex),n.$selection.attr("aria-disabled","false")}),e.on("disable",function(){n.$selection.attr("tabindex","-1"),n.$selection.attr("aria-disabled","true")})},o.prototype._handleBlur=function(e){var t=this;window.setTimeout(function(){document.activeElement==t.$selection[0]||n.contains(t.$selection[0],document.activeElement)||t.trigger("blur",e)},1)},o.prototype._attachCloseHandler=function(e){n(document.body).on("mousedown.select2."+e.id,function(e){var t=n(e.target).closest(".select2");n(".select2.select2-container--open").each(function(){this!=t[0]&&r.GetData(this,"element").select2("close")})})},o.prototype._detachCloseHandler=function(e){n(document.body).off("mousedown.select2."+e.id)},o.prototype.position=function(e,t){t.find(".selection").append(e)},o.prototype.destroy=function(){this._detachCloseHandler(this.container)},o.prototype.update=function(e){throw new Error("The `update` method must be defined in child classes.")},o}),e.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(e,t,n,r){function i(){i.__super__.constructor.apply(this,arguments)}return n.Extend(i,t),i.prototype.render=function(){var e=i.__super__.render.call(this);return e.addClass("select2-selection--single"),e.html(''),e},i.prototype.bind=function(t,e){var n=this;i.__super__.bind.apply(this,arguments);var r=t.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",r).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",r),this.$selection.on("mousedown",function(e){1===e.which&&n.trigger("toggle",{originalEvent:e})}),this.$selection.on("focus",function(e){}),this.$selection.on("blur",function(e){}),t.on("focus",function(e){t.isOpen()||n.$selection.trigger("focus")})},i.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},i.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},i.prototype.selectionContainer=function(){return e("")},i.prototype.update=function(e){if(0!==e.length){var t=e[0],n=this.$selection.find(".select2-selection__rendered"),r=this.display(t,n);n.empty().append(r);var i=t.title||t.text;i?n.attr("title",i):n.removeAttr("title")}else this.clear()},i}),e.define("select2/selection/multiple",["jquery","./base","../utils"],function(i,e,l){function n(e,t){n.__super__.constructor.apply(this,arguments)}return l.Extend(n,e),n.prototype.render=function(){var e=n.__super__.render.call(this);return e.addClass("select2-selection--multiple"),e.html('
      '),e},n.prototype.bind=function(e,t){var r=this;n.__super__.bind.apply(this,arguments),this.$selection.on("click",function(e){r.trigger("toggle",{originalEvent:e})}),this.$selection.on("click",".select2-selection__choice__remove",function(e){if(!r.options.get("disabled")){var t=i(this).parent(),n=l.GetData(t[0],"data");r.trigger("unselect",{originalEvent:e,data:n})}})},n.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},n.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},n.prototype.selectionContainer=function(){return i('
    • ×
    • ')},n.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],n=0;n×');a.StoreData(r[0],"data",t),this.$selection.find(".select2-selection__rendered").prepend(r)}},e}),e.define("select2/selection/search",["jquery","../utils","../keys"],function(r,a,l){function e(e,t,n){e.call(this,t,n)}return e.prototype.render=function(e){var t=r('');this.$searchContainer=t,this.$search=t.find("input");var n=e.call(this);return this._transferTabIndex(),n},e.prototype.bind=function(e,t,n){var r=this,i=t.id+"-results";e.call(this,t,n),t.on("open",function(){r.$search.attr("aria-controls",i),r.$search.trigger("focus")}),t.on("close",function(){r.$search.val(""),r.$search.removeAttr("aria-controls"),r.$search.removeAttr("aria-activedescendant"),r.$search.trigger("focus")}),t.on("enable",function(){r.$search.prop("disabled",!1),r._transferTabIndex()}),t.on("disable",function(){r.$search.prop("disabled",!0)}),t.on("focus",function(e){r.$search.trigger("focus")}),t.on("results:focus",function(e){e.data._resultId?r.$search.attr("aria-activedescendant",e.data._resultId):r.$search.removeAttr("aria-activedescendant")}),this.$selection.on("focusin",".select2-search--inline",function(e){r.trigger("focus",e)}),this.$selection.on("focusout",".select2-search--inline",function(e){r._handleBlur(e)}),this.$selection.on("keydown",".select2-search--inline",function(e){if(e.stopPropagation(),r.trigger("keypress",e),r._keyUpPrevented=e.isDefaultPrevented(),e.which===l.BACKSPACE&&""===r.$search.val()){var t=r.$searchContainer.prev(".select2-selection__choice");if(0this.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),e.define("select2/data/maximumSelectionLength",[],function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("select",function(){r._checkIfMaximumSelected()})},e.prototype.query=function(e,t,n){var r=this;this._checkIfMaximumSelected(function(){e.call(r,t,n)})},e.prototype._checkIfMaximumSelected=function(e,n){var r=this;this.current(function(e){var t=null!=e?e.length:0;0=r.maximumSelectionLength?r.trigger("results:message",{message:"maximumSelected",args:{maximum:r.maximumSelectionLength}}):n&&n()})},e}),e.define("select2/dropdown",["jquery","./utils"],function(t,e){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t('');return e.attr("dir",this.options.get("dir")),this.$dropdown=e},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),e.define("select2/dropdown/search",["jquery","../utils"],function(o,e){function t(){}return t.prototype.render=function(e){var t=e.call(this),n=o('');return this.$searchContainer=n,this.$search=n.find("input"),t.prepend(n),t},t.prototype.bind=function(e,t,n){var r=this,i=t.id+"-results";e.call(this,t,n),this.$search.on("keydown",function(e){r.trigger("keypress",e),r._keyUpPrevented=e.isDefaultPrevented()}),this.$search.on("input",function(e){o(this).off("keyup")}),this.$search.on("keyup input",function(e){r.handleSearch(e)}),t.on("open",function(){r.$search.attr("tabindex",0),r.$search.attr("aria-controls",i),r.$search.trigger("focus"),window.setTimeout(function(){r.$search.trigger("focus")},0)}),t.on("close",function(){r.$search.attr("tabindex",-1),r.$search.removeAttr("aria-controls"),r.$search.removeAttr("aria-activedescendant"),r.$search.val(""),r.$search.trigger("blur")}),t.on("focus",function(){t.isOpen()||r.$search.trigger("focus")}),t.on("results:all",function(e){null!=e.query.term&&""!==e.query.term||(r.showSearch(e)?r.$searchContainer.removeClass("select2-search--hide"):r.$searchContainer.addClass("select2-search--hide"))}),t.on("results:focus",function(e){e.data._resultId?r.$search.attr("aria-activedescendant",e.data._resultId):r.$search.removeAttr("aria-activedescendant")})},t.prototype.handleSearch=function(e){if(!this._keyUpPrevented){var t=this.$search.val();this.trigger("query",{term:t})}this._keyUpPrevented=!1},t.prototype.showSearch=function(e,t){return!0},t}),e.define("select2/dropdown/hidePlaceholder",[],function(){function e(e,t,n,r){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,r)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),r=t.length-1;0<=r;r--){var i=t[r];this.placeholder.id===i.id&&n.splice(r,1)}return n},e}),e.define("select2/dropdown/infiniteScroll",["jquery"],function(n){function e(e,t,n,r){this.lastParams={},e.call(this,t,n,r),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return e.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("query",function(e){r.lastParams=e,r.loading=!0}),t.on("query:append",function(e){r.lastParams=e,r.loading=!0}),this.$results.on("scroll",this.loadMoreIfNeeded.bind(this))},e.prototype.loadMoreIfNeeded=function(){var e=n.contains(document.documentElement,this.$loadingMore[0]);if(!this.loading&&e){var t=this.$results.offset().top+this.$results.outerHeight(!1);this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)<=t+50&&this.loadMore()}},e.prototype.loadMore=function(){this.loading=!0;var e=n.extend({},{page:1},this.lastParams);e.page++,this.trigger("query:append",e)},e.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},e.prototype.createLoadingMore=function(){var e=n('
    • '),t=this.options.get("translations").get("loadingMore");return e.html(t(this.lastParams)),e},e}),e.define("select2/dropdown/attachBody",["jquery","../utils"],function(f,a){function e(e,t,n){this.$dropdownParent=f(n.get("dropdownParent")||document.body),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("open",function(){r._showDropdown(),r._attachPositioningHandler(t),r._bindContainerResultHandlers(t)}),t.on("close",function(){r._hideDropdown(),r._detachPositioningHandler(t)}),this.$dropdownContainer.on("mousedown",function(e){e.stopPropagation()})},e.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},e.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t.removeClass("select2"),t.addClass("select2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},e.prototype.render=function(e){var t=f(""),n=e.call(this);return t.append(n),this.$dropdownContainer=t},e.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},e.prototype._bindContainerResultHandlers=function(e,t){if(!this._containerResultsHandlersBound){var n=this;t.on("results:all",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:append",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:message",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("select",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("unselect",function(){n._positionDropdown(),n._resizeDropdown()}),this._containerResultsHandlersBound=!0}},e.prototype._attachPositioningHandler=function(e,t){var n=this,r="scroll.select2."+t.id,i="resize.select2."+t.id,o="orientationchange.select2."+t.id,s=this.$container.parents().filter(a.hasScroll);s.each(function(){a.StoreData(this,"select2-scroll-position",{x:f(this).scrollLeft(),y:f(this).scrollTop()})}),s.on(r,function(e){var t=a.GetData(this,"select2-scroll-position");f(this).scrollTop(t.y)}),f(window).on(r+" "+i+" "+o,function(e){n._positionDropdown(),n._resizeDropdown()})},e.prototype._detachPositioningHandler=function(e,t){var n="scroll.select2."+t.id,r="resize.select2."+t.id,i="orientationchange.select2."+t.id;this.$container.parents().filter(a.hasScroll).off(n),f(window).off(n+" "+r+" "+i)},e.prototype._positionDropdown=function(){var e=f(window),t=this.$dropdown.hasClass("select2-dropdown--above"),n=this.$dropdown.hasClass("select2-dropdown--below"),r=null,i=this.$container.offset();i.bottom=i.top+this.$container.outerHeight(!1);var o={height:this.$container.outerHeight(!1)};o.top=i.top,o.bottom=i.top+o.height;var s=this.$dropdown.outerHeight(!1),a=e.scrollTop(),l=e.scrollTop()+e.height(),c=ai.bottom+s,d={left:i.left,top:o.bottom},p=this.$dropdownParent;"static"===p.css("position")&&(p=p.offsetParent());var h=p.offset();d.top-=h.top,d.left-=h.left,t||n||(r="below"),u||!c||t?!c&&u&&t&&(r="below"):r="above",("above"==r||t&&"below"!==r)&&(d.top=o.top-h.top-s),null!=r&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+r),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+r)),this.$dropdownContainer.css(d)},e.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},e.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},e}),e.define("select2/dropdown/minimumResultsForSearch",[],function(){function e(e,t,n,r){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,r)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,r=0;r');return e.attr("dir",this.options.get("dir")),this.$container=e,this.$container.addClass("select2-container--"+this.options.get("theme")),u.StoreData(e[0],"element",this.$element),e},d}),e.define("jquery-mousewheel",["jquery"],function(e){return e}),e.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults","./select2/utils"],function(i,e,o,t,s){if(null==i.fn.select2){var a=["open","close","destroy"];i.fn.select2=function(t){if("object"==typeof(t=t||{}))return this.each(function(){var e=i.extend(!0,{},t);new o(i(this),e)}),this;if("string"!=typeof t)throw new Error("Invalid arguments for Select2: "+t);var n,r=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=s.GetData(this,"select2");null==e&&window.console&&console.error&&console.error("The select2('"+t+"') method was called on an element that is not using Select2."),n=e[t].apply(e,r)}),-1 span { vertical-align: middle; font-weight: 700; color: #5F5F5F; } .sfwd_options .ld-radio-input:checked + .ld-radio-input__label:before { background-color: #11a0d2; box-shadow: inset 0 0 0 2px #fff; } .sfwd_options .ld-radio-input:checked:focus + .ld-radio-input__label:before { box-shadow: inset 0 0 0 2px #fff, 0 0 0 2px #fff, 0 0 0 3px #6c7781; } .sfwd_options .ld-radio-input:focus + .ld-radio-input__label:before { box-shadow: 0 0 0 2px #fff, 0 0 0 3px #6c7781; outline-offset: 2px; outline: 2px solid transparent; } .sfwd_options .ld-radio-input:hover + .ld-radio-input__label:before { border-color: #11a0d2; } .sfwd_options .ld-radio-input[disabled="disabled"], .sfwd_options .ld-radio-input[disabled="disabled"] + .ld-radio-input__label { pointer-events: none; } .sfwd_options .ld-radio-input[disabled="disabled"] + .ld-radio-input__label:before { opacity: 0.5; } .sfwd_options .ld-radio-description { color: #666; padding-left: 25px; } /* Checkbox CSS*/ .sfwd_options .ld-checkbox-input { border: 0; clip-path: inset(50%); clip: rect(1px, 1px, 1px, 1px); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; word-wrap: normal !important; } .sfwd_options .ld-checkbox-input__label { margin-right: 16px; } .sfwd_options .ld-checkbox-input__label:before { border: 2px solid #6c7781; box-sizing: border-box; content: ""; display: inline-block; height: 16px; margin-right: 10px; vertical-align: middle; width: 16px; } .sfwd_options .ld-checkbox-input__label > span { vertical-align: middle; } .sfwd_options .ld-checkbox-input:checked + .ld-checkbox-input__label:before { align-items: center; color: #11a0d2; content: "\2713"; display: inline-flex; justify-content: center; font-weight: 900; } .sfwd_options .ld-checkbox-input:focus + .ld-checkbox-input__label:before { box-shadow: 0 0 0 2px #fff, 0 0 0 3px #6c7781; outline-offset: 2px; outline: 2px solid transparent; } .sfwd_options .ld-checkbox-input:hover + .ld-checkbox-input__label:before { border-color: #11a0d2; } .sfwd_options .ld-checkbox-input[disabled="disabled"], .sfwd_options .ld-checkbox-input[disabled="disabled"] + .ld-checkbox-input__label { pointer-events: none; } .sfwd_options .ld-checkbox-input[disabled="disabled"] + .ld-checkbox-input__label:before { opacity: 0.5; } .sfwd_options .sfwd_option_input p.learndash-section-field-checkbox-p { margin: 3px 0 0 0; padding: 0; } /* Text Input CSS */ .sfwd_options .learndash-section-field-text { border-radius: 2px; border: 1px solid #ddd; box-shadow: none; box-sizing: border-box; font-size: 14px; padding: 5px 7px; width: 100%; } .sfwd_options .learndash-section-field-number.-medium, .sfwd_options .learndash-section-field-text.-medium, .sfwd_options .learndash-section-field-url.-medium { width: 50%; } .sfwd_options .learndash-section-field-number.-small, .sfwd_options .learndash-section-field-text.-small, .sfwd_options .learndash-section-field-url.-small { width: 100px; } .sfwd_options .learndash-section-field-number:focus, .sfwd_options .learndash-section-field-text:focus { border-color: #11a0d2; outline: 0; } .sfwd_options .learndash-section-field-number:hover, .sfwd_options .learndash-section-field-text:hover, .sfwd_options .learndash-section-field-url:hover { border-color: #999; } .sfwd_options .learndash-section-field-number.full-text, .sfwd_options .learndash-section-field-text.full-text, .sfwd_options .learndash-section-field-url.full-text { width: 100%; } /* Select CSS */ .sfwd_options .ld-select { background-color: #fff; border-radius: 3px; border: 1px solid #ccc; display: inline-block; overflow: hidden; position: relative; vertical-align: middle; width: 100%; max-width: 450px; } .sfwd_options .ld-select:after { border: 5px solid transparent; border-bottom: 0; border-top-color: black; content: ""; height: 0; pointer-events: none; position: absolute; right: 5px; speak: none; top: 50%; transform: translate(0,-50%); width: 0; } .sfwd_options .ld-select-multiple:after, .sfwd_options .ld-select2:after { border: none; } .select2-container--default .select2-selection--single .select2-selection__rendered { color: #72777c !important; } .select2-container--default .select2-results__option--highlighted[aria-selected] { background-color: #11a0d2 !important; } /* .sfwd_options .ld-select-multiple.ld-select2 ul.select2-selection__rendered li, .sfwd_options .ld-select-multiple.ld-select2 ul.select2-selection__rendered li input { width: 100%; } */ .sfwd_options .ld-select-multiple.ld-select2 .select2-container .select2-selection__rendered > *:first-child.select2-search--inline { width: 100% !important; } .sfwd_options .ld-select-multiple.ld-select2 .select2-container .select2-selection__rendered > *:first-child.select2-search--inline .select2-search__field { width: 100% !important; } .sfwd_options .ld-select-multiple.ld-select2 .select2-container li { margin-bottom: 0; } .sfwd_options .select2-container .select2-search--inline .select2-search__field { margin-top: 3px; margin-bottom: 2px; } .sfwd_options .ld-select select { -moz-appearance: none; -webkit-appearance: inherit; appearance: none; background: none; border: 0; font-size: 14px; height: 100%; margin: 0; padding: 5px 10px; width: 100%; max-width: 100%; /* width: 110% \9; */ z-index: 2; } .sfwd_options .ld-select select:focus { box-shadow: inset 0 0 0 1px #6c7781; } .sfwd_options .ld-select select::-ms-expand { display: none; } .sfwd_options .ld-select select:-moz-focusring { text-shadow: $select--focus-ring--text-shadow; } .sfwd_options .ld-select select option { border: 0; width: 100%; } .sfwd_options .ld-select2 .select2-container { width: 100% !important; max-width: 450px; height: 100%; } /* .sfwd_options .ld-select2 .select2-container .select2-selection--single .select2-selection__rendered { padding-top: 5px; padding-bottom: 5px; } */ .sfwd_options .ld-select2 .select2-container--default .select2-selection--single { padding-top: 3px; padding-bottom: 3px; height: 100%; border: 0px; } .sfwd_options .ld-select2 .select2-container--default .select2-selection--single .select2-selection__arrow { height: 100%; } /* .sfwd_options .ld-select2 .select2-container--default .select2-selection--single .select2-selection__placeholder { color: inherit; } */ .sfwd_options .ld-select2 .select2-container--default .select2-selection--single .select2-selection__arrow b { border-top-color: inherit; } .sfwd_options .select2-container--default .select2-selection--multiple { border: 0px solid #aaa !important; } .sfwd_options .select2-container .select2-search--inline .select2-search__field { padding-top: 5px !important; color: #444 !important; } /* .select2-container--default .select2-selection--single { background-color: #fff; border: 1px solid #aaa; border-radius: 4px; height: 100%; } */ /* Settings Row CSS */ /* .sfwd_options .sfwd_input { align-items: flex-start; box-sizing: border-box; display: flex; flex-wrap: wrap; padding-top: 20px; } */ /* .sfwd_options .sfwd_input > .sfwd_input { border-left: 2px solid #ddd; flex: 1 0 100%; padding-left: 20px; } */ .sfwd_options .sfwd_option_div p.ld-radio-input-wrapper { margin-bottom: 1px; } .sfwd_options .sfwd_input textarea { color: #515151; margin: 0px; font-size: 14px; line-height: 25px; width: 100%; } .sfwd_options .sfwd_input > .sfwd_input:first-child { margin-top: 20px; } .sfwd_options .sfwd_option_input p { margin-top: 0; } .sfwd_options .sfwd_option_label { box-sizing: border-box; flex: 1 0 100%; font-weight: 700; margin-bottom: 10px; padding-right: 0px; /* 20px;*/ /* position: relative; */ } .sfwd_options .sfwd_option_input { flex: 1 0 100%; margin-bottom: 10px; } .sfwd_options .sfwd_option_div select[multiple] { width: 100%; min-height: 100px; } .sfwd_options .ld-settings-sub.ld-settings-sub-state-closed, .sfwd_options .ld-settings-inner-state-closed, .sfwd_options .ld-theme-settings-section-state-closed { display: none; } .sfwd_options .ld-settings-sub.ld-settings-sub-state-open, .sfwd_options .ld-settings-inner-state-open .sfwd_options .ld-theme-settings-section-state-open { display: block; } .sfwd_options .ld-settings-sub-advanced .sfwd_input { margin-left: 1px; border-left: 1px solid #ccc; } .sfwd_options .ld-settings-sub-advanced .ld-settings-sub-advanced-inner-state-closed { display: none; } .sfwd_options .ld-settings-sub-advanced .ld-settings-sub-advanced-inner-state-open { display: block; } .sfwd_options .ld-settings-sub-advanced .ld-settings-sub-advanced-inner .sfwd_option_label { width: auto; } .sfwd_options .ld-settings-sub-advanced .ld-settings-sub-advanced-inner .sfwd_option_input { width: auto; } /* .sfwd_options .sfwd_help_text_div { display: block; position: absolute; top: 20px; border: 2px solid black; padding: 5px; background-color: yellow; color: black; z-index: 99; } */ /* @media screen and (min-width: 768px) { .sfwd_options .sfwd_option_label { flex: 1 0 300px; margin-bottom: 0; } .sfwd_options .sfwd_option_input { flex: 1 0 calc(100% - 300px); margin-bottom: 0; } .sfwd_options .sfwd_input > .sfwd_input .sfwd_option_label { flex: 1 0 278px; } .sfwd_options .sfwd_input > .sfwd_input .sfwd_option_input { flex: 1 0 calc(100% - 278px); } } */ .sfwd_options .tooltip { position: relative; display: inline-block; opacity: 1; } /* Tooltip text */ .sfwd_options .tooltip .tooltiptext { visibility: hidden; width: 180px; background-color: #11a0d2 /* #1e8cbe */; color: #fff; text-align: center; padding: 5px 0; border-radius: 6px; margin-left: -90px; /* Use half of the width (120/2 = 60), to center the tooltip */ bottom: 100%; left: 50%; margin-bottom: 5px; /* Position the tooltip text - see examples below! */ position: absolute; z-index: 1; } /* Show the tooltip text when you mouse over the tooltip container */ .sfwd_options .-disabled.tooltip:hover .tooltiptext { visibility: visible; } /* Tooltip top of element */ /* Arrow */ .sfwd_options .tooltip .tooltiptext::after { content: " "; position: absolute; top: 100%; /* At the bottom of the tooltip */ left: 50%; margin-left: -5px; border-width: 5px; border-style: solid; border-color: #11a0d2 /* #1e8cbe */ transparent transparent transparent; } /* Tooltip to right of element */ /* .sfwd_options .tooltip .tooltiptext { top: -5px; left: 120%; } .sfwd_options .tooltip .tooltiptext::after { content: " "; position: absolute; top: 50%; right: 100%; margin-top: -5px; border-width: 5px; border-style: solid; border-color: transparent #1e8cbe transparent transparent; } */ /** * Quiz Custom Fields style */ .sfwd_options .form_table_wrapper { margin-top: 0px; padding: 0px; border: 0px solid #C2C2C2; } .sfwd_options .form_table_wrapper table { border-collapse: collapse; } /* Line item CSS */ .sfwd_options .form_table_wrapper #form_add { background-color: transparent; background-image: url("data:image/svg+xml,%3Csvg width='256' height='256' viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23007cba' d='M185.066 128c0 3.534-2.866 6-6.4 6H134v44.666c0 3.534-2.467 6.399-6 6.399-3.534 0-6-2.865-6-6.399V134H77.332c-3.535 0-6.4-2.466-6.4-6s2.866-6 6.4-6H122V77.331c0-3.534 2.466-6.4 6-6.4 3.533 0 6 2.866 6 6.4V122h44.666c3.534 0 6.4 2.466 6.4 6zM256 128C256 57.42 198.58 0 128 0S0 57.42 0 128s57.42 128 128 128 128-57.42 128-128zm-12.8 0c0 63.521-51.679 115.2-115.2 115.2-63.522 0-115.2-51.679-115.2-115.2C12.8 64.478 64.478 12.8 128 12.8c63.521 0 115.2 51.678 115.2 115.2z' fill-rule='nonzero'%3E%3C/path%3E%3C/svg%3E"); background-position: center left 3px; background-repeat: no-repeat; background-size: 16px 16px; border: 0; color: #007cba; cursor: pointer; font-size: 14px; font-weight: 700; padding: 5px 10px 5px 30px; box-shadow: none; } .sfwd_options .form_table_wrapper #form_add:hover { background-image: url("data:image/svg+xml,%3Csvg width='256' height='256' viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%2311a0d2' d='M185.066 128c0 3.534-2.866 6-6.4 6H134v44.666c0 3.534-2.467 6.399-6 6.399-3.534 0-6-2.865-6-6.399V134H77.332c-3.535 0-6.4-2.466-6.4-6s2.866-6 6.4-6H122V77.331c0-3.534 2.466-6.4 6-6.4 3.533 0 6 2.866 6 6.4V122h44.666c3.534 0 6.4 2.466 6.4 6zM256 128C256 57.42 198.58 0 128 0S0 57.42 0 128s57.42 128 128 128 128-57.42 128-128zm-12.8 0c0 63.521-51.679 115.2-115.2 115.2-63.522 0-115.2-51.679-115.2-115.2C12.8 64.478 64.478 12.8 128 12.8c63.521 0 115.2 51.678 115.2 115.2z' fill-rule='nonzero'%3E%3C/path%3E%3C/svg%3E"); color: #11a0d2; } .sfwd_options .form_table_wrapper .form_move { text-decoration: none; } .sfwd_options .form_table_wrapper .form_delete { background-color: transparent; background-image: url("data:image/svg+xml,%3Csvg aria-hidden='true' role='img' focusable='false' class='dashicon dashicons-dismiss' xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath fill='%23a00' d='M10 2c4.42 0 8 3.58 8 8s-3.58 8-8 8-8-3.58-8-8 3.58-8 8-8zm5 11l-3-3 3-3-2-2-3 3-3-3-2 2 3 3-3 3 2 2 3-3 3 3z'%3E%3C/path%3E%3C/svg%3E"); background-position: center left 3px; background-repeat: no-repeat; border: 0; color: #a00; cursor: pointer; font-weight: 700; margin: 0; opacity: 0; padding: 5px 10px 5px 30px; transition: opacity .1s; visibility: hidden; } .sfwd_options .form_table_wrapper .form_delete:hover { color: red; } .sfwd_options .form_table_wrapper tbody.ui-sortable tr:hover .form_delete { opacity: 1; visibility: visible; } .sfwd_options .form_table_wrapper thead tr th, .sfwd_options .form_table_wrapper tbody.ui-sortable tr td { padding: 10px 5px; transition: box-shadow .1s; } .sfwd_options .form_table_wrapper tbody.ui-sortable tr:hover td { box-shadow: 0 1px 0 0 #11a0d2, 0 -1px 0 0 #11a0d2; } .sfwd_options .form_table_wrapper tbody.ui-sortable tr:hover td:first-of-type { box-shadow: 0 1px 0 0 #11a0d2, 0 -1px 0 0 #11a0d2, -1px 0 0 0 #11a0d2; } .sfwd_options .form_table_wrapper tbody.ui-sortable tr:hover td:last-of-type { box-shadow: 0 1px 0 0 #11a0d2, 0 -1px 0 0 #11a0d2, 1px 0 0 0 #11a0d2; } .sfwd_options .form_table_wrapper tbody.ui-sortable tr td:first-of-type { text-align: center; } .sfwd_options .form_table_wrapper .ld-select.-field select { padding: 0 10px; } .sfwd_options .form_table_wrapper #form_table thead th { text-transform: uppercase; } .sfwd_options .form_table_wrapper #form_add_wrapper { margin-top: 10px; margin-left: 10px; } /** Quiz Edit Result Text lists */ #learndash-quiz-resultList ul#resultList { width: 100%; } #learndash-quiz-resultList ul#resultList li { padding: 5px; border: 1; border: 1px dotted; } #learndash-quiz-resultList ul#resultList li .resultHeader { margin-bottom: 5px; padding: 10px; background-color:#ebebeb; /* rgb(207, 207, 207); */ } #learndash-quiz-resultList ul#resultList li .resultEditor { /*margin: 20px; */ } #learndash-quiz-resultList input.addResult { background-color: transparent; background-image: url("data:image/svg+xml,%3Csvg width='256' height='256' viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23007cba' d='M185.066 128c0 3.534-2.866 6-6.4 6H134v44.666c0 3.534-2.467 6.399-6 6.399-3.534 0-6-2.865-6-6.399V134H77.332c-3.535 0-6.4-2.466-6.4-6s2.866-6 6.4-6H122V77.331c0-3.534 2.466-6.4 6-6.4 3.533 0 6 2.866 6 6.4V122h44.666c3.534 0 6.4 2.466 6.4 6zM256 128C256 57.42 198.58 0 128 0S0 57.42 0 128s57.42 128 128 128 128-57.42 128-128zm-12.8 0c0 63.521-51.679 115.2-115.2 115.2-63.522 0-115.2-51.679-115.2-115.2C12.8 64.478 64.478 12.8 128 12.8c63.521 0 115.2 51.678 115.2 115.2z' fill-rule='nonzero'%3E%3C/path%3E%3C/svg%3E"); background-position: center left 3px; background-repeat: no-repeat; background-size: 16px 16px; border: 0; color: #007cba; cursor: pointer; font-size: 14px; font-weight: 700; padding: 5px 10px 5px 30px; } #learndash-quiz-resultList ul#resultList li input.deleteResult { float: right; background-color: transparent; background-image: url("data:image/svg+xml,%3Csvg aria-hidden='true' role='img' focusable='false' class='dashicon dashicons-dismiss' xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath fill='%23a00' d='M10 2c4.42 0 8 3.58 8 8s-3.58 8-8 8-8-3.58-8-8 3.58-8 8-8zm5 11l-3-3 3-3-2-2-3 3-3-3-2 2 3 3-3 3 2 2 3-3 3 3z'%3E%3C/path%3E%3C/svg%3E"); background-position: center left 3px; background-repeat: no-repeat; border: 0; color: #a00; cursor: pointer; font-weight: 700; margin: 0; opacity: 0; padding: 5px 10px 5px 30px; transition: opacity .1s; visibility: hidden; } #learndash-quiz-resultList ul#resultList li:hover input.deleteResult { opacity: 1; visibility: visible; } #learndash-quiz-resultList #resultList li .expand-arrow { cursor: pointer; margin-top: 3px; float: right; } #learndash-quiz-resultList #resultList li .expand-arrow-up svg { transform: rotate(180deg); } /* #learndash-quiz-admin-data-handling-settings_toplistDataAddBlock_field, #learndash-quiz-admin-data-handling-settings_statisticsIpLock_field, #learndash-quiz-admin-data-handling-settings_emailNotification_field, #learndash-quiz-admin-data-handling-settings_timeLimitCookie_field { margin-left: 0; padding-left: 0; } */ .sfwd_options .sfwd_option_label .descripton p { margin-bottom: 0; } .sfwd_options .sfwd_option_input_full { margin-left: 0; margin-right: 0; } .learndash_navigation_questions_list ul.learndash-quiz-questions li a { font-weight: normal; text-decoration: none !important; } .learndash_navigation_questions_list ul.learndash-quiz-questions li.ld-question-overview-widget-item-current a { font-weight: 700; } .learndash_navigation_questions_list .ld-question-overview-widget-add { font-weight: 700; text-decoration: none !important; } .sfwd_options #learndash-quiz-admin-data-handling-settings_toplistDataAddBlock_field, .sfwd_options #learndash-quiz-admin-data-handling-settings_associated_settings_field, .sfwd_options #learndash-quiz-admin-data-handling-settings_emailNotification_field, .sfwd_options #learndash-quiz-admin-data-handling-settings_timeLimitCookie_field, .sfwd_options #learndash-quiz-admin-data-handling-settings_toplistDataShowIn_field, .sfwd_options #learndash-quiz-admin-data-handling-settings_statisticsIpLock_field, .sfwd_options #learndash-quiz-display-content-settings_showMaxQuestion_field, .sfwd_options #learndash-quiz-display-content-settings_showMaxQuestionValue_field, .sfwd_options #learndash-quiz-display-content-settings_quizModus_multiple_questionsPerPage_field, .sfwd_options #learndash-quiz-results-options_resultText_field, .sfwd_options #learndash-quiz-display-content-settings_quizModus_single_feedback_field { border-left: none; margin-left: 0; padding-left: 0; } .sfwd_options #learndash-course-access-settings_course_access_list_field, .sfwd_options #learndash-course-display-content-settings_course_materials_field, .sfwd_options #learndash-lesson-display-content-settings_lesson_materials_field, .sfwd_options #learndash-topic-display-content-settings_topic_materials_field, .sfwd_options #learndash-lesson-display-content-settings_lesson_assignment_points_amount_field, .sfwd_options #learndash-topic-display-content-settings_lesson_assignment_points_amount_field, .sfwd_options #learndash-quiz-display-content-settings_quiz_materials_field, .sfwd_options #learndash-quiz-display-content-settings_showMaxQuestionValue_field, .sfwd_options #learndash-quiz-display-content-settings_quizModus_single_back_button_field { border-left: none; } .sfwd_options #learndash-lesson-access-settings_visible_after_field, .sfwd_options #learndash-lesson-access-settings_visible_after_specific_date_field, .sfwd_options #learndash-quiz-display-content-settings_quizModus_single_back_button_field { border-left: none; /* padding-left: 5px; */ padding-left: 0; } .sfwd_options #learndash-quiz-results-options_resultText_field { padding-left: 10px; } /* .sfwd_options #learndash-quiz-display-content-settings_quizModus_single_feedback_field, .sfwd_options #learndash-quiz-display-content-settings_quizModus_single_back_button_field, .sfwd_options #learndash-quiz-display-content-settings_showMaxQuestion_field { margin-left: 30px; } */ .sfwd_options input[name="templateLoad"], .sfwd_options input[name="templateName"] { margin-top: 5px; } .ld-settings-inner .ld-radio-input__label > span { font-weight: normal; } .ld-divider { border-bottom: 1px solid #eee; margin: 20px 0 20px 0; } .sfwd_options .ld-settings-inner-lesson_video_display_timing_after .sfwd_option_input, .sfwd_options .ld-settings-inner .sfwd_option_input { width: 40% !important; } .sfwd_options #learndash-lesson-access-settings_visible_after_specific_date_field .sfwd_option_input { width: 80% !important; } .sfwd_options .ld-settings-sub .sfwd_option_label { width: calc(38% - 15px); max-width: calc(300px - 15px); } .sfwd_options #learndash-lesson-display-content-settings_assignment_upload_limit_count_field .sfwd_option_label, .sfwd_options #learndash-lesson-display-content-settings_lesson_assignment_deletion_enabled_field .sfwd_option_label { width: 35% !important; } .sfwd_options #learndash-lesson-access-settings_visible_after_specific_date_field input[type="number"] { padding: 0px !important; } .sfwd_options .ld-settings-inner-lesson_video_display_timing_after .sfwd_option_label { width: 35% !important; } .sfwd_options .ld-settings-inner-quizModus_single .sfwd_option_input { width: 65% !important; } .sfwd_options .ld-settings-email-header-wrapper { margin-bottom: 30px; } .sfwd_options .ld-settings-email-header { font-weight: 700; } .sfwd_options .ld-settings-email-description { font-weight: 300; } /* Add support for error display */ .sfwd_options .learndash_settings_field_invalid label.sfwd_label { color: red; } .sfwd_options .learndash_settings_field_invalid input:invalid { border: 1px solid red; box-shadow: none; } .sfwd_options .learndash_settings_field_invalid .learndash-section-field-error { color: red; } #learndash-settings-fields-notice-errors p.errors-header { font-weight: 900; } #learndash-settings-fields-notice-errors ul.errors-list { list-style: disc; } #learndash-settings-fields-notice-errors ul.errors-list li { margin-left: 15px; } /** * Added to bring back the visible indicator on checkbox in Builder sodebar elements * See LEARNDASH-4114 */ .ld__builder-sidebar-widget .components-checkbox-control__input[type="checkbox"]:checked::before { content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%231e8cbe%27%2F%3E%3C%2Fsvg%3E"); } .plugin-update p.ld-plugin-update-notice::before { content: ''; margin-right: 0; } .plugin-update .ld-plugin-update-notice, .notice.ld-plugin-update-notice { /* background-color: #d54e21; */ padding: 10px; /* color: #f9f9f9; */ margin-top: 10px; } .plugin-update .ld-plugin-update-notice { /* border-top: 3px solid #d54e21; */ } .ld-plugin-update-notice .version { font-weight: 700; } .ld-plugin-update-notice .header { font-size: 130%; font-weight: bold; }PKc\F 0assets/css/learndash-admin-overview-page-rtl.cssnuW+A.ld-bootview { width: 100%; max-width: 950px; margin: 0 auto; } .ld-bootview * { box-sizing: border-box; } .ld-bootview h1 { margin: 20px 0; padding: 9px 0 4px 0; font-size: 23px; font-weight: 400; line-height: 29px; } .ld-bootview h2 { margin: 0 0 30px; font-size: 21px; font-weight: 400; line-height: 1.2; } .ld-bootview h3 { margin: 0 0 20px; font-size: 16px; font-weight: 600; } .ld-bootview p { margin: 0 0 20px; } .ld-bootview a { color: #0073aa; text-decoration: none; } .ld-bootview a:hover { color: #00a0d2; text-decoration: underline; } .ld-bootcamp, .ld-bootcamp p { width: 100%; max-width: 950px; margin: 0 0 40px auto; color: #23282d; background: #f1f1f1; font-size: 14px; line-height: 1.5; } .ld-bootcamp p { margin: 0 auto 20px; } .ld-bootcamp .notice { background: #fff; } .ld-bootcamp--toggle { border: none; background: transparent; cursor: pointer; float: left; color: #0073aa; margin-top: -20px; } .ld-bootcamp--toggle:hover, .ld-bootcamp--toggle:focus { color: #00a0d2; text-decoration: underline; } .ld-bootcamp__embed { overflow: hidden; position: relative; margin: 0 0 20px; padding-top: 56.25%; } .ld-bootcamp__embed iframe { position: absolute; top: 0; right: 0; width: 100%; height: 100%; border: 0; } .ld-bootcamp__widget { padding: 23px; background: #fff; } .ld-bootcamp__widget--header { display: flex; justify-content: space-between; } .ld-bootcamp__accordion { width: 100%; max-width: 750px; margin: 0 auto; } .ld-bootcamp__accordion--single { margin: 0 0 15px; padding: 23px; background: #f1f1f1; } .ld-bootcamp__accordion--single h3 { display: flex; align-items: center; margin: 0; } .ld-bootcamp__accordion--single h3 button { border: 0; background: transparent; font-size: 16px; font-weight: 600; height: 24px; line-height: 1.3; text-align: right; } .ld-bootcamp__accordion--single h3 .ld-bootcamp__mark-complete--toggle { width: 28px; } .ld-bootcamp__accordion--single h3 .ld-bootcamp__accordion--toggle { margin-right: 10px; align-self: flex-start; cursor: pointer; width: 96%; } .ld-bootcamp__accordion--single h3 button[aria-selected="true"] { color: #23282d; } .ld-bootcamp__accordion--single h3 .ld-bootcamp__mark-complete--toggle-indicator { background-color: inherit; background-size: cover; background-image: url('../images/incompletex.png'); height: 24px; width: 24px; } .ld-bootcamp__accordion--single.-completed h3 .ld-bootcamp__mark-complete--toggle-indicator { background-image: url('../images/checkmark.png'); } .ld-bootcamp__accordion--single h3 button.ld-bootcamp__mark-complete--toggle-indicator:hover { background-image: url('../images/checkmark.png'); cursor: pointer; } .ld-bootcamp__accordion--single.-completed h3 button.ld-bootcamp__mark-complete--toggle-indicator:hover { background-image: url('../images/incompletex.png'); } .ld-bootcamp__accordion--toggle .ld-bootcamp__accordion--toggle-indicator { color: #72777c; float: left; } .ld-bootcamp__accordion--toggle[aria-expanded="true"] .ld-bootcamp__accordion--toggle-indicator:before { content: "\f142"; font: normal 20px/1 dashicons; speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; width: 20px; border-radius: 50%; } .ld-bootcamp__accordion--toggle[aria-expanded="false"] .ld-bootcamp__accordion--toggle-indicator:before { content: "\f140"; font: normal 20px/1 dashicons; speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; width: 20px; border-radius: 50%; } .ld-bootcamp__accordion--content { display: none; } .ld-bootcamp__accordion--single .ld-bootcamp__accordion--content[aria-hidden="false"] { display: block; margin: 20px 0 0 0; } .ld-bootcamp__accordion--single .ld-bootcamp__accordion--content li:before { display: inline-block; content: "-"; width: 10px; margin-right: 5px; } .ld-bootcamp__accordion--single .ld-bootcamp__accordion--content .ld-bootcamp__resources { margin: 12px auto 0; } .ld-bootcamp__accordion--single .ld-bootcamp__accordion--content .ld-bootcamp__resources p { font-weight: 700; } .ld-bootcamp__accordion--single .ld-bootcamp__resources-box { display: flex; } .ld-bootcamp__accordion--single .ld-bootcamp__resources { flex: 1; } .ld-bootcamp__accordion--single .ld-bootcamp__mark_complete { margin-top: auto; } .ld-bootcamp__license .notice-dismiss { padding: 2px; } .ld-bootcamp__license--fields { margin: 0 0 20px; } .ld-bootcamp__license--fields input[type="email"], .ld-bootcamp__license--fields input[type="text"] { display: block; width: 100%; height: 28px; margin: 0 0 10px 0; padding: 2px 6px; border: 1px solid #ddd; outline: 0; color: #32373c; background-color: #fff; box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.07); font-size: 13px; transition: border-color 0.25s ease-in; } .ld-bootcamp__license--fields input[type="email"]:focus, .ld-bootcamp__license--fields input[type="text"]:focus { border-color: #0073aa; } @media screen and (min-width: 768px) { .ld-bootcamp__license--fields { display: inline-block; width: calc(50% - 15px); } .ld-bootcamp__license--fields:last-of-type { margin-right: 20px; } .ld-bootcamp__license--fields label, .ld-bootcamp__license--fields input[type="email"], .ld-bootcamp__license--fields input[type="text"] { flex-basis: calc(50% - 10px); margin: 0; } } .ld-overview { width: 100%; max-width: 950px; margin: 0 auto; color: #23282d; background: #f1f1f1; font-size: 13px; line-height: 1.5; } .ld-overview h3 svg { max-height: 20px; margin: 0 0 10px 0; } .ld-overview h3 span { display: block; } .ld-overview--columns ul { margin: 0; padding: 0; list-style-type: none; } .ld-overview--columns li { padding: 5px 0; border-bottom: 1px solid #00a0d2; } p.ld-overview--more { margin: 20px 0 0; font-weight: 700; text-align: left; text-transform: uppercase; } .ld-overview--more a { color: #23282d; } .ld-overview--widget { margin: 0 0 16px; padding: 23px; border: 1px solid #e5e5e5; background: #fff; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); } .ld-overview--widget.-support a.button.button-primary:hover, .ld-overview--widget.-support a.button.button-primary:focus { text-decoration: none; } .ld-overview--search form { display: flex; } .ld-overview--search input[type="text"] { height: 28px; padding: 2px 6px; border: 1px solid #ddd; color: #32373c; background-color: #fff; box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.07); font-size: 13px; flex: 1; } .ld-overview--search .button { flex: 0 1 auto; margin-right: 15px; } .ld-overview--widget.-doc li { border: 0; } .ld-overview--widget.-doc .ld-overview--more { text-align: right; text-transform: none; } .ld-overview--widget.-doc .ld-overview--more a { color: #0073aa; } .ld-overview .ld-overview--widget .ld-bootcamp--toggle.button-orange { float: none; background: #DF7B11; border-color: #ca5116; color: #fff; margin: 10px 0 0; box-shadow: 0 1px 0 #ca5116; } .ld-overview .ld-overview--widget .ld-bootcamp--toggle.button-orange:focus, .ld-overview .ld-overview--widget .ld-bootcamp--toggle.button-orange:hover { background: #EE8617; border-color: #DF7B11; text-decoration: none; } .ld-overview--topics { margin: 40px 0 0; } .ld-overview--widget.-support ul { margin: 20px 0 0; border-top: 1px solid #e5e5e5; } .ld-overview--widget.-support ul li { border-bottom: none; } .ld-overview--widget.-support ul li:not(:first-child) { border: 0; } @media screen and (min-width: 768px) { .ld-overview--columns { display: flex; justify-content: space-between; } .ld-overview--topics .ld-overview--columns { /* display: flex; */ justify-content: flex-start; } .ld-overview--columns > div { flex: 0 1 calc(50% - 10px); } .ld-overview--columns:not(.-half) > div { flex: 0 1 calc(100% - 270px - 20px); } .ld-overview--columns:not(.-half) > div:last-child { flex-basis: 270px; } .ld-overview--columns.-support > div:first-child { border-left: 0; flex-basis: calc(100% - 270px); } .ld-overview--widget.-doc .ld-overview--column { flex-basis: calc(33% - 5px); } .ld-overview .ld-overview--widget .ld-bootcamp--toggle.button-orange { margin: 81% 0 0; } } PKc\Dassets/css/jquery-ui-rtl.cssnuW+A/*! jQuery UI - v1.11.2 - 2014-10-16 * http://jqueryui.com * Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ /* Layout helpers ----------------------------------*/ .learndash-datepicker .ui-helper-hidden { display: none; } .learndash-datepicker .ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .learndash-datepicker .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } .learndash-datepicker .ui-helper-clearfix:before, .learndash-datepicker .ui-helper-clearfix:after { content: ""; display: table; border-collapse: collapse; } .learndash-datepicker .ui-helper-clearfix:after { clear: both; } .learndash-datepicker .ui-helper-clearfix { min-height: 0; /* support: IE7 */ } .learndash-datepicker .ui-helper-zfix { width: 100%; height: 100%; top: 0; right: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); /* support: IE8 */ } .learndash-datepicker .ui-front { z-index: 100; } /* Interaction Cues ----------------------------------*/ .learndash-datepicker .ui-state-disabled { cursor: default !important; } /* Icons ----------------------------------*/ /* states and images */ .learndash-datepicker .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } /* Misc visuals ----------------------------------*/ /* Overlays */ .learndash-datepicker .ui-widget-overlay { position: fixed; top: 0; right: 0; width: 100%; height: 100%; } .learndash-datepicker .ui-autocomplete { position: absolute; top: 0; right: 0; cursor: default; } .learndash-datepicker .ui-button { display: inline-block; position: relative; padding: 0; line-height: normal; margin-left: .1em; cursor: pointer; vertical-align: middle; text-align: center; overflow: visible; /* removes extra width in IE */ } .learndash-datepicker .ui-button, .learndash-datepicker .ui-button:link, .learndash-datepicker .ui-button:visited, .learndash-datepicker .ui-button:hover, .learndash-datepicker .ui-button:active { text-decoration: none; } /* to make room for the icon, a width needs to be set here */ .learndash-datepicker .ui-button-icon-only { width: 2.2em; } /* button elements seem to need a little more width */ .learndash-datepicker button.ui-button-icon-only { width: 2.4em; } .learndash-datepicker .ui-button-icons-only { width: 3.4em; } .learndash-datepicker button.ui-button-icons-only { width: 3.7em; } /* button text element */ .learndash-datepicker .ui-button .ui-button-text { display: block; line-height: normal; } .learndash-datepicker .ui-button-text-only .ui-button-text { padding: .4em 1em; } .learndash-datepicker .ui-button-icon-only .ui-button-text, .learndash-datepicker .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } .learndash-datepicker .ui-button-text-icon-primary .ui-button-text, .learndash-datepicker .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } .learndash-datepicker .ui-button-text-icon-secondary .ui-button-text, .learndash-datepicker .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } .learndash-datepicker .ui-button-text-icons .ui-button-text { padding-right: 2.1em; padding-left: 2.1em; } /* no icon support for input elements, provide padding by default */ .learndash-datepicker input.ui-button { padding: .4em 1em; } /* button icon element(s) */ .learndash-datepicker .ui-button-icon-only .ui-icon, .learndash-datepicker .ui-button-text-icon-primary .ui-icon, .learndash-datepicker .ui-button-text-icon-secondary .ui-icon, .learndash-datepicker .ui-button-text-icons .ui-icon, .learndash-datepicker .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } .learndash-datepicker .ui-button-icon-only .ui-icon { right: 50%; margin-right: -8px; } .learndash-datepicker .ui-button-text-icon-primary .ui-button-icon-primary, .learndash-datepicker .ui-button-text-icons .ui-button-icon-primary, .learndash-datepicker .ui-button-icons-only .ui-button-icon-primary { right: .5em; } .learndash-datepicker .ui-button-text-icon-secondary .ui-button-icon-secondary, .learndash-datepicker .ui-button-text-icons .ui-button-icon-secondary, .learndash-datepicker .ui-button-icons-only .ui-button-icon-secondary { left: .5em; } /* button sets */ .learndash-datepicker .ui-buttonset { margin-left: 7px; } .learndash-datepicker .ui-buttonset .ui-button { margin-right: 0; margin-left: -.3em; } /* workarounds */ /* reset extra padding in Firefox, see h5bp.com/l */ .learndash-datepicker input.ui-button::-moz-focus-inner, .learndash-datepicker button.ui-button::-moz-focus-inner { border: 0; padding: 0; } .learndash-datepicker.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } .learndash-datepicker.ui-datepicker .ui-datepicker-header { position: relative; padding: .2em 0; } .learndash-datepicker.ui-datepicker .ui-datepicker-prev, .learndash-datepicker.ui-datepicker .ui-datepicker-next { position: absolute; top: 2px; width: 1.8em; height: 1.8em; } .learndash-datepicker.ui-datepicker .ui-datepicker-prev-hover, .learndash-datepicker.ui-datepicker .ui-datepicker-next-hover { top: 1px; } .learndash-datepicker.ui-datepicker .ui-datepicker-prev { right: 2px; } .learndash-datepicker.ui-datepicker .ui-datepicker-next { left: 2px; } .learndash-datepicker.ui-datepicker .ui-datepicker-prev-hover { right: 1px; } .learndash-datepicker.ui-datepicker .ui-datepicker-next-hover { left: 1px; } .learndash-datepicker.ui-datepicker .ui-datepicker-prev span, .learndash-datepicker.ui-datepicker .ui-datepicker-next span { display: block; position: absolute; right: 50%; margin-right: -8px; top: 50%; margin-top: -8px; } .learndash-datepicker.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } .learndash-datepicker.ui-datepicker .ui-datepicker-title select { font-size: 1em; margin: 1px 0; } .learndash-datepicker.ui-datepicker select.ui-datepicker-month, .learndash-datepicker.ui-datepicker select.ui-datepicker-year { width: 45%; } .learndash-datepicker.ui-datepicker table { width: 100%; font-size: .9em; border-collapse: collapse; margin: 0 0 .4em; } .learndash-datepicker.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } .learndash-datepicker.ui-datepicker td { border: 0; padding: 1px; } .learndash-datepicker.ui-datepicker td span, .learndash-datepicker.ui-datepicker td a { display: block; padding: .2em; text-align: left; text-decoration: none; } .learndash-datepicker.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding: 0 .2em; border-right: 0; border-left: 0; border-bottom: 0; } .learndash-datepicker.ui-datepicker .ui-datepicker-buttonpane button { float: left; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width: auto; overflow: visible; } .learndash-datepicker.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float: right; } /* with multiple calendars */ .learndash-datepicker.ui-datepicker.ui-datepicker-multi { width: auto; } .learndash-datepicker.ui-datepicker-multi .ui-datepicker-group { float: right; } .learndash-datepicker .ui-datepicker-multi .ui-datepicker-group table { width: 95%; margin: 0 auto .4em; } .learndash-datepicker .ui-datepicker-multi-2 .ui-datepicker-group { width: 50%; } .learndash-datepicker .learndash-datepicker .ui-datepicker-multi-3 .ui-datepicker-group { width: 33.3%; } .learndash-datepicker .ui-datepicker-multi-4 .ui-datepicker-group { width: 25%; } .learndash-datepicker .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, .learndash-datepicker .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-right-width: 0; } .learndash-datepicker .ui-datepicker-multi .ui-datepicker-buttonpane { clear: right; } .learndash-datepicker .ui-datepicker-row-break { clear: both; width: 100%; font-size: 0; } /* RTL support */ .learndash-datepicker .ui-datepicker-rtl { direction: ltr; } .learndash-datepicker .ui-datepicker-rtl .ui-datepicker-prev { left: 2px; right: auto; } .learndash-datepicker .ui-datepicker-rtl .ui-datepicker-next { right: 2px; left: auto; } .learndash-datepicker .ui-datepicker-rtl .ui-datepicker-prev:hover { left: 1px; right: auto; } .learndash-datepicker .ui-datepicker-rtl .ui-datepicker-next:hover { right: 1px; left: auto; } .learndash-datepicker .ui-datepicker-rtl .ui-datepicker-buttonpane { clear: left; } .learndash-datepicker .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: right; } .learndash-datepicker .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, .learndash-datepicker .ui-datepicker-rtl .ui-datepicker-group { float: left; } .learndash-datepicker .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, .learndash-datepicker .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-left-width: 0; border-right-width: 1px; } body .learndash-datepicker .ui-tooltip { border-width: 2px; } /* Component containers ----------------------------------*/ .learndash-datepicker.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; } .learndash-datepicker.ui-widget .ui-widget { font-size: 1em; } .learndash-datepicker.ui-widget input, .learndash-datepicker.ui-widget select, .learndash-datepicker.ui-widget textarea, .learndash-datepicker.ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; } .learndash-datepicker.ui-widget-content { border: 1px solid #aaaaaa; /* background: #ffffff url("../images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x;*/ background: #ffffff; color: #222222; } .learndash-datepicker.ui-widget-content a { color: #222222; } .learndash-datepicker .ui-widget-header { border: 1px solid #aaaaaa; /*background: #cccccc url("../images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x; */ background: #cccccc; color: #222222; font-weight: bold; } .learndash-datepicker .ui-widget-header a { color: #222222; } /* Interaction states ----------------------------------*/ .learndash-datepicker .ui-state-default, .learndash-datepicker.ui-widget-content .ui-state-default, .learndash-datepicker .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; /* background: #e6e6e6 url("../images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x; */ background: #e6e6e6; font-weight: normal; color: #555555; } .learndash-datepicker .ui-state-default a, .learndash-datepicker .ui-state-default a:link, .learndash-datepicker .ui-state-default a:visited { color: #555555; text-decoration: none; } .learndash-datepicker .ui-state-hover, .learndash-datepicker .ui-widget-content .ui-state-hover, .learndash-datepicker .ui-widget-header .ui-state-hover, .learndash-datepicker .ui-state-focus, .learndash-datepicker .ui-widget-content .ui-state-focus, .learndash-datepicker .ui-widget-header .ui-state-focus { border: 1px solid #999999; /* background: #dadada url("../images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x; */ background: #dadada; font-weight: normal; color: #212121; } .learndash-datepicker .ui-state-hover a, .learndash-datepicker .ui-state-hover a:hover, .learndash-datepicker .ui-state-hover a:link, .learndash-datepicker .ui-state-hover a:visited, .learndash-datepicker .ui-state-focus a, .learndash-datepicker .ui-state-focus a:hover, .learndash-datepicker .ui-state-focus a:link, .learndash-datepicker .ui-state-focus a:visited { color: #212121; text-decoration: none; } .learndash-datepicker .ui-state-active, .learndash-datepicker.ui-widget-content .ui-state-active, .learndash-datepicker .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; /*background: #ffffff url("../images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;*/ background: #ffffff; font-weight: normal; color: #212121; } .learndash-datepicker .ui-state-active a, .learndash-datepicker .ui-state-active a:link, .learndash-datepicker .ui-state-active a:visited { color: #212121; text-decoration: none; } /* Interaction Cues ----------------------------------*/ .learndash-datepicker .ui-state-highlight, .learndash-datepicker.ui-widget-content .ui-state-highlight, .learndash-datepicker .ui-widget-header .ui-state-highlight { border: 1px solid #fcefa1; /* background: #fbf9ee url("../images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;*/ background: #fbf9ee; color: #363636; } .learndash-datepicker .ui-state-highlight a, .learndash-datepicker.ui-widget-content .ui-state-highlight a, .learndash-datepicker .ui-widget-header .ui-state-highlight a { color: #363636; } .learndash-datepicker .ui-state-error, .learndash-datepicker.ui-widget-content .ui-state-error, .learndash-datepicker .ui-widget-header .ui-state-error { border: 1px solid #cd0a0a; /* background: #fef1ec url("../images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x; */ background: #fef1ec; color: #cd0a0a; } .learndash-datepicker .ui-state-error a, .learndash-datepicker.ui-widget-content .ui-state-error a, .learndash-datepicker .ui-widget-header .ui-state-error a { color: #cd0a0a; } .learndash-datepicker .ui-state-error-text, .learndash-datepicker.ui-widget-content .ui-state-error-text, .learndash-datepicker .ui-widget-header .ui-state-error-text { color: #cd0a0a; } .learndash-datepicker .ui-priority-primary, .learndash-datepicker.ui-widget-content .ui-priority-primary, .learndash-datepicker .ui-widget-header .ui-priority-primary { font-weight: bold; } .learndash-datepicker .ui-priority-secondary, .learndash-datepicker.ui-widget-content .ui-priority-secondary, .learndash-datepicker .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); /* support: IE8 */ font-weight: normal; } .learndash-datepicker .ui-state-disabled, .learndash-datepicker.ui-widget-content .ui-state-disabled, .learndash-datepicker .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); /* support: IE8 */ background-image: none; } .learndash-datepicker .ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ } /* Icons ----------------------------------*/ /* states and images */ .learndash-datepicker .ui-icon { width: 16px; height: 16px; } .learndash-datepicker .ui-icon, .learndash-datepicker.ui-widget-content .ui-icon { background-image: url("../images/ui-icons_222222_256x240.png"); } .learndash-datepicker .ui-widget-header .ui-icon { background-image: url("../images/ui-icons_222222_256x240.png"); } .learndash-datepicker .ui-state-default .ui-icon { /* background-image: url("../images/ui-icons_888888_256x240.png");*/ } .learndash-datepicker .ui-state-hover .ui-icon, .learndash-datepicker .ui-state-focus .ui-icon { /* background-image: url("../images/ui-icons_454545_256x240.png");*/ } .learndash-datepicker .ui-state-active .ui-icon { /* background-image: url("../images/ui-icons_454545_256x240.png");*/ } .learndash-datepicker .ui-state-highlight .ui-icon { /* background-image: url("../images/ui-icons_2e83ff_256x240.png");*/ } .learndash-datepicker .ui-state-error .ui-icon, .learndash-datepicker .ui-state-error-text .ui-icon { /* background-image: url("../images/ui-icons_cd0a0a_256x240.png");*/ } /* positioning */ .learndash-datepicker .ui-icon-blank { background-position: 16px 16px; } .learndash-datepicker .ui-icon-carat-1-n { background-position: 100% 0; } .learndash-datepicker .ui-icon-carat-1-ne { background-position: -16px 0; } .learndash-datepicker .ui-icon-carat-1-e { background-position: -32px 0; } .learndash-datepicker .ui-icon-carat-1-se { background-position: -48px 0; } .learndash-datepicker .ui-icon-carat-1-s { background-position: -64px 0; } .learndash-datepicker .ui-icon-carat-1-sw { background-position: -80px 0; } .learndash-datepicker .ui-icon-carat-1-w { background-position: -96px 0; } .learndash-datepicker .ui-icon-carat-1-nw { background-position: -112px 0; } .learndash-datepicker .ui-icon-carat-2-n-s { background-position: -128px 0; } .learndash-datepicker .ui-icon-carat-2-e-w { background-position: -144px 0; } .learndash-datepicker .ui-icon-triangle-1-n { background-position: 100% -16px; } .learndash-datepicker .ui-icon-triangle-1-ne { background-position: -16px -16px; } .learndash-datepicker .ui-icon-triangle-1-e { background-position: -32px -16px; } .learndash-datepicker .ui-icon-triangle-1-se { background-position: -48px -16px; } .learndash-datepicker .ui-icon-triangle-1-s { background-position: -64px -16px; } .learndash-datepicker .ui-icon-triangle-1-sw { background-position: -80px -16px; } .learndash-datepicker .ui-icon-triangle-1-w { background-position: -96px -16px; } .learndash-datepicker .ui-icon-triangle-1-nw { background-position: -112px -16px; } .learndash-datepicker .ui-icon-triangle-2-n-s { background-position: -128px -16px; } .learndash-datepicker .ui-icon-triangle-2-e-w { background-position: -144px -16px; } .learndash-datepicker .ui-icon-arrow-1-n { background-position: 100% -32px; } .learndash-datepicker .ui-icon-arrow-1-ne { background-position: -16px -32px; } .learndash-datepicker .ui-icon-arrow-1-e { background-position: -32px -32px; } .learndash-datepicker .ui-icon-arrow-1-se { background-position: -48px -32px; } .learndash-datepicker .ui-icon-arrow-1-s { background-position: -64px -32px; } .learndash-datepicker .ui-icon-arrow-1-sw { background-position: -80px -32px; } .learndash-datepicker .ui-icon-arrow-1-w { background-position: -96px -32px; } .learndash-datepicker .ui-icon-arrow-1-nw { background-position: -112px -32px; } .learndash-datepicker .ui-icon-arrow-2-n-s { background-position: -128px -32px; } .learndash-datepicker .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } .learndash-datepicker .ui-icon-arrow-2-e-w { background-position: -160px -32px; } .learndash-datepicker .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } .learndash-datepicker .ui-icon-arrowstop-1-n { background-position: -192px -32px; } .learndash-datepicker .ui-icon-arrowstop-1-e { background-position: -208px -32px; } .learndash-datepicker .ui-icon-arrowstop-1-s { background-position: -224px -32px; } .learndash-datepicker .ui-icon-arrowstop-1-w { background-position: -240px -32px; } .learndash-datepicker .ui-icon-arrowthick-1-n { background-position: 100% -48px; } .learndash-datepicker .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } .learndash-datepicker .ui-icon-arrowthick-1-e { background-position: -32px -48px; } .learndash-datepicker .ui-icon-arrowthick-1-se { background-position: -48px -48px; } .learndash-datepicker .ui-icon-arrowthick-1-s { background-position: -64px -48px; } .learndash-datepicker .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } .learndash-datepicker .ui-icon-arrowthick-1-w { background-position: -96px -48px; } .learndash-datepicker .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } .learndash-datepicker .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } .learndash-datepicker .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } .learndash-datepicker .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } .learndash-datepicker .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } .learndash-datepicker .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } .learndash-datepicker .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } .learndash-datepicker .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } .learndash-datepicker .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } .learndash-datepicker .ui-icon-arrowreturnthick-1-w { background-position: 100% -64px; } .learndash-datepicker .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } .learndash-datepicker .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } .learndash-datepicker .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } .learndash-datepicker .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } .learndash-datepicker .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } .learndash-datepicker .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } .learndash-datepicker .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } .learndash-datepicker .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } .learndash-datepicker .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } .learndash-datepicker .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } .learndash-datepicker .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } .learndash-datepicker .ui-icon-arrow-4 { background-position: 100% -80px; } .learndash-datepicker .ui-icon-arrow-4-diag { background-position: -16px -80px; } .learndash-datepicker .ui-icon-extlink { background-position: -32px -80px; } .learndash-datepicker .ui-icon-newwin { background-position: -48px -80px; } .learndash-datepicker .ui-icon-refresh { background-position: -64px -80px; } .learndash-datepicker .ui-icon-shuffle { background-position: -80px -80px; } .learndash-datepicker .ui-icon-transfer-e-w { background-position: -96px -80px; } .learndash-datepicker .ui-icon-transferthick-e-w { background-position: -112px -80px; } .learndash-datepicker .ui-icon-folder-collapsed { background-position: 100% -96px; } .learndash-datepicker .ui-icon-folder-open { background-position: -16px -96px; } .learndash-datepicker .ui-icon-document { background-position: -32px -96px; } .learndash-datepicker .ui-icon-document-b { background-position: -48px -96px; } .learndash-datepicker .ui-icon-note { background-position: -64px -96px; } .learndash-datepicker .ui-icon-mail-closed { background-position: -80px -96px; } .learndash-datepicker .ui-icon-mail-open { background-position: -96px -96px; } .learndash-datepicker .ui-icon-suitcase { background-position: -112px -96px; } .learndash-datepicker .ui-icon-comment { background-position: -128px -96px; } .learndash-datepicker .ui-icon-person { background-position: -144px -96px; } .learndash-datepicker .ui-icon-print { background-position: -160px -96px; } .learndash-datepicker .ui-icon-trash { background-position: -176px -96px; } .learndash-datepicker .ui-icon-locked { background-position: -192px -96px; } .learndash-datepicker .ui-icon-unlocked { background-position: -208px -96px; } .learndash-datepicker .ui-icon-bookmark { background-position: -224px -96px; } .learndash-datepicker .ui-icon-tag { background-position: -240px -96px; } .learndash-datepicker .ui-icon-home { background-position: 100% -112px; } .learndash-datepicker .ui-icon-flag { background-position: -16px -112px; } .learndash-datepicker .ui-icon-calendar { background-position: -32px -112px; } .learndash-datepicker .ui-icon-cart { background-position: -48px -112px; } .learndash-datepicker .ui-icon-pencil { background-position: -64px -112px; } .learndash-datepicker .ui-icon-clock { background-position: -80px -112px; } .learndash-datepicker .ui-icon-disk { background-position: -96px -112px; } .learndash-datepicker .ui-icon-calculator { background-position: -112px -112px; } .learndash-datepicker .ui-icon-zoomin { background-position: -128px -112px; } .learndash-datepicker .ui-icon-zoomout { background-position: -144px -112px; } .learndash-datepicker .ui-icon-search { background-position: -160px -112px; } .learndash-datepicker .ui-icon-wrench { background-position: -176px -112px; } .learndash-datepicker .ui-icon-gear { background-position: -192px -112px; } .learndash-datepicker .ui-icon-heart { background-position: -208px -112px; } .learndash-datepicker .ui-icon-star { background-position: -224px -112px; } .learndash-datepicker .ui-icon-link { background-position: -240px -112px; } .learndash-datepicker .ui-icon-cancel { background-position: 100% -128px; } .learndash-datepicker .ui-icon-plus { background-position: -16px -128px; } .learndash-datepicker .ui-icon-plusthick { background-position: -32px -128px; } .learndash-datepicker .ui-icon-minus { background-position: -48px -128px; } .learndash-datepicker .ui-icon-minusthick { background-position: -64px -128px; } .learndash-datepicker .ui-icon-close { background-position: -80px -128px; } .learndash-datepicker .ui-icon-closethick { background-position: -96px -128px; } .learndash-datepicker .ui-icon-key { background-position: -112px -128px; } .learndash-datepicker .ui-icon-lightbulb { background-position: -128px -128px; } .learndash-datepicker .ui-icon-scissors { background-position: -144px -128px; } .learndash-datepicker .ui-icon-clipboard { background-position: -160px -128px; } .learndash-datepicker .ui-icon-copy { background-position: -176px -128px; } .learndash-datepicker .ui-icon-contact { background-position: -192px -128px; } .learndash-datepicker .ui-icon-image { background-position: -208px -128px; } .learndash-datepicker .ui-icon-video { background-position: -224px -128px; } .learndash-datepicker .ui-icon-script { background-position: -240px -128px; } .learndash-datepicker .ui-icon-alert { background-position: 100% -144px; } .learndash-datepicker .ui-icon-info { background-position: -16px -144px; } .learndash-datepicker .ui-icon-notice { background-position: -32px -144px; } .learndash-datepicker .ui-icon-help { background-position: -48px -144px; } .learndash-datepicker .ui-icon-check { background-position: -64px -144px; } .learndash-datepicker .ui-icon-bullet { background-position: -80px -144px; } .learndash-datepicker .ui-icon-radio-on { background-position: -96px -144px; } .learndash-datepicker .ui-icon-radio-off { background-position: -112px -144px; } .learndash-datepicker .ui-icon-pin-w { background-position: -128px -144px; } .learndash-datepicker .ui-icon-pin-s { background-position: -144px -144px; } .learndash-datepicker .ui-icon-play { background-position: 100% -160px; } .learndash-datepicker .ui-icon-pause { background-position: -16px -160px; } .learndash-datepicker .ui-icon-seek-next { background-position: -32px -160px; } .learndash-datepicker .ui-icon-seek-prev { background-position: -48px -160px; } .learndash-datepicker .ui-icon-seek-end { background-position: -64px -160px; } .learndash-datepicker .ui-icon-seek-start { background-position: -80px -160px; } /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ .learndash-datepicker .ui-icon-seek-first { background-position: -80px -160px; } .learndash-datepicker .ui-icon-stop { background-position: -96px -160px; } .learndash-datepicker .ui-icon-eject { background-position: -112px -160px; } .learndash-datepicker .ui-icon-volume-off { background-position: -128px -160px; } .learndash-datepicker .ui-icon-volume-on { background-position: -144px -160px; } .learndash-datepicker .ui-icon-power { background-position: 100% -176px; } .learndash-datepicker .ui-icon-signal-diag { background-position: -16px -176px; } .learndash-datepicker .ui-icon-signal { background-position: -32px -176px; } .learndash-datepicker .ui-icon-battery-0 { background-position: -48px -176px; } .learndash-datepicker .ui-icon-battery-1 { background-position: -64px -176px; } .learndash-datepicker .ui-icon-battery-2 { background-position: -80px -176px; } .learndash-datepicker .ui-icon-battery-3 { background-position: -96px -176px; } .learndash-datepicker .ui-icon-circle-plus { background-position: 100% -192px; } .learndash-datepicker .ui-icon-circle-minus { background-position: -16px -192px; } .learndash-datepicker .ui-icon-circle-close { background-position: -32px -192px; } .learndash-datepicker .ui-icon-circle-triangle-e { background-position: -48px -192px; } .learndash-datepicker .ui-icon-circle-triangle-s { background-position: -64px -192px; } .learndash-datepicker .ui-icon-circle-triangle-w { background-position: -80px -192px; } .learndash-datepicker .ui-icon-circle-triangle-n { background-position: -96px -192px; } .learndash-datepicker .ui-icon-circle-arrow-e { background-position: -112px -192px; } .learndash-datepicker .ui-icon-circle-arrow-s { background-position: -128px -192px; } .learndash-datepicker .ui-icon-circle-arrow-w { background-position: -144px -192px; } .learndash-datepicker .ui-icon-circle-arrow-n { background-position: -160px -192px; } .learndash-datepicker .ui-icon-circle-zoomin { background-position: -176px -192px; } .learndash-datepicker .ui-icon-circle-zoomout { background-position: -192px -192px; } .learndash-datepicker .ui-icon-circle-check { background-position: -208px -192px; } .learndash-datepicker .ui-icon-circlesmall-plus { background-position: 100% -208px; } .learndash-datepicker .ui-icon-circlesmall-minus { background-position: -16px -208px; } .learndash-datepicker .ui-icon-circlesmall-close { background-position: -32px -208px; } .learndash-datepicker .ui-icon-squaresmall-plus { background-position: -48px -208px; } .learndash-datepicker .ui-icon-squaresmall-minus { background-position: -64px -208px; } .learndash-datepicker .ui-icon-squaresmall-close { background-position: -80px -208px; } .learndash-datepicker .ui-icon-grip-dotted-vertical { background-position: 100% -224px; } .learndash-datepicker .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } .learndash-datepicker .ui-icon-grip-solid-vertical { background-position: -32px -224px; } .learndash-datepicker .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } .learndash-datepicker .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } .learndash-datepicker .ui-icon-grip-diagonal-se { background-position: -80px -224px; } /* Misc visuals ----------------------------------*/ /* Corner radius */ .learndash-datepicker .ui-corner-all, .learndash-datepicker .ui-corner-top, .learndash-datepicker .ui-corner-left, .learndash-datepicker .ui-corner-tl { border-top-right-radius: 4px; } .learndash-datepicker .ui-corner-all, .learndash-datepicker .ui-corner-top, .learndash-datepicker .ui-corner-right, .learndash-datepicker .ui-corner-tr { border-top-left-radius: 4px; } .learndash-datepicker .ui-corner-all, .learndash-datepicker .ui-corner-bottom, .learndash-datepicker .ui-corner-left, .learndash-datepicker .ui-corner-bl { border-bottom-right-radius: 4px; } .learndash-datepicker .ui-corner-all, .learndash-datepicker .ui-corner-bottom, .learndash-datepicker .ui-corner-right, .learndash-datepicker .ui-corner-br { border-bottom-left-radius: 4px; } /* Overlays */ .learndash-datepicker .ui-widget-overlay { /*background: #aaaaaa url("../images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;*/ background: #aaaaaa; opacity: .3; filter: Alpha(Opacity=30); /* support: IE8 */ } .learndash-datepicker .ui-widget-shadow { margin: -8px -8px 0 0; padding: 8px; /* background: #aaaaaa url("../images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x; */ background: #aaaaaa; opacity: .3; filter: Alpha(Opacity=30); /* support: IE8 */ border-radius: 8px; } PKc\2lE6assets/css/learndash-admin-binary-selector.min-rtl.cssnuW+A.learndash-binary-selector{clear:both;width:100%;margin:0;padding:0}.learndash-binary-selector table.learndash-binary-selector-table{width:100%}.learndash-binary-selector .learndash-binary-selector-section-left{width:47%;float:right}.learndash-binary-selector .learndash-binary-selector-section-middle{width:5%;float:right;text-align:center;margin-top:8%}.learndash-binary-selector .learndash-binary-selector-section-right{width:47%;float:right}.learndash-binary-selector .learndash-binary-selector-section .learndash-binary-selector-items{border:1px solid #ccc;padding:5px;width:100%;max-width:100%}.learndash-binary-selector .learndash-binary-selector-section .learndash-binary-selector-items>.learndash-binary-selector-item{padding:.15em 0;width:100%}.learndash-binary-selector .learndash-binary-selector-search{width:100%;float:right}.learndash-binary-selector .learndash-binary-selector-section-left option.learndash-binary-selector-item-disabled{text-decoration:line-through}.learndash-binary-selector ul.learndash-binary-selector-pager{width:100%}.learndash-binary-selector ul.learndash-binary-selector-pager li.learndash-binary-selector-pager-prev{width:30%;float:right;text-align:right}.learndash-binary-selector ul.learndash-binary-selector-pager li.learndash-binary-selector-pager-info{width:40%;float:right;text-align:center}.learndash-binary-selector ul.learndash-binary-selector-pager li.learndash-binary-selector-pager-next{width:30%;float:right;text-align:left}.learndash-binary-selector ul.learndash-binary-selector-pager a{text-decoration:none;padding:0 5px;display:block}.learndash-binary-selector ul.learndash-binary-selector-pager a:hover{background-color:inherit}PKc\4assets/css/style-rtl.cssnuW+A.groups_user_table, .groups_table{ width: 100%; } .groupemailtext{ max-width: 600px; } .group_email_sub{ width:50%; } .nss_plugin_license_email { min-width:30%; } .button_delete_course_data{ background-color: Red; color: white; padding: 10px 5px; } .cert_shortcode_parm_list{ margin: 20px 30px; list-style: initial; } .column-sno {width: 50px;} .groups_table .column-action { width: 300px; } .groups_user_table .column-action { width: 100px; } /*#sfwd-quiz .inside {overflow: hidden;}*/ #profile-page #ld_course_info_mycourses_list { display: none; } #learndash_lesson_topics_list ul, .learndash_navigation_lesson_topics_list { display: table; width: 100%; margin-bottom: 0; } #learndash_lesson_topics_list ul { padding: 0; } #learndash_lesson_topics_list ul > li, .learndash_navigation_lesson_topics_list > div { display: table-row; } .learndash_navigation_lesson_topics_list > div > div.list_arrow { display: table-cell; width: 16px; text-align: center; padding: 0 !important; } .course_navigation .learndash_topic_widget_list a > span { overflow: hidden; margin: 0 5px 0 0; } .course_navigation .learndash_topic_widget_list > ul { margin: 0; } .course_navigation a { text-decoration: none; } .course_navigation .learndash_navigation_lesson_topics_list .lesson { margin: 5px; } .course_navigation .learndash_navigation_lesson_topics_list ul li{ margin-right: 0; list-style: none; } .course_navigation .learndash_navigation_lesson_topics_list .learndash_topic_dots.type-list ul > li { padding-right: 10px; } .learndash_navigation_lesson_topics_list .learndash_topic_dots.type-list a > span { padding: 0 25px 0 0; } .learndash_topic_dots.type-list a{display: block;} .learndash_topic_dots a, .learndash_topic_dots a > span, #learndash_lesson_topics_list span a { text-decoration: none !important; font-weight: 100; font-size: 12px; } .expand_collapse, .notavailable_message, #learndash_lesson_topics_list div > strong, #learndash_lesson_topics_list div ul > li .sn, .learndash_profile_heading, #learndash_profile a, #learndash_profile div { font-size: 12px; font-weight: normal; } .list_arrow.expand { background: url("../images/gray_arrow_expand.png") no-repeat scroll 100% 50% transparent; padding: 5px; } .active .list_arrow.expand { background: url("../images/green_arrow_expand.png") no-repeat scroll 100% 50% transparent; padding: 5px; } .active .list_arrow.collapse { background: url("../images/green_arrow_collapse.png") no-repeat scroll 100% 50% transparent; padding: 5px; } .list_arrow.collapse { background: url("../images/gray_arrow_collapse.png") no-repeat scroll 100% 50% transparent; padding: 5px; } .list_arrow.collapse.lesson_completed { background: url("../images/green_arrow_collapse.png") no-repeat scroll 100% 50% transparent; padding: 5px; } .lesson_incomplete.list_arrow.collapse { background: url("../images/gray_arrow_collapse.png") no-repeat scroll 100% 50% transparent; padding: 5px; } .list_arrow.expand.lesson_completed { background: url("../images/images/green_arrow_expand.png") no-repeat scroll 100% 50% transparent; padding: 5px; } .lesson_incomplete.list_arrow.expand { background: url("../images/gray_arrow_expand.png") no-repeat scroll 100% 50% transparent; padding: 5px; } .rtl .active .list_arrow.collapse, .rtl .list_arrow.collapse.lesson_completed { background-image: url("../images/green_arrow_collapse_rtl.png"); } .rtl .list_arrow.collapse, .rtl .lesson_incomplete.list_arrow.collapse { background-image: url("../images/gray_arrow_collapse_rtl.png"); } .learndash_navigation_lesson_topics_list .list_arrow.expand { background-position: 50% 10px; } .learndash_navigation_lesson_topics_list .list_arrow.collapse { background-position: 50% 7px; } .learndash_navigation_lesson_topics_list .topic-notcompleted span{ background: url("../images/notcompleted_t_navigation.png") no-repeat scroll 100% 8px transparent; display: inline-block; min-height: 25px; line-height: 25px; padding-right: 20px; vertical-align: middle; } #sfwd-quiz_quiz_pro_html { float: none; } #sfwd-quiz_quiz_pro_html #poststuff, #learndash_quiz_advanced #poststuff { min-width: 0; } #sfwd-quiz_quiz_pro_html input[type="button"] { padding: 0 10px ; } #AutomaticallyDisplayLeaderboard label { display: inline-block; } .nav-tab-sfwd-quiz_edit { margin-right: 40px; } .fixed .column-course { width: 15%; } .fixed .column-shortcode { width: 150px; } #sfwd-quiz_quiz_pro_html input[name="form_delete"], #sfwd-quiz_quiz_pro_html a.form_move { font-size: 12px; border-radius: 3px; } .post-new-php.post-type-sfwd-quiz #sfwd-quiz_quiz_pro { display: none; } .wp-admin.post-type-sfwd-assignment h2 a.add-new-h2 {display: none;} #learndash_assignment_metabox .button { margin-left: 10px; } #learndash_essay_status_div #post_status { width: 100%; } #learndash_essay_status_div .inside { padding: 0; } #learndash_essay_grading_response_div #grading-response { width: 100% } .learndash_uploaded_assignment_points { font-size: 12px; } .leardash-course-status-completed { color: green; } #course_progress_details .learndash_navigation_lesson_topics_list .topic-notcompleted span { background: none; padding-right: 0; margin-right: 0; } #course_progress_details .learndash_topic_widget_list ul { margin-right: 15px; } .course_navigation ul.learndash-topic-list li.topic-item ul.learndash-quiz-list { margin-right: 10px; } .course_navigation input[type="number"] { height: 20px; } .ld-shortcode-header { font-weight: bold; font-size: 1.1em; border-bottom: 1px solid #CCC; } /* Style for custom Count column shown on Category and Post Tag edit-tags.php screens shown within LD post types. */ .fixed .column-ld_posts { width: 74px; } .column-ld_posts { text-align: center; } body.post-type-sfwd-courses .column-categories, body.post-type-sfwd-courses .column-tags, body.post-type-sfwd-courses .column-taxonomy-ld_course_category, body.post-type-sfwd-courses .column-taxonomy-ld_course_tag, body.post-type-sfwd-lessons .column-categories, body.post-type-sfwd-lessons .column-tags, body.post-type-sfwd-lessons .column-taxonomy-ld_lesson_category, body.post-type-sfwd-lessons .column-taxonomy-ld_lesson_tag, body.post-type-sfwd-topic .column-categories, body.post-type-sfwd-topic .column-tags, body.post-type-sfwd-topic .column-taxonomy-ld_topic_category, body.post-type-sfwd-topic .column-taxonomy-ld_topic_tag { width: 10%; } /* CSS style for the post type editor showing the drip date. Replaces date picker */ .sfwd .ld_date_selector select { padding: 0; margin: 0; vertical-align: top; height: 35px; } .sfwd .ld_date_selector input[type="number"] { width: 50px; text-align: center; height: 35px; } .sfwd .ld_date_selector input.ld_date_aa[type="number"] { width: 65px; } .ld-error { color: red; } .ld-success { color: green; } form#learndash-settings-page-form .date-time-text { display: inline-block; min-width: 13em; } form#learndash-settings-page-form .quizzes_time_formats fieldset label { margin: .25em 0 .5em !important; display: inline-block; line-height: 1.4em; } form#learndash-settings-page-form .quizzes_time_formats fieldset input[type="text"] { height: 20px; width: 150px; }PKc\(FEffassets/css/style.cssnuW+A.groups_user_table, .groups_table{ width: 100%; } .groupemailtext{ max-width: 600px; } .group_email_sub{ width:50%; } .nss_plugin_license_email { min-width:30%; } .button_delete_course_data{ background-color: Red; color: white; padding: 10px 5px; } .cert_shortcode_parm_list{ margin: 20px 30px; list-style: initial; } .column-sno {width: 50px;} .groups_table .column-action { width: 300px; } .groups_user_table .column-action { width: 100px; } /*#sfwd-quiz .inside {overflow: hidden;}*/ #profile-page #ld_course_info_mycourses_list { display: none; } #learndash_lesson_topics_list ul, .learndash_navigation_lesson_topics_list { display: table; width: 100%; margin-bottom: 0; } #learndash_lesson_topics_list ul { padding: 0; } #learndash_lesson_topics_list ul > li, .learndash_navigation_lesson_topics_list > div { display: table-row; } .learndash_navigation_lesson_topics_list > div > div.list_arrow { display: table-cell; width: 16px; text-align: center; padding: 0 !important; } .course_navigation .learndash_topic_widget_list a > span { overflow: hidden; margin: 0 0 0 5px; } .course_navigation .learndash_topic_widget_list > ul { margin: 0; } .course_navigation a { text-decoration: none; } .course_navigation .learndash_navigation_lesson_topics_list .lesson { margin: 5px; } .course_navigation .learndash_navigation_lesson_topics_list ul li{ margin-left: 0; list-style: none; } .course_navigation .learndash_navigation_lesson_topics_list .learndash_topic_dots.type-list ul > li { padding-left: 10px; } .learndash_navigation_lesson_topics_list .learndash_topic_dots.type-list a > span { padding: 0 0 0 25px; } .learndash_topic_dots.type-list a{display: block;} .learndash_topic_dots a, .learndash_topic_dots a > span, #learndash_lesson_topics_list span a { text-decoration: none !important; font-weight: 100; font-size: 12px; } .expand_collapse, .notavailable_message, #learndash_lesson_topics_list div > strong, #learndash_lesson_topics_list div ul > li .sn, .learndash_profile_heading, #learndash_profile a, #learndash_profile div { font-size: 12px; font-weight: normal; } .list_arrow.expand { background: url("../images/gray_arrow_expand.png") no-repeat scroll 0 50% transparent; padding: 5px; } .active .list_arrow.expand { background: url("../images/green_arrow_expand.png") no-repeat scroll 0 50% transparent; padding: 5px; } .active .list_arrow.collapse { background: url("../images/green_arrow_collapse.png") no-repeat scroll 0 50% transparent; padding: 5px; } .list_arrow.collapse { background: url("../images/gray_arrow_collapse.png") no-repeat scroll 0 50% transparent; padding: 5px; } .list_arrow.collapse.lesson_completed { background: url("../images/green_arrow_collapse.png") no-repeat scroll 0 50% transparent; padding: 5px; } .lesson_incomplete.list_arrow.collapse { background: url("../images/gray_arrow_collapse.png") no-repeat scroll 0 50% transparent; padding: 5px; } .list_arrow.expand.lesson_completed { background: url("../images/images/green_arrow_expand.png") no-repeat scroll 0 50% transparent; padding: 5px; } .lesson_incomplete.list_arrow.expand { background: url("../images/gray_arrow_expand.png") no-repeat scroll 0 50% transparent; padding: 5px; } .rtl .active .list_arrow.collapse, .rtl .list_arrow.collapse.lesson_completed { background-image: url("../images/green_arrow_collapse_rtl.png"); } .rtl .list_arrow.collapse, .rtl .lesson_incomplete.list_arrow.collapse { background-image: url("../images/gray_arrow_collapse_rtl.png"); } .learndash_navigation_lesson_topics_list .list_arrow.expand { background-position: 50% 10px; } .learndash_navigation_lesson_topics_list .list_arrow.collapse { background-position: 50% 7px; } .learndash_navigation_lesson_topics_list .topic-notcompleted span{ background: url("../images/notcompleted_t_navigation.png") no-repeat scroll 0 8px transparent; display: inline-block; min-height: 25px; line-height: 25px; padding-left: 20px; vertical-align: middle; } #sfwd-quiz_quiz_pro_html { float: none; } #sfwd-quiz_quiz_pro_html #poststuff, #learndash_quiz_advanced #poststuff { min-width: 0; } #sfwd-quiz_quiz_pro_html input[type="button"] { padding: 0 10px ; } #AutomaticallyDisplayLeaderboard label { display: inline-block; } .nav-tab-sfwd-quiz_edit { margin-left: 40px; } .fixed .column-course { width: 15%; } .fixed .column-shortcode { width: 150px; } #sfwd-quiz_quiz_pro_html input[name="form_delete"], #sfwd-quiz_quiz_pro_html a.form_move { font-size: 12px; border-radius: 3px; } .post-new-php.post-type-sfwd-quiz #sfwd-quiz_quiz_pro { display: none; } .wp-admin.post-type-sfwd-assignment h2 a.add-new-h2 {display: none;} #learndash_assignment_metabox .button { margin-right: 10px; } #learndash_essay_status_div #post_status { width: 100%; } #learndash_essay_status_div .inside { padding: 0; } #learndash_essay_grading_response_div #grading-response { width: 100% } .learndash_uploaded_assignment_points { font-size: 12px; } .leardash-course-status-completed { color: green; } #course_progress_details .learndash_navigation_lesson_topics_list .topic-notcompleted span { background: none; padding-left: 0; margin-left: 0; } #course_progress_details .learndash_topic_widget_list ul { margin-left: 15px; } .course_navigation ul.learndash-topic-list li.topic-item ul.learndash-quiz-list { margin-left: 10px; } .course_navigation input[type="number"] { height: 20px; } .ld-shortcode-header { font-weight: bold; font-size: 1.1em; border-bottom: 1px solid #CCC; } /* Style for custom Count column shown on Category and Post Tag edit-tags.php screens shown within LD post types. */ .fixed .column-ld_posts { width: 74px; } .column-ld_posts { text-align: center; } body.post-type-sfwd-courses .column-categories, body.post-type-sfwd-courses .column-tags, body.post-type-sfwd-courses .column-taxonomy-ld_course_category, body.post-type-sfwd-courses .column-taxonomy-ld_course_tag, body.post-type-sfwd-lessons .column-categories, body.post-type-sfwd-lessons .column-tags, body.post-type-sfwd-lessons .column-taxonomy-ld_lesson_category, body.post-type-sfwd-lessons .column-taxonomy-ld_lesson_tag, body.post-type-sfwd-topic .column-categories, body.post-type-sfwd-topic .column-tags, body.post-type-sfwd-topic .column-taxonomy-ld_topic_category, body.post-type-sfwd-topic .column-taxonomy-ld_topic_tag { width: 10%; } /* CSS style for the post type editor showing the drip date. Replaces date picker */ .sfwd .ld_date_selector select { padding: 0; margin: 0; vertical-align: top; height: 35px; } .sfwd .ld_date_selector input[type="number"] { width: 50px; text-align: center; height: 35px; } .sfwd .ld_date_selector input.ld_date_aa[type="number"] { width: 65px; } .ld-error { color: red; } .ld-success { color: green; } form#learndash-settings-page-form .date-time-text { display: inline-block; min-width: 13em; } form#learndash-settings-page-form .quizzes_time_formats fieldset label { margin: .25em 0 .5em !important; display: inline-block; line-height: 1.4em; } form#learndash-settings-page-form .quizzes_time_formats fieldset input[type="text"] { height: 20px; width: 150px; }PKc\)J䑚-assets/css/learndash-admin-shortcodes.min.cssnuW+Ai.mce-i-icon{font:400 20px/1 dashicons;padding:0;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-left:-2px;padding-right:2px}#TB_ajaxContent{padding:0 0 30px 0;width:100%!important;overflow:hidden}.ui-dialog.ld-shortcodes{z-index:160000!important}#learndash_shortcodes_wrap{position:relative;margin:0;height:97.5%}#learndash_shortcodes_tabs{font-family:Helvetica,Arial;color:#333;font-size:12px;text-align:left}#learndash_shortcodes_tabs{width:150px;height:100%;min-height:100%;background:#ccc;border-right:1px solid #eee;float:left;overflow-y:scroll}#learndash_shortcodes_tabs ul{list-style:none;margin:0;padding:0;width:100%}#learndash_shortcodes_tabs ul li{width:100%;font-weight:700;margin:0}#learndash_shortcodes_tabs li.current{display:block;margin:0}#learndash_shortcodes_tabs li.current a{background:#fff;box-shadow:0 -1px 0 #eee}#learndash_shortcodes_tabs ul li a{display:block;padding:10px 10px;font-size:12px;color:#333;text-decoration:none;box-shadow:0 -1px 0 #eee}#learndash_shortcodes_tabs ul li:last-child a{box-shadow:0 -1px 0 #eee,0 1px 0 #eee}#learndash_shortcodes_sections{overflow:auto;height:100%;position:relative;padding:0 0 0 20px;margin:0;background:#fff}#learndash_shortcodes_sections textarea{width:100%;min-height:200px}#learndash_shortcodes_sections abbr[title]{border-bottom:none!important;cursor:inherit!important;text-decoration:none!important}PKc\Ɵ2WW4assets/css/learndash-admin-settings-page.min-rtl.cssnuW+A.learndash-settings-page-wrap .error,.learndash-settings-page-wrap .error a{color:red}a.learndash-description-link{color:#000;text-decoration:none}span.learndash-description{display:none}.sfwd_options .sfwd_input p.ld-clear{margin:0;line-height:0}.sfwd_options .ld-setting-field-sub{padding-top:5px}.sfwd_options .ld-setting-field-sub input[type=button]{margin-left:5px}.ld-metabox-description p{margin:5px 0 0 0;color:#666;font-weight:400;font-style:italic}.sfwd_options .sfwd_option_label .descripton{clear:both;display:block;float:right;font-weight:400;text-align:right}.sfwd_options .ld-settings-sub-level-1 .sfwd_input{margin-right:10px;padding-right:10px;position:relative;border-right:1px solid #ccc}.sfwd_options .ld-settings-sub-level-1 .ld-settings-sub-level-2{margin-right:10px;padding-right:5px;border-right:1px solid #ccc}.sfwd_options .ld-settings-sub-level-1 .ld-settings-sub-level-2 .sfwd_input .sfwd_option_label{width:calc(38% - 1px);max-width:calc(300px - 10px)}.sfwd_options .ld-settings-inner .sfwd_input{margin-right:25px;padding-right:20px;border-right:1px solid #ccc}.sfwd_options .ld-settings-inner .sfwd_input .sfwd_option_label{margin-left:0;margin-right:0;padding-left:0;width:30%;min-width:none;max-width:none}.sfwd_options .ld-settings-inner .sfwd_input .sfwd_option_label.sfwd_option_label_full,.sfwd_options .sfwd_input .sfwd_option_label.sfwd_option_label_full{width:100%}.sfwd_options .ld-settings-inner .sfwd_input .sfwd_option_input{width:65%;min-width:120px;max-width:none}.sfwd_options .ld-settings-inner .sfwd_input .sfwd_option_input.sfwd_option_input_full,.sfwd_options .sfwd_option_input.sfwd_option_input_full{width:100%}.sfwd_options .sfwd_input_type_quiz-custom-fields .sfwd_option_input.sfwd_option_input_full{float:none}.sfwd_options .ld-switch-wrapper{display:flex;margin-top:5px}.sfwd_options .ld-switch{margin-left:16px;position:relative}.sfwd_options .ld-switch__input{border:none;height:100%;right:0;margin:0;opacity:0;padding:0;position:absolute;top:0;width:100%;z-index:1}.sfwd_options .ld-switch__track{background-color:#fff;border-radius:9px;border:2px solid #6c7781;box-sizing:border-box;content:"";display:inline-block;height:18px;transition:.2s background ease,.2s border ease;vertical-align:top;width:36px}.sfwd_options .ld-switch__thumb{background-color:#6c7781;border-radius:50%;border:5px solid #6c7781;box-sizing:border-box;display:block;height:10px;right:4px;position:absolute;top:4px;transition:.1s transform ease;width:10px}.sfwd_options .ld-switch__on-off{border-radius:100%;border:2px solid #6c7781;box-sizing:border-box;display:block;height:6px;position:absolute;left:6px;top:6px;width:6px}.sfwd_options .ld-switch__input:checked~.ld-switch__track{background-color:#11a0d2;border-color:#11a0d2}.sfwd_options .ld-switch__input:checked~.ld-switch__thumb{background-color:#fff;border-width:0;transform:translateX(-18px)}.sfwd_options .ld-switch__input:checked~.ld-switch__on-off{background-color:#fff;border-radius:0;border:0;height:6px;right:8px;left:auto;width:2px}.sfwd_options .ld-switch__input:focus~.ld-switch__track{box-shadow:0 0 0 2px #fff,0 0 0 3px #6c7781;outline-offset:2px;outline:2px solid transparent}.sfwd_options .ld-switch__input:hover~.ld-switch__track{border-color:#11a0d2}.sfwd_options .ld-switch__input:checked:hover~.ld-switch__track{background-color:#6c7781;border-color:#6c7781}.sfwd_options .ld-switch.-disabled~label,.sfwd_options .ld-switch__input[disabled=disabled]{pointer-events:none}.sfwd_options .ld-switch__input[disabled=disabled]{opacity:0!important}.sfwd_options .ld-switch__input[disabled=disabled]~.ld-switch__track{opacity:.5}.sfwd_options .ld-radio-input{border:0;clip-path:inset(50%);clip:rect(1px,1px,1px,1px);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.sfwd_options .ld-radio-input__label{margin-left:16px}.sfwd_options .ld-radio-input__label:before{border-radius:100%;border:2px solid #6c7781;box-sizing:border-box;content:"";display:inline-block;height:16px;margin-left:10px;vertical-align:middle;width:16px}.sfwd_options .ld-radio-input__label>span{vertical-align:middle;font-weight:700;color:#5f5f5f}.sfwd_options .ld-radio-input:checked+.ld-radio-input__label:before{background-color:#11a0d2;box-shadow:inset 0 0 0 2px #fff}.sfwd_options .ld-radio-input:checked:focus+.ld-radio-input__label:before{box-shadow:inset 0 0 0 2px #fff,0 0 0 2px #fff,0 0 0 3px #6c7781}.sfwd_options .ld-radio-input:focus+.ld-radio-input__label:before{box-shadow:0 0 0 2px #fff,0 0 0 3px #6c7781;outline-offset:2px;outline:2px solid transparent}.sfwd_options .ld-radio-input:hover+.ld-radio-input__label:before{border-color:#11a0d2}.sfwd_options .ld-radio-input[disabled=disabled],.sfwd_options .ld-radio-input[disabled=disabled]+.ld-radio-input__label{pointer-events:none}.sfwd_options .ld-radio-input[disabled=disabled]+.ld-radio-input__label:before{opacity:.5}.sfwd_options .ld-radio-description{color:#666;padding-right:25px}.sfwd_options .ld-checkbox-input{border:0;clip-path:inset(50%);clip:rect(1px,1px,1px,1px);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.sfwd_options .ld-checkbox-input__label{margin-left:16px}.sfwd_options .ld-checkbox-input__label:before{border:2px solid #6c7781;box-sizing:border-box;content:"";display:inline-block;height:16px;margin-left:10px;vertical-align:middle;width:16px}.sfwd_options .ld-checkbox-input__label>span{vertical-align:middle}.sfwd_options .ld-checkbox-input:checked+.ld-checkbox-input__label:before{align-items:center;color:#11a0d2;content:"\2713";display:inline-flex;justify-content:center;font-weight:900}.sfwd_options .ld-checkbox-input:focus+.ld-checkbox-input__label:before{box-shadow:0 0 0 2px #fff,0 0 0 3px #6c7781;outline-offset:2px;outline:2px solid transparent}.sfwd_options .ld-checkbox-input:hover+.ld-checkbox-input__label:before{border-color:#11a0d2}.sfwd_options .ld-checkbox-input[disabled=disabled],.sfwd_options .ld-checkbox-input[disabled=disabled]+.ld-checkbox-input__label{pointer-events:none}.sfwd_options .ld-checkbox-input[disabled=disabled]+.ld-checkbox-input__label:before{opacity:.5}.sfwd_options .sfwd_option_input p.learndash-section-field-checkbox-p{margin:3px 0 0 0;padding:0}.sfwd_options .learndash-section-field-text{border-radius:2px;border:1px solid #ddd;box-shadow:none;box-sizing:border-box;font-size:14px;padding:5px 7px;width:100%}.sfwd_options .learndash-section-field-number.-medium,.sfwd_options .learndash-section-field-text.-medium,.sfwd_options .learndash-section-field-url.-medium{width:50%}.sfwd_options .learndash-section-field-number.-small,.sfwd_options .learndash-section-field-text.-small,.sfwd_options .learndash-section-field-url.-small{width:100px}.sfwd_options .learndash-section-field-number:focus,.sfwd_options .learndash-section-field-text:focus{border-color:#11a0d2;outline:0}.sfwd_options .learndash-section-field-number:hover,.sfwd_options .learndash-section-field-text:hover,.sfwd_options .learndash-section-field-url:hover{border-color:#999}.sfwd_options .learndash-section-field-number.full-text,.sfwd_options .learndash-section-field-text.full-text,.sfwd_options .learndash-section-field-url.full-text{width:100%}.sfwd_options .ld-select{background-color:#fff;border-radius:3px;border:1px solid #ccc;display:inline-block;overflow:hidden;position:relative;vertical-align:middle;width:100%;max-width:450px}.sfwd_options .ld-select:after{border:5px solid transparent;border-bottom:0;border-top-color:#000;content:"";height:0;pointer-events:none;position:absolute;left:5px;speak:none;top:50%;transform:translate(0,-50%);width:0}.sfwd_options .ld-select-multiple:after,.sfwd_options .ld-select2:after{border:none}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#72777c!important}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#11a0d2!important}.sfwd_options .ld-select-multiple.ld-select2 .select2-container .select2-selection__rendered>:first-child.select2-search--inline{width:100%!important}.sfwd_options .ld-select-multiple.ld-select2 .select2-container .select2-selection__rendered>:first-child.select2-search--inline .select2-search__field{width:100%!important}.sfwd_options .ld-select-multiple.ld-select2 .select2-container li{margin-bottom:0}.sfwd_options .select2-container .select2-search--inline .select2-search__field{margin-top:3px;margin-bottom:2px}.sfwd_options .ld-select select{-moz-appearance:none;-webkit-appearance:textarea;appearance:none;background:100% 0;border:0;font-size:14px;height:100%;margin:0;padding:5px 10px;width:100%;max-width:100%;z-index:2}.sfwd_options .ld-select select:focus{box-shadow:inset 0 0 0 1px #6c7781}.sfwd_options .ld-select select::-ms-expand{display:none}.sfwd_options .ld-select select:-moz-focusring{text-shadow:$select--focus-ring--text-shadow}.sfwd_options .ld-select select option{border:0;width:100%}.sfwd_options .ld-select2 .select2-container{width:100%!important;max-width:450px;height:100%}.sfwd_options .ld-select2 .select2-container--default .select2-selection--single{padding-top:3px;padding-bottom:3px;height:100%;border:0}.sfwd_options .ld-select2 .select2-container--default .select2-selection--single .select2-selection__arrow{height:100%}.sfwd_options .ld-select2 .select2-container--default .select2-selection--single .select2-selection__arrow b{border-top-color:inherit}.sfwd_options .select2-container--default .select2-selection--multiple{border:0 solid #aaa!important}.sfwd_options .select2-container .select2-search--inline .select2-search__field{padding-top:5px!important;color:#444!important}.sfwd_options .sfwd_option_div p.ld-radio-input-wrapper{margin-bottom:1px}.sfwd_options .sfwd_input textarea{color:#515151;margin:0;font-size:14px;line-height:25px;width:100%}.sfwd_options .sfwd_input>.sfwd_input:first-child{margin-top:20px}.sfwd_options .sfwd_option_input p{margin-top:0}.sfwd_options .sfwd_option_label{box-sizing:border-box;flex:1 0 100%;font-weight:700;margin-bottom:10px;padding-left:0}.sfwd_options .sfwd_option_input{flex:1 0 100%;margin-bottom:10px}.sfwd_options .sfwd_option_div select[multiple]{width:100%;min-height:100px}.sfwd_options .ld-settings-inner-state-closed,.sfwd_options .ld-settings-sub.ld-settings-sub-state-closed,.sfwd_options .ld-theme-settings-section-state-closed{display:none}.sfwd_options .ld-settings-inner-state-open .sfwd_options .ld-theme-settings-section-state-open,.sfwd_options .ld-settings-sub.ld-settings-sub-state-open{display:block}.sfwd_options .ld-settings-sub-advanced .sfwd_input{margin-right:1px;border-right:1px solid #ccc}.sfwd_options .ld-settings-sub-advanced .ld-settings-sub-advanced-inner-state-closed{display:none}.sfwd_options .ld-settings-sub-advanced .ld-settings-sub-advanced-inner-state-open{display:block}.sfwd_options .ld-settings-sub-advanced .ld-settings-sub-advanced-inner .sfwd_option_label{width:auto}.sfwd_options .ld-settings-sub-advanced .ld-settings-sub-advanced-inner .sfwd_option_input{width:auto}.sfwd_options .tooltip{position:relative;display:inline-block;opacity:1}.sfwd_options .tooltip .tooltiptext{visibility:hidden;width:180px;background-color:#11a0d2;color:#fff;text-align:center;padding:5px 0;border-radius:6px;margin-right:-90px;bottom:100%;right:50%;margin-bottom:5px;position:absolute;z-index:1}.sfwd_options .-disabled.tooltip:hover .tooltiptext{visibility:visible}.sfwd_options .tooltip .tooltiptext::after{content:" ";position:absolute;top:100%;right:50%;margin-right:-5px;border-width:5px;border-style:solid;border-color:#11a0d2 transparent transparent transparent}.sfwd_options .form_table_wrapper{margin-top:0;padding:0;border:0 solid #c2c2c2}.sfwd_options .form_table_wrapper table{border-collapse:collapse}.sfwd_options .form_table_wrapper #form_add{background-color:transparent;background-image:url("data:image/svg+xml,%3Csvg width='256' height='256' viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23007cba' d='M185.066 128c0 3.534-2.866 6-6.4 6H134v44.666c0 3.534-2.467 6.399-6 6.399-3.534 0-6-2.865-6-6.399V134H77.332c-3.535 0-6.4-2.466-6.4-6s2.866-6 6.4-6H122V77.331c0-3.534 2.466-6.4 6-6.4 3.533 0 6 2.866 6 6.4V122h44.666c3.534 0 6.4 2.466 6.4 6zM256 128C256 57.42 198.58 0 128 0S0 57.42 0 128s57.42 128 128 128 128-57.42 128-128zm-12.8 0c0 63.521-51.679 115.2-115.2 115.2-63.522 0-115.2-51.679-115.2-115.2C12.8 64.478 64.478 12.8 128 12.8c63.521 0 115.2 51.678 115.2 115.2z' fill-rule='nonzero'%3E%3C/path%3E%3C/svg%3E");background-position:center right 3px;background-repeat:no-repeat;background-size:16px 16px;border:0;color:#007cba;cursor:pointer;font-size:14px;font-weight:700;padding:5px 30px 5px 10px;box-shadow:none}.sfwd_options .form_table_wrapper #form_add:hover{background-image:url("data:image/svg+xml,%3Csvg width='256' height='256' viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%2311a0d2' d='M185.066 128c0 3.534-2.866 6-6.4 6H134v44.666c0 3.534-2.467 6.399-6 6.399-3.534 0-6-2.865-6-6.399V134H77.332c-3.535 0-6.4-2.466-6.4-6s2.866-6 6.4-6H122V77.331c0-3.534 2.466-6.4 6-6.4 3.533 0 6 2.866 6 6.4V122h44.666c3.534 0 6.4 2.466 6.4 6zM256 128C256 57.42 198.58 0 128 0S0 57.42 0 128s57.42 128 128 128 128-57.42 128-128zm-12.8 0c0 63.521-51.679 115.2-115.2 115.2-63.522 0-115.2-51.679-115.2-115.2C12.8 64.478 64.478 12.8 128 12.8c63.521 0 115.2 51.678 115.2 115.2z' fill-rule='nonzero'%3E%3C/path%3E%3C/svg%3E");color:#11a0d2}.sfwd_options .form_table_wrapper .form_move{text-decoration:none}.sfwd_options .form_table_wrapper .form_delete{background-color:transparent;background-image:url("data:image/svg+xml,%3Csvg aria-hidden='true' role='img' focusable='false' class='dashicon dashicons-dismiss' xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath fill='%23a00' d='M10 2c4.42 0 8 3.58 8 8s-3.58 8-8 8-8-3.58-8-8 3.58-8 8-8zm5 11l-3-3 3-3-2-2-3 3-3-3-2 2 3 3-3 3 2 2 3-3 3 3z'%3E%3C/path%3E%3C/svg%3E");background-position:center right 3px;background-repeat:no-repeat;border:0;color:#a00;cursor:pointer;font-weight:700;margin:0;opacity:0;padding:5px 30px 5px 10px;transition:opacity .1s;visibility:hidden}.sfwd_options .form_table_wrapper .form_delete:hover{color:red}.sfwd_options .form_table_wrapper tbody.ui-sortable tr:hover .form_delete{opacity:1;visibility:visible}.sfwd_options .form_table_wrapper tbody.ui-sortable tr td,.sfwd_options .form_table_wrapper thead tr th{padding:10px 5px;transition:box-shadow .1s}.sfwd_options .form_table_wrapper tbody.ui-sortable tr:hover td{box-shadow:0 1px 0 0 #11a0d2,0 -1px 0 0 #11a0d2}.sfwd_options .form_table_wrapper tbody.ui-sortable tr:hover td:first-of-type{box-shadow:0 1px 0 0 #11a0d2,0 -1px 0 0 #11a0d2,1px 0 0 0 #11a0d2}.sfwd_options .form_table_wrapper tbody.ui-sortable tr:hover td:last-of-type{box-shadow:0 1px 0 0 #11a0d2,0 -1px 0 0 #11a0d2,-1px 0 0 0 #11a0d2}.sfwd_options .form_table_wrapper tbody.ui-sortable tr td:first-of-type{text-align:center}.sfwd_options .form_table_wrapper .ld-select.-field select{padding:0 10px}.sfwd_options .form_table_wrapper #form_table thead th{text-transform:uppercase}.sfwd_options .form_table_wrapper #form_add_wrapper{margin-top:10px;margin-right:10px}#learndash-quiz-resultList ul#resultList{width:100%}#learndash-quiz-resultList ul#resultList li{padding:5px;border:1;border:1px dotted}#learndash-quiz-resultList ul#resultList li .resultHeader{margin-bottom:5px;padding:10px;background-color:#ebebeb}#learndash-quiz-resultList input.addResult{background-color:transparent;background-image:url("data:image/svg+xml,%3Csvg width='256' height='256' viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23007cba' d='M185.066 128c0 3.534-2.866 6-6.4 6H134v44.666c0 3.534-2.467 6.399-6 6.399-3.534 0-6-2.865-6-6.399V134H77.332c-3.535 0-6.4-2.466-6.4-6s2.866-6 6.4-6H122V77.331c0-3.534 2.466-6.4 6-6.4 3.533 0 6 2.866 6 6.4V122h44.666c3.534 0 6.4 2.466 6.4 6zM256 128C256 57.42 198.58 0 128 0S0 57.42 0 128s57.42 128 128 128 128-57.42 128-128zm-12.8 0c0 63.521-51.679 115.2-115.2 115.2-63.522 0-115.2-51.679-115.2-115.2C12.8 64.478 64.478 12.8 128 12.8c63.521 0 115.2 51.678 115.2 115.2z' fill-rule='nonzero'%3E%3C/path%3E%3C/svg%3E");background-position:center right 3px;background-repeat:no-repeat;background-size:16px 16px;border:0;color:#007cba;cursor:pointer;font-size:14px;font-weight:700;padding:5px 30px 5px 10px}#learndash-quiz-resultList ul#resultList li input.deleteResult{float:left;background-color:transparent;background-image:url("data:image/svg+xml,%3Csvg aria-hidden='true' role='img' focusable='false' class='dashicon dashicons-dismiss' xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath fill='%23a00' d='M10 2c4.42 0 8 3.58 8 8s-3.58 8-8 8-8-3.58-8-8 3.58-8 8-8zm5 11l-3-3 3-3-2-2-3 3-3-3-2 2 3 3-3 3 2 2 3-3 3 3z'%3E%3C/path%3E%3C/svg%3E");background-position:center right 3px;background-repeat:no-repeat;border:0;color:#a00;cursor:pointer;font-weight:700;margin:0;opacity:0;padding:5px 30px 5px 10px;transition:opacity .1s;visibility:hidden}#learndash-quiz-resultList ul#resultList li:hover input.deleteResult{opacity:1;visibility:visible}#learndash-quiz-resultList #resultList li .expand-arrow{cursor:pointer;margin-top:3px;float:left}#learndash-quiz-resultList #resultList li .expand-arrow-up svg{transform:rotate(-180deg)}.sfwd_options .sfwd_option_label .descripton p{margin-bottom:0}.sfwd_options .sfwd_option_input_full{margin-right:0;margin-left:0}.learndash_navigation_questions_list ul.learndash-quiz-questions li a{font-weight:400;text-decoration:none!important}.learndash_navigation_questions_list ul.learndash-quiz-questions li.ld-question-overview-widget-item-current a{font-weight:700}.learndash_navigation_questions_list .ld-question-overview-widget-add{font-weight:700;text-decoration:none!important}.sfwd_options #learndash-quiz-admin-data-handling-settings_associated_settings_field,.sfwd_options #learndash-quiz-admin-data-handling-settings_emailNotification_field,.sfwd_options #learndash-quiz-admin-data-handling-settings_statisticsIpLock_field,.sfwd_options #learndash-quiz-admin-data-handling-settings_timeLimitCookie_field,.sfwd_options #learndash-quiz-admin-data-handling-settings_toplistDataAddBlock_field,.sfwd_options #learndash-quiz-admin-data-handling-settings_toplistDataShowIn_field,.sfwd_options #learndash-quiz-display-content-settings_quizModus_multiple_questionsPerPage_field,.sfwd_options #learndash-quiz-display-content-settings_quizModus_single_feedback_field,.sfwd_options #learndash-quiz-display-content-settings_showMaxQuestionValue_field,.sfwd_options #learndash-quiz-display-content-settings_showMaxQuestion_field,.sfwd_options #learndash-quiz-results-options_resultText_field{border-right:none;margin-right:0;padding-right:0}.sfwd_options #learndash-course-access-settings_course_access_list_field,.sfwd_options #learndash-course-display-content-settings_course_materials_field,.sfwd_options #learndash-lesson-display-content-settings_lesson_assignment_points_amount_field,.sfwd_options #learndash-lesson-display-content-settings_lesson_materials_field,.sfwd_options #learndash-quiz-display-content-settings_quizModus_single_back_button_field,.sfwd_options #learndash-quiz-display-content-settings_quiz_materials_field,.sfwd_options #learndash-quiz-display-content-settings_showMaxQuestionValue_field,.sfwd_options #learndash-topic-display-content-settings_lesson_assignment_points_amount_field,.sfwd_options #learndash-topic-display-content-settings_topic_materials_field{border-right:none}.sfwd_options #learndash-lesson-access-settings_visible_after_field,.sfwd_options #learndash-lesson-access-settings_visible_after_specific_date_field,.sfwd_options #learndash-quiz-display-content-settings_quizModus_single_back_button_field{border-right:none;padding-right:0}.sfwd_options #learndash-quiz-results-options_resultText_field{padding-right:10px}.sfwd_options input[name=templateLoad],.sfwd_options input[name=templateName]{margin-top:5px}.ld-settings-inner .ld-radio-input__label>span{font-weight:400}.ld-divider{border-bottom:1px solid #eee;margin:20px 0 20px 0}.sfwd_options .ld-settings-inner .sfwd_option_input,.sfwd_options .ld-settings-inner-lesson_video_display_timing_after .sfwd_option_input{width:40%!important}.sfwd_options #learndash-lesson-access-settings_visible_after_specific_date_field .sfwd_option_input{width:80%!important}.sfwd_options .ld-settings-sub .sfwd_option_label{width:calc(38% - 15px);max-width:calc(300px - 15px)}.sfwd_options #learndash-lesson-display-content-settings_assignment_upload_limit_count_field .sfwd_option_label,.sfwd_options #learndash-lesson-display-content-settings_lesson_assignment_deletion_enabled_field .sfwd_option_label{width:35%!important}.sfwd_options #learndash-lesson-access-settings_visible_after_specific_date_field input[type=number]{padding:0!important}.sfwd_options .ld-settings-inner-lesson_video_display_timing_after .sfwd_option_label{width:35%!important}.sfwd_options .ld-settings-inner-quizModus_single .sfwd_option_input{width:65%!important}.sfwd_options .ld-settings-email-header-wrapper{margin-bottom:30px}.sfwd_options .ld-settings-email-header{font-weight:700}.sfwd_options .ld-settings-email-description{font-weight:300}.sfwd_options .learndash_settings_field_invalid label.sfwd_label{color:red}.sfwd_options .learndash_settings_field_invalid input:invalid{border:1px solid red;box-shadow:none}.sfwd_options .learndash_settings_field_invalid .learndash-section-field-error{color:red}#learndash-settings-fields-notice-errors p.errors-header{font-weight:900}#learndash-settings-fields-notice-errors ul.errors-list{list-style:disc}#learndash-settings-fields-notice-errors ul.errors-list li{margin-right:15px}.ld__builder-sidebar-widget .components-checkbox-control__input[type=checkbox]:checked::before{content:url(data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%231e8cbe%27%2F%3E%3C%2Fsvg%3E)}.plugin-update p.ld-plugin-update-notice::before{content:'';margin-left:0}.notice.ld-plugin-update-notice,.plugin-update .ld-plugin-update-notice{padding:10px;margin-top:10px}.ld-plugin-update-notice .version{font-weight:700}.ld-plugin-update-notice .header{font-size:130%;font-weight:700}PKc\Zuu0assets/css/learndash-admin-settings-page-rtl.cssnuW+A.learndash-settings-page-wrap .error, .learndash-settings-page-wrap .error a { color: red; } a.learndash-description-link { color: #000; text-decoration: none; } span.learndash-description { display: none; } .sfwd_options .sfwd_input p.ld-clear { margin: 0; line-height: 0; } .sfwd_options .ld-setting-field-sub { padding-top: 5px; } .sfwd_options .ld-setting-field-sub input[type="button"] { margin-left: 5px; } .ld-metabox-description p { margin: 5px 0 0 0; color: #666; font-weight: 400; font-style: italic; } .sfwd_options .sfwd_option_label .descripton { clear: both; display: block; float: right; font-weight: normal; text-align: right; } .sfwd_options .ld-settings-sub-level-1 .sfwd_input { margin-right: 10px; padding-right: 10px; position: relative; border-right: 1px solid #ccc; } /* .sfwd_options .ld-settings-sub-level-1 .sfwd_input:before{ content: ""; position: absolute; border-left: 1px solid #ccc; left: 0px; bottom: 0px; height: 100%; width: 1px; top: 0px; } */ /* .sfwd_options .ld-settings-sub-level-1 .sfwd_input:first-child:before { content: ""; position: absolute; border-left: 1px solid #ccc; left: 0px; bottom: 0px; height: 100%; width: 1px; top: 10px; } */ /* .sfwd_options .ld-settings-sub-level-1 .sfwd_input:last-child:before { content: ""; position: absolute; border-left: 1px solid #ccc; left: 0px; bottom: 0px; height: 75%; width: 1px; top: 0px; } */ /* .sfwd_options .ld-settings-sub-level-1 .sfwd_input:first-child:nth-last-child(1) { content: ""; position: absolute; border-left: 1px solid #ccc; left: 0px; bottom: 0px; height: 75%; width: 1px; top: 10px; } */ /* .sfwd_options .ld-settings-sub-level-1 .sfwd_input:first-child:nth-last-child(1) { border-left: 0px; } */ /* .sfwd_options .ld-settings-sub-level-1 .sfwd_input .sfwd_option_label { max-width: 279px; } */ .sfwd_options .ld-settings-sub-level-1 .ld-settings-sub-level-2 { margin-right: 10px; padding-right: 5px; border-right: 1px solid #ccc; } .sfwd_options .ld-settings-sub-level-1 .ld-settings-sub-level-2 .sfwd_input .sfwd_option_label { /* max-width: 279px; */ width: calc(38% - 1px); max-width: calc(300px - 10px); } .sfwd_options .ld-settings-inner .sfwd_input { margin-right: 25px; padding-right: 20px; border-right: 1px solid #ccc; } /* .sfwd_options .ld-settings-inner .sfwd_input:first-child:nth-last-child(1) { border-left: 0px; } */ .sfwd_options .ld-settings-inner .sfwd_input .sfwd_option_label { margin-left: 0px; margin-right: 0px; padding-left: 0px; width: 30%; min-width: none; max-width: none; } .sfwd_options .ld-settings-inner .sfwd_input .sfwd_option_label.sfwd_option_label_full, .sfwd_options .sfwd_input .sfwd_option_label.sfwd_option_label_full { width: 100%; } .sfwd_options .ld-settings-inner .sfwd_input .sfwd_option_input { width: 65%; min-width: 120px; max-width: none; } .sfwd_options .ld-settings-inner .sfwd_input .sfwd_option_input.sfwd_option_input_full, .sfwd_options .sfwd_option_input.sfwd_option_input_full { width: 100%; } .sfwd_options .sfwd_input_type_quiz-custom-fields .sfwd_option_input.sfwd_option_input_full { float: none; } /* .sfwd_options .ld-settings-inner .sfwd_input .sfwd_label { max-width: 100px; width: 100px !important; } */ /* Settings Fields CSS */ /* Switch toggle CSS */ .sfwd_options .ld-switch-wrapper { display: flex; margin-top: 5px; } /* .sfwd_options .ld-settings-inner .ld-switch-wrapper { margin-top: 0px; } */ .sfwd_options .ld-switch { margin-left: 16px; position: relative; } .sfwd_options .ld-switch__input { border: none; height: 100%; right: 0; margin: 0; opacity: 0; padding: 0; position: absolute; top: 0; width: 100%; z-index: 1; } .sfwd_options .ld-switch__track { background-color: #fff; border-radius: 9px; border: 2px solid #6c7781; box-sizing: border-box; content: ""; display: inline-block; height: 18px; transition: .2s background ease, .2s border ease; vertical-align: top; width: 36px; } .sfwd_options .ld-switch__thumb { background-color: #6c7781; border-radius: 50%; border: 5px solid #6c7781; box-sizing: border-box; display: block; height: 10px; right: 4px; position: absolute; top: 4px; transition: .1s transform ease; width: 10px; } .sfwd_options .ld-switch__on-off { border-radius: 100%; border: 2px solid #6c7781; box-sizing: border-box; display: block; height: 6px; position: absolute; left: 6px; top: 6px; width: 6px; } .sfwd_options .ld-switch__input:checked ~ .ld-switch__track { background-color: #11a0d2; border-color: #11a0d2; } .sfwd_options .ld-switch__input:checked ~ .ld-switch__thumb { background-color: #fff; border-width: 0; transform: translateX(-18px); } .sfwd_options .ld-switch__input:checked ~ .ld-switch__on-off { background-color: #fff; border-radius: 0; border: 0; height: 6px; right: 8px; left: auto; width: 2px; } .sfwd_options .ld-switch__input:focus ~ .ld-switch__track { box-shadow: 0 0 0 2px #fff, 0 0 0 3px #6c7781; outline-offset: 2px; outline: 2px solid transparent; } .sfwd_options .ld-switch__input:hover ~ .ld-switch__track { border-color: #11a0d2; } .sfwd_options .ld-switch__input:checked:hover ~ .ld-switch__track { background-color: #6c7781; border-color: #6c7781; } .sfwd_options .ld-switch.-disabled ~ label, .sfwd_options .ld-switch__input[disabled="disabled"] { pointer-events: none; } .sfwd_options .ld-switch__input[disabled="disabled"] { opacity: 0 !important; } .sfwd_options .ld-switch__input[disabled="disabled"] ~ .ld-switch__track { opacity: 0.5; } /* Radio CSS*/ .sfwd_options .ld-radio-input { border: 0; clip-path: inset(50%); clip: rect(1px, 1px, 1px, 1px); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; word-wrap: normal !important; } .sfwd_options .ld-radio-input__label { margin-left: 16px; } .sfwd_options .ld-radio-input__label:before { border-radius: 100%; border: 2px solid #6c7781; box-sizing: border-box; content: ""; display: inline-block; height: 16px; margin-left: 10px; vertical-align: middle; width: 16px; } .sfwd_options .ld-radio-input__label > span { vertical-align: middle; font-weight: 700; color: #5F5F5F; } .sfwd_options .ld-radio-input:checked + .ld-radio-input__label:before { background-color: #11a0d2; box-shadow: inset 0 0 0 2px #fff; } .sfwd_options .ld-radio-input:checked:focus + .ld-radio-input__label:before { box-shadow: inset 0 0 0 2px #fff, 0 0 0 2px #fff, 0 0 0 3px #6c7781; } .sfwd_options .ld-radio-input:focus + .ld-radio-input__label:before { box-shadow: 0 0 0 2px #fff, 0 0 0 3px #6c7781; outline-offset: 2px; outline: 2px solid transparent; } .sfwd_options .ld-radio-input:hover + .ld-radio-input__label:before { border-color: #11a0d2; } .sfwd_options .ld-radio-input[disabled="disabled"], .sfwd_options .ld-radio-input[disabled="disabled"] + .ld-radio-input__label { pointer-events: none; } .sfwd_options .ld-radio-input[disabled="disabled"] + .ld-radio-input__label:before { opacity: 0.5; } .sfwd_options .ld-radio-description { color: #666; padding-right: 25px; } /* Checkbox CSS*/ .sfwd_options .ld-checkbox-input { border: 0; clip-path: inset(50%); clip: rect(1px, 1px, 1px, 1px); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; word-wrap: normal !important; } .sfwd_options .ld-checkbox-input__label { margin-left: 16px; } .sfwd_options .ld-checkbox-input__label:before { border: 2px solid #6c7781; box-sizing: border-box; content: ""; display: inline-block; height: 16px; margin-left: 10px; vertical-align: middle; width: 16px; } .sfwd_options .ld-checkbox-input__label > span { vertical-align: middle; } .sfwd_options .ld-checkbox-input:checked + .ld-checkbox-input__label:before { align-items: center; color: #11a0d2; content: "\2713"; display: inline-flex; justify-content: center; font-weight: 900; } .sfwd_options .ld-checkbox-input:focus + .ld-checkbox-input__label:before { box-shadow: 0 0 0 2px #fff, 0 0 0 3px #6c7781; outline-offset: 2px; outline: 2px solid transparent; } .sfwd_options .ld-checkbox-input:hover + .ld-checkbox-input__label:before { border-color: #11a0d2; } .sfwd_options .ld-checkbox-input[disabled="disabled"], .sfwd_options .ld-checkbox-input[disabled="disabled"] + .ld-checkbox-input__label { pointer-events: none; } .sfwd_options .ld-checkbox-input[disabled="disabled"] + .ld-checkbox-input__label:before { opacity: 0.5; } .sfwd_options .sfwd_option_input p.learndash-section-field-checkbox-p { margin: 3px 0 0 0; padding: 0; } /* Text Input CSS */ .sfwd_options .learndash-section-field-text { border-radius: 2px; border: 1px solid #ddd; box-shadow: none; box-sizing: border-box; font-size: 14px; padding: 5px 7px; width: 100%; } .sfwd_options .learndash-section-field-number.-medium, .sfwd_options .learndash-section-field-text.-medium, .sfwd_options .learndash-section-field-url.-medium { width: 50%; } .sfwd_options .learndash-section-field-number.-small, .sfwd_options .learndash-section-field-text.-small, .sfwd_options .learndash-section-field-url.-small { width: 100px; } .sfwd_options .learndash-section-field-number:focus, .sfwd_options .learndash-section-field-text:focus { border-color: #11a0d2; outline: 0; } .sfwd_options .learndash-section-field-number:hover, .sfwd_options .learndash-section-field-text:hover, .sfwd_options .learndash-section-field-url:hover { border-color: #999; } .sfwd_options .learndash-section-field-number.full-text, .sfwd_options .learndash-section-field-text.full-text, .sfwd_options .learndash-section-field-url.full-text { width: 100%; } /* Select CSS */ .sfwd_options .ld-select { background-color: #fff; border-radius: 3px; border: 1px solid #ccc; display: inline-block; overflow: hidden; position: relative; vertical-align: middle; width: 100%; max-width: 450px; } .sfwd_options .ld-select:after { border: 5px solid transparent; border-bottom: 0; border-top-color: black; content: ""; height: 0; pointer-events: none; position: absolute; left: 5px; speak: none; top: 50%; transform: translate(0,-50%); width: 0; } .sfwd_options .ld-select-multiple:after, .sfwd_options .ld-select2:after { border: none; } .select2-container--default .select2-selection--single .select2-selection__rendered { color: #72777c !important; } .select2-container--default .select2-results__option--highlighted[aria-selected] { background-color: #11a0d2 !important; } /* .sfwd_options .ld-select-multiple.ld-select2 ul.select2-selection__rendered li, .sfwd_options .ld-select-multiple.ld-select2 ul.select2-selection__rendered li input { width: 100%; } */ .sfwd_options .ld-select-multiple.ld-select2 .select2-container .select2-selection__rendered > *:first-child.select2-search--inline { width: 100% !important; } .sfwd_options .ld-select-multiple.ld-select2 .select2-container .select2-selection__rendered > *:first-child.select2-search--inline .select2-search__field { width: 100% !important; } .sfwd_options .ld-select-multiple.ld-select2 .select2-container li { margin-bottom: 0; } .sfwd_options .select2-container .select2-search--inline .select2-search__field { margin-top: 3px; margin-bottom: 2px; } .sfwd_options .ld-select select { -moz-appearance: none; -webkit-appearance: textarea; appearance: none; background: none; border: 0; font-size: 14px; height: 100%; margin: 0; padding: 5px 10px; width: 100%; max-width: 100%; /* width: 110% \9; */ z-index: 2; } .sfwd_options .ld-select select:focus { box-shadow: inset 0 0 0 1px #6c7781; } .sfwd_options .ld-select select::-ms-expand { display: none; } .sfwd_options .ld-select select:-moz-focusring { text-shadow: $select--focus-ring--text-shadow; } .sfwd_options .ld-select select option { border: 0; width: 100%; } .sfwd_options .ld-select2 .select2-container { width: 100% !important; max-width: 450px; height: 100%; } /* .sfwd_options .ld-select2 .select2-container .select2-selection--single .select2-selection__rendered { padding-top: 5px; padding-bottom: 5px; } */ .sfwd_options .ld-select2 .select2-container--default .select2-selection--single { padding-top: 3px; padding-bottom: 3px; height: 100%; border: 0px; } .sfwd_options .ld-select2 .select2-container--default .select2-selection--single .select2-selection__arrow { height: 100%; } /* .sfwd_options .ld-select2 .select2-container--default .select2-selection--single .select2-selection__placeholder { color: inherit; } */ .sfwd_options .ld-select2 .select2-container--default .select2-selection--single .select2-selection__arrow b { border-top-color: inherit; } .sfwd_options .select2-container--default .select2-selection--multiple { border: 0px solid #aaa !important; } .sfwd_options .select2-container .select2-search--inline .select2-search__field { padding-top: 5px !important; color: #444 !important; } /* .select2-container--default .select2-selection--single { background-color: #fff; border: 1px solid #aaa; border-radius: 4px; height: 100%; } */ /* Settings Row CSS */ /* .sfwd_options .sfwd_input { align-items: flex-start; box-sizing: border-box; display: flex; flex-wrap: wrap; padding-top: 20px; } */ /* .sfwd_options .sfwd_input > .sfwd_input { border-left: 2px solid #ddd; flex: 1 0 100%; padding-left: 20px; } */ .sfwd_options .sfwd_option_div p.ld-radio-input-wrapper { margin-bottom: 1px; } .sfwd_options .sfwd_input textarea { color: #515151; margin: 0px; font-size: 14px; line-height: 25px; width: 100%; } .sfwd_options .sfwd_input > .sfwd_input:first-child { margin-top: 20px; } .sfwd_options .sfwd_option_input p { margin-top: 0; } .sfwd_options .sfwd_option_label { box-sizing: border-box; flex: 1 0 100%; font-weight: 700; margin-bottom: 10px; padding-left: 0px; /* 20px;*/ /* position: relative; */ } .sfwd_options .sfwd_option_input { flex: 1 0 100%; margin-bottom: 10px; } .sfwd_options .sfwd_option_div select[multiple] { width: 100%; min-height: 100px; } .sfwd_options .ld-settings-sub.ld-settings-sub-state-closed, .sfwd_options .ld-settings-inner-state-closed, .sfwd_options .ld-theme-settings-section-state-closed { display: none; } .sfwd_options .ld-settings-sub.ld-settings-sub-state-open, .sfwd_options .ld-settings-inner-state-open .sfwd_options .ld-theme-settings-section-state-open { display: block; } .sfwd_options .ld-settings-sub-advanced .sfwd_input { margin-right: 1px; border-right: 1px solid #ccc; } .sfwd_options .ld-settings-sub-advanced .ld-settings-sub-advanced-inner-state-closed { display: none; } .sfwd_options .ld-settings-sub-advanced .ld-settings-sub-advanced-inner-state-open { display: block; } .sfwd_options .ld-settings-sub-advanced .ld-settings-sub-advanced-inner .sfwd_option_label { width: auto; } .sfwd_options .ld-settings-sub-advanced .ld-settings-sub-advanced-inner .sfwd_option_input { width: auto; } /* .sfwd_options .sfwd_help_text_div { display: block; position: absolute; top: 20px; border: 2px solid black; padding: 5px; background-color: yellow; color: black; z-index: 99; } */ /* @media screen and (min-width: 768px) { .sfwd_options .sfwd_option_label { flex: 1 0 300px; margin-bottom: 0; } .sfwd_options .sfwd_option_input { flex: 1 0 calc(100% - 300px); margin-bottom: 0; } .sfwd_options .sfwd_input > .sfwd_input .sfwd_option_label { flex: 1 0 278px; } .sfwd_options .sfwd_input > .sfwd_input .sfwd_option_input { flex: 1 0 calc(100% - 278px); } } */ .sfwd_options .tooltip { position: relative; display: inline-block; opacity: 1; } /* Tooltip text */ .sfwd_options .tooltip .tooltiptext { visibility: hidden; width: 180px; background-color: #11a0d2 /* #1e8cbe */; color: #fff; text-align: center; padding: 5px 0; border-radius: 6px; margin-right: -90px; /* Use half of the width (120/2 = 60), to center the tooltip */ bottom: 100%; right: 50%; margin-bottom: 5px; /* Position the tooltip text - see examples below! */ position: absolute; z-index: 1; } /* Show the tooltip text when you mouse over the tooltip container */ .sfwd_options .-disabled.tooltip:hover .tooltiptext { visibility: visible; } /* Tooltip top of element */ /* Arrow */ .sfwd_options .tooltip .tooltiptext::after { content: " "; position: absolute; top: 100%; /* At the bottom of the tooltip */ right: 50%; margin-right: -5px; border-width: 5px; border-style: solid; border-color: #11a0d2 /* #1e8cbe */ transparent transparent transparent; } /* Tooltip to right of element */ /* .sfwd_options .tooltip .tooltiptext { top: -5px; left: 120%; } .sfwd_options .tooltip .tooltiptext::after { content: " "; position: absolute; top: 50%; right: 100%; margin-top: -5px; border-width: 5px; border-style: solid; border-color: transparent #1e8cbe transparent transparent; } */ /** * Quiz Custom Fields style */ .sfwd_options .form_table_wrapper { margin-top: 0px; padding: 0px; border: 0px solid #C2C2C2; } .sfwd_options .form_table_wrapper table { border-collapse: collapse; } /* Line item CSS */ .sfwd_options .form_table_wrapper #form_add { background-color: transparent; background-image: url("data:image/svg+xml,%3Csvg width='256' height='256' viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23007cba' d='M185.066 128c0 3.534-2.866 6-6.4 6H134v44.666c0 3.534-2.467 6.399-6 6.399-3.534 0-6-2.865-6-6.399V134H77.332c-3.535 0-6.4-2.466-6.4-6s2.866-6 6.4-6H122V77.331c0-3.534 2.466-6.4 6-6.4 3.533 0 6 2.866 6 6.4V122h44.666c3.534 0 6.4 2.466 6.4 6zM256 128C256 57.42 198.58 0 128 0S0 57.42 0 128s57.42 128 128 128 128-57.42 128-128zm-12.8 0c0 63.521-51.679 115.2-115.2 115.2-63.522 0-115.2-51.679-115.2-115.2C12.8 64.478 64.478 12.8 128 12.8c63.521 0 115.2 51.678 115.2 115.2z' fill-rule='nonzero'%3E%3C/path%3E%3C/svg%3E"); background-position: center right 3px; background-repeat: no-repeat; background-size: 16px 16px; border: 0; color: #007cba; cursor: pointer; font-size: 14px; font-weight: 700; padding: 5px 30px 5px 10px; box-shadow: none; } .sfwd_options .form_table_wrapper #form_add:hover { background-image: url("data:image/svg+xml,%3Csvg width='256' height='256' viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%2311a0d2' d='M185.066 128c0 3.534-2.866 6-6.4 6H134v44.666c0 3.534-2.467 6.399-6 6.399-3.534 0-6-2.865-6-6.399V134H77.332c-3.535 0-6.4-2.466-6.4-6s2.866-6 6.4-6H122V77.331c0-3.534 2.466-6.4 6-6.4 3.533 0 6 2.866 6 6.4V122h44.666c3.534 0 6.4 2.466 6.4 6zM256 128C256 57.42 198.58 0 128 0S0 57.42 0 128s57.42 128 128 128 128-57.42 128-128zm-12.8 0c0 63.521-51.679 115.2-115.2 115.2-63.522 0-115.2-51.679-115.2-115.2C12.8 64.478 64.478 12.8 128 12.8c63.521 0 115.2 51.678 115.2 115.2z' fill-rule='nonzero'%3E%3C/path%3E%3C/svg%3E"); color: #11a0d2; } .sfwd_options .form_table_wrapper .form_move { text-decoration: none; } .sfwd_options .form_table_wrapper .form_delete { background-color: transparent; background-image: url("data:image/svg+xml,%3Csvg aria-hidden='true' role='img' focusable='false' class='dashicon dashicons-dismiss' xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath fill='%23a00' d='M10 2c4.42 0 8 3.58 8 8s-3.58 8-8 8-8-3.58-8-8 3.58-8 8-8zm5 11l-3-3 3-3-2-2-3 3-3-3-2 2 3 3-3 3 2 2 3-3 3 3z'%3E%3C/path%3E%3C/svg%3E"); background-position: center right 3px; background-repeat: no-repeat; border: 0; color: #a00; cursor: pointer; font-weight: 700; margin: 0; opacity: 0; padding: 5px 30px 5px 10px; transition: opacity .1s; visibility: hidden; } .sfwd_options .form_table_wrapper .form_delete:hover { color: red; } .sfwd_options .form_table_wrapper tbody.ui-sortable tr:hover .form_delete { opacity: 1; visibility: visible; } .sfwd_options .form_table_wrapper thead tr th, .sfwd_options .form_table_wrapper tbody.ui-sortable tr td { padding: 10px 5px; transition: box-shadow .1s; } .sfwd_options .form_table_wrapper tbody.ui-sortable tr:hover td { box-shadow: 0 1px 0 0 #11a0d2, 0 -1px 0 0 #11a0d2; } .sfwd_options .form_table_wrapper tbody.ui-sortable tr:hover td:first-of-type { box-shadow: 0 1px 0 0 #11a0d2, 0 -1px 0 0 #11a0d2, 1px 0 0 0 #11a0d2; } .sfwd_options .form_table_wrapper tbody.ui-sortable tr:hover td:last-of-type { box-shadow: 0 1px 0 0 #11a0d2, 0 -1px 0 0 #11a0d2, -1px 0 0 0 #11a0d2; } .sfwd_options .form_table_wrapper tbody.ui-sortable tr td:first-of-type { text-align: center; } .sfwd_options .form_table_wrapper .ld-select.-field select { padding: 0 10px; } .sfwd_options .form_table_wrapper #form_table thead th { text-transform: uppercase; } .sfwd_options .form_table_wrapper #form_add_wrapper { margin-top: 10px; margin-right: 10px; } /** Quiz Edit Result Text lists */ #learndash-quiz-resultList ul#resultList { width: 100%; } #learndash-quiz-resultList ul#resultList li { padding: 5px; border: 1; border: 1px dotted; } #learndash-quiz-resultList ul#resultList li .resultHeader { margin-bottom: 5px; padding: 10px; background-color:#ebebeb; /* rgb(207, 207, 207); */ } #learndash-quiz-resultList ul#resultList li .resultEditor { /*margin: 20px; */ } #learndash-quiz-resultList input.addResult { background-color: transparent; background-image: url("data:image/svg+xml,%3Csvg width='256' height='256' viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23007cba' d='M185.066 128c0 3.534-2.866 6-6.4 6H134v44.666c0 3.534-2.467 6.399-6 6.399-3.534 0-6-2.865-6-6.399V134H77.332c-3.535 0-6.4-2.466-6.4-6s2.866-6 6.4-6H122V77.331c0-3.534 2.466-6.4 6-6.4 3.533 0 6 2.866 6 6.4V122h44.666c3.534 0 6.4 2.466 6.4 6zM256 128C256 57.42 198.58 0 128 0S0 57.42 0 128s57.42 128 128 128 128-57.42 128-128zm-12.8 0c0 63.521-51.679 115.2-115.2 115.2-63.522 0-115.2-51.679-115.2-115.2C12.8 64.478 64.478 12.8 128 12.8c63.521 0 115.2 51.678 115.2 115.2z' fill-rule='nonzero'%3E%3C/path%3E%3C/svg%3E"); background-position: center right 3px; background-repeat: no-repeat; background-size: 16px 16px; border: 0; color: #007cba; cursor: pointer; font-size: 14px; font-weight: 700; padding: 5px 30px 5px 10px; } #learndash-quiz-resultList ul#resultList li input.deleteResult { float: left; background-color: transparent; background-image: url("data:image/svg+xml,%3Csvg aria-hidden='true' role='img' focusable='false' class='dashicon dashicons-dismiss' xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath fill='%23a00' d='M10 2c4.42 0 8 3.58 8 8s-3.58 8-8 8-8-3.58-8-8 3.58-8 8-8zm5 11l-3-3 3-3-2-2-3 3-3-3-2 2 3 3-3 3 2 2 3-3 3 3z'%3E%3C/path%3E%3C/svg%3E"); background-position: center right 3px; background-repeat: no-repeat; border: 0; color: #a00; cursor: pointer; font-weight: 700; margin: 0; opacity: 0; padding: 5px 30px 5px 10px; transition: opacity .1s; visibility: hidden; } #learndash-quiz-resultList ul#resultList li:hover input.deleteResult { opacity: 1; visibility: visible; } #learndash-quiz-resultList #resultList li .expand-arrow { cursor: pointer; margin-top: 3px; float: left; } #learndash-quiz-resultList #resultList li .expand-arrow-up svg { transform: rotate(-180deg); } /* #learndash-quiz-admin-data-handling-settings_toplistDataAddBlock_field, #learndash-quiz-admin-data-handling-settings_statisticsIpLock_field, #learndash-quiz-admin-data-handling-settings_emailNotification_field, #learndash-quiz-admin-data-handling-settings_timeLimitCookie_field { margin-left: 0; padding-left: 0; } */ .sfwd_options .sfwd_option_label .descripton p { margin-bottom: 0; } .sfwd_options .sfwd_option_input_full { margin-right: 0; margin-left: 0; } .learndash_navigation_questions_list ul.learndash-quiz-questions li a { font-weight: normal; text-decoration: none !important; } .learndash_navigation_questions_list ul.learndash-quiz-questions li.ld-question-overview-widget-item-current a { font-weight: 700; } .learndash_navigation_questions_list .ld-question-overview-widget-add { font-weight: 700; text-decoration: none !important; } .sfwd_options #learndash-quiz-admin-data-handling-settings_toplistDataAddBlock_field, .sfwd_options #learndash-quiz-admin-data-handling-settings_associated_settings_field, .sfwd_options #learndash-quiz-admin-data-handling-settings_emailNotification_field, .sfwd_options #learndash-quiz-admin-data-handling-settings_timeLimitCookie_field, .sfwd_options #learndash-quiz-admin-data-handling-settings_toplistDataShowIn_field, .sfwd_options #learndash-quiz-admin-data-handling-settings_statisticsIpLock_field, .sfwd_options #learndash-quiz-display-content-settings_showMaxQuestion_field, .sfwd_options #learndash-quiz-display-content-settings_showMaxQuestionValue_field, .sfwd_options #learndash-quiz-display-content-settings_quizModus_multiple_questionsPerPage_field, .sfwd_options #learndash-quiz-results-options_resultText_field, .sfwd_options #learndash-quiz-display-content-settings_quizModus_single_feedback_field { border-right: none; margin-right: 0; padding-right: 0; } .sfwd_options #learndash-course-access-settings_course_access_list_field, .sfwd_options #learndash-course-display-content-settings_course_materials_field, .sfwd_options #learndash-lesson-display-content-settings_lesson_materials_field, .sfwd_options #learndash-topic-display-content-settings_topic_materials_field, .sfwd_options #learndash-lesson-display-content-settings_lesson_assignment_points_amount_field, .sfwd_options #learndash-topic-display-content-settings_lesson_assignment_points_amount_field, .sfwd_options #learndash-quiz-display-content-settings_quiz_materials_field, .sfwd_options #learndash-quiz-display-content-settings_showMaxQuestionValue_field, .sfwd_options #learndash-quiz-display-content-settings_quizModus_single_back_button_field { border-right: none; } .sfwd_options #learndash-lesson-access-settings_visible_after_field, .sfwd_options #learndash-lesson-access-settings_visible_after_specific_date_field, .sfwd_options #learndash-quiz-display-content-settings_quizModus_single_back_button_field { border-right: none; /* padding-left: 5px; */ padding-right: 0; } .sfwd_options #learndash-quiz-results-options_resultText_field { padding-right: 10px; } /* .sfwd_options #learndash-quiz-display-content-settings_quizModus_single_feedback_field, .sfwd_options #learndash-quiz-display-content-settings_quizModus_single_back_button_field, .sfwd_options #learndash-quiz-display-content-settings_showMaxQuestion_field { margin-left: 30px; } */ .sfwd_options input[name="templateLoad"], .sfwd_options input[name="templateName"] { margin-top: 5px; } .ld-settings-inner .ld-radio-input__label > span { font-weight: normal; } .ld-divider { border-bottom: 1px solid #eee; margin: 20px 0 20px 0; } .sfwd_options .ld-settings-inner-lesson_video_display_timing_after .sfwd_option_input, .sfwd_options .ld-settings-inner .sfwd_option_input { width: 40% !important; } .sfwd_options #learndash-lesson-access-settings_visible_after_specific_date_field .sfwd_option_input { width: 80% !important; } .sfwd_options .ld-settings-sub .sfwd_option_label { width: calc(38% - 15px); max-width: calc(300px - 15px); } .sfwd_options #learndash-lesson-display-content-settings_assignment_upload_limit_count_field .sfwd_option_label, .sfwd_options #learndash-lesson-display-content-settings_lesson_assignment_deletion_enabled_field .sfwd_option_label { width: 35% !important; } .sfwd_options #learndash-lesson-access-settings_visible_after_specific_date_field input[type="number"] { padding: 0px !important; } .sfwd_options .ld-settings-inner-lesson_video_display_timing_after .sfwd_option_label { width: 35% !important; } .sfwd_options .ld-settings-inner-quizModus_single .sfwd_option_input { width: 65% !important; } .sfwd_options .ld-settings-email-header-wrapper { margin-bottom: 30px; } .sfwd_options .ld-settings-email-header { font-weight: 700; } .sfwd_options .ld-settings-email-description { font-weight: 300; } /* Add support for error display */ .sfwd_options .learndash_settings_field_invalid label.sfwd_label { color: red; } .sfwd_options .learndash_settings_field_invalid input:invalid { border: 1px solid red; box-shadow: none; } .sfwd_options .learndash_settings_field_invalid .learndash-section-field-error { color: red; } #learndash-settings-fields-notice-errors p.errors-header { font-weight: 900; } #learndash-settings-fields-notice-errors ul.errors-list { list-style: disc; } #learndash-settings-fields-notice-errors ul.errors-list li { margin-right: 15px; } /** * Added to bring back the visible indicator on checkbox in Builder sodebar elements * See LEARNDASH-4114 */ .ld__builder-sidebar-widget .components-checkbox-control__input[type="checkbox"]:checked::before { content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%231e8cbe%27%2F%3E%3C%2Fsvg%3E"); } .plugin-update p.ld-plugin-update-notice::before { content: ''; margin-left: 0; } .plugin-update .ld-plugin-update-notice, .notice.ld-plugin-update-notice { /* background-color: #d54e21; */ padding: 10px; /* color: #f9f9f9; */ margin-top: 10px; } .plugin-update .ld-plugin-update-notice { /* border-top: 3px solid #d54e21; */ } .ld-plugin-update-notice .version { font-weight: 700; } .ld-plugin-update-notice .header { font-size: 130%; font-weight: bold; }PKc\/ uOO$assets/css/learndash-builder-rtl.cssnuW+A#learndash_builder_box_wrap { width: 100%; position: relative; display: inline-block; border: 1px solid #ccc; } #learndash_builder_box_wrap .learndash_selectors { width: 40%; border-left: 0px solid #ccc; padding: 10px 10px 10px 5px; float: right; /* min-height: 350px; */ position: relative; display: inline-block; box-sizing: border-box; } #learndash_builder_box_wrap .learndash-selector-container { clear: both; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-lessons:empty, #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-topic:empty, #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-quiz:empty, #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-question:empty { border: 2px dashed #bbb; padding: 5px; margin-bottom: 10px; box-sizing: border-box; float: right; width: 100%; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-lessons:empty { background-color: #EBF5FB; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-topic:empty { background-color: #FDEDEC; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-quiz:empty { background-color: #FCF3CF; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-question:empty { background-color: #D5F5E3; } #learndash_builder_box_wrap .learndash_selector_details { position: relative; display: inline-block; width: 60%; padding: 10px; float: right; /* min-height: 350px; */ } #learndash_builder_box_wrap .learndash_selectors h3.learndash-selector-header { padding: 5px; border: 1px solid #ccc; background-color: #e5e5e5; margin: 0 0 5px 0; float: right; width: 100%; clear: both; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_selectors .learndash-selector-post-listing { float: right; width: 100%; padding: 0; } #learndash_builder_box_wrap .learndash_selectors .learndash-selector-pager { width: 60%; float: right; margin-bottom: 5px; } #learndash_builder_box_wrap .learndash_selectors .learndash-selector-search { width: 40%; float: left; margin-bottom: 5px; } #learndash_builder_box_wrap .learndash_selectors .learndash-selector-search input { width: 100%; border: 1px solid #ddd; } #learndash_builder_box_wrap .learndash_selectors ul { margin-top: 0; clear: both; margin-bottom: 10px; } #learndash_builder_box_wrap .learndash_selectors li { background-color: #F8F8F8; width: 100%; display: inline-block; margin: 0 0 5px 0; padding: 5px 5px 1px 5px; clear: both; border: 1px solid #D8D8D8; float: right; min-height: 20px; box-sizing: border-box; } /* #learndash_builder_box_wrap .learndash_selectors li.ld-selected { border: 1px solid red; } */ /* #learndash_builder_box_wrap .learndash_selectors li:hover { cursor: move; } */ #learndash_builder_box_wrap .learndash_selectors li.ld-disabled .ld-course-builder-title-text { /* color: #ccc; */ text-decoration: line-through; } #learndash_builder_box_wrap .learndash_selectors li.ld-disabled:hover { /* cursor: auto; */ } .ui-state-highlight { height: 1.5em; line-height: 1.2em; } #learndash_builder_box_wrap .learndash_selector_details ul li { border: 1px solid #ccc; padding: 5px; } #learndash_builder_box_wrap .learndash_selector_details ul { width: 100%; min-height: 325px; border: #bbb 5px dashed; padding: 10px; } #learndash_builder_box_wrap .learndash_selector_details ul li.placeholder { border: 0px; } #learndash_builder_box_wrap .learndash_builder_items { background-color: #fff; float: left; padding: 10px 5px 10px 10px; width: calc(60% - 5px); box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .movable-placeholder { width: 100%; height: 100px; display: block; margin: 0 0 15px 0; border-style: dashed; border-width: 2px; border-color: #bbb; } #learndash_builder_box_wrap .ld-course-builder-title { float: right; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-title-text { } #learndash_builder_box_wrap .ld-course-builder-header { position: relative; float: right; width: 100%; } #learndash_builder_box_wrap .ld-course-builder-actions { width: 20px; height: 20px; float: right; } #learndash_builder_box_wrap .ld-course-builder-action { background-color: #B8B8B8; color: #fff; width: 20px; height: 20px; /* float: left; */ text-align: center; line-height: 20px; margin-right: 5px; } #learndash_builder_box_wrap .ld-course-builder-sub-actions { display: none; padding-left: 5px; z-index: 100; } #learndash_builder_box_wrap .ld-course-builder-sub-actions span { cursor: pointer; } #learndash_builder_box_wrap .ld-course-builder-actions { float: right; margin-left: 5px; } #learndash_builder_box_wrap .ld-course-builder-action:hover { color: black; } #learndash_builder_box_wrap .ld-course-builder-action-remove:hover, #learndash_builder_box_wrap .ld-course-builder-action-trash:hover { color: red; } #learndash_builder_box_wrap li.ld-disabled .ld-course-builder-sub-actions .ld-course-builder-action-trash { display: none; } #learndash_builder_box_wrap .learndash_selectors .ld-course-builder-sub-actions .ld-course-builder-action-remove { display: none; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-sub-actions .ld-course-builder-action-trash { display: none; } #learndash_builder_box_wrap .ld-course-builder-action-show, #learndash_builder_box_wrap .ld-course-builder-action-hide { float: left; } #learndash_builder_box_wrap .ld-course-builder-action-show-hide, #learndash_builder_box_wrap .ld-course-builder-action-add { float: left; cursor: pointer; } #learndash_builder_box_wrap .ld-course-builder-action-add:before { content: "\f132"; line-height: 23px; } #learndash_builder_box_wrap .ld-course-builder-action-add img { display: none; } #learndash_builder_box_wrap .ld-course-builder-action-add-pending { float: left; background-color: transparent; } #learndash_builder_box_wrap .ld-course-builder-action-add-pending:before { content: ""; } #learndash_builder_box_wrap .ld-course-builder-action-add-pending img { display: inline; float: left; width: 20px; height: 20px; } #learndash_builder_box_wrap .ld-course-builder-action-remove:before { content: "\f335"; } #learndash_builder_box_wrap .ld-course-builder-action-trash:before { content: "\f182"; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-move:hover, #learndash_builder_box_wrap .learndash_selectors li span.ld-course-builder-action-move { cursor: move; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-move, #learndash_builder_box_wrap .learndash_selectors li span.ld-course-builder-action-move { float: right; /*margin-right: 5px; */ margin-right: 0px; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-move:before, #learndash_builder_box_wrap .learndash_selectors li span.ld-course-builder-action-move:before { /* content: "\f156"; */ content: "\f333"; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-edit:before, #learndash_builder_box_wrap .learndash_selectors li .ld-course-builder-action-edit:before { content: "\f464"; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-pencil { background-color: transparent; color: inherit; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-pencil:before { content: "\f464"; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-ok { background-color: transparent; color: green; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-ok:before { content: "\f147"; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-cancel { background-color: transparent; color: red; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-cancel:before { content: "\f158"; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-pencil, #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-ok, #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-cancel { display: none; margin: 0; cursor: pointer; float: none; position: relative; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-pencil:hover { color: white; background-color: #B8B8B8; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-ok:hover { color: white; background-color: green; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-cancel:hover { background-color: red; color: white; } #learndash_builder_box_wrap span.ld-course-builder-title { display: table-cell; } #learndash_builder_box_wrap .learndash_selectors span.ld-course-builder-title { width: calc(100% - 30px); } #learndash_builder_box_wrap .learndash_builder_items span.ld-course-builder-title { width: calc(100% - 50px); } #learndash_builder_box_wrap .ld-course-builder-title-edit span.ld-course-builder-title { width: 100%; } #learndash_builder_box_wrap .ld-course-builder-title-text { float: right; display: inline; line-height: 24px; min-height: 24px; /* width: 100%; */ position: relative; } #learndash_builder_box_wrap .ld-course-builder-title-edit .ld-course-builder-title-text { width: 100%; } #learndash_builder_box_wrap .ld-course-builder-title-edit .ld-course-builder-title input { padding: 0; margin: 0; position: relative; width: 100%; } /* #learndash_builder_box_wrap .learndash_selectors .ld-course-builder-title input { width: 100%; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-title input { width: 80%; } */ #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-view:before, #learndash_builder_box_wrap .learndash_selectors li .ld-course-builder-action-view:before { content: "\f504"; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-show:before, #learndash_builder_box_wrap .learndash_selectors .learndash-selector-header .ld-course-builder-action-show:before { content: "\f347"; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-hide:before, #learndash_builder_box_wrap .learndash_selectors .learndash-selector-header .ld-course-builder-action-hide:before { content: "\f343"; } #learndash_builder_box_wrap .learndash_selectors .ld-course-builder-header .ld-course-builder-action-show-hide, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-item.ld-course-builder-title-edit > .ld-course-builder-header > .ld-course-builder-action-show-hide { display: none; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-header .ld-course-builder-action-show-hide { display: inline-block; } div#ld-selector-draggable-group .ld-course-builder-header .ld-course-builder-action-show-hide { display: none; } /************* Lessons ***********************/ #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items { min-height: 20px; clear: both; width: 100%; padding: 0px; margin: 0; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items:empty { border: 2px dashed #bbb; padding: 5px; margin-bottom: 5px; /* background-color: #D8E8FA; */ } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-item { background-color: #F8F8F8; width: 100%; display: inline-block; margin: 0 0 3px 0; padding: 5px 5px 1px 5px; clear: both; border: 1px solid #D8D8D8; /*float: left;*/ min-height: 20px; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-item h4.ld-course-builder-lesson-title { float: right; width: 100%; margin: 0; padding: 0px; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-item .ld-course-builder-sub-items { float: right; width: 100%; margin-top: 5px; padding: 0px; box-sizing: border-box; } /************* Topics ***********************/ #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-items { /* background-color: #C0C0C0; */ min-height: 20px; clear: both; /* margin: 0 0 5px 0px; */ width: 100%; padding: 0px; /*float: left; */ display: inline-block; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-items:empty { border: 2px dashed #bbb; /* background-color: #FAD8DB; */ padding: 5px; margin: 5px 0; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-item { /* background-color: #D8D8D8; */ /* #ddd; */ width: 100%; min-height: 20px; display: inline-block; list-style: none; padding: 5px 5px 1px 5px; margin: 0 0 3px 0; /* 0 0 10px 0px; */ /* color: #fff; */ clear: both; /*float: left; */ border: 1px solid #bbb; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-item h4.ld-course-builder-topic-title { color: #000; float: right; width: 100%; margin: 0 0 0px 0; } /************* Quizzes ***********************/ #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-items { min-height: 20px; clear: both; display: inline-block; margin: 0; width: 100%; padding: 0px; float: right; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items .ld-course-builder-quiz-items { margin: 0; width: 100%; padding: 0px; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items .ld-course-builder-topic-items .ld-course-builder-quiz-items { margin: 0px; width: 100%; /*padding: 5px;*/ box-sizing: border-box; margin-bottom: 5px; } /* #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-items { min-height: 20px; clear: both; margin: 0; width: 90%; } */ #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-items:empty { border: 2px dashed #bbb; /* background-color: #eee; */ /* background-color: #DAFAD8; */ padding: 5px; margin-bottom: 5px; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-item { /* background: #eee; */ width: 100%; min-height: 20px; display: inline-block; padding: 5px 5px 1px 5px; margin: 0 0 3px 0; /* color: #fff; */ clear: both; border: 1px solid #bbb; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-item:last-child { margin-bottom: 0; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-item h4.ld-course-builder-quiz-title { /* color: #000; */ float: right; width: 100%; margin: 0; } /************* Questions ***********************/ #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-items { min-height: 20px; clear: both; display: inline-block; margin: 0; width: 100%; padding: 0px; float: right; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-items:empty { border: 2px dashed #bbb; /* background-color: #eee; */ /* background-color: #DAFAD8; */ padding: 5px; margin-bottom: 5px; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-item { /* background: #eee; */ width: 100%; min-height: 20px; display: inline-block; padding: 5px 5px 1px 5px; margin: 0 0 3px 0; /* color: #fff; */ clear: both; border: 1px solid #bbb; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-item:last-child { margin-bottom: 0; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-item h4.ld-course-builder-question-title { /* color: #000; */ float: right; width: 100%; margin: 0; } /************* End of Questions ***********************/ #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-lessons li, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items .ld-course-builder-lesson-item, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items:empty { background-color: #EBF5FB; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-lessons li.ld-selected { background-color: #AED6F1; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-topic li, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-items .ld-course-builder-topic-item, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-items:empty { background-color: #FDEDEC; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-topic li.ld-selected { background-color: #F5B7B1; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-quiz li, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-items .ld-course-builder-quiz-item, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-items:empty { background-color: #FCF3CF; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-quiz li.ld-selected, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-item.ld-selected { background-color: #F7DC6F; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-question li, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-items .ld-course-builder-question-item, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-items:empty { background-color: #D5F5E3; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-question li.ld-selected, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-item.ld-selected { background-color: #83e2ac; } #learndash_builder_box_wrap .learndash_selectors .learndash-selector-pager p.pager-info { padding: 0; margin: 0 0 0 0; } #learndash_builder_box_wrap .learndash_selectors .learndash-selector-pager p.pager-info button { cursor: pointer; } #learndash_builder_box_wrap .learndash_selectors .learndash-selector-pager .button.button-simple { border: medium none; box-shadow: none; font-size: 14px; padding: 0 3px 1px; margin: 0 2px; line-height: 18px; } #learndash_builder_box_wrap .learndash_selectors .learndash-selector-pager p.pager-info input.page { width: 50px; text-align: center; } #learndash_builder_box_wrap .ld-selector-draggable-group ul, #learndash_builder_box_wrap .ld-selector-draggable-group li { list-style: none; } #learndash_builder_box_wrap .ld-selector-draggable-group li { clear: both; } #learndash_builder_box_wrap .ld-selector-draggable-group .ld-course-builder-actions { display: none !important; } #learndash_builder_box_wrap .learndash-header-left { float: right; margin-bottom: 3px; } #learndash_builder_box_wrap .learndash-header-right { float: left; margin-bottom: 3px; } #learndash_builder_box_wrap .learndash-header-right .ld-show-all, #learndash_builder_box_wrap .learndash-header-right .ld-hide-all { cursor: pointer; border-bottom: 1px solid transparent; } #learndash_builder_box_wrap .learndash-header-right .ld-show-all:hover, #learndash_builder_box_wrap .learndash-header-right .ld-hide-all:hover { border-bottom: 1px solid; } #learndash_builder_box_wrap .learndash-header-right .ld-divide-all { padding: 0 2px; } /* Specific CSS for Course Builder page */ body.sfwd-courses_page_courses-builder #course-builder-title-box h2 { margin: 5px 0 0px 0; padding: 0; } body.sfwd-courses_page_courses-builder #course-builder-title-box p { margin: 0 0 10px 0; }PKc\wד#assets/css/learndash-admin-menu.cssnuW+A/* Admin Users */ body.learndash-user-admin #adminmenumain .toplevel_page_learndash-lms .wp-submenu > li.submenu-ldlms-topics:after, body.learndash-user-admin #adminmenumain .toplevel_page_learndash-lms .wp-submenu > li.submenu-ldlms-assignments:after { background: #b4b9be; content: ''; display: block; height: 1px; margin: 5px auto 0 auto; width: calc( 100% - 24px ); opacity: 0.4; } body.learndash-user-admin #adminmenu .toplevel_page_learndash-lms .wp-submenu > li.submenu-ldlms-topics, body.learndash-user-admin #adminmenu .toplevel_page_learndash-lms .wp-submenu > li.submenu-ldlms-assignments { padding-bottom: 1px; } body.learndash-user-admin #adminmenu .toplevel_page_learndash-lms .wp-submenu > li.submenu-ldlms-topics + li, body.learndash-user-admin #adminmenu .toplevel_page_learndash-lms .wp-submenu > li.submenu-ldlms-assignments + li { padding-top: 1px; } /* Grouop Leader */ body.learndash-user-group-leader #adminmenumain .toplevel_page_learndash-lms .wp-submenu > li.submenu-ldlms-essays:after { background: #b4b9be; content: ''; display: block; height: 1px; margin: 5px auto 0 auto; width: calc( 100% - 24px ); opacity: 0.4; } body.learndash-user-group-leader #adminmenu .toplevel_page_learndash-lms .wp-submenu > li.submenu-ldlms-essays { padding-bottom: 1px; } body.learndash-user-group-leader #adminmenu .toplevel_page_learndash-lms .wp-submenu > li.submenu-ldlms-essays + li { padding-top: 1px; } PKc\lŒSS&assets/css/jquery.dropdown.min-rtl.cssnuW+A.jq-dropdown{position:absolute;z-index:1039;display:none}.jq-dropdown .jq-dropdown-menu,.jq-dropdown .jq-dropdown-panel{min-width:160px;max-width:360px;list-style:none;background:#fff;border:solid 1px #ddd;border-radius:4px;box-shadow:0 5px 10px rgba(0,0,0,.2);overflow:visible;padding:4px 0;margin:0}.jq-dropdown .jq-dropdown-panel{padding:10px}.jq-dropdown.jq-dropdown-tip{margin-top:8px}.jq-dropdown.jq-dropdown-tip:before{position:absolute;top:-6px;right:9px;content:'';border-right:7px solid transparent;border-left:7px solid transparent;border-bottom:7px solid #ddd;display:inline-block}.jq-dropdown.jq-dropdown-tip:after{position:absolute;top:-5px;right:10px;content:'';border-right:6px solid transparent;border-left:6px solid transparent;border-bottom:6px solid #fff;display:inline-block}.jq-dropdown.jq-dropdown-tip.jq-dropdown-anchor-right:before{right:auto;left:9px}.jq-dropdown.jq-dropdown-tip.jq-dropdown-anchor-right:after{right:auto;left:10px}.jq-dropdown.jq-dropdown-scroll .jq-dropdown-menu,.jq-dropdown.jq-dropdown-scroll .jq-dropdown-panel{max-height:180px;overflow:auto}.jq-dropdown .jq-dropdown-menu li{list-style:none;padding:0 0;margin:0;line-height:18px}.jq-dropdown .jq-dropdown-menu label,.jq-dropdown .jq-dropdown-menu li>a{display:block;color:inherit;text-decoration:none;line-height:18px;padding:3px 15px;margin:0;white-space:nowrap}.jq-dropdown .jq-dropdown-menu label:hover,.jq-dropdown .jq-dropdown-menu li>a:hover{background-color:#f2f2f2;color:inherit;cursor:pointer}.jq-dropdown .jq-dropdown-menu .jq-dropdown-divider{font-size:1px;border-top:solid 1px #e5e5e5;padding:0;margin:5px 0}PKc\& TT/assets/css/learndash-admin-support-page-rtl.cssnuW+A/* Styles for the Support tab table output */ table.learndash-support-settings { clear: both; width: 100%; } table.learndash-support-settings > tbody > *:nth-child(2n+1), ul.striped > *:nth-child(2n+1) { background-color: #f9f9f9; } table.learndash-support-settings thead th { text-align: right; border-bottom: 1px solid #000; margin: 0; } table.learndash-support-settings tbody td { padding: 5px; margin: 0; } table.learndash-support-settings .learndash-support-settings-left { width: 40%; } table.learndash-support-settings .learndash-support-settings-right { width: 60%; } PKc\t (assets/css/front.cssnuW+A/* base styles - overright these in your theme stylesheet */ .sfwd_module .error{ text-align:center; } .content_article_style{ min-width:600px; } .post2pdf_conv_image_align_center { text-align: center; } .slickQuizWrapper .button { float: left; width: auto; padding: 5px 15px; color:#ffffff; background-color:darkcyan; border: 1px solid #fff; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; text-decoration: none; } .slickQuizWrapper .button:hover { background-color:darkslategray; } .startQuiz { margin-top: 20px; } .quizArea, .quizResults { margin-bottom: 40px; } /* clearfix */ .quizArea, .quizResults { zoom: 1; } .quizArea:before, .quizArea:after, .quizResults:before, .quizResults:after { content: "\0020"; display: block; height: 0; visibility: hidden; font-size: 0; } .quizArea:after, .quizResults:after { clear: both; } .questionCount { font-size: 14px; font-style: italic; } .questionCount span { font-weight: bold; } ol.questions { margin-top: 20px; margin-left: 0; } ol.questions li { margin-left: 0; } ul.answers { margin-left: 20px; margin-bottom: 20px; } ul.responses li { margin: 10px 20px 20px; } ul.responses li p span { display: block; font-weight: bold; font-size: 18px; } ul.responses li.correct p span { color: #6C9F2E; }ul.responses li.incorrect p span { color: #B5121B; } .quizResults h3 { margin: 0; } .quizResults h3 span { font-weight: normal; font-style: italic; } .quizResultsCopy { margin-top: 20px; } .ppalholder { display: none; } .ppalbtn { border: 0 !important; } .user_has_no_access .is_not_sample a, .user_has_no_access .is_not_sample a span, .user_has_no_access #learndash_quizzes a{ color: gray !important; text-decoration: none !important; } .widget .list-count {display: none;} dd.course_progress { position: relative; display: block; border: 1px solid black; width: 100%; height: 16px; margin: 0 0 2px; background-color: white; padding:0; } dd.course_progress div.course_progress_blue { position: relative; background-color: blue; height: 16px; width: 75%; text-align:right; display:block; } .wpProQuiz_cloze > input[type=text] { max-width: 99%; } /* Single Course Payment methods fancy dropdown */ .checkout-dropdown-button button, .checkout-dropdown-button input[type="submit"] { border-radius: 0 !important; font-size: 16px !important; margin: 0; text-align: center; width: 100%; } .checkout-dropdown-button ul { padding: 0 !important; list-style: none !important; list-style-type: none !important; line-height: auto !important; } .checkout-dropdown-button ul.jq-dropdown-menu li { list-style: none !important; list-style-type: none !important; margin: none !important; padding: none !important; line-height: auto !important; } .jq-dropdown .jq-dropdown-menu li { list-style: none !important; list-style-type: none !important; margin: 0 !important; padding: 0 !important; } .checkout-dropdown-button .btn-join, .checkout-dropdown-button #btn-join, .checkout-dropdown-button form input[type="submit"] { background-color: #FFFFFF !important; color: #333333 !important; } .checkout-dropdown-button .btn-join:hover, .checkout-dropdown-button #btn-join:hover, .checkout-dropdown-button form input[type="submit"]:hover { background-color: #F5F5F5 !important; color: #000000 !important; } /** * jQUery Dropdown */ body .jq-dropdown.jq-dropdown-tip:before { position: absolute; top: -7px; left: 9px; content: ''; border-left: 7px solid; border-right: 7px solid; border-bottom: 7px solid; border-color: transparent transparent #DDD transparent; display: inline-block; z-index: 99; } body .jq-dropdown.jq-dropdown-tip:after { position: absolute; top: -5px; left: 9px; content: ''; border-left: 7px solid; border-right: 7px solid; border-bottom: 7px solid; border-color: transparent transparent white transparent; display: inline-block; z-index: 99; } .jq-dropdown .jq-dropdown-menu, .jq-dropdown .jq-dropdown-panel { border-radius: 0; } .jq-dropdown .jq-dropdown-menu form { margin: 0; }PKc\Z[=assets/css/learndash-admin-settings-page-translations-rtl.cssnuW+A.wrap-ld-translations { } .wrap-ld-translations table.ld-installed-translations th { font-weight: bold; } .wrap-ld-translations table.ld-installed-translations th.column-locale { width: 10%; } .wrap-ld-translations table.ld-installed-translations th.column-title { width: 30%; } .wrap-ld-translations table.ld-installed-translations th.column-actions-local { width: 30%; } .wrap-ld-translations table.ld-installed-translations th.column-actions-remote { width: 30%; } .wrap-ld-translations table.ld-installed-translations td.column-actions-local a { margin-left: 5px; } .wrap-ld-translations table.ld-installed-translations td.column-actions-remote a { margin-left: 5px; } .wrap-ld-translations table.ld-installed-translations td.column-actions-local span.ld-translation-mtime { margin-top: 5px; } .wrap-ld-translations table.ld-installed-translations td.column-actions-local a span.dashicons-download, .wrap-ld-translations table.ld-installed-translations td.column-actions-remote a span.dashicons-trash, a.learndash-translations-pot-file span.dashicons-download { margin-top: 4px; } /* #learndash-translations-available { width: 100%; } #learndash-translations-available #learndash-translations-available-items { width: 50%; } #learndash-translations-available #learndash-translations-details { width: 50%; } */ .learndash-settings-page-wrap #publishing-action { width: 100%; } .learndash-settings-page-wrap #publishing-action p.learndash-translations-last-update span.label { font-weight: bold; } .learndash-settings-page-wrap .error { color: red; } .learndash-settings-page-wrap a.learndash-translations-install { padding: 5px 10px; display: none; }PKc\=FFassets/css/sfwd_editor.cssnuW+Ahtml .mceContentBody { font: 16px/22px Arial, Helvetica, sans-serif; width: 1024px!important; line-height: 1.5em; margin-top: 60px!important; background-size: 1122px 793px!important; height: 793px!important; } p { /* margin: 0.5em 0 1.5em; */ margin-left: 15px; } PKc\R=  +assets/css/learndash-admin-menu.min-rtl.cssnuW+Abody.learndash-user-admin #adminmenumain .toplevel_page_learndash-lms .wp-submenu>li.submenu-ldlms-assignments:after,body.learndash-user-admin #adminmenumain .toplevel_page_learndash-lms .wp-submenu>li.submenu-ldlms-topics:after{background:#b4b9be;content:'';display:block;height:1px;margin:5px auto 0 auto;width:calc(100% - 24px);opacity:.4}body.learndash-user-admin #adminmenu .toplevel_page_learndash-lms .wp-submenu>li.submenu-ldlms-assignments,body.learndash-user-admin #adminmenu .toplevel_page_learndash-lms .wp-submenu>li.submenu-ldlms-topics{padding-bottom:1px}body.learndash-user-admin #adminmenu .toplevel_page_learndash-lms .wp-submenu>li.submenu-ldlms-assignments+li,body.learndash-user-admin #adminmenu .toplevel_page_learndash-lms .wp-submenu>li.submenu-ldlms-topics+li{padding-top:1px}body.learndash-user-group-leader #adminmenumain .toplevel_page_learndash-lms .wp-submenu>li.submenu-ldlms-essays:after{background:#b4b9be;content:'';display:block;height:1px;margin:5px auto 0 auto;width:calc(100% - 24px);opacity:.4}body.learndash-user-group-leader #adminmenu .toplevel_page_learndash-lms .wp-submenu>li.submenu-ldlms-essays{padding-bottom:1px}body.learndash-user-group-leader #adminmenu .toplevel_page_learndash-lms .wp-submenu>li.submenu-ldlms-essays+li{padding-top:1px}PKc\Ȇ=assets/css/jquery-ui.cssnuW+A/*! jQuery UI - v1.11.2 - 2014-10-16 * http://jqueryui.com * Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ /* Layout helpers ----------------------------------*/ .learndash-datepicker .ui-helper-hidden { display: none; } .learndash-datepicker .ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .learndash-datepicker .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } .learndash-datepicker .ui-helper-clearfix:before, .learndash-datepicker .ui-helper-clearfix:after { content: ""; display: table; border-collapse: collapse; } .learndash-datepicker .ui-helper-clearfix:after { clear: both; } .learndash-datepicker .ui-helper-clearfix { min-height: 0; /* support: IE7 */ } .learndash-datepicker .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); /* support: IE8 */ } .learndash-datepicker .ui-front { z-index: 100; } /* Interaction Cues ----------------------------------*/ .learndash-datepicker .ui-state-disabled { cursor: default !important; } /* Icons ----------------------------------*/ /* states and images */ .learndash-datepicker .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } /* Misc visuals ----------------------------------*/ /* Overlays */ .learndash-datepicker .ui-widget-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; } .learndash-datepicker .ui-autocomplete { position: absolute; top: 0; left: 0; cursor: default; } .learndash-datepicker .ui-button { display: inline-block; position: relative; padding: 0; line-height: normal; margin-right: .1em; cursor: pointer; vertical-align: middle; text-align: center; overflow: visible; /* removes extra width in IE */ } .learndash-datepicker .ui-button, .learndash-datepicker .ui-button:link, .learndash-datepicker .ui-button:visited, .learndash-datepicker .ui-button:hover, .learndash-datepicker .ui-button:active { text-decoration: none; } /* to make room for the icon, a width needs to be set here */ .learndash-datepicker .ui-button-icon-only { width: 2.2em; } /* button elements seem to need a little more width */ .learndash-datepicker button.ui-button-icon-only { width: 2.4em; } .learndash-datepicker .ui-button-icons-only { width: 3.4em; } .learndash-datepicker button.ui-button-icons-only { width: 3.7em; } /* button text element */ .learndash-datepicker .ui-button .ui-button-text { display: block; line-height: normal; } .learndash-datepicker .ui-button-text-only .ui-button-text { padding: .4em 1em; } .learndash-datepicker .ui-button-icon-only .ui-button-text, .learndash-datepicker .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } .learndash-datepicker .ui-button-text-icon-primary .ui-button-text, .learndash-datepicker .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } .learndash-datepicker .ui-button-text-icon-secondary .ui-button-text, .learndash-datepicker .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } .learndash-datepicker .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } /* no icon support for input elements, provide padding by default */ .learndash-datepicker input.ui-button { padding: .4em 1em; } /* button icon element(s) */ .learndash-datepicker .ui-button-icon-only .ui-icon, .learndash-datepicker .ui-button-text-icon-primary .ui-icon, .learndash-datepicker .ui-button-text-icon-secondary .ui-icon, .learndash-datepicker .ui-button-text-icons .ui-icon, .learndash-datepicker .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } .learndash-datepicker .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } .learndash-datepicker .ui-button-text-icon-primary .ui-button-icon-primary, .learndash-datepicker .ui-button-text-icons .ui-button-icon-primary, .learndash-datepicker .ui-button-icons-only .ui-button-icon-primary { left: .5em; } .learndash-datepicker .ui-button-text-icon-secondary .ui-button-icon-secondary, .learndash-datepicker .ui-button-text-icons .ui-button-icon-secondary, .learndash-datepicker .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } /* button sets */ .learndash-datepicker .ui-buttonset { margin-right: 7px; } .learndash-datepicker .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } /* workarounds */ /* reset extra padding in Firefox, see h5bp.com/l */ .learndash-datepicker input.ui-button::-moz-focus-inner, .learndash-datepicker button.ui-button::-moz-focus-inner { border: 0; padding: 0; } .learndash-datepicker.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } .learndash-datepicker.ui-datepicker .ui-datepicker-header { position: relative; padding: .2em 0; } .learndash-datepicker.ui-datepicker .ui-datepicker-prev, .learndash-datepicker.ui-datepicker .ui-datepicker-next { position: absolute; top: 2px; width: 1.8em; height: 1.8em; } .learndash-datepicker.ui-datepicker .ui-datepicker-prev-hover, .learndash-datepicker.ui-datepicker .ui-datepicker-next-hover { top: 1px; } .learndash-datepicker.ui-datepicker .ui-datepicker-prev { left: 2px; } .learndash-datepicker.ui-datepicker .ui-datepicker-next { right: 2px; } .learndash-datepicker.ui-datepicker .ui-datepicker-prev-hover { left: 1px; } .learndash-datepicker.ui-datepicker .ui-datepicker-next-hover { right: 1px; } .learndash-datepicker.ui-datepicker .ui-datepicker-prev span, .learndash-datepicker.ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } .learndash-datepicker.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } .learndash-datepicker.ui-datepicker .ui-datepicker-title select { font-size: 1em; margin: 1px 0; } .learndash-datepicker.ui-datepicker select.ui-datepicker-month, .learndash-datepicker.ui-datepicker select.ui-datepicker-year { width: 45%; } .learndash-datepicker.ui-datepicker table { width: 100%; font-size: .9em; border-collapse: collapse; margin: 0 0 .4em; } .learndash-datepicker.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } .learndash-datepicker.ui-datepicker td { border: 0; padding: 1px; } .learndash-datepicker.ui-datepicker td span, .learndash-datepicker.ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } .learndash-datepicker.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding: 0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } .learndash-datepicker.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width: auto; overflow: visible; } .learndash-datepicker.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float: left; } /* with multiple calendars */ .learndash-datepicker.ui-datepicker.ui-datepicker-multi { width: auto; } .learndash-datepicker.ui-datepicker-multi .ui-datepicker-group { float: left; } .learndash-datepicker .ui-datepicker-multi .ui-datepicker-group table { width: 95%; margin: 0 auto .4em; } .learndash-datepicker .ui-datepicker-multi-2 .ui-datepicker-group { width: 50%; } .learndash-datepicker .learndash-datepicker .ui-datepicker-multi-3 .ui-datepicker-group { width: 33.3%; } .learndash-datepicker .ui-datepicker-multi-4 .ui-datepicker-group { width: 25%; } .learndash-datepicker .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, .learndash-datepicker .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width: 0; } .learndash-datepicker .ui-datepicker-multi .ui-datepicker-buttonpane { clear: left; } .learndash-datepicker .ui-datepicker-row-break { clear: both; width: 100%; font-size: 0; } /* RTL support */ .learndash-datepicker .ui-datepicker-rtl { direction: rtl; } .learndash-datepicker .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } .learndash-datepicker .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } .learndash-datepicker .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } .learndash-datepicker .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } .learndash-datepicker .ui-datepicker-rtl .ui-datepicker-buttonpane { clear: right; } .learndash-datepicker .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } .learndash-datepicker .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, .learndash-datepicker .ui-datepicker-rtl .ui-datepicker-group { float: right; } .learndash-datepicker .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, .learndash-datepicker .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width: 0; border-left-width: 1px; } body .learndash-datepicker .ui-tooltip { border-width: 2px; } /* Component containers ----------------------------------*/ .learndash-datepicker.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; } .learndash-datepicker.ui-widget .ui-widget { font-size: 1em; } .learndash-datepicker.ui-widget input, .learndash-datepicker.ui-widget select, .learndash-datepicker.ui-widget textarea, .learndash-datepicker.ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; } .learndash-datepicker.ui-widget-content { border: 1px solid #aaaaaa; /* background: #ffffff url("../images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x;*/ background: #ffffff; color: #222222; } .learndash-datepicker.ui-widget-content a { color: #222222; } .learndash-datepicker .ui-widget-header { border: 1px solid #aaaaaa; /*background: #cccccc url("../images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x; */ background: #cccccc; color: #222222; font-weight: bold; } .learndash-datepicker .ui-widget-header a { color: #222222; } /* Interaction states ----------------------------------*/ .learndash-datepicker .ui-state-default, .learndash-datepicker.ui-widget-content .ui-state-default, .learndash-datepicker .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; /* background: #e6e6e6 url("../images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x; */ background: #e6e6e6; font-weight: normal; color: #555555; } .learndash-datepicker .ui-state-default a, .learndash-datepicker .ui-state-default a:link, .learndash-datepicker .ui-state-default a:visited { color: #555555; text-decoration: none; } .learndash-datepicker .ui-state-hover, .learndash-datepicker .ui-widget-content .ui-state-hover, .learndash-datepicker .ui-widget-header .ui-state-hover, .learndash-datepicker .ui-state-focus, .learndash-datepicker .ui-widget-content .ui-state-focus, .learndash-datepicker .ui-widget-header .ui-state-focus { border: 1px solid #999999; /* background: #dadada url("../images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x; */ background: #dadada; font-weight: normal; color: #212121; } .learndash-datepicker .ui-state-hover a, .learndash-datepicker .ui-state-hover a:hover, .learndash-datepicker .ui-state-hover a:link, .learndash-datepicker .ui-state-hover a:visited, .learndash-datepicker .ui-state-focus a, .learndash-datepicker .ui-state-focus a:hover, .learndash-datepicker .ui-state-focus a:link, .learndash-datepicker .ui-state-focus a:visited { color: #212121; text-decoration: none; } .learndash-datepicker .ui-state-active, .learndash-datepicker.ui-widget-content .ui-state-active, .learndash-datepicker .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; /*background: #ffffff url("../images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;*/ background: #ffffff; font-weight: normal; color: #212121; } .learndash-datepicker .ui-state-active a, .learndash-datepicker .ui-state-active a:link, .learndash-datepicker .ui-state-active a:visited { color: #212121; text-decoration: none; } /* Interaction Cues ----------------------------------*/ .learndash-datepicker .ui-state-highlight, .learndash-datepicker.ui-widget-content .ui-state-highlight, .learndash-datepicker .ui-widget-header .ui-state-highlight { border: 1px solid #fcefa1; /* background: #fbf9ee url("../images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;*/ background: #fbf9ee; color: #363636; } .learndash-datepicker .ui-state-highlight a, .learndash-datepicker.ui-widget-content .ui-state-highlight a, .learndash-datepicker .ui-widget-header .ui-state-highlight a { color: #363636; } .learndash-datepicker .ui-state-error, .learndash-datepicker.ui-widget-content .ui-state-error, .learndash-datepicker .ui-widget-header .ui-state-error { border: 1px solid #cd0a0a; /* background: #fef1ec url("../images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x; */ background: #fef1ec; color: #cd0a0a; } .learndash-datepicker .ui-state-error a, .learndash-datepicker.ui-widget-content .ui-state-error a, .learndash-datepicker .ui-widget-header .ui-state-error a { color: #cd0a0a; } .learndash-datepicker .ui-state-error-text, .learndash-datepicker.ui-widget-content .ui-state-error-text, .learndash-datepicker .ui-widget-header .ui-state-error-text { color: #cd0a0a; } .learndash-datepicker .ui-priority-primary, .learndash-datepicker.ui-widget-content .ui-priority-primary, .learndash-datepicker .ui-widget-header .ui-priority-primary { font-weight: bold; } .learndash-datepicker .ui-priority-secondary, .learndash-datepicker.ui-widget-content .ui-priority-secondary, .learndash-datepicker .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); /* support: IE8 */ font-weight: normal; } .learndash-datepicker .ui-state-disabled, .learndash-datepicker.ui-widget-content .ui-state-disabled, .learndash-datepicker .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); /* support: IE8 */ background-image: none; } .learndash-datepicker .ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ } /* Icons ----------------------------------*/ /* states and images */ .learndash-datepicker .ui-icon { width: 16px; height: 16px; } .learndash-datepicker .ui-icon, .learndash-datepicker.ui-widget-content .ui-icon { background-image: url("../images/ui-icons_222222_256x240.png"); } .learndash-datepicker .ui-widget-header .ui-icon { background-image: url("../images/ui-icons_222222_256x240.png"); } .learndash-datepicker .ui-state-default .ui-icon { /* background-image: url("../images/ui-icons_888888_256x240.png");*/ } .learndash-datepicker .ui-state-hover .ui-icon, .learndash-datepicker .ui-state-focus .ui-icon { /* background-image: url("../images/ui-icons_454545_256x240.png");*/ } .learndash-datepicker .ui-state-active .ui-icon { /* background-image: url("../images/ui-icons_454545_256x240.png");*/ } .learndash-datepicker .ui-state-highlight .ui-icon { /* background-image: url("../images/ui-icons_2e83ff_256x240.png");*/ } .learndash-datepicker .ui-state-error .ui-icon, .learndash-datepicker .ui-state-error-text .ui-icon { /* background-image: url("../images/ui-icons_cd0a0a_256x240.png");*/ } /* positioning */ .learndash-datepicker .ui-icon-blank { background-position: 16px 16px; } .learndash-datepicker .ui-icon-carat-1-n { background-position: 0 0; } .learndash-datepicker .ui-icon-carat-1-ne { background-position: -16px 0; } .learndash-datepicker .ui-icon-carat-1-e { background-position: -32px 0; } .learndash-datepicker .ui-icon-carat-1-se { background-position: -48px 0; } .learndash-datepicker .ui-icon-carat-1-s { background-position: -64px 0; } .learndash-datepicker .ui-icon-carat-1-sw { background-position: -80px 0; } .learndash-datepicker .ui-icon-carat-1-w { background-position: -96px 0; } .learndash-datepicker .ui-icon-carat-1-nw { background-position: -112px 0; } .learndash-datepicker .ui-icon-carat-2-n-s { background-position: -128px 0; } .learndash-datepicker .ui-icon-carat-2-e-w { background-position: -144px 0; } .learndash-datepicker .ui-icon-triangle-1-n { background-position: 0 -16px; } .learndash-datepicker .ui-icon-triangle-1-ne { background-position: -16px -16px; } .learndash-datepicker .ui-icon-triangle-1-e { background-position: -32px -16px; } .learndash-datepicker .ui-icon-triangle-1-se { background-position: -48px -16px; } .learndash-datepicker .ui-icon-triangle-1-s { background-position: -64px -16px; } .learndash-datepicker .ui-icon-triangle-1-sw { background-position: -80px -16px; } .learndash-datepicker .ui-icon-triangle-1-w { background-position: -96px -16px; } .learndash-datepicker .ui-icon-triangle-1-nw { background-position: -112px -16px; } .learndash-datepicker .ui-icon-triangle-2-n-s { background-position: -128px -16px; } .learndash-datepicker .ui-icon-triangle-2-e-w { background-position: -144px -16px; } .learndash-datepicker .ui-icon-arrow-1-n { background-position: 0 -32px; } .learndash-datepicker .ui-icon-arrow-1-ne { background-position: -16px -32px; } .learndash-datepicker .ui-icon-arrow-1-e { background-position: -32px -32px; } .learndash-datepicker .ui-icon-arrow-1-se { background-position: -48px -32px; } .learndash-datepicker .ui-icon-arrow-1-s { background-position: -64px -32px; } .learndash-datepicker .ui-icon-arrow-1-sw { background-position: -80px -32px; } .learndash-datepicker .ui-icon-arrow-1-w { background-position: -96px -32px; } .learndash-datepicker .ui-icon-arrow-1-nw { background-position: -112px -32px; } .learndash-datepicker .ui-icon-arrow-2-n-s { background-position: -128px -32px; } .learndash-datepicker .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } .learndash-datepicker .ui-icon-arrow-2-e-w { background-position: -160px -32px; } .learndash-datepicker .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } .learndash-datepicker .ui-icon-arrowstop-1-n { background-position: -192px -32px; } .learndash-datepicker .ui-icon-arrowstop-1-e { background-position: -208px -32px; } .learndash-datepicker .ui-icon-arrowstop-1-s { background-position: -224px -32px; } .learndash-datepicker .ui-icon-arrowstop-1-w { background-position: -240px -32px; } .learndash-datepicker .ui-icon-arrowthick-1-n { background-position: 0 -48px; } .learndash-datepicker .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } .learndash-datepicker .ui-icon-arrowthick-1-e { background-position: -32px -48px; } .learndash-datepicker .ui-icon-arrowthick-1-se { background-position: -48px -48px; } .learndash-datepicker .ui-icon-arrowthick-1-s { background-position: -64px -48px; } .learndash-datepicker .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } .learndash-datepicker .ui-icon-arrowthick-1-w { background-position: -96px -48px; } .learndash-datepicker .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } .learndash-datepicker .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } .learndash-datepicker .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } .learndash-datepicker .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } .learndash-datepicker .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } .learndash-datepicker .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } .learndash-datepicker .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } .learndash-datepicker .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } .learndash-datepicker .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } .learndash-datepicker .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } .learndash-datepicker .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } .learndash-datepicker .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } .learndash-datepicker .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } .learndash-datepicker .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } .learndash-datepicker .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } .learndash-datepicker .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } .learndash-datepicker .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } .learndash-datepicker .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } .learndash-datepicker .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } .learndash-datepicker .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } .learndash-datepicker .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } .learndash-datepicker .ui-icon-arrow-4 { background-position: 0 -80px; } .learndash-datepicker .ui-icon-arrow-4-diag { background-position: -16px -80px; } .learndash-datepicker .ui-icon-extlink { background-position: -32px -80px; } .learndash-datepicker .ui-icon-newwin { background-position: -48px -80px; } .learndash-datepicker .ui-icon-refresh { background-position: -64px -80px; } .learndash-datepicker .ui-icon-shuffle { background-position: -80px -80px; } .learndash-datepicker .ui-icon-transfer-e-w { background-position: -96px -80px; } .learndash-datepicker .ui-icon-transferthick-e-w { background-position: -112px -80px; } .learndash-datepicker .ui-icon-folder-collapsed { background-position: 0 -96px; } .learndash-datepicker .ui-icon-folder-open { background-position: -16px -96px; } .learndash-datepicker .ui-icon-document { background-position: -32px -96px; } .learndash-datepicker .ui-icon-document-b { background-position: -48px -96px; } .learndash-datepicker .ui-icon-note { background-position: -64px -96px; } .learndash-datepicker .ui-icon-mail-closed { background-position: -80px -96px; } .learndash-datepicker .ui-icon-mail-open { background-position: -96px -96px; } .learndash-datepicker .ui-icon-suitcase { background-position: -112px -96px; } .learndash-datepicker .ui-icon-comment { background-position: -128px -96px; } .learndash-datepicker .ui-icon-person { background-position: -144px -96px; } .learndash-datepicker .ui-icon-print { background-position: -160px -96px; } .learndash-datepicker .ui-icon-trash { background-position: -176px -96px; } .learndash-datepicker .ui-icon-locked { background-position: -192px -96px; } .learndash-datepicker .ui-icon-unlocked { background-position: -208px -96px; } .learndash-datepicker .ui-icon-bookmark { background-position: -224px -96px; } .learndash-datepicker .ui-icon-tag { background-position: -240px -96px; } .learndash-datepicker .ui-icon-home { background-position: 0 -112px; } .learndash-datepicker .ui-icon-flag { background-position: -16px -112px; } .learndash-datepicker .ui-icon-calendar { background-position: -32px -112px; } .learndash-datepicker .ui-icon-cart { background-position: -48px -112px; } .learndash-datepicker .ui-icon-pencil { background-position: -64px -112px; } .learndash-datepicker .ui-icon-clock { background-position: -80px -112px; } .learndash-datepicker .ui-icon-disk { background-position: -96px -112px; } .learndash-datepicker .ui-icon-calculator { background-position: -112px -112px; } .learndash-datepicker .ui-icon-zoomin { background-position: -128px -112px; } .learndash-datepicker .ui-icon-zoomout { background-position: -144px -112px; } .learndash-datepicker .ui-icon-search { background-position: -160px -112px; } .learndash-datepicker .ui-icon-wrench { background-position: -176px -112px; } .learndash-datepicker .ui-icon-gear { background-position: -192px -112px; } .learndash-datepicker .ui-icon-heart { background-position: -208px -112px; } .learndash-datepicker .ui-icon-star { background-position: -224px -112px; } .learndash-datepicker .ui-icon-link { background-position: -240px -112px; } .learndash-datepicker .ui-icon-cancel { background-position: 0 -128px; } .learndash-datepicker .ui-icon-plus { background-position: -16px -128px; } .learndash-datepicker .ui-icon-plusthick { background-position: -32px -128px; } .learndash-datepicker .ui-icon-minus { background-position: -48px -128px; } .learndash-datepicker .ui-icon-minusthick { background-position: -64px -128px; } .learndash-datepicker .ui-icon-close { background-position: -80px -128px; } .learndash-datepicker .ui-icon-closethick { background-position: -96px -128px; } .learndash-datepicker .ui-icon-key { background-position: -112px -128px; } .learndash-datepicker .ui-icon-lightbulb { background-position: -128px -128px; } .learndash-datepicker .ui-icon-scissors { background-position: -144px -128px; } .learndash-datepicker .ui-icon-clipboard { background-position: -160px -128px; } .learndash-datepicker .ui-icon-copy { background-position: -176px -128px; } .learndash-datepicker .ui-icon-contact { background-position: -192px -128px; } .learndash-datepicker .ui-icon-image { background-position: -208px -128px; } .learndash-datepicker .ui-icon-video { background-position: -224px -128px; } .learndash-datepicker .ui-icon-script { background-position: -240px -128px; } .learndash-datepicker .ui-icon-alert { background-position: 0 -144px; } .learndash-datepicker .ui-icon-info { background-position: -16px -144px; } .learndash-datepicker .ui-icon-notice { background-position: -32px -144px; } .learndash-datepicker .ui-icon-help { background-position: -48px -144px; } .learndash-datepicker .ui-icon-check { background-position: -64px -144px; } .learndash-datepicker .ui-icon-bullet { background-position: -80px -144px; } .learndash-datepicker .ui-icon-radio-on { background-position: -96px -144px; } .learndash-datepicker .ui-icon-radio-off { background-position: -112px -144px; } .learndash-datepicker .ui-icon-pin-w { background-position: -128px -144px; } .learndash-datepicker .ui-icon-pin-s { background-position: -144px -144px; } .learndash-datepicker .ui-icon-play { background-position: 0 -160px; } .learndash-datepicker .ui-icon-pause { background-position: -16px -160px; } .learndash-datepicker .ui-icon-seek-next { background-position: -32px -160px; } .learndash-datepicker .ui-icon-seek-prev { background-position: -48px -160px; } .learndash-datepicker .ui-icon-seek-end { background-position: -64px -160px; } .learndash-datepicker .ui-icon-seek-start { background-position: -80px -160px; } /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ .learndash-datepicker .ui-icon-seek-first { background-position: -80px -160px; } .learndash-datepicker .ui-icon-stop { background-position: -96px -160px; } .learndash-datepicker .ui-icon-eject { background-position: -112px -160px; } .learndash-datepicker .ui-icon-volume-off { background-position: -128px -160px; } .learndash-datepicker .ui-icon-volume-on { background-position: -144px -160px; } .learndash-datepicker .ui-icon-power { background-position: 0 -176px; } .learndash-datepicker .ui-icon-signal-diag { background-position: -16px -176px; } .learndash-datepicker .ui-icon-signal { background-position: -32px -176px; } .learndash-datepicker .ui-icon-battery-0 { background-position: -48px -176px; } .learndash-datepicker .ui-icon-battery-1 { background-position: -64px -176px; } .learndash-datepicker .ui-icon-battery-2 { background-position: -80px -176px; } .learndash-datepicker .ui-icon-battery-3 { background-position: -96px -176px; } .learndash-datepicker .ui-icon-circle-plus { background-position: 0 -192px; } .learndash-datepicker .ui-icon-circle-minus { background-position: -16px -192px; } .learndash-datepicker .ui-icon-circle-close { background-position: -32px -192px; } .learndash-datepicker .ui-icon-circle-triangle-e { background-position: -48px -192px; } .learndash-datepicker .ui-icon-circle-triangle-s { background-position: -64px -192px; } .learndash-datepicker .ui-icon-circle-triangle-w { background-position: -80px -192px; } .learndash-datepicker .ui-icon-circle-triangle-n { background-position: -96px -192px; } .learndash-datepicker .ui-icon-circle-arrow-e { background-position: -112px -192px; } .learndash-datepicker .ui-icon-circle-arrow-s { background-position: -128px -192px; } .learndash-datepicker .ui-icon-circle-arrow-w { background-position: -144px -192px; } .learndash-datepicker .ui-icon-circle-arrow-n { background-position: -160px -192px; } .learndash-datepicker .ui-icon-circle-zoomin { background-position: -176px -192px; } .learndash-datepicker .ui-icon-circle-zoomout { background-position: -192px -192px; } .learndash-datepicker .ui-icon-circle-check { background-position: -208px -192px; } .learndash-datepicker .ui-icon-circlesmall-plus { background-position: 0 -208px; } .learndash-datepicker .ui-icon-circlesmall-minus { background-position: -16px -208px; } .learndash-datepicker .ui-icon-circlesmall-close { background-position: -32px -208px; } .learndash-datepicker .ui-icon-squaresmall-plus { background-position: -48px -208px; } .learndash-datepicker .ui-icon-squaresmall-minus { background-position: -64px -208px; } .learndash-datepicker .ui-icon-squaresmall-close { background-position: -80px -208px; } .learndash-datepicker .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } .learndash-datepicker .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } .learndash-datepicker .ui-icon-grip-solid-vertical { background-position: -32px -224px; } .learndash-datepicker .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } .learndash-datepicker .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } .learndash-datepicker .ui-icon-grip-diagonal-se { background-position: -80px -224px; } /* Misc visuals ----------------------------------*/ /* Corner radius */ .learndash-datepicker .ui-corner-all, .learndash-datepicker .ui-corner-top, .learndash-datepicker .ui-corner-left, .learndash-datepicker .ui-corner-tl { border-top-left-radius: 4px; } .learndash-datepicker .ui-corner-all, .learndash-datepicker .ui-corner-top, .learndash-datepicker .ui-corner-right, .learndash-datepicker .ui-corner-tr { border-top-right-radius: 4px; } .learndash-datepicker .ui-corner-all, .learndash-datepicker .ui-corner-bottom, .learndash-datepicker .ui-corner-left, .learndash-datepicker .ui-corner-bl { border-bottom-left-radius: 4px; } .learndash-datepicker .ui-corner-all, .learndash-datepicker .ui-corner-bottom, .learndash-datepicker .ui-corner-right, .learndash-datepicker .ui-corner-br { border-bottom-right-radius: 4px; } /* Overlays */ .learndash-datepicker .ui-widget-overlay { /*background: #aaaaaa url("../images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;*/ background: #aaaaaa; opacity: .3; filter: Alpha(Opacity=30); /* support: IE8 */ } .learndash-datepicker .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; /* background: #aaaaaa url("../images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x; */ background: #aaaaaa; opacity: .3; filter: Alpha(Opacity=30); /* support: IE8 */ border-radius: 8px; } PKc\-+Whh(assets/css/learndash-admin-style-rtl.cssnuW+Atable.learndash-admin-user-courses { width: 100%; border: 1px solid #ccc; border-collapse: collapse; background-color: #ffffff; } table.learndash-admin-user-courses thead tr th { border-bottom: 1px solid #ddd; } table.learndash-admin-user-courses th, table.learndash-admin-user-courses td { border-bottom: 1px solid #ddd; text-align: right; } table.learndash-admin-user-courses tbody tr:nth-child(even) { background-color: #f2f2f2; } /* table.learndash-admin-user-courses tbody tr:hover { background-color: #f5f5f5; } */ table.learndash-admin-user-courses th, table.learndash-admin-user-courses td { padding: 5px 5px; } table.learndash-admin-user-courses td.col-title { width: 35%; } table.learndash-admin-user-courses td.col-status { width: 15%; } table.learndash-admin-user-courses th.col-steps, table.learndash-admin-user-courses td.col-steps { text-align: center; width: 15%; } table.learndash-admin-user-courses td.col-dates { width: 35%; } /* Data Upgrade screens */ table#learndash-data-upgrades .learndash-data-upgrades-name { font-weight: bold; } table#learndash-data-upgrades td.learndash-data-upgrades-button-container { width: 10%; } table#learndash-data-upgrades td.learndash-data-upgrades-status-container { width: 90%; } table#learndash-data-upgrades .progress-label-complete { color: green; } table#learndash-data-upgrades .progress-label-in-progress { color: inherit; } table#learndash-data-upgrades .progress-label-in-complete { color: red; } table#learndash-data-upgrades .learndash-skipped { width: 100%; color: red; } table#learndash-data-upgrades .learndash-skipped ol { color: red; max-height: 100px; overflow: auto; margin: 5px 0; list-style-position: inside; } table#learndash-data-upgrades .learndash-skipped ol li { margin-right: 10px; } .wpProQuiz_quizEdit .learndash-quiz-prerequisite-list-left, .wpProQuiz_quizEdit .learndash-quiz-prerequisite-list-right { width: 45%; min-width: 200px; } .wpProQuiz_quizEdit .learndash-quiz-prerequisite-list-center { width: 100px; min-width: 100px; max-width: 100px; } .wpProQuiz_quizEdit td.learndash-quiz-prerequisite-list-left select.learndash-quiz-prerequisite-list, .wpProQuiz_quizEdit td.learndash-quiz-prerequisite-list-right select.learndash-quiz-prerequisite-list { width: 100%; } /** * These styles are used for the Onboarding templates. */ .ld-onboarding-screen { text-align: center; } #poststuff .ld-onboarding-screen { text-align: center; background-color: #f1f1f1; } #poststuff .ld-onboarding-screen h2, .ld-onboarding-screen h2 { font-size: 28px; font-weight: 600; } #poststuff .ld-onboarding-screen .dashicons-welcome-add-page, .ld-onboarding-screen .dashicons-welcome-add-page { color: #C6C9CB; font-size: 80px; height: 80px; width: 80px; } #poststuff .ld-onboarding-main, .ld-onboarding-main { margin-right: auto; margin-left: auto; max-width: 600px; padding: 50px 0; } #poststuff .ld-onboarding-main p, .ld-onboarding-main p { font-size: 18px; } #poststuff .ld-onboarding-main a.button .dashicons-plus-alt, .ld-onboarding-main a.button .dashicons-plus-alt { color: #C6C9CB; vertical-align: middle; } #poststuff .ld-onboarding-more-help, .ld-onboarding-more-help { background-color: #fff; margin-right: -20px; padding: 50px 0; } #poststuff .ld-onboarding-row, .ld-onboarding-row { align-items: flex-start; display: flex; justify-content: space-between; margin-right: auto; margin-left: auto; max-width: 960px; text-align: right; } #poststuff .ld-onboarding-col, .ld-onboarding-col { flex: 1; font-size: 16px; padding: 0 20px; } #poststuff .ld-onboarding-col p, .ld-onboarding-col p { font-size: 16px; } #poststuff .ld-onboarding-col img, .ld-onboarding-col img { height: auto; max-width: 100%; } #poststuff .ld-onboarding-col a, .ld-onboarding-col a { text-decoration: none; } /* Hide WP listing */ /* .ld-onboarding-screen + .wrap { display: none; } */ PKc\ڪF&&assets/css/sfwd_module-rtl.cssnuW+A.form-table.sfwd{ clear: none; } .form-table.sfwd td { vertical-align: top; padding: 16px 0 10px 0; line-height: 20px; font-size: 12px; } .form-table.sfwd th { width: 200px; padding: 10px 9px 12px 0; } .sfwd_help_text_link { text-align: right; float: right; width: 100%; max-width: 300px; /* 10up-added */ align-items: center; display: flex; flex-direction: row-reverse; justify-content: space-between; } .sfwd_help_text_link img { /*width: 40px;*/ width: 30px; height: 30px; float: right; } .sfwd_label { color: #5F5F5F; font-weight: bold; line-height: 19px; width: 60%; float: left; /*margin: 11px 19% 10px 0;*/ margin: 0; flex:1; } /* .sfwd input[type="text"], .sfwd input[type="number"] { color: #515151; height: 35px; font-size: 14px; } */ /* .sfwd input[type="text"] { width: 100%; } */ /* .sfwd input[type="number"] { min-width: 100px; } */ /* .sfwd textarea { color: #515151; padding: 10px 0px 0px 10px; margin: 0px; font-size: 14px; line-height: 25px; width: 100%; } */ .sfwd_help_text_div { text-align:right; width:100%; margin: 10px 0px 10px 0px; } .sfwd_help_text { font-size: 12px; float: right; clear: right; color: #797979; line-height: 15px; font-style: italic; font-weight: lighter; margin-left: 30px; } .sfwd_head_tagline { color: #5F5F5F; font-size: 13px; } .sfwd_head_nav { float: right; font-size: 18px; margin: 0px 0 16px 0; font-family: "HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif; border-bottom: 1px solid #CCC; width: 100%; } .sfwd_head_nav_tab { padding: 10px 15px 10px 15px; margin: 0 15px 0 0; border-width: 1px 1px 0; border-radius: 4px 4px 0 0px; border-style: solid; border-color: #CCC #CCC white; float: right; opacity: 0.5; color: black; text-shadow: white 0 1px 0; text-decoration: none; } .sfwd_head_nav_tab.sfwd_head_nav_active { opacity: 1; margin-bottom: -1px; border-width: 1px; } .sfwd_head_nav_tab:first-child { margin-right: 0px; } .sfwd_head_nav_tab:hover { opacity:1; } .sfwd_header { float: right; clear: right; } .sfwd_advert { padding: 10px; margin-bottom: 20px; border: 1px solid #DDD; height: 200px; width: 423px; } .sfwd_adverts { float: left; } .sfwd_content { min-width: 760px; clear: right; } .sfwd_options_wrapper { } .sfwd_options_wrapper .hndle { font-size: 15px; font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif; font-weight: normal; padding: 7px 10px; margin: 0; line-height: 1; } #sfp_feature_manager_metabox.postbox { float: right; } .sfwd_advert p { margin: 25px 0 25px 0; } .widget, #widget-list .widget-top, .postbox, #titlediv, .sfwd_options_wrapper .postarea, .stuffbox { border-color: #DFDFDF; -moz-box-shadow: inset 0 1px 0 #fff; -webkit-box-shadow: inset 0 1px 0 #fff; box-shadow: inset 0 1px 0 #fff; -moz-border-radius: 3px; -khtml-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } .sfwd_advert h3 { padding: 0; margin-top: 6px; } .sfwd_metabox_text p { margin: 0 0 0px 0; width: 101%; } .sfwd_sidebar { width: 457px; margin-right: 10px; } .sfwd_metabox_text { margin-bottom: 0px; } .sfwd_metabox_wrapper { padding: 0px; } .sfwd_metabox_text *:last-child { margin: 0; } .sfwd_metabox_feature { margin-top: 20px; } .sfwd_option_label { float: right; /* margin: 0px 0 10px 5px; */ margin: 5px; width: 38%; min-width: 210px; max-width: 300px; text-align:left; vertical-align:top; color: #5F5F5F !important; } .sfwd_metabox_text h2 { font-size: 14px; padding: 0px; font-weight: bold; line-height: 29px; } #sfwd-about .sfwd_metabox_text #mc-embedded-subscribe-form h2 { font-size: 13px; } .sfwd input[readonly] { background-color: #EEE; margin: 5px 0 5px 0 !important; } /* .sfwd input[type="button"] { border-radius: 5px; padding: 10px; font-size: 15px; } */ .sfwd_settings_left { float: right; padding: 0px; margin: 0px 0 0 0; width: 100%; } .sfwd_right_sidebar { float: left; } /* #wpbody-content { min-width: 600px; } */ .sfwd_options { width: 100%; margin: 18px 0px 10px 0px; } .sfwd_input { clear: right; width: 100%; padding: 5px; } .sfwd_option_input { float: right; width: 58%; margin: 5px; /* padding-left: 10px; */ min-width: 320px; max-width: 900px; } .sfwd_top_label .sfwd_option_input, .sfwd_no_label .sfwd_option_input { width: 100%; } .sfwd_settings_left .postbox { float: right; width: 100%; } .sfwd_option_setting_label{ float: right; min-width: 125px; min-height: 35px; width: 25%; max-width: 175px; } .sfwd_settings_left .postbox .inside { padding: 0; margin: 0; } #sfwd_opengraph_settings { width: 100%; } .sfwd_no_label { float: right; width: 92%; margin: 0 13px 20px 23px; } .sfwd_top_label { width: 96%; margin: 0 10px; } .sfwd_hidden_type { margin: 0; padding: 0; height: 0; } .sfwd_module.error.below-h2 { padding: 5px 0px; margin: 0px 0px 15px 477px !important; } .sfwd_input input[type="checkbox"], .sfwd_input input[type="radio"] { vertical-align: text-bottom; } #sfp { width: 100%; } .sfwd_input.sfwd_top_label .sfwd_option_input { margin: 0 0 10px 0; } .sfwd_error_notice { font-size: 15px; font-style: italic; color: #5F5F5F; } /* .sfwd_input select, .sfwd_input input[type="text"], .sfwd_input input[type="number"] { margin: 10px 0 0 0; } */ /* .sfwd_options .sfwd_input_type_checkbox .sfwd_option_input { margin: 10px 0 0 0; } */ /* .sfwd_options .sfwd_input_type_textarea .sfwd_option_input { margin: 0 0 10px 0; } */ /* .sfwd_options .sfwd_input_type_select .sfwd_option_input select { height: 35px; line-height: 35px; } */ /* .sfwd_options .sfwd_input_type_select .sfwd_option_input select option { height: 35px; line-height: 35px; } */ #sfwd-courses_course_price_billing_cycle select { margin-top: -4px; height: 35px; } #sfwd-courses_course_price_billing_cycle input { width: 40px; } .sfwd_help_text ul { margin: 15px 20px 0 0; } .sfwd_help_text ul li { line-height: 20px; margin: 0; } .sfwd_sidebar #side-sortables { width: 98%; } .sfwd_header_tabs li { display: inline; padding: 0px; margin: 0px; } .sfwd_header_tabs { margin: 0px; } .sfwd_header_nav { margin: 0px; } .sfwd_header_tabs li a.sfwd_header_tab.active { background-color: rgb( 255, 255, 255 ); background-color: rgba( 255, 255, 255, 0.75 ); } .sfwd_header_tabs li a.sfwd_header_tab { color: #464646; font-size: 15px; text-decoration: none; border: solid 1px #CCC; border-right: none; margin: 0px; padding: 6px 6px 1px 6px; } .sfwd_header_tabs li:first-child a.sfwd_header_tab { border-right: solid 1px #CCC; } .sfwd_tab { border: solid 1px #CCC; background-color: rgb( 255, 255, 255 ); background-color: rgba( 255, 255, 255, 0.5 ); } .wrap > h2 { padding-bottom: 14px; } /* @media only screen and (max-width: 1065px), @media only screen and (max-device-width: 1065px) { #wpbody-content { min-width: 600px; } .sfwd_settings_left { float: none; width: auto; } .sfwd_right_sidebar { float: none; width: auto; } .sfwd_sidebar { width: auto; } form#sfp_settings_form { padding-right: 0px; } } */ #learndash_group_users_search {display: none;} table.learndash-group-users-select { width: 100%; } table.learndash-group-users-select td.td_learndash_group_users_search { width: 45%; } table.learndash-group-users-select td.td_learndash_group_users_search select { min-width: 100%; height: 150px; } /* Hide the 'Add New' button on the Assignment and Submitted Essays list tables */ body.post-type-sfwd-assignment .ld-global-header .global-new-entity-button, body.post-type-sfwd-essays .ld-global-header .global-new-entity-button, body.post-type-sfwd-transactions .ld-global-header .global-new-entity-button { display:none; } /* Styles for the Support tab table output */ /* #learndash-settings-support h2 { clear: both; } #learndash-settings-support .learndash-support-settings-desc, #learndash-settings-support table.learndash-support-settings { clear: both; width: 80%; } #learndash-settings-support table.learndash-support-settings > tbody > *:nth-child(2n+1), ul.striped > *:nth-child(2n+1) { background-color: #f9f9f9; } #learndash-settings-support table.learndash-support-settings thead th { text-align: left; border-bottom: 1px solid #000; margin: 0; } #learndash-settings-support table.learndash-support-settings tbody td { padding: 3px; margin: 0; } #learndash-settings-support table.learndash-support-settings .learndash-support-settings-left { width: 35%; } #learndash-settings-support table.learndash-support-settings .learndash-support-settings-right { width: 65%; } */ table#learndash-data-reports, table#learndash-data-upgrades { border: 0px; } .learndash-data-reports-status, .learndash-data-upgrades-status { width: 100%; } .learndash-data-reports-status .progress-meter, .learndash-data-upgrades-status .progress-meter { width:100%; height: 20px; border: 1px solid black; } .learndash-data-reports-status .progress-meter .progress-meter-image, .learndash-data-upgrades-status .progress-meter .progress-meter-image { background-color: green; float: right; height: 16px; width: 0; margin: 2px 0; } .learndash-data-reports-status .progress-label, .learndash-data-upgrades-status .progress-label { } .sfwd_input .sfwd_option_div select[multiple] { width: 100%; min-height: 100px; } table.learndash-support-settings tbody th { text-align: right; vertical-align: top; padding: 5px 15px 5px 0; } .learndash-settings-page-wrap div.sfwd_options { padding-bottom: 30px; } .learndash_shortcodes_section .learndash_required_field { color: red; } .sfwd_input.learndash-settings-field-error{ background-color: #ffdfe0; border-bottom: 1px solid #c89797; border-top: 1px solid #c89797; } .sfwd_input p.ld-clear { height: 0; clear:right; padding:0; } .edit-post-header__settings .components-popover__content a:hover { color: #007cba; } PKc\/x*2assets/css/learndash-admin-binary-selector.min.cssnuW+A.learndash-binary-selector{clear:both;width:100%;margin:0;padding:0}.learndash-binary-selector table.learndash-binary-selector-table{width:100%}.learndash-binary-selector .learndash-binary-selector-section-left{width:47%;float:left}.learndash-binary-selector .learndash-binary-selector-section-middle{width:5%;float:left;text-align:center;margin-top:8%}.learndash-binary-selector .learndash-binary-selector-section-right{width:47%;float:left}.learndash-binary-selector .learndash-binary-selector-section .learndash-binary-selector-items{border:1px solid #ccc;padding:5px;width:100%;max-width:100%}.learndash-binary-selector .learndash-binary-selector-section .learndash-binary-selector-items>.learndash-binary-selector-item{padding:.15em 0;width:100%}.learndash-binary-selector .learndash-binary-selector-search{width:100%;float:left}.learndash-binary-selector .learndash-binary-selector-section-left option.learndash-binary-selector-item-disabled{text-decoration:line-through}.learndash-binary-selector ul.learndash-binary-selector-pager{width:100%}.learndash-binary-selector ul.learndash-binary-selector-pager li.learndash-binary-selector-pager-prev{width:30%;float:left;text-align:left}.learndash-binary-selector ul.learndash-binary-selector-pager li.learndash-binary-selector-pager-info{width:40%;float:left;text-align:center}.learndash-binary-selector ul.learndash-binary-selector-pager li.learndash-binary-selector-pager-next{width:30%;float:left;text-align:right}.learndash-binary-selector ul.learndash-binary-selector-pager a{text-decoration:none;padding:0 5px;display:block}.learndash-binary-selector ul.learndash-binary-selector-pager a:hover{background-color:inherit}PKc\$3assets/css/learndash-admin-support-page.min-rtl.cssnuW+Atable.learndash-support-settings{clear:both;width:100%}table.learndash-support-settings>tbody>:nth-child(2n+1),ul.striped>:nth-child(2n+1){background-color:#f9f9f9}table.learndash-support-settings thead th{text-align:right;border-bottom:1px solid #000;margin:0}table.learndash-support-settings tbody td{padding:5px;margin:0}table.learndash-support-settings .learndash-support-settings-left{width:40%}table.learndash-support-settings .learndash-support-settings-right{width:60%}PKc\R=  'assets/css/learndash-admin-menu.min.cssnuW+Abody.learndash-user-admin #adminmenumain .toplevel_page_learndash-lms .wp-submenu>li.submenu-ldlms-assignments:after,body.learndash-user-admin #adminmenumain .toplevel_page_learndash-lms .wp-submenu>li.submenu-ldlms-topics:after{background:#b4b9be;content:'';display:block;height:1px;margin:5px auto 0 auto;width:calc(100% - 24px);opacity:.4}body.learndash-user-admin #adminmenu .toplevel_page_learndash-lms .wp-submenu>li.submenu-ldlms-assignments,body.learndash-user-admin #adminmenu .toplevel_page_learndash-lms .wp-submenu>li.submenu-ldlms-topics{padding-bottom:1px}body.learndash-user-admin #adminmenu .toplevel_page_learndash-lms .wp-submenu>li.submenu-ldlms-assignments+li,body.learndash-user-admin #adminmenu .toplevel_page_learndash-lms .wp-submenu>li.submenu-ldlms-topics+li{padding-top:1px}body.learndash-user-group-leader #adminmenumain .toplevel_page_learndash-lms .wp-submenu>li.submenu-ldlms-essays:after{background:#b4b9be;content:'';display:block;height:1px;margin:5px auto 0 auto;width:calc(100% - 24px);opacity:.4}body.learndash-user-group-leader #adminmenu .toplevel_page_learndash-lms .wp-submenu>li.submenu-ldlms-essays{padding-bottom:1px}body.learndash-user-group-leader #adminmenu .toplevel_page_learndash-lms .wp-submenu>li.submenu-ldlms-essays+li{padding-top:1px}PKc\/SC C .assets/css/learndash-admin-binary-selector.cssnuW+A.learndash-binary-selector { clear: both; width: 100%; margin: 0; padding: 0; } .learndash-binary-selector table.learndash-binary-selector-table { width: 100%; } .learndash-binary-selector .learndash-binary-selector-section-left { width: 47%; float: left; } .learndash-binary-selector .learndash-binary-selector-section-middle { width: 5%; float: left; text-align: center; margin-top: 8%; } .learndash-binary-selector .learndash-binary-selector-section-right { width: 47%; float: left; } .learndash-binary-selector .learndash-binary-selector-section .learndash-binary-selector-items { border: 1px solid #ccc; padding: 5px; width: 100%; max-width: 100%; } .learndash-binary-selector .learndash-binary-selector-section .learndash-binary-selector-items > .learndash-binary-selector-item { padding: 0.15em 0; width: 100%; } /* .learndash-binary-selector .learndash-binary-selector-section .learndash-binary-selector-items > .learndash-binary-selector-item:hover, .learndash-binary-selector .learndash-binary-selector-section .learndash-binary-selector-items > .learndash-binary-selector-item-selected { background-color: #ccc; } */ /* .learndash-binary-selector .learndash-binary-selector-section .learndash-binary-selector-items > .learndash-binary-selector-item-disabled:hover{ background-color: inherit; } */ .learndash-binary-selector .learndash-binary-selector-search { width: 100%; float: left; } .learndash-binary-selector .learndash-binary-selector-section-left option.learndash-binary-selector-item-disabled { text-decoration: line-through; /* color: #ccc; */ } .learndash-binary-selector ul.learndash-binary-selector-pager { width: 100%; } .learndash-binary-selector ul.learndash-binary-selector-pager li.learndash-binary-selector-pager-prev { width: 30%; float: left; text-align: left; } .learndash-binary-selector ul.learndash-binary-selector-pager li.learndash-binary-selector-pager-info { width: 40%; float: left; text-align: center; } .learndash-binary-selector ul.learndash-binary-selector-pager li.learndash-binary-selector-pager-next { width: 30%; float: left; text-align: right; } .learndash-binary-selector ul.learndash-binary-selector-pager a { text-decoration: none; padding: 0 5px; display: block; } .learndash-binary-selector ul.learndash-binary-selector-pager a:hover { background-color: inherit; } PKc\-M1assets/css/learndash-admin-shortcodes.min-rtl.cssnuW+Ai.mce-i-icon{font:400 20px/1 dashicons;padding:0;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-right:-2px;padding-left:2px}#TB_ajaxContent{padding:0 0 30px 0;width:100%!important;overflow:hidden}.ui-dialog.ld-shortcodes{z-index:160000!important}#learndash_shortcodes_wrap{position:relative;margin:0;height:97.5%}#learndash_shortcodes_tabs{font-family:Helvetica,Arial;color:#333;font-size:12px;text-align:right}#learndash_shortcodes_tabs{width:150px;height:100%;min-height:100%;background:#ccc;border-left:1px solid #eee;float:right;overflow-y:scroll}#learndash_shortcodes_tabs ul{list-style:none;margin:0;padding:0;width:100%}#learndash_shortcodes_tabs ul li{width:100%;font-weight:700;margin:0}#learndash_shortcodes_tabs li.current{display:block;margin:0}#learndash_shortcodes_tabs li.current a{background:#fff;box-shadow:0 -1px 0 #eee}#learndash_shortcodes_tabs ul li a{display:block;padding:10px 10px;font-size:12px;color:#333;text-decoration:none;box-shadow:0 -1px 0 #eee}#learndash_shortcodes_tabs ul li:last-child a{box-shadow:0 -1px 0 #eee,0 1px 0 #eee}#learndash_shortcodes_sections{overflow:auto;height:100%;position:relative;padding:0 20px 0 0;margin:0;background:#fff}#learndash_shortcodes_sections textarea{width:100%;min-height:200px}#learndash_shortcodes_sections abbr[title]{border-bottom:none!important;cursor:inherit!important;text-decoration:none!important}PKc\c `kk assets/css/jquery-ui.min-rtl.cssnuW+A/*! jQuery UI - v1.11.2 - 2014-10-16 * http://jqueryui.com * Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */.learndash-datepicker .ui-helper-hidden{display:none}.learndash-datepicker .ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.learndash-datepicker .ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.learndash-datepicker .ui-helper-clearfix:after,.learndash-datepicker .ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.learndash-datepicker .ui-helper-clearfix:after{clear:both}.learndash-datepicker .ui-helper-clearfix{min-height:0}.learndash-datepicker .ui-helper-zfix{width:100%;height:100%;top:0;right:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.learndash-datepicker .ui-front{z-index:100}.learndash-datepicker .ui-state-disabled{cursor:default!important}.learndash-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.learndash-datepicker .ui-widget-overlay{position:fixed;top:0;right:0;width:100%;height:100%}.learndash-datepicker .ui-autocomplete{position:absolute;top:0;right:0;cursor:default}.learndash-datepicker .ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-left:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.learndash-datepicker .ui-button,.learndash-datepicker .ui-button:active,.learndash-datepicker .ui-button:hover,.learndash-datepicker .ui-button:link,.learndash-datepicker .ui-button:visited{text-decoration:none}.learndash-datepicker .ui-button-icon-only{width:2.2em}.learndash-datepicker button.ui-button-icon-only{width:2.4em}.learndash-datepicker .ui-button-icons-only{width:3.4em}.learndash-datepicker button.ui-button-icons-only{width:3.7em}.learndash-datepicker .ui-button .ui-button-text{display:block;line-height:normal}.learndash-datepicker .ui-button-text-only .ui-button-text{padding:.4em 1em}.learndash-datepicker .ui-button-icon-only .ui-button-text,.learndash-datepicker .ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.learndash-datepicker .ui-button-text-icon-primary .ui-button-text,.learndash-datepicker .ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.learndash-datepicker .ui-button-text-icon-secondary .ui-button-text,.learndash-datepicker .ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.learndash-datepicker .ui-button-text-icons .ui-button-text{padding-right:2.1em;padding-left:2.1em}.learndash-datepicker input.ui-button{padding:.4em 1em}.learndash-datepicker .ui-button-icon-only .ui-icon,.learndash-datepicker .ui-button-icons-only .ui-icon,.learndash-datepicker .ui-button-text-icon-primary .ui-icon,.learndash-datepicker .ui-button-text-icon-secondary .ui-icon,.learndash-datepicker .ui-button-text-icons .ui-icon{position:absolute;top:50%;margin-top:-8px}.learndash-datepicker .ui-button-icon-only .ui-icon{right:50%;margin-right:-8px}.learndash-datepicker .ui-button-icons-only .ui-button-icon-primary,.learndash-datepicker .ui-button-text-icon-primary .ui-button-icon-primary,.learndash-datepicker .ui-button-text-icons .ui-button-icon-primary{right:.5em}.learndash-datepicker .ui-button-icons-only .ui-button-icon-secondary,.learndash-datepicker .ui-button-text-icon-secondary .ui-button-icon-secondary,.learndash-datepicker .ui-button-text-icons .ui-button-icon-secondary{left:.5em}.learndash-datepicker .ui-buttonset{margin-left:7px}.learndash-datepicker .ui-buttonset .ui-button{margin-right:0;margin-left:-.3em}.learndash-datepicker button.ui-button::-moz-focus-inner,.learndash-datepicker input.ui-button::-moz-focus-inner{border:0;padding:0}.learndash-datepicker.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.learndash-datepicker.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.learndash-datepicker.ui-datepicker .ui-datepicker-next,.learndash-datepicker.ui-datepicker .ui-datepicker-prev{position:absolute;top:2px;width:1.8em;height:1.8em}.learndash-datepicker.ui-datepicker .ui-datepicker-next-hover,.learndash-datepicker.ui-datepicker .ui-datepicker-prev-hover{top:1px}.learndash-datepicker.ui-datepicker .ui-datepicker-prev{right:2px}.learndash-datepicker.ui-datepicker .ui-datepicker-next{left:2px}.learndash-datepicker.ui-datepicker .ui-datepicker-prev-hover{right:1px}.learndash-datepicker.ui-datepicker .ui-datepicker-next-hover{left:1px}.learndash-datepicker.ui-datepicker .ui-datepicker-next span,.learndash-datepicker.ui-datepicker .ui-datepicker-prev span{display:block;position:absolute;right:50%;margin-right:-8px;top:50%;margin-top:-8px}.learndash-datepicker.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.learndash-datepicker.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.learndash-datepicker.ui-datepicker select.ui-datepicker-month,.learndash-datepicker.ui-datepicker select.ui-datepicker-year{width:45%}.learndash-datepicker.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.learndash-datepicker.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}.learndash-datepicker.ui-datepicker td{border:0;padding:1px}.learndash-datepicker.ui-datepicker td a,.learndash-datepicker.ui-datepicker td span{display:block;padding:.2em;text-align:left;text-decoration:none}.learndash-datepicker.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0;padding:0 .2em;border-right:0;border-left:0;border-bottom:0}.learndash-datepicker.ui-datepicker .ui-datepicker-buttonpane button{float:left;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em;width:auto;overflow:visible}.learndash-datepicker.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.learndash-datepicker.ui-datepicker.ui-datepicker-multi{width:auto}.learndash-datepicker.ui-datepicker-multi .ui-datepicker-group{float:right}.learndash-datepicker .ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.learndash-datepicker .ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.learndash-datepicker .learndash-datepicker .ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.learndash-datepicker .ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.learndash-datepicker .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.learndash-datepicker .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0}.learndash-datepicker .ui-datepicker-multi .ui-datepicker-buttonpane{clear:right}.learndash-datepicker .ui-datepicker-row-break{clear:both;width:100%;font-size:0}.learndash-datepicker .ui-datepicker-rtl{direction:ltr}.learndash-datepicker .ui-datepicker-rtl .ui-datepicker-prev{left:2px;right:auto}.learndash-datepicker .ui-datepicker-rtl .ui-datepicker-next{right:2px;left:auto}.learndash-datepicker .ui-datepicker-rtl .ui-datepicker-prev:hover{left:1px;right:auto}.learndash-datepicker .ui-datepicker-rtl .ui-datepicker-next:hover{right:1px;left:auto}.learndash-datepicker .ui-datepicker-rtl .ui-datepicker-buttonpane{clear:left}.learndash-datepicker .ui-datepicker-rtl .ui-datepicker-buttonpane button{float:right}.learndash-datepicker .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.learndash-datepicker .ui-datepicker-rtl .ui-datepicker-group{float:left}.learndash-datepicker .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.learndash-datepicker .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0;border-right-width:1px}body .learndash-datepicker .ui-tooltip{border-width:2px}.learndash-datepicker.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.learndash-datepicker.ui-widget .ui-widget{font-size:1em}.learndash-datepicker.ui-widget button,.learndash-datepicker.ui-widget input,.learndash-datepicker.ui-widget select,.learndash-datepicker.ui-widget textarea{font-family:Verdana,Arial,sans-serif;font-size:1em}.learndash-datepicker.ui-widget-content{border:1px solid #aaa;background:#fff;color:#222}.learndash-datepicker.ui-widget-content a{color:#222}.learndash-datepicker .ui-widget-header{border:1px solid #aaa;background:#ccc;color:#222;font-weight:700}.learndash-datepicker .ui-widget-header a{color:#222}.learndash-datepicker .ui-state-default,.learndash-datepicker.ui-widget-content .ui-state-default,.learndash-datepicker .ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6;font-weight:400;color:#555}.learndash-datepicker .ui-state-default a,.learndash-datepicker .ui-state-default a:link,.learndash-datepicker .ui-state-default a:visited{color:#555;text-decoration:none}.learndash-datepicker .ui-state-focus,.learndash-datepicker .ui-state-hover,.learndash-datepicker .ui-widget-content .ui-state-focus,.learndash-datepicker .ui-widget-content .ui-state-hover,.learndash-datepicker .ui-widget-header .ui-state-focus,.learndash-datepicker .ui-widget-header .ui-state-hover{border:1px solid #999;background:#dadada;font-weight:400;color:#212121}.learndash-datepicker .ui-state-focus a,.learndash-datepicker .ui-state-focus a:hover,.learndash-datepicker .ui-state-focus a:link,.learndash-datepicker .ui-state-focus a:visited,.learndash-datepicker .ui-state-hover a,.learndash-datepicker .ui-state-hover a:hover,.learndash-datepicker .ui-state-hover a:link,.learndash-datepicker .ui-state-hover a:visited{color:#212121;text-decoration:none}.learndash-datepicker .ui-state-active,.learndash-datepicker.ui-widget-content .ui-state-active,.learndash-datepicker .ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff;font-weight:400;color:#212121}.learndash-datepicker .ui-state-active a,.learndash-datepicker .ui-state-active a:link,.learndash-datepicker .ui-state-active a:visited{color:#212121;text-decoration:none}.learndash-datepicker .ui-state-highlight,.learndash-datepicker.ui-widget-content .ui-state-highlight,.learndash-datepicker .ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee;color:#363636}.learndash-datepicker .ui-state-highlight a,.learndash-datepicker.ui-widget-content .ui-state-highlight a,.learndash-datepicker .ui-widget-header .ui-state-highlight a{color:#363636}.learndash-datepicker .ui-state-error,.learndash-datepicker.ui-widget-content .ui-state-error,.learndash-datepicker .ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec;color:#cd0a0a}.learndash-datepicker .ui-state-error-text,.learndash-datepicker .ui-state-error a,.learndash-datepicker.ui-widget-content .ui-state-error-text,.learndash-datepicker.ui-widget-content .ui-state-error a,.learndash-datepicker .ui-widget-header .ui-state-error-text,.learndash-datepicker .ui-widget-header .ui-state-error a{color:#cd0a0a}.learndash-datepicker .ui-priority-primary,.learndash-datepicker.ui-widget-content .ui-priority-primary,.learndash-datepicker .ui-widget-header .ui-priority-primary{font-weight:700}.learndash-datepicker .ui-priority-secondary,.learndash-datepicker.ui-widget-content .ui-priority-secondary,.learndash-datepicker .ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.learndash-datepicker .ui-state-disabled,.learndash-datepicker.ui-widget-content .ui-state-disabled,.learndash-datepicker .ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.learndash-datepicker .ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.learndash-datepicker .ui-icon{width:16px;height:16px}.learndash-datepicker .ui-icon,.learndash-datepicker.ui-widget-content .ui-icon,.learndash-datepicker .ui-widget-header .ui-icon{background-image:url(../images/ui-icons_222222_256x240.png)}.learndash-datepicker .ui-icon-blank{background-position:16px 16px}.learndash-datepicker .ui-icon-carat-1-n{background-position:100% 0}.learndash-datepicker .ui-icon-carat-1-ne{background-position:-16px 0}.learndash-datepicker .ui-icon-carat-1-e{background-position:-32px 0}.learndash-datepicker .ui-icon-carat-1-se{background-position:-48px 0}.learndash-datepicker .ui-icon-carat-1-s{background-position:-64px 0}.learndash-datepicker .ui-icon-carat-1-sw{background-position:-80px 0}.learndash-datepicker .ui-icon-carat-1-w{background-position:-96px 0}.learndash-datepicker .ui-icon-carat-1-nw{background-position:-112px 0}.learndash-datepicker .ui-icon-carat-2-n-s{background-position:-128px 0}.learndash-datepicker .ui-icon-carat-2-e-w{background-position:-144px 0}.learndash-datepicker .ui-icon-triangle-1-n{background-position:100% -16px}.learndash-datepicker .ui-icon-triangle-1-ne{background-position:-16px -16px}.learndash-datepicker .ui-icon-triangle-1-e{background-position:-32px -16px}.learndash-datepicker .ui-icon-triangle-1-se{background-position:-48px -16px}.learndash-datepicker .ui-icon-triangle-1-s{background-position:-64px -16px}.learndash-datepicker .ui-icon-triangle-1-sw{background-position:-80px -16px}.learndash-datepicker .ui-icon-triangle-1-w{background-position:-96px -16px}.learndash-datepicker .ui-icon-triangle-1-nw{background-position:-112px -16px}.learndash-datepicker .ui-icon-triangle-2-n-s{background-position:-128px -16px}.learndash-datepicker .ui-icon-triangle-2-e-w{background-position:-144px -16px}.learndash-datepicker .ui-icon-arrow-1-n{background-position:100% -32px}.learndash-datepicker .ui-icon-arrow-1-ne{background-position:-16px -32px}.learndash-datepicker .ui-icon-arrow-1-e{background-position:-32px -32px}.learndash-datepicker .ui-icon-arrow-1-se{background-position:-48px -32px}.learndash-datepicker .ui-icon-arrow-1-s{background-position:-64px -32px}.learndash-datepicker .ui-icon-arrow-1-sw{background-position:-80px -32px}.learndash-datepicker .ui-icon-arrow-1-w{background-position:-96px -32px}.learndash-datepicker .ui-icon-arrow-1-nw{background-position:-112px -32px}.learndash-datepicker .ui-icon-arrow-2-n-s{background-position:-128px -32px}.learndash-datepicker .ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.learndash-datepicker .ui-icon-arrow-2-e-w{background-position:-160px -32px}.learndash-datepicker .ui-icon-arrow-2-se-nw{background-position:-176px -32px}.learndash-datepicker .ui-icon-arrowstop-1-n{background-position:-192px -32px}.learndash-datepicker .ui-icon-arrowstop-1-e{background-position:-208px -32px}.learndash-datepicker .ui-icon-arrowstop-1-s{background-position:-224px -32px}.learndash-datepicker .ui-icon-arrowstop-1-w{background-position:-240px -32px}.learndash-datepicker .ui-icon-arrowthick-1-n{background-position:100% -48px}.learndash-datepicker .ui-icon-arrowthick-1-ne{background-position:-16px -48px}.learndash-datepicker .ui-icon-arrowthick-1-e{background-position:-32px -48px}.learndash-datepicker .ui-icon-arrowthick-1-se{background-position:-48px -48px}.learndash-datepicker .ui-icon-arrowthick-1-s{background-position:-64px -48px}.learndash-datepicker .ui-icon-arrowthick-1-sw{background-position:-80px -48px}.learndash-datepicker .ui-icon-arrowthick-1-w{background-position:-96px -48px}.learndash-datepicker .ui-icon-arrowthick-1-nw{background-position:-112px -48px}.learndash-datepicker .ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.learndash-datepicker .ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.learndash-datepicker .ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.learndash-datepicker .ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.learndash-datepicker .ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.learndash-datepicker .ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.learndash-datepicker .ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.learndash-datepicker .ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.learndash-datepicker .ui-icon-arrowreturnthick-1-w{background-position:100% -64px}.learndash-datepicker .ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.learndash-datepicker .ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.learndash-datepicker .ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.learndash-datepicker .ui-icon-arrowreturn-1-w{background-position:-64px -64px}.learndash-datepicker .ui-icon-arrowreturn-1-n{background-position:-80px -64px}.learndash-datepicker .ui-icon-arrowreturn-1-e{background-position:-96px -64px}.learndash-datepicker .ui-icon-arrowreturn-1-s{background-position:-112px -64px}.learndash-datepicker .ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.learndash-datepicker .ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.learndash-datepicker .ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.learndash-datepicker .ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.learndash-datepicker .ui-icon-arrow-4{background-position:100% -80px}.learndash-datepicker .ui-icon-arrow-4-diag{background-position:-16px -80px}.learndash-datepicker .ui-icon-extlink{background-position:-32px -80px}.learndash-datepicker .ui-icon-newwin{background-position:-48px -80px}.learndash-datepicker .ui-icon-refresh{background-position:-64px -80px}.learndash-datepicker .ui-icon-shuffle{background-position:-80px -80px}.learndash-datepicker .ui-icon-transfer-e-w{background-position:-96px -80px}.learndash-datepicker .ui-icon-transferthick-e-w{background-position:-112px -80px}.learndash-datepicker .ui-icon-folder-collapsed{background-position:100% -96px}.learndash-datepicker .ui-icon-folder-open{background-position:-16px -96px}.learndash-datepicker .ui-icon-document{background-position:-32px -96px}.learndash-datepicker .ui-icon-document-b{background-position:-48px -96px}.learndash-datepicker .ui-icon-note{background-position:-64px -96px}.learndash-datepicker .ui-icon-mail-closed{background-position:-80px -96px}.learndash-datepicker .ui-icon-mail-open{background-position:-96px -96px}.learndash-datepicker .ui-icon-suitcase{background-position:-112px -96px}.learndash-datepicker .ui-icon-comment{background-position:-128px -96px}.learndash-datepicker .ui-icon-person{background-position:-144px -96px}.learndash-datepicker .ui-icon-print{background-position:-160px -96px}.learndash-datepicker .ui-icon-trash{background-position:-176px -96px}.learndash-datepicker .ui-icon-locked{background-position:-192px -96px}.learndash-datepicker .ui-icon-unlocked{background-position:-208px -96px}.learndash-datepicker .ui-icon-bookmark{background-position:-224px -96px}.learndash-datepicker .ui-icon-tag{background-position:-240px -96px}.learndash-datepicker .ui-icon-home{background-position:100% -112px}.learndash-datepicker .ui-icon-flag{background-position:-16px -112px}.learndash-datepicker .ui-icon-calendar{background-position:-32px -112px}.learndash-datepicker .ui-icon-cart{background-position:-48px -112px}.learndash-datepicker .ui-icon-pencil{background-position:-64px -112px}.learndash-datepicker .ui-icon-clock{background-position:-80px -112px}.learndash-datepicker .ui-icon-disk{background-position:-96px -112px}.learndash-datepicker .ui-icon-calculator{background-position:-112px -112px}.learndash-datepicker .ui-icon-zoomin{background-position:-128px -112px}.learndash-datepicker .ui-icon-zoomout{background-position:-144px -112px}.learndash-datepicker .ui-icon-search{background-position:-160px -112px}.learndash-datepicker .ui-icon-wrench{background-position:-176px -112px}.learndash-datepicker .ui-icon-gear{background-position:-192px -112px}.learndash-datepicker .ui-icon-heart{background-position:-208px -112px}.learndash-datepicker .ui-icon-star{background-position:-224px -112px}.learndash-datepicker .ui-icon-link{background-position:-240px -112px}.learndash-datepicker .ui-icon-cancel{background-position:100% -128px}.learndash-datepicker .ui-icon-plus{background-position:-16px -128px}.learndash-datepicker .ui-icon-plusthick{background-position:-32px -128px}.learndash-datepicker .ui-icon-minus{background-position:-48px -128px}.learndash-datepicker .ui-icon-minusthick{background-position:-64px -128px}.learndash-datepicker .ui-icon-close{background-position:-80px -128px}.learndash-datepicker .ui-icon-closethick{background-position:-96px -128px}.learndash-datepicker .ui-icon-key{background-position:-112px -128px}.learndash-datepicker .ui-icon-lightbulb{background-position:-128px -128px}.learndash-datepicker .ui-icon-scissors{background-position:-144px -128px}.learndash-datepicker .ui-icon-clipboard{background-position:-160px -128px}.learndash-datepicker .ui-icon-copy{background-position:-176px -128px}.learndash-datepicker .ui-icon-contact{background-position:-192px -128px}.learndash-datepicker .ui-icon-image{background-position:-208px -128px}.learndash-datepicker .ui-icon-video{background-position:-224px -128px}.learndash-datepicker .ui-icon-script{background-position:-240px -128px}.learndash-datepicker .ui-icon-alert{background-position:100% -144px}.learndash-datepicker .ui-icon-info{background-position:-16px -144px}.learndash-datepicker .ui-icon-notice{background-position:-32px -144px}.learndash-datepicker .ui-icon-help{background-position:-48px -144px}.learndash-datepicker .ui-icon-check{background-position:-64px -144px}.learndash-datepicker .ui-icon-bullet{background-position:-80px -144px}.learndash-datepicker .ui-icon-radio-on{background-position:-96px -144px}.learndash-datepicker .ui-icon-radio-off{background-position:-112px -144px}.learndash-datepicker .ui-icon-pin-w{background-position:-128px -144px}.learndash-datepicker .ui-icon-pin-s{background-position:-144px -144px}.learndash-datepicker .ui-icon-play{background-position:100% -160px}.learndash-datepicker .ui-icon-pause{background-position:-16px -160px}.learndash-datepicker .ui-icon-seek-next{background-position:-32px -160px}.learndash-datepicker .ui-icon-seek-prev{background-position:-48px -160px}.learndash-datepicker .ui-icon-seek-end{background-position:-64px -160px}.learndash-datepicker .ui-icon-seek-first,.learndash-datepicker .ui-icon-seek-start{background-position:-80px -160px}.learndash-datepicker .ui-icon-stop{background-position:-96px -160px}.learndash-datepicker .ui-icon-eject{background-position:-112px -160px}.learndash-datepicker .ui-icon-volume-off{background-position:-128px -160px}.learndash-datepicker .ui-icon-volume-on{background-position:-144px -160px}.learndash-datepicker .ui-icon-power{background-position:100% -176px}.learndash-datepicker .ui-icon-signal-diag{background-position:-16px -176px}.learndash-datepicker .ui-icon-signal{background-position:-32px -176px}.learndash-datepicker .ui-icon-battery-0{background-position:-48px -176px}.learndash-datepicker .ui-icon-battery-1{background-position:-64px -176px}.learndash-datepicker .ui-icon-battery-2{background-position:-80px -176px}.learndash-datepicker .ui-icon-battery-3{background-position:-96px -176px}.learndash-datepicker .ui-icon-circle-plus{background-position:100% -192px}.learndash-datepicker .ui-icon-circle-minus{background-position:-16px -192px}.learndash-datepicker .ui-icon-circle-close{background-position:-32px -192px}.learndash-datepicker .ui-icon-circle-triangle-e{background-position:-48px -192px}.learndash-datepicker .ui-icon-circle-triangle-s{background-position:-64px -192px}.learndash-datepicker .ui-icon-circle-triangle-w{background-position:-80px -192px}.learndash-datepicker .ui-icon-circle-triangle-n{background-position:-96px -192px}.learndash-datepicker .ui-icon-circle-arrow-e{background-position:-112px -192px}.learndash-datepicker .ui-icon-circle-arrow-s{background-position:-128px -192px}.learndash-datepicker .ui-icon-circle-arrow-w{background-position:-144px -192px}.learndash-datepicker .ui-icon-circle-arrow-n{background-position:-160px -192px}.learndash-datepicker .ui-icon-circle-zoomin{background-position:-176px -192px}.learndash-datepicker .ui-icon-circle-zoomout{background-position:-192px -192px}.learndash-datepicker .ui-icon-circle-check{background-position:-208px -192px}.learndash-datepicker .ui-icon-circlesmall-plus{background-position:100% -208px}.learndash-datepicker .ui-icon-circlesmall-minus{background-position:-16px -208px}.learndash-datepicker .ui-icon-circlesmall-close{background-position:-32px -208px}.learndash-datepicker .ui-icon-squaresmall-plus{background-position:-48px -208px}.learndash-datepicker .ui-icon-squaresmall-minus{background-position:-64px -208px}.learndash-datepicker .ui-icon-squaresmall-close{background-position:-80px -208px}.learndash-datepicker .ui-icon-grip-dotted-vertical{background-position:100% -224px}.learndash-datepicker .ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.learndash-datepicker .ui-icon-grip-solid-vertical{background-position:-32px -224px}.learndash-datepicker .ui-icon-grip-solid-horizontal{background-position:-48px -224px}.learndash-datepicker .ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.learndash-datepicker .ui-icon-grip-diagonal-se{background-position:-80px -224px}.learndash-datepicker .ui-corner-all,.learndash-datepicker .ui-corner-left,.learndash-datepicker .ui-corner-tl,.learndash-datepicker .ui-corner-top{border-top-right-radius:4px}.learndash-datepicker .ui-corner-all,.learndash-datepicker .ui-corner-right,.learndash-datepicker .ui-corner-top,.learndash-datepicker .ui-corner-tr{border-top-left-radius:4px}.learndash-datepicker .ui-corner-all,.learndash-datepicker .ui-corner-bl,.learndash-datepicker .ui-corner-bottom,.learndash-datepicker .ui-corner-left{border-bottom-right-radius:4px}.learndash-datepicker .ui-corner-all,.learndash-datepicker .ui-corner-bottom,.learndash-datepicker .ui-corner-br,.learndash-datepicker .ui-corner-right{border-bottom-left-radius:4px}.learndash-datepicker .ui-widget-overlay,.learndash-datepicker .ui-widget-shadow{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.learndash-datepicker .ui-widget-shadow{margin:-8px -8px 0 0;padding:8px;border-radius:8px}PKc\^b, , assets/css/front.min.cssnuW+A.sfwd_module .error{text-align:center}.content_article_style{min-width:600px}.post2pdf_conv_image_align_center{text-align:center}.slickQuizWrapper .button{float:left;width:auto;padding:5px 15px;color:#fff;background-color:#008b8b;border:1px solid #fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;text-decoration:none}.slickQuizWrapper .button:hover{background-color:#2f4f4f}.startQuiz{margin-top:20px}.quizArea,.quizResults{margin-bottom:40px}.quizArea,.quizResults{zoom:1}.quizArea:after,.quizArea:before,.quizResults:after,.quizResults:before{content:"\0020";display:block;height:0;visibility:hidden;font-size:0}.quizArea:after,.quizResults:after{clear:both}.questionCount{font-size:14px;font-style:italic}.questionCount span{font-weight:700}ol.questions{margin-top:20px;margin-left:0}ol.questions li{margin-left:0}ul.answers{margin-left:20px;margin-bottom:20px}ul.responses li{margin:10px 20px 20px}ul.responses li p span{display:block;font-weight:700;font-size:18px}ul.responses li.correct p span{color:#6c9f2e}ul.responses li.incorrect p span{color:#b5121b}.quizResults h3{margin:0}.quizResults h3 span{font-weight:400;font-style:italic}.quizResultsCopy{margin-top:20px}.ppalholder{display:none}.ppalbtn{border:0!important}.user_has_no_access #learndash_quizzes a,.user_has_no_access .is_not_sample a,.user_has_no_access .is_not_sample a span{color:gray!important;text-decoration:none!important}.widget .list-count{display:none}dd.course_progress{position:relative;display:block;border:1px solid #000;width:100%;height:16px;margin:0 0 2px;background-color:#fff;padding:0}dd.course_progress div.course_progress_blue{position:relative;background-color:#00f;height:16px;width:75%;text-align:right;display:block}.wpProQuiz_cloze>input[type=text]{max-width:99%}.checkout-dropdown-button button,.checkout-dropdown-button input[type=submit]{border-radius:0!important;font-size:16px!important;margin:0;text-align:center;width:100%}.checkout-dropdown-button ul{padding:0!important;list-style:none!important;list-style-type:none!important;line-height:auto!important}.checkout-dropdown-button ul.jq-dropdown-menu li{list-style:none!important;list-style-type:none!important;margin:none!important;padding:none!important;line-height:auto!important}.jq-dropdown .jq-dropdown-menu li{list-style:none!important;list-style-type:none!important;margin:0!important;padding:0!important}.checkout-dropdown-button #btn-join,.checkout-dropdown-button .btn-join,.checkout-dropdown-button form input[type=submit]{background-color:#fff!important;color:#333!important}.checkout-dropdown-button #btn-join:hover,.checkout-dropdown-button .btn-join:hover,.checkout-dropdown-button form input[type=submit]:hover{background-color:#f5f5f5!important;color:#000!important}body .jq-dropdown.jq-dropdown-tip:before{position:absolute;top:-7px;left:9px;content:'';border-left:7px solid;border-right:7px solid;border-bottom:7px solid;border-color:transparent transparent #ddd transparent;display:inline-block;z-index:99}body .jq-dropdown.jq-dropdown-tip:after{position:absolute;top:-5px;left:9px;content:'';border-left:7px solid;border-right:7px solid;border-bottom:7px solid;border-color:transparent transparent #fff transparent;display:inline-block;z-index:99}.jq-dropdown .jq-dropdown-menu,.jq-dropdown .jq-dropdown-panel{border-radius:0}.jq-dropdown .jq-dropdown-menu form{margin:0}PKc\JupBpB(assets/css/learndash-builder.min-rtl.cssnuW+A#learndash_builder_box_wrap{width:100%;position:relative;display:inline-block;border:1px solid #ccc}#learndash_builder_box_wrap .learndash_selectors{width:40%;border-left:0 solid #ccc;padding:10px 10px 10px 5px;float:right;position:relative;display:inline-block;box-sizing:border-box}#learndash_builder_box_wrap .learndash-selector-container{clear:both}#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-lessons:empty,#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-question:empty,#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-quiz:empty,#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-topic:empty{border:2px dashed #bbb;padding:5px;margin-bottom:10px;box-sizing:border-box;float:right;width:100%}#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-lessons:empty{background-color:#ebf5fb}#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-topic:empty{background-color:#fdedec}#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-quiz:empty{background-color:#fcf3cf}#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-question:empty{background-color:#d5f5e3}#learndash_builder_box_wrap .learndash_selector_details{position:relative;display:inline-block;width:60%;padding:10px;float:right}#learndash_builder_box_wrap .learndash_selectors h3.learndash-selector-header{padding:5px;border:1px solid #ccc;background-color:#e5e5e5;margin:0 0 5px 0;float:right;width:100%;clear:both;box-sizing:border-box}#learndash_builder_box_wrap .learndash_selectors .learndash-selector-post-listing{float:right;width:100%;padding:0}#learndash_builder_box_wrap .learndash_selectors .learndash-selector-pager{width:60%;float:right;margin-bottom:5px}#learndash_builder_box_wrap .learndash_selectors .learndash-selector-search{width:40%;float:left;margin-bottom:5px}#learndash_builder_box_wrap .learndash_selectors .learndash-selector-search input{width:100%;border:1px solid #ddd}#learndash_builder_box_wrap .learndash_selectors ul{margin-top:0;clear:both;margin-bottom:10px}#learndash_builder_box_wrap .learndash_selectors li{background-color:#f8f8f8;width:100%;display:inline-block;margin:0 0 5px 0;padding:5px 5px 1px 5px;clear:both;border:1px solid #d8d8d8;float:right;min-height:20px;box-sizing:border-box}#learndash_builder_box_wrap .learndash_selectors li.ld-disabled .ld-course-builder-title-text{text-decoration:line-through}.ui-state-highlight{height:1.5em;line-height:1.2em}#learndash_builder_box_wrap .learndash_selector_details ul li{border:1px solid #ccc;padding:5px}#learndash_builder_box_wrap .learndash_selector_details ul{width:100%;min-height:325px;border:#bbb 5px dashed;padding:10px}#learndash_builder_box_wrap .learndash_selector_details ul li.placeholder{border:0}#learndash_builder_box_wrap .learndash_builder_items{background-color:#fff;float:left;padding:10px 5px 10px 10px;width:calc(60% - 5px);box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .movable-placeholder{width:100%;height:100px;display:block;margin:0 0 15px 0;border-style:dashed;border-width:2px;border-color:#bbb}#learndash_builder_box_wrap .ld-course-builder-title{float:right}#learndash_builder_box_wrap .ld-course-builder-header{position:relative;float:right;width:100%}#learndash_builder_box_wrap .ld-course-builder-actions{width:20px;height:20px;float:right}#learndash_builder_box_wrap .ld-course-builder-action{background-color:#b8b8b8;color:#fff;width:20px;height:20px;text-align:center;line-height:20px;margin-right:5px}#learndash_builder_box_wrap .ld-course-builder-sub-actions{display:none;padding-left:5px;z-index:100}#learndash_builder_box_wrap .ld-course-builder-sub-actions span{cursor:pointer}#learndash_builder_box_wrap .ld-course-builder-actions{float:right;margin-left:5px}#learndash_builder_box_wrap .ld-course-builder-action:hover{color:#000}#learndash_builder_box_wrap .ld-course-builder-action-remove:hover,#learndash_builder_box_wrap .ld-course-builder-action-trash:hover{color:red}#learndash_builder_box_wrap li.ld-disabled .ld-course-builder-sub-actions .ld-course-builder-action-trash{display:none}#learndash_builder_box_wrap .learndash_selectors .ld-course-builder-sub-actions .ld-course-builder-action-remove{display:none}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-sub-actions .ld-course-builder-action-trash{display:none}#learndash_builder_box_wrap .ld-course-builder-action-hide,#learndash_builder_box_wrap .ld-course-builder-action-show{float:left}#learndash_builder_box_wrap .ld-course-builder-action-add,#learndash_builder_box_wrap .ld-course-builder-action-show-hide{float:left;cursor:pointer}#learndash_builder_box_wrap .ld-course-builder-action-add:before{content:"\f132";line-height:23px}#learndash_builder_box_wrap .ld-course-builder-action-add img{display:none}#learndash_builder_box_wrap .ld-course-builder-action-add-pending{float:left;background-color:transparent}#learndash_builder_box_wrap .ld-course-builder-action-add-pending:before{content:""}#learndash_builder_box_wrap .ld-course-builder-action-add-pending img{display:inline;float:left;width:20px;height:20px}#learndash_builder_box_wrap .ld-course-builder-action-remove:before{content:"\f335"}#learndash_builder_box_wrap .ld-course-builder-action-trash:before{content:"\f182"}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-move:hover,#learndash_builder_box_wrap .learndash_selectors li span.ld-course-builder-action-move{cursor:move}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-move,#learndash_builder_box_wrap .learndash_selectors li span.ld-course-builder-action-move{float:right;margin-right:0}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-move:before,#learndash_builder_box_wrap .learndash_selectors li span.ld-course-builder-action-move:before{content:"\f333"}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-edit:before,#learndash_builder_box_wrap .learndash_selectors li .ld-course-builder-action-edit:before{content:"\f464"}#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-pencil{background-color:transparent;color:inherit}#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-pencil:before{content:"\f464"}#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-ok{background-color:transparent;color:green}#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-ok:before{content:"\f147"}#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-cancel{background-color:transparent;color:red}#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-cancel:before{content:"\f158"}#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-cancel,#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-ok,#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-pencil{display:none;margin:0;cursor:pointer;float:none;position:relative}#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-pencil:hover{color:#fff;background-color:#b8b8b8}#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-ok:hover{color:#fff;background-color:green}#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-cancel:hover{background-color:red;color:#fff}#learndash_builder_box_wrap span.ld-course-builder-title{display:table-cell}#learndash_builder_box_wrap .learndash_selectors span.ld-course-builder-title{width:calc(100% - 30px)}#learndash_builder_box_wrap .learndash_builder_items span.ld-course-builder-title{width:calc(100% - 50px)}#learndash_builder_box_wrap .ld-course-builder-title-edit span.ld-course-builder-title{width:100%}#learndash_builder_box_wrap .ld-course-builder-title-text{float:right;display:inline;line-height:24px;min-height:24px;position:relative}#learndash_builder_box_wrap .ld-course-builder-title-edit .ld-course-builder-title-text{width:100%}#learndash_builder_box_wrap .ld-course-builder-title-edit .ld-course-builder-title input{padding:0;margin:0;position:relative;width:100%}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-view:before,#learndash_builder_box_wrap .learndash_selectors li .ld-course-builder-action-view:before{content:"\f504"}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-show:before,#learndash_builder_box_wrap .learndash_selectors .learndash-selector-header .ld-course-builder-action-show:before{content:"\f347"}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-hide:before,#learndash_builder_box_wrap .learndash_selectors .learndash-selector-header .ld-course-builder-action-hide:before{content:"\f343"}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-item.ld-course-builder-title-edit>.ld-course-builder-header>.ld-course-builder-action-show-hide,#learndash_builder_box_wrap .learndash_selectors .ld-course-builder-header .ld-course-builder-action-show-hide{display:none}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-header .ld-course-builder-action-show-hide{display:inline-block}div#ld-selector-draggable-group .ld-course-builder-header .ld-course-builder-action-show-hide{display:none}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items{min-height:20px;clear:both;width:100%;padding:0;margin:0;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items:empty{border:2px dashed #bbb;padding:5px;margin-bottom:5px}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-item{background-color:#f8f8f8;width:100%;display:inline-block;margin:0 0 3px 0;padding:5px 5px 1px 5px;clear:both;border:1px solid #d8d8d8;min-height:20px;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-item h4.ld-course-builder-lesson-title{float:right;width:100%;margin:0;padding:0}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-item .ld-course-builder-sub-items{float:right;width:100%;margin-top:5px;padding:0;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-items{min-height:20px;clear:both;width:100%;padding:0;display:inline-block}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-items:empty{border:2px dashed #bbb;padding:5px;margin:5px 0;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-item{width:100%;min-height:20px;display:inline-block;list-style:none;padding:5px 5px 1px 5px;margin:0 0 3px 0;clear:both;border:1px solid #bbb;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-item h4.ld-course-builder-topic-title{color:#000;float:right;width:100%;margin:0}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-items{min-height:20px;clear:both;display:inline-block;margin:0;width:100%;padding:0;float:right;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items .ld-course-builder-quiz-items{margin:0;width:100%;padding:0;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items .ld-course-builder-topic-items .ld-course-builder-quiz-items{margin:0;width:100%;box-sizing:border-box;margin-bottom:5px}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-items:empty{border:2px dashed #bbb;padding:5px;margin-bottom:5px;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-item{width:100%;min-height:20px;display:inline-block;padding:5px 5px 1px 5px;margin:0 0 3px 0;clear:both;border:1px solid #bbb;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-item:last-child{margin-bottom:0}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-item h4.ld-course-builder-quiz-title{float:right;width:100%;margin:0}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-items{min-height:20px;clear:both;display:inline-block;margin:0;width:100%;padding:0;float:right;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-items:empty{border:2px dashed #bbb;padding:5px;margin-bottom:5px;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-item{width:100%;min-height:20px;display:inline-block;padding:5px 5px 1px 5px;margin:0 0 3px 0;clear:both;border:1px solid #bbb;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-item:last-child{margin-bottom:0}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-item h4.ld-course-builder-question-title{float:right;width:100%;margin:0}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items .ld-course-builder-lesson-item,#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items:empty,#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-lessons li{background-color:#ebf5fb}#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-lessons li.ld-selected{background-color:#aed6f1}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-items .ld-course-builder-topic-item,#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-items:empty,#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-topic li{background-color:#fdedec}#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-topic li.ld-selected{background-color:#f5b7b1}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-items .ld-course-builder-quiz-item,#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-items:empty,#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-quiz li{background-color:#fcf3cf}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-item.ld-selected,#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-quiz li.ld-selected{background-color:#f7dc6f}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-items .ld-course-builder-question-item,#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-items:empty,#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-question li{background-color:#d5f5e3}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-item.ld-selected,#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-question li.ld-selected{background-color:#83e2ac}#learndash_builder_box_wrap .learndash_selectors .learndash-selector-pager p.pager-info{padding:0;margin:0}#learndash_builder_box_wrap .learndash_selectors .learndash-selector-pager p.pager-info button{cursor:pointer}#learndash_builder_box_wrap .learndash_selectors .learndash-selector-pager .button.button-simple{border:medium none;box-shadow:none;font-size:14px;padding:0 3px 1px;margin:0 2px;line-height:18px}#learndash_builder_box_wrap .learndash_selectors .learndash-selector-pager p.pager-info input.page{width:50px;text-align:center}#learndash_builder_box_wrap .ld-selector-draggable-group li,#learndash_builder_box_wrap .ld-selector-draggable-group ul{list-style:none}#learndash_builder_box_wrap .ld-selector-draggable-group li{clear:both}#learndash_builder_box_wrap .ld-selector-draggable-group .ld-course-builder-actions{display:none!important}#learndash_builder_box_wrap .learndash-header-left{float:right;margin-bottom:3px}#learndash_builder_box_wrap .learndash-header-right{float:left;margin-bottom:3px}#learndash_builder_box_wrap .learndash-header-right .ld-hide-all,#learndash_builder_box_wrap .learndash-header-right .ld-show-all{cursor:pointer;border-bottom:1px solid transparent}#learndash_builder_box_wrap .learndash-header-right .ld-hide-all:hover,#learndash_builder_box_wrap .learndash-header-right .ld-show-all:hover{border-bottom:1px solid}#learndash_builder_box_wrap .learndash-header-right .ld-divide-all{padding:0 2px}body.sfwd-courses_page_courses-builder #course-builder-title-box h2{margin:5px 0 0 0;padding:0}body.sfwd-courses_page_courses-builder #course-builder-title-box p{margin:0 0 10px 0}PKc\lCassets/css/sfwd_editor.min.cssnuW+Ahtml .mceContentBody{font:16px/22px Arial,Helvetica,sans-serif;width:1024px!important;line-height:1.5em;margin-top:60px!important;background-size:1122px 793px!important;height:793px!important}p{margin-left:15px}PKc\WW0assets/css/learndash-admin-settings-page.min.cssnuW+A.learndash-settings-page-wrap .error,.learndash-settings-page-wrap .error a{color:red}a.learndash-description-link{color:#000;text-decoration:none}span.learndash-description{display:none}.sfwd_options .sfwd_input p.ld-clear{margin:0;line-height:0}.sfwd_options .ld-setting-field-sub{padding-top:5px}.sfwd_options .ld-setting-field-sub input[type=button]{margin-right:5px}.ld-metabox-description p{margin:5px 0 0 0;color:#666;font-weight:400;font-style:italic}.sfwd_options .sfwd_option_label .descripton{clear:both;display:block;float:left;font-weight:400;text-align:left}.sfwd_options .ld-settings-sub-level-1 .sfwd_input{margin-left:10px;padding-left:10px;position:relative;border-left:1px solid #ccc}.sfwd_options .ld-settings-sub-level-1 .ld-settings-sub-level-2{margin-left:10px;padding-left:5px;border-left:1px solid #ccc}.sfwd_options .ld-settings-sub-level-1 .ld-settings-sub-level-2 .sfwd_input .sfwd_option_label{width:calc(38% - 1px);max-width:calc(300px - 10px)}.sfwd_options .ld-settings-inner .sfwd_input{margin-left:25px;padding-left:20px;border-left:1px solid #ccc}.sfwd_options .ld-settings-inner .sfwd_input .sfwd_option_label{margin-right:0;margin-left:0;padding-right:0;width:30%;min-width:none;max-width:none}.sfwd_options .ld-settings-inner .sfwd_input .sfwd_option_label.sfwd_option_label_full,.sfwd_options .sfwd_input .sfwd_option_label.sfwd_option_label_full{width:100%}.sfwd_options .ld-settings-inner .sfwd_input .sfwd_option_input{width:65%;min-width:120px;max-width:none}.sfwd_options .ld-settings-inner .sfwd_input .sfwd_option_input.sfwd_option_input_full,.sfwd_options .sfwd_option_input.sfwd_option_input_full{width:100%}.sfwd_options .sfwd_input_type_quiz-custom-fields .sfwd_option_input.sfwd_option_input_full{float:none}.sfwd_options .ld-switch-wrapper{display:flex;margin-top:5px}.sfwd_options .ld-switch{margin-right:16px;position:relative}.sfwd_options .ld-switch__input{border:none;height:100%;left:0;margin:0;opacity:0;padding:0;position:absolute;top:0;width:100%;z-index:1}.sfwd_options .ld-switch__track{background-color:#fff;border-radius:9px;border:2px solid #6c7781;box-sizing:border-box;content:"";display:inline-block;height:18px;transition:.2s background ease,.2s border ease;vertical-align:top;width:36px}.sfwd_options .ld-switch__thumb{background-color:#6c7781;border-radius:50%;border:5px solid #6c7781;box-sizing:border-box;display:block;height:10px;left:4px;position:absolute;top:4px;transition:.1s transform ease;width:10px}.sfwd_options .ld-switch__on-off{border-radius:100%;border:2px solid #6c7781;box-sizing:border-box;display:block;height:6px;position:absolute;right:6px;top:6px;width:6px}.sfwd_options .ld-switch__input:checked~.ld-switch__track{background-color:#11a0d2;border-color:#11a0d2}.sfwd_options .ld-switch__input:checked~.ld-switch__thumb{background-color:#fff;border-width:0;transform:translateX(18px)}.sfwd_options .ld-switch__input:checked~.ld-switch__on-off{background-color:#fff;border-radius:0;border:0;height:6px;left:8px;right:auto;width:2px}.sfwd_options .ld-switch__input:focus~.ld-switch__track{box-shadow:0 0 0 2px #fff,0 0 0 3px #6c7781;outline-offset:2px;outline:2px solid transparent}.sfwd_options .ld-switch__input:hover~.ld-switch__track{border-color:#11a0d2}.sfwd_options .ld-switch__input:checked:hover~.ld-switch__track{background-color:#6c7781;border-color:#6c7781}.sfwd_options .ld-switch.-disabled~label,.sfwd_options .ld-switch__input[disabled=disabled]{pointer-events:none}.sfwd_options .ld-switch__input[disabled=disabled]{opacity:0!important}.sfwd_options .ld-switch__input[disabled=disabled]~.ld-switch__track{opacity:.5}.sfwd_options .ld-radio-input{border:0;clip-path:inset(50%);clip:rect(1px,1px,1px,1px);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.sfwd_options .ld-radio-input__label{margin-right:16px}.sfwd_options .ld-radio-input__label:before{border-radius:100%;border:2px solid #6c7781;box-sizing:border-box;content:"";display:inline-block;height:16px;margin-right:10px;vertical-align:middle;width:16px}.sfwd_options .ld-radio-input__label>span{vertical-align:middle;font-weight:700;color:#5f5f5f}.sfwd_options .ld-radio-input:checked+.ld-radio-input__label:before{background-color:#11a0d2;box-shadow:inset 0 0 0 2px #fff}.sfwd_options .ld-radio-input:checked:focus+.ld-radio-input__label:before{box-shadow:inset 0 0 0 2px #fff,0 0 0 2px #fff,0 0 0 3px #6c7781}.sfwd_options .ld-radio-input:focus+.ld-radio-input__label:before{box-shadow:0 0 0 2px #fff,0 0 0 3px #6c7781;outline-offset:2px;outline:2px solid transparent}.sfwd_options .ld-radio-input:hover+.ld-radio-input__label:before{border-color:#11a0d2}.sfwd_options .ld-radio-input[disabled=disabled],.sfwd_options .ld-radio-input[disabled=disabled]+.ld-radio-input__label{pointer-events:none}.sfwd_options .ld-radio-input[disabled=disabled]+.ld-radio-input__label:before{opacity:.5}.sfwd_options .ld-radio-description{color:#666;padding-left:25px}.sfwd_options .ld-checkbox-input{border:0;clip-path:inset(50%);clip:rect(1px,1px,1px,1px);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.sfwd_options .ld-checkbox-input__label{margin-right:16px}.sfwd_options .ld-checkbox-input__label:before{border:2px solid #6c7781;box-sizing:border-box;content:"";display:inline-block;height:16px;margin-right:10px;vertical-align:middle;width:16px}.sfwd_options .ld-checkbox-input__label>span{vertical-align:middle}.sfwd_options .ld-checkbox-input:checked+.ld-checkbox-input__label:before{align-items:center;color:#11a0d2;content:"\2713";display:inline-flex;justify-content:center;font-weight:900}.sfwd_options .ld-checkbox-input:focus+.ld-checkbox-input__label:before{box-shadow:0 0 0 2px #fff,0 0 0 3px #6c7781;outline-offset:2px;outline:2px solid transparent}.sfwd_options .ld-checkbox-input:hover+.ld-checkbox-input__label:before{border-color:#11a0d2}.sfwd_options .ld-checkbox-input[disabled=disabled],.sfwd_options .ld-checkbox-input[disabled=disabled]+.ld-checkbox-input__label{pointer-events:none}.sfwd_options .ld-checkbox-input[disabled=disabled]+.ld-checkbox-input__label:before{opacity:.5}.sfwd_options .sfwd_option_input p.learndash-section-field-checkbox-p{margin:3px 0 0 0;padding:0}.sfwd_options .learndash-section-field-text{border-radius:2px;border:1px solid #ddd;box-shadow:none;box-sizing:border-box;font-size:14px;padding:5px 7px;width:100%}.sfwd_options .learndash-section-field-number.-medium,.sfwd_options .learndash-section-field-text.-medium,.sfwd_options .learndash-section-field-url.-medium{width:50%}.sfwd_options .learndash-section-field-number.-small,.sfwd_options .learndash-section-field-text.-small,.sfwd_options .learndash-section-field-url.-small{width:100px}.sfwd_options .learndash-section-field-number:focus,.sfwd_options .learndash-section-field-text:focus{border-color:#11a0d2;outline:0}.sfwd_options .learndash-section-field-number:hover,.sfwd_options .learndash-section-field-text:hover,.sfwd_options .learndash-section-field-url:hover{border-color:#999}.sfwd_options .learndash-section-field-number.full-text,.sfwd_options .learndash-section-field-text.full-text,.sfwd_options .learndash-section-field-url.full-text{width:100%}.sfwd_options .ld-select{background-color:#fff;border-radius:3px;border:1px solid #ccc;display:inline-block;overflow:hidden;position:relative;vertical-align:middle;width:100%;max-width:450px}.sfwd_options .ld-select:after{border:5px solid transparent;border-bottom:0;border-top-color:#000;content:"";height:0;pointer-events:none;position:absolute;right:5px;speak:none;top:50%;transform:translate(0,-50%);width:0}.sfwd_options .ld-select-multiple:after,.sfwd_options .ld-select2:after{border:none}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#72777c!important}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#11a0d2!important}.sfwd_options .ld-select-multiple.ld-select2 .select2-container .select2-selection__rendered>:first-child.select2-search--inline{width:100%!important}.sfwd_options .ld-select-multiple.ld-select2 .select2-container .select2-selection__rendered>:first-child.select2-search--inline .select2-search__field{width:100%!important}.sfwd_options .ld-select-multiple.ld-select2 .select2-container li{margin-bottom:0}.sfwd_options .select2-container .select2-search--inline .select2-search__field{margin-top:3px;margin-bottom:2px}.sfwd_options .ld-select select{-moz-appearance:none;-webkit-appearance:inherit;appearance:none;background:0 0;border:0;font-size:14px;height:100%;margin:0;padding:5px 10px;width:100%;max-width:100%;z-index:2}.sfwd_options .ld-select select:focus{box-shadow:inset 0 0 0 1px #6c7781}.sfwd_options .ld-select select::-ms-expand{display:none}.sfwd_options .ld-select select:-moz-focusring{text-shadow:$select--focus-ring--text-shadow}.sfwd_options .ld-select select option{border:0;width:100%}.sfwd_options .ld-select2 .select2-container{width:100%!important;max-width:450px;height:100%}.sfwd_options .ld-select2 .select2-container--default .select2-selection--single{padding-top:3px;padding-bottom:3px;height:100%;border:0}.sfwd_options .ld-select2 .select2-container--default .select2-selection--single .select2-selection__arrow{height:100%}.sfwd_options .ld-select2 .select2-container--default .select2-selection--single .select2-selection__arrow b{border-top-color:inherit}.sfwd_options .select2-container--default .select2-selection--multiple{border:0 solid #aaa!important}.sfwd_options .select2-container .select2-search--inline .select2-search__field{padding-top:5px!important;color:#444!important}.sfwd_options .sfwd_option_div p.ld-radio-input-wrapper{margin-bottom:1px}.sfwd_options .sfwd_input textarea{color:#515151;margin:0;font-size:14px;line-height:25px;width:100%}.sfwd_options .sfwd_input>.sfwd_input:first-child{margin-top:20px}.sfwd_options .sfwd_option_input p{margin-top:0}.sfwd_options .sfwd_option_label{box-sizing:border-box;flex:1 0 100%;font-weight:700;margin-bottom:10px;padding-right:0}.sfwd_options .sfwd_option_input{flex:1 0 100%;margin-bottom:10px}.sfwd_options .sfwd_option_div select[multiple]{width:100%;min-height:100px}.sfwd_options .ld-settings-inner-state-closed,.sfwd_options .ld-settings-sub.ld-settings-sub-state-closed,.sfwd_options .ld-theme-settings-section-state-closed{display:none}.sfwd_options .ld-settings-inner-state-open .sfwd_options .ld-theme-settings-section-state-open,.sfwd_options .ld-settings-sub.ld-settings-sub-state-open{display:block}.sfwd_options .ld-settings-sub-advanced .sfwd_input{margin-left:1px;border-left:1px solid #ccc}.sfwd_options .ld-settings-sub-advanced .ld-settings-sub-advanced-inner-state-closed{display:none}.sfwd_options .ld-settings-sub-advanced .ld-settings-sub-advanced-inner-state-open{display:block}.sfwd_options .ld-settings-sub-advanced .ld-settings-sub-advanced-inner .sfwd_option_label{width:auto}.sfwd_options .ld-settings-sub-advanced .ld-settings-sub-advanced-inner .sfwd_option_input{width:auto}.sfwd_options .tooltip{position:relative;display:inline-block;opacity:1}.sfwd_options .tooltip .tooltiptext{visibility:hidden;width:180px;background-color:#11a0d2;color:#fff;text-align:center;padding:5px 0;border-radius:6px;margin-left:-90px;bottom:100%;left:50%;margin-bottom:5px;position:absolute;z-index:1}.sfwd_options .-disabled.tooltip:hover .tooltiptext{visibility:visible}.sfwd_options .tooltip .tooltiptext::after{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#11a0d2 transparent transparent transparent}.sfwd_options .form_table_wrapper{margin-top:0;padding:0;border:0 solid #c2c2c2}.sfwd_options .form_table_wrapper table{border-collapse:collapse}.sfwd_options .form_table_wrapper #form_add{background-color:transparent;background-image:url("data:image/svg+xml,%3Csvg width='256' height='256' viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23007cba' d='M185.066 128c0 3.534-2.866 6-6.4 6H134v44.666c0 3.534-2.467 6.399-6 6.399-3.534 0-6-2.865-6-6.399V134H77.332c-3.535 0-6.4-2.466-6.4-6s2.866-6 6.4-6H122V77.331c0-3.534 2.466-6.4 6-6.4 3.533 0 6 2.866 6 6.4V122h44.666c3.534 0 6.4 2.466 6.4 6zM256 128C256 57.42 198.58 0 128 0S0 57.42 0 128s57.42 128 128 128 128-57.42 128-128zm-12.8 0c0 63.521-51.679 115.2-115.2 115.2-63.522 0-115.2-51.679-115.2-115.2C12.8 64.478 64.478 12.8 128 12.8c63.521 0 115.2 51.678 115.2 115.2z' fill-rule='nonzero'%3E%3C/path%3E%3C/svg%3E");background-position:center left 3px;background-repeat:no-repeat;background-size:16px 16px;border:0;color:#007cba;cursor:pointer;font-size:14px;font-weight:700;padding:5px 10px 5px 30px;box-shadow:none}.sfwd_options .form_table_wrapper #form_add:hover{background-image:url("data:image/svg+xml,%3Csvg width='256' height='256' viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%2311a0d2' d='M185.066 128c0 3.534-2.866 6-6.4 6H134v44.666c0 3.534-2.467 6.399-6 6.399-3.534 0-6-2.865-6-6.399V134H77.332c-3.535 0-6.4-2.466-6.4-6s2.866-6 6.4-6H122V77.331c0-3.534 2.466-6.4 6-6.4 3.533 0 6 2.866 6 6.4V122h44.666c3.534 0 6.4 2.466 6.4 6zM256 128C256 57.42 198.58 0 128 0S0 57.42 0 128s57.42 128 128 128 128-57.42 128-128zm-12.8 0c0 63.521-51.679 115.2-115.2 115.2-63.522 0-115.2-51.679-115.2-115.2C12.8 64.478 64.478 12.8 128 12.8c63.521 0 115.2 51.678 115.2 115.2z' fill-rule='nonzero'%3E%3C/path%3E%3C/svg%3E");color:#11a0d2}.sfwd_options .form_table_wrapper .form_move{text-decoration:none}.sfwd_options .form_table_wrapper .form_delete{background-color:transparent;background-image:url("data:image/svg+xml,%3Csvg aria-hidden='true' role='img' focusable='false' class='dashicon dashicons-dismiss' xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath fill='%23a00' d='M10 2c4.42 0 8 3.58 8 8s-3.58 8-8 8-8-3.58-8-8 3.58-8 8-8zm5 11l-3-3 3-3-2-2-3 3-3-3-2 2 3 3-3 3 2 2 3-3 3 3z'%3E%3C/path%3E%3C/svg%3E");background-position:center left 3px;background-repeat:no-repeat;border:0;color:#a00;cursor:pointer;font-weight:700;margin:0;opacity:0;padding:5px 10px 5px 30px;transition:opacity .1s;visibility:hidden}.sfwd_options .form_table_wrapper .form_delete:hover{color:red}.sfwd_options .form_table_wrapper tbody.ui-sortable tr:hover .form_delete{opacity:1;visibility:visible}.sfwd_options .form_table_wrapper tbody.ui-sortable tr td,.sfwd_options .form_table_wrapper thead tr th{padding:10px 5px;transition:box-shadow .1s}.sfwd_options .form_table_wrapper tbody.ui-sortable tr:hover td{box-shadow:0 1px 0 0 #11a0d2,0 -1px 0 0 #11a0d2}.sfwd_options .form_table_wrapper tbody.ui-sortable tr:hover td:first-of-type{box-shadow:0 1px 0 0 #11a0d2,0 -1px 0 0 #11a0d2,-1px 0 0 0 #11a0d2}.sfwd_options .form_table_wrapper tbody.ui-sortable tr:hover td:last-of-type{box-shadow:0 1px 0 0 #11a0d2,0 -1px 0 0 #11a0d2,1px 0 0 0 #11a0d2}.sfwd_options .form_table_wrapper tbody.ui-sortable tr td:first-of-type{text-align:center}.sfwd_options .form_table_wrapper .ld-select.-field select{padding:0 10px}.sfwd_options .form_table_wrapper #form_table thead th{text-transform:uppercase}.sfwd_options .form_table_wrapper #form_add_wrapper{margin-top:10px;margin-left:10px}#learndash-quiz-resultList ul#resultList{width:100%}#learndash-quiz-resultList ul#resultList li{padding:5px;border:1;border:1px dotted}#learndash-quiz-resultList ul#resultList li .resultHeader{margin-bottom:5px;padding:10px;background-color:#ebebeb}#learndash-quiz-resultList input.addResult{background-color:transparent;background-image:url("data:image/svg+xml,%3Csvg width='256' height='256' viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23007cba' d='M185.066 128c0 3.534-2.866 6-6.4 6H134v44.666c0 3.534-2.467 6.399-6 6.399-3.534 0-6-2.865-6-6.399V134H77.332c-3.535 0-6.4-2.466-6.4-6s2.866-6 6.4-6H122V77.331c0-3.534 2.466-6.4 6-6.4 3.533 0 6 2.866 6 6.4V122h44.666c3.534 0 6.4 2.466 6.4 6zM256 128C256 57.42 198.58 0 128 0S0 57.42 0 128s57.42 128 128 128 128-57.42 128-128zm-12.8 0c0 63.521-51.679 115.2-115.2 115.2-63.522 0-115.2-51.679-115.2-115.2C12.8 64.478 64.478 12.8 128 12.8c63.521 0 115.2 51.678 115.2 115.2z' fill-rule='nonzero'%3E%3C/path%3E%3C/svg%3E");background-position:center left 3px;background-repeat:no-repeat;background-size:16px 16px;border:0;color:#007cba;cursor:pointer;font-size:14px;font-weight:700;padding:5px 10px 5px 30px}#learndash-quiz-resultList ul#resultList li input.deleteResult{float:right;background-color:transparent;background-image:url("data:image/svg+xml,%3Csvg aria-hidden='true' role='img' focusable='false' class='dashicon dashicons-dismiss' xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath fill='%23a00' d='M10 2c4.42 0 8 3.58 8 8s-3.58 8-8 8-8-3.58-8-8 3.58-8 8-8zm5 11l-3-3 3-3-2-2-3 3-3-3-2 2 3 3-3 3 2 2 3-3 3 3z'%3E%3C/path%3E%3C/svg%3E");background-position:center left 3px;background-repeat:no-repeat;border:0;color:#a00;cursor:pointer;font-weight:700;margin:0;opacity:0;padding:5px 10px 5px 30px;transition:opacity .1s;visibility:hidden}#learndash-quiz-resultList ul#resultList li:hover input.deleteResult{opacity:1;visibility:visible}#learndash-quiz-resultList #resultList li .expand-arrow{cursor:pointer;margin-top:3px;float:right}#learndash-quiz-resultList #resultList li .expand-arrow-up svg{transform:rotate(180deg)}.sfwd_options .sfwd_option_label .descripton p{margin-bottom:0}.sfwd_options .sfwd_option_input_full{margin-left:0;margin-right:0}.learndash_navigation_questions_list ul.learndash-quiz-questions li a{font-weight:400;text-decoration:none!important}.learndash_navigation_questions_list ul.learndash-quiz-questions li.ld-question-overview-widget-item-current a{font-weight:700}.learndash_navigation_questions_list .ld-question-overview-widget-add{font-weight:700;text-decoration:none!important}.sfwd_options #learndash-quiz-admin-data-handling-settings_associated_settings_field,.sfwd_options #learndash-quiz-admin-data-handling-settings_emailNotification_field,.sfwd_options #learndash-quiz-admin-data-handling-settings_statisticsIpLock_field,.sfwd_options #learndash-quiz-admin-data-handling-settings_timeLimitCookie_field,.sfwd_options #learndash-quiz-admin-data-handling-settings_toplistDataAddBlock_field,.sfwd_options #learndash-quiz-admin-data-handling-settings_toplistDataShowIn_field,.sfwd_options #learndash-quiz-display-content-settings_quizModus_multiple_questionsPerPage_field,.sfwd_options #learndash-quiz-display-content-settings_quizModus_single_feedback_field,.sfwd_options #learndash-quiz-display-content-settings_showMaxQuestionValue_field,.sfwd_options #learndash-quiz-display-content-settings_showMaxQuestion_field,.sfwd_options #learndash-quiz-results-options_resultText_field{border-left:none;margin-left:0;padding-left:0}.sfwd_options #learndash-course-access-settings_course_access_list_field,.sfwd_options #learndash-course-display-content-settings_course_materials_field,.sfwd_options #learndash-lesson-display-content-settings_lesson_assignment_points_amount_field,.sfwd_options #learndash-lesson-display-content-settings_lesson_materials_field,.sfwd_options #learndash-quiz-display-content-settings_quizModus_single_back_button_field,.sfwd_options #learndash-quiz-display-content-settings_quiz_materials_field,.sfwd_options #learndash-quiz-display-content-settings_showMaxQuestionValue_field,.sfwd_options #learndash-topic-display-content-settings_lesson_assignment_points_amount_field,.sfwd_options #learndash-topic-display-content-settings_topic_materials_field{border-left:none}.sfwd_options #learndash-lesson-access-settings_visible_after_field,.sfwd_options #learndash-lesson-access-settings_visible_after_specific_date_field,.sfwd_options #learndash-quiz-display-content-settings_quizModus_single_back_button_field{border-left:none;padding-left:0}.sfwd_options #learndash-quiz-results-options_resultText_field{padding-left:10px}.sfwd_options input[name=templateLoad],.sfwd_options input[name=templateName]{margin-top:5px}.ld-settings-inner .ld-radio-input__label>span{font-weight:400}.ld-divider{border-bottom:1px solid #eee;margin:20px 0 20px 0}.sfwd_options .ld-settings-inner .sfwd_option_input,.sfwd_options .ld-settings-inner-lesson_video_display_timing_after .sfwd_option_input{width:40%!important}.sfwd_options #learndash-lesson-access-settings_visible_after_specific_date_field .sfwd_option_input{width:80%!important}.sfwd_options .ld-settings-sub .sfwd_option_label{width:calc(38% - 15px);max-width:calc(300px - 15px)}.sfwd_options #learndash-lesson-display-content-settings_assignment_upload_limit_count_field .sfwd_option_label,.sfwd_options #learndash-lesson-display-content-settings_lesson_assignment_deletion_enabled_field .sfwd_option_label{width:35%!important}.sfwd_options #learndash-lesson-access-settings_visible_after_specific_date_field input[type=number]{padding:0!important}.sfwd_options .ld-settings-inner-lesson_video_display_timing_after .sfwd_option_label{width:35%!important}.sfwd_options .ld-settings-inner-quizModus_single .sfwd_option_input{width:65%!important}.sfwd_options .ld-settings-email-header-wrapper{margin-bottom:30px}.sfwd_options .ld-settings-email-header{font-weight:700}.sfwd_options .ld-settings-email-description{font-weight:300}.sfwd_options .learndash_settings_field_invalid label.sfwd_label{color:red}.sfwd_options .learndash_settings_field_invalid input:invalid{border:1px solid red;box-shadow:none}.sfwd_options .learndash_settings_field_invalid .learndash-section-field-error{color:red}#learndash-settings-fields-notice-errors p.errors-header{font-weight:900}#learndash-settings-fields-notice-errors ul.errors-list{list-style:disc}#learndash-settings-fields-notice-errors ul.errors-list li{margin-left:15px}.ld__builder-sidebar-widget .components-checkbox-control__input[type=checkbox]:checked::before{content:url(data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%231e8cbe%27%2F%3E%3C%2Fsvg%3E)}.plugin-update p.ld-plugin-update-notice::before{content:'';margin-right:0}.notice.ld-plugin-update-notice,.plugin-update .ld-plugin-update-notice{padding:10px;margin-top:10px}.ld-plugin-update-notice .version{font-weight:700}.ld-plugin-update-notice .header{font-size:130%;font-weight:700}PKc\C،cBcB$assets/css/learndash-builder.min.cssnuW+A#learndash_builder_box_wrap{width:100%;position:relative;display:inline-block;border:1px solid #ccc}#learndash_builder_box_wrap .learndash_selectors{width:40%;border-right:0 solid #ccc;padding:10px 5px 10px 10px;float:left;position:relative;display:inline-block;box-sizing:border-box}#learndash_builder_box_wrap .learndash-selector-container{clear:both}#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-lessons:empty,#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-question:empty,#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-quiz:empty,#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-topic:empty{border:2px dashed #bbb;padding:5px;margin-bottom:10px;box-sizing:border-box;float:left;width:100%}#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-lessons:empty{background-color:#ebf5fb}#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-topic:empty{background-color:#fdedec}#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-quiz:empty{background-color:#fcf3cf}#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-question:empty{background-color:#d5f5e3}#learndash_builder_box_wrap .learndash_selector_details{position:relative;display:inline-block;width:60%;padding:10px;float:left}#learndash_builder_box_wrap .learndash_selectors h3.learndash-selector-header{padding:5px;border:1px solid #ccc;background-color:#e5e5e5;margin:0 0 5px 0;float:left;width:100%;clear:both;box-sizing:border-box}#learndash_builder_box_wrap .learndash_selectors .learndash-selector-post-listing{float:left;width:100%;padding:0}#learndash_builder_box_wrap .learndash_selectors .learndash-selector-pager{width:60%;float:left;margin-bottom:5px}#learndash_builder_box_wrap .learndash_selectors .learndash-selector-search{width:40%;float:right;margin-bottom:5px}#learndash_builder_box_wrap .learndash_selectors .learndash-selector-search input{width:100%;border:1px solid #ddd}#learndash_builder_box_wrap .learndash_selectors ul{margin-top:0;clear:both;margin-bottom:10px}#learndash_builder_box_wrap .learndash_selectors li{background-color:#f8f8f8;width:100%;display:inline-block;margin:0 0 5px 0;padding:5px 5px 1px 5px;clear:both;border:1px solid #d8d8d8;float:left;min-height:20px;box-sizing:border-box}#learndash_builder_box_wrap .learndash_selectors li.ld-disabled .ld-course-builder-title-text{text-decoration:line-through}.ui-state-highlight{height:1.5em;line-height:1.2em}#learndash_builder_box_wrap .learndash_selector_details ul li{border:1px solid #ccc;padding:5px}#learndash_builder_box_wrap .learndash_selector_details ul{width:100%;min-height:325px;border:#bbb 5px dashed;padding:10px}#learndash_builder_box_wrap .learndash_selector_details ul li.placeholder{border:0}#learndash_builder_box_wrap .learndash_builder_items{background-color:#fff;float:right;padding:10px 10px 10px 5px;width:calc(60% - 5px);box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .movable-placeholder{width:100%;height:100px;display:block;margin:0 0 15px 0;border-style:dashed;border-width:2px;border-color:#bbb}#learndash_builder_box_wrap .ld-course-builder-title{float:left}#learndash_builder_box_wrap .ld-course-builder-header{position:relative;float:left;width:100%}#learndash_builder_box_wrap .ld-course-builder-actions{width:20px;height:20px;float:left}#learndash_builder_box_wrap .ld-course-builder-action{background-color:#b8b8b8;color:#fff;width:20px;height:20px;text-align:center;line-height:20px;margin-left:5px}#learndash_builder_box_wrap .ld-course-builder-sub-actions{display:none;padding-right:5px;z-index:100}#learndash_builder_box_wrap .ld-course-builder-sub-actions span{cursor:pointer}#learndash_builder_box_wrap .ld-course-builder-actions{float:left;margin-right:5px}#learndash_builder_box_wrap .ld-course-builder-action:hover{color:#000}#learndash_builder_box_wrap .ld-course-builder-action-remove:hover,#learndash_builder_box_wrap .ld-course-builder-action-trash:hover{color:red}#learndash_builder_box_wrap li.ld-disabled .ld-course-builder-sub-actions .ld-course-builder-action-trash{display:none}#learndash_builder_box_wrap .learndash_selectors .ld-course-builder-sub-actions .ld-course-builder-action-remove{display:none}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-sub-actions .ld-course-builder-action-trash{display:none}#learndash_builder_box_wrap .ld-course-builder-action-hide,#learndash_builder_box_wrap .ld-course-builder-action-show{float:right}#learndash_builder_box_wrap .ld-course-builder-action-add,#learndash_builder_box_wrap .ld-course-builder-action-show-hide{float:right;cursor:pointer}#learndash_builder_box_wrap .ld-course-builder-action-add:before{content:"\f132";line-height:23px}#learndash_builder_box_wrap .ld-course-builder-action-add img{display:none}#learndash_builder_box_wrap .ld-course-builder-action-add-pending{float:right;background-color:transparent}#learndash_builder_box_wrap .ld-course-builder-action-add-pending:before{content:""}#learndash_builder_box_wrap .ld-course-builder-action-add-pending img{display:inline;float:right;width:20px;height:20px}#learndash_builder_box_wrap .ld-course-builder-action-remove:before{content:"\f335"}#learndash_builder_box_wrap .ld-course-builder-action-trash:before{content:"\f182"}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-move:hover,#learndash_builder_box_wrap .learndash_selectors li span.ld-course-builder-action-move{cursor:move}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-move,#learndash_builder_box_wrap .learndash_selectors li span.ld-course-builder-action-move{float:left;margin-left:0}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-move:before,#learndash_builder_box_wrap .learndash_selectors li span.ld-course-builder-action-move:before{content:"\f333"}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-edit:before,#learndash_builder_box_wrap .learndash_selectors li .ld-course-builder-action-edit:before{content:"\f464"}#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-pencil{background-color:transparent;color:inherit}#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-pencil:before{content:"\f464"}#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-ok{background-color:transparent;color:green}#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-ok:before{content:"\f147"}#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-cancel{background-color:transparent;color:red}#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-cancel:before{content:"\f158"}#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-cancel,#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-ok,#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-pencil{display:none;margin:0;cursor:pointer;float:none;position:relative}#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-pencil:hover{color:#fff;background-color:#b8b8b8}#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-ok:hover{color:#fff;background-color:green}#learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-cancel:hover{background-color:red;color:#fff}#learndash_builder_box_wrap span.ld-course-builder-title{display:table-cell}#learndash_builder_box_wrap .learndash_selectors span.ld-course-builder-title{width:calc(100% - 30px)}#learndash_builder_box_wrap .learndash_builder_items span.ld-course-builder-title{width:calc(100% - 50px)}#learndash_builder_box_wrap .ld-course-builder-title-edit span.ld-course-builder-title{width:100%}#learndash_builder_box_wrap .ld-course-builder-title-text{float:left;display:inline;line-height:24px;min-height:24px;position:relative}#learndash_builder_box_wrap .ld-course-builder-title-edit .ld-course-builder-title-text{width:100%}#learndash_builder_box_wrap .ld-course-builder-title-edit .ld-course-builder-title input{padding:0;margin:0;position:relative;width:100%}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-view:before,#learndash_builder_box_wrap .learndash_selectors li .ld-course-builder-action-view:before{content:"\f504"}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-show:before,#learndash_builder_box_wrap .learndash_selectors .learndash-selector-header .ld-course-builder-action-show:before{content:"\f347"}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-hide:before,#learndash_builder_box_wrap .learndash_selectors .learndash-selector-header .ld-course-builder-action-hide:before{content:"\f343"}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-item.ld-course-builder-title-edit>.ld-course-builder-header>.ld-course-builder-action-show-hide,#learndash_builder_box_wrap .learndash_selectors .ld-course-builder-header .ld-course-builder-action-show-hide{display:none}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-header .ld-course-builder-action-show-hide{display:inline-block}div#ld-selector-draggable-group .ld-course-builder-header .ld-course-builder-action-show-hide{display:none}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items{min-height:20px;clear:both;width:100%;padding:0;margin:0;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items:empty{border:2px dashed #bbb;padding:5px;margin-bottom:5px}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-item{background-color:#f8f8f8;width:100%;display:inline-block;margin:0 0 3px 0;padding:5px 5px 1px 5px;clear:both;border:1px solid #d8d8d8;min-height:20px;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-item h4.ld-course-builder-lesson-title{float:left;width:100%;margin:0;padding:0}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-item .ld-course-builder-sub-items{float:left;width:100%;margin-top:5px;padding:0;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-items{min-height:20px;clear:both;width:100%;padding:0;display:inline-block}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-items:empty{border:2px dashed #bbb;padding:5px;margin:5px 0;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-item{width:100%;min-height:20px;display:inline-block;list-style:none;padding:5px 5px 1px 5px;margin:0 0 3px 0;clear:both;border:1px solid #bbb;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-item h4.ld-course-builder-topic-title{color:#000;float:left;width:100%;margin:0}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-items{min-height:20px;clear:both;display:inline-block;margin:0;width:100%;padding:0;float:left;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items .ld-course-builder-quiz-items{margin:0;width:100%;padding:0;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items .ld-course-builder-topic-items .ld-course-builder-quiz-items{margin:0;width:100%;box-sizing:border-box;margin-bottom:5px}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-items:empty{border:2px dashed #bbb;padding:5px;margin-bottom:5px;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-item{width:100%;min-height:20px;display:inline-block;padding:5px 5px 1px 5px;margin:0 0 3px 0;clear:both;border:1px solid #bbb;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-item:last-child{margin-bottom:0}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-item h4.ld-course-builder-quiz-title{float:left;width:100%;margin:0}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-items{min-height:20px;clear:both;display:inline-block;margin:0;width:100%;padding:0;float:left;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-items:empty{border:2px dashed #bbb;padding:5px;margin-bottom:5px;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-item{width:100%;min-height:20px;display:inline-block;padding:5px 5px 1px 5px;margin:0 0 3px 0;clear:both;border:1px solid #bbb;box-sizing:border-box}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-item:last-child{margin-bottom:0}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-item h4.ld-course-builder-question-title{float:left;width:100%;margin:0}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items .ld-course-builder-lesson-item,#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items:empty,#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-lessons li{background-color:#ebf5fb}#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-lessons li.ld-selected{background-color:#aed6f1}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-items .ld-course-builder-topic-item,#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-items:empty,#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-topic li{background-color:#fdedec}#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-topic li.ld-selected{background-color:#f5b7b1}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-items .ld-course-builder-quiz-item,#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-items:empty,#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-quiz li{background-color:#fcf3cf}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-item.ld-selected,#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-quiz li.ld-selected{background-color:#f7dc6f}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-items .ld-course-builder-question-item,#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-items:empty,#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-question li{background-color:#d5f5e3}#learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-item.ld-selected,#learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-question li.ld-selected{background-color:#83e2ac}#learndash_builder_box_wrap .learndash_selectors .learndash-selector-pager p.pager-info{padding:0;margin:0}#learndash_builder_box_wrap .learndash_selectors .learndash-selector-pager p.pager-info button{cursor:pointer}#learndash_builder_box_wrap .learndash_selectors .learndash-selector-pager .button.button-simple{border:medium none;box-shadow:none;font-size:14px;padding:0 3px 1px;margin:0 2px;line-height:18px}#learndash_builder_box_wrap .learndash_selectors .learndash-selector-pager p.pager-info input.page{width:50px;text-align:center}#learndash_builder_box_wrap .ld-selector-draggable-group li,#learndash_builder_box_wrap .ld-selector-draggable-group ul{list-style:none}#learndash_builder_box_wrap .ld-selector-draggable-group li{clear:both}#learndash_builder_box_wrap .ld-selector-draggable-group .ld-course-builder-actions{display:none!important}#learndash_builder_box_wrap .learndash-header-left{float:left;margin-bottom:3px}#learndash_builder_box_wrap .learndash-header-right{float:right;margin-bottom:3px}#learndash_builder_box_wrap .learndash-header-right .ld-hide-all,#learndash_builder_box_wrap .learndash-header-right .ld-show-all{cursor:pointer;border-bottom:1px solid transparent}#learndash_builder_box_wrap .learndash-header-right .ld-hide-all:hover,#learndash_builder_box_wrap .learndash-header-right .ld-show-all:hover{border-bottom:1px solid}#learndash_builder_box_wrap .learndash-header-right .ld-divide-all{padding:0 2px}body.sfwd-courses_page_courses-builder #course-builder-title-box h2{margin:5px 0 0 0;padding:0}body.sfwd-courses_page_courses-builder #course-builder-title-box p{margin:0 0 10px 0}PKc\/6..-assets/css/learndash-admin-shortcodes-rtl.cssnuW+A/* Required for Dashicons to work properly */ i.mce-i-icon { font: 400 20px/1 dashicons; padding: 0; vertical-align: top; speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; margin-right: -2px; padding-left: 2px; } #TB_ajaxContent { padding: 0 0 30px 0; width: 100%!important; overflow: hidden; } /* Added z-index to force popup on top of LD headers and WP admin menu. */ .ui-dialog.ld-shortcodes { z-index: 160000 !important; } #learndash_shortcodes_wrap { position: relative; margin: 0; height: 97.5%; } #learndash_shortcodes_tabs { font-family: Helvetica, Arial; color: #333; font-size: 12px; text-align: right; } #learndash_shortcodes_tabs { width: 150px; height: 100%; min-height: 100%; background: #ccc; border-left: 1px solid #EEE; float: right; overflow-y: scroll; } #learndash_shortcodes_tabs ul { list-style: none; margin: 0px; padding: 0px; width: 100%; } #learndash_shortcodes_tabs ul li { width: 100%; font-weight: bold; margin: 0; } #learndash_shortcodes_tabs li.current { display: block; margin: 0px; } #learndash_shortcodes_tabs li.current a { background: #FFF; box-shadow: 0 -1px 0 #eee; } #learndash_shortcodes_tabs ul li a { display: block; /* padding: 14px 20px; */ padding: 10px 10px; font-size: 12px; color: #333; text-decoration: none; box-shadow: 0 -1px 0 #eee; } #learndash_shortcodes_tabs ul li:last-child a { box-shadow:0 -1px 0 #eee, 0 1px 0 #eee; } #learndash_shortcodes_sections { overflow: auto; height: 100%; position: relative; padding: 0 20px 0 0; margin: 0; background: #FFF; } #learndash_shortcodes_sections textarea { width: 100%; min-height: 200px; } #learndash_shortcodes_sections abbr[title] { border-bottom: none !important; cursor: inherit !important; text-decoration: none !important; }PKc\u&!VVassets/css/style.min.cssnuW+A.groups_table,.groups_user_table{width:100%}.groupemailtext{max-width:600px}.group_email_sub{width:50%}.nss_plugin_license_email{min-width:30%}.button_delete_course_data{background-color:Red;color:#fff;padding:10px 5px}.cert_shortcode_parm_list{margin:20px 30px;list-style:initial}.column-sno{width:50px}.groups_table .column-action{width:300px}.groups_user_table .column-action{width:100px}#profile-page #ld_course_info_mycourses_list{display:none}#learndash_lesson_topics_list ul,.learndash_navigation_lesson_topics_list{display:table;width:100%;margin-bottom:0}#learndash_lesson_topics_list ul{padding:0}#learndash_lesson_topics_list ul>li,.learndash_navigation_lesson_topics_list>div{display:table-row}.learndash_navigation_lesson_topics_list>div>div.list_arrow{display:table-cell;width:16px;text-align:center;padding:0!important}.course_navigation .learndash_topic_widget_list a>span{overflow:hidden;margin:0 0 0 5px}.course_navigation .learndash_topic_widget_list>ul{margin:0}.course_navigation a{text-decoration:none}.course_navigation .learndash_navigation_lesson_topics_list .lesson{margin:5px}.course_navigation .learndash_navigation_lesson_topics_list ul li{margin-left:0;list-style:none}.course_navigation .learndash_navigation_lesson_topics_list .learndash_topic_dots.type-list ul>li{padding-left:10px}.learndash_navigation_lesson_topics_list .learndash_topic_dots.type-list a>span{padding:0 0 0 25px}.learndash_topic_dots.type-list a{display:block}#learndash_lesson_topics_list span a,.learndash_topic_dots a,.learndash_topic_dots a>span{text-decoration:none!important;font-weight:100;font-size:12px}#learndash_lesson_topics_list div ul>li .sn,#learndash_lesson_topics_list div>strong,#learndash_profile a,#learndash_profile div,.expand_collapse,.learndash_profile_heading,.notavailable_message{font-size:12px;font-weight:400}.list_arrow.expand{background:url(../images/gray_arrow_expand.png) no-repeat scroll 0 50% transparent;padding:5px}.active .list_arrow.expand{background:url(../images/green_arrow_expand.png) no-repeat scroll 0 50% transparent;padding:5px}.active .list_arrow.collapse{background:url(../images/green_arrow_collapse.png) no-repeat scroll 0 50% transparent;padding:5px}.list_arrow.collapse{background:url(../images/gray_arrow_collapse.png) no-repeat scroll 0 50% transparent;padding:5px}.list_arrow.collapse.lesson_completed{background:url(../images/green_arrow_collapse.png) no-repeat scroll 0 50% transparent;padding:5px}.lesson_incomplete.list_arrow.collapse{background:url(../images/gray_arrow_collapse.png) no-repeat scroll 0 50% transparent;padding:5px}.list_arrow.expand.lesson_completed{background:url(../images/images/green_arrow_expand.png) no-repeat scroll 0 50% transparent;padding:5px}.lesson_incomplete.list_arrow.expand{background:url(../images/gray_arrow_expand.png) no-repeat scroll 0 50% transparent;padding:5px}.rtl .active .list_arrow.collapse,.rtl .list_arrow.collapse.lesson_completed{background-image:url(../images/green_arrow_collapse_rtl.png)}.rtl .lesson_incomplete.list_arrow.collapse,.rtl .list_arrow.collapse{background-image:url(../images/gray_arrow_collapse_rtl.png)}.learndash_navigation_lesson_topics_list .list_arrow.expand{background-position:50% 10px}.learndash_navigation_lesson_topics_list .list_arrow.collapse{background-position:50% 7px}.learndash_navigation_lesson_topics_list .topic-notcompleted span{background:url(../images/notcompleted_t_navigation.png) no-repeat scroll 0 8px transparent;display:inline-block;min-height:25px;line-height:25px;padding-left:20px;vertical-align:middle}#sfwd-quiz_quiz_pro_html{float:none}#learndash_quiz_advanced #poststuff,#sfwd-quiz_quiz_pro_html #poststuff{min-width:0}#sfwd-quiz_quiz_pro_html input[type=button]{padding:0 10px}#AutomaticallyDisplayLeaderboard label{display:inline-block}.nav-tab-sfwd-quiz_edit{margin-left:40px}.fixed .column-course{width:15%}.fixed .column-shortcode{width:150px}#sfwd-quiz_quiz_pro_html a.form_move,#sfwd-quiz_quiz_pro_html input[name=form_delete]{font-size:12px;border-radius:3px}.post-new-php.post-type-sfwd-quiz #sfwd-quiz_quiz_pro{display:none}.wp-admin.post-type-sfwd-assignment h2 a.add-new-h2{display:none}#learndash_assignment_metabox .button{margin-right:10px}#learndash_essay_status_div #post_status{width:100%}#learndash_essay_status_div .inside{padding:0}#learndash_essay_grading_response_div #grading-response{width:100%}.learndash_uploaded_assignment_points{font-size:12px}.leardash-course-status-completed{color:green}#course_progress_details .learndash_navigation_lesson_topics_list .topic-notcompleted span{background:0 0;padding-left:0;margin-left:0}#course_progress_details .learndash_topic_widget_list ul{margin-left:15px}.course_navigation ul.learndash-topic-list li.topic-item ul.learndash-quiz-list{margin-left:10px}.course_navigation input[type=number]{height:20px}.ld-shortcode-header{font-weight:700;font-size:1.1em;border-bottom:1px solid #ccc}.fixed .column-ld_posts{width:74px}.column-ld_posts{text-align:center}body.post-type-sfwd-courses .column-categories,body.post-type-sfwd-courses .column-tags,body.post-type-sfwd-courses .column-taxonomy-ld_course_category,body.post-type-sfwd-courses .column-taxonomy-ld_course_tag,body.post-type-sfwd-lessons .column-categories,body.post-type-sfwd-lessons .column-tags,body.post-type-sfwd-lessons .column-taxonomy-ld_lesson_category,body.post-type-sfwd-lessons .column-taxonomy-ld_lesson_tag,body.post-type-sfwd-topic .column-categories,body.post-type-sfwd-topic .column-tags,body.post-type-sfwd-topic .column-taxonomy-ld_topic_category,body.post-type-sfwd-topic .column-taxonomy-ld_topic_tag{width:10%}.sfwd .ld_date_selector select{padding:0;margin:0;vertical-align:top;height:35px}.sfwd .ld_date_selector input[type=number]{width:50px;text-align:center;height:35px}.sfwd .ld_date_selector input.ld_date_aa[type=number]{width:65px}.ld-error{color:red}.ld-success{color:green}form#learndash-settings-page-form .date-time-text{display:inline-block;min-width:13em}form#learndash-settings-page-form .quizzes_time_formats fieldset label{margin:.25em 0 .5em!important;display:inline-block;line-height:1.4em}form#learndash-settings-page-form .quizzes_time_formats fieldset input[type=text]{height:20px;width:150px}PKc\wSS+assets/css/learndash-admin-support-page.cssnuW+A/* Styles for the Support tab table output */ table.learndash-support-settings { clear: both; width: 100%; } table.learndash-support-settings > tbody > *:nth-child(2n+1), ul.striped > *:nth-child(2n+1) { background-color: #f9f9f9; } table.learndash-support-settings thead th { text-align: left; border-bottom: 1px solid #000; margin: 0; } table.learndash-support-settings tbody td { padding: 5px; margin: 0; } table.learndash-support-settings .learndash-support-settings-left { width: 40%; } table.learndash-support-settings .learndash-support-settings-right { width: 60%; } PKc\,Lzkzkassets/css/jquery-ui.min.cssnuW+A/*! jQuery UI - v1.11.2 - 2014-10-16 * http://jqueryui.com * Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */.learndash-datepicker .ui-helper-hidden{display:none}.learndash-datepicker .ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.learndash-datepicker .ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.learndash-datepicker .ui-helper-clearfix:after,.learndash-datepicker .ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.learndash-datepicker .ui-helper-clearfix:after{clear:both}.learndash-datepicker .ui-helper-clearfix{min-height:0}.learndash-datepicker .ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.learndash-datepicker .ui-front{z-index:100}.learndash-datepicker .ui-state-disabled{cursor:default!important}.learndash-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.learndash-datepicker .ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.learndash-datepicker .ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.learndash-datepicker .ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.learndash-datepicker .ui-button,.learndash-datepicker .ui-button:active,.learndash-datepicker .ui-button:hover,.learndash-datepicker .ui-button:link,.learndash-datepicker .ui-button:visited{text-decoration:none}.learndash-datepicker .ui-button-icon-only{width:2.2em}.learndash-datepicker button.ui-button-icon-only{width:2.4em}.learndash-datepicker .ui-button-icons-only{width:3.4em}.learndash-datepicker button.ui-button-icons-only{width:3.7em}.learndash-datepicker .ui-button .ui-button-text{display:block;line-height:normal}.learndash-datepicker .ui-button-text-only .ui-button-text{padding:.4em 1em}.learndash-datepicker .ui-button-icon-only .ui-button-text,.learndash-datepicker .ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.learndash-datepicker .ui-button-text-icon-primary .ui-button-text,.learndash-datepicker .ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.learndash-datepicker .ui-button-text-icon-secondary .ui-button-text,.learndash-datepicker .ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.learndash-datepicker .ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}.learndash-datepicker input.ui-button{padding:.4em 1em}.learndash-datepicker .ui-button-icon-only .ui-icon,.learndash-datepicker .ui-button-icons-only .ui-icon,.learndash-datepicker .ui-button-text-icon-primary .ui-icon,.learndash-datepicker .ui-button-text-icon-secondary .ui-icon,.learndash-datepicker .ui-button-text-icons .ui-icon{position:absolute;top:50%;margin-top:-8px}.learndash-datepicker .ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.learndash-datepicker .ui-button-icons-only .ui-button-icon-primary,.learndash-datepicker .ui-button-text-icon-primary .ui-button-icon-primary,.learndash-datepicker .ui-button-text-icons .ui-button-icon-primary{left:.5em}.learndash-datepicker .ui-button-icons-only .ui-button-icon-secondary,.learndash-datepicker .ui-button-text-icon-secondary .ui-button-icon-secondary,.learndash-datepicker .ui-button-text-icons .ui-button-icon-secondary{right:.5em}.learndash-datepicker .ui-buttonset{margin-right:7px}.learndash-datepicker .ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}.learndash-datepicker button.ui-button::-moz-focus-inner,.learndash-datepicker input.ui-button::-moz-focus-inner{border:0;padding:0}.learndash-datepicker.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.learndash-datepicker.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.learndash-datepicker.ui-datepicker .ui-datepicker-next,.learndash-datepicker.ui-datepicker .ui-datepicker-prev{position:absolute;top:2px;width:1.8em;height:1.8em}.learndash-datepicker.ui-datepicker .ui-datepicker-next-hover,.learndash-datepicker.ui-datepicker .ui-datepicker-prev-hover{top:1px}.learndash-datepicker.ui-datepicker .ui-datepicker-prev{left:2px}.learndash-datepicker.ui-datepicker .ui-datepicker-next{right:2px}.learndash-datepicker.ui-datepicker .ui-datepicker-prev-hover{left:1px}.learndash-datepicker.ui-datepicker .ui-datepicker-next-hover{right:1px}.learndash-datepicker.ui-datepicker .ui-datepicker-next span,.learndash-datepicker.ui-datepicker .ui-datepicker-prev span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.learndash-datepicker.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.learndash-datepicker.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.learndash-datepicker.ui-datepicker select.ui-datepicker-month,.learndash-datepicker.ui-datepicker select.ui-datepicker-year{width:45%}.learndash-datepicker.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.learndash-datepicker.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}.learndash-datepicker.ui-datepicker td{border:0;padding:1px}.learndash-datepicker.ui-datepicker td a,.learndash-datepicker.ui-datepicker td span{display:block;padding:.2em;text-align:right;text-decoration:none}.learndash-datepicker.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.learndash-datepicker.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em;width:auto;overflow:visible}.learndash-datepicker.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.learndash-datepicker.ui-datepicker.ui-datepicker-multi{width:auto}.learndash-datepicker.ui-datepicker-multi .ui-datepicker-group{float:left}.learndash-datepicker .ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.learndash-datepicker .ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.learndash-datepicker .learndash-datepicker .ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.learndash-datepicker .ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.learndash-datepicker .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.learndash-datepicker .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.learndash-datepicker .ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.learndash-datepicker .ui-datepicker-row-break{clear:both;width:100%;font-size:0}.learndash-datepicker .ui-datepicker-rtl{direction:rtl}.learndash-datepicker .ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.learndash-datepicker .ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.learndash-datepicker .ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.learndash-datepicker .ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.learndash-datepicker .ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.learndash-datepicker .ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.learndash-datepicker .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.learndash-datepicker .ui-datepicker-rtl .ui-datepicker-group{float:right}.learndash-datepicker .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.learndash-datepicker .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}body .learndash-datepicker .ui-tooltip{border-width:2px}.learndash-datepicker.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.learndash-datepicker.ui-widget .ui-widget{font-size:1em}.learndash-datepicker.ui-widget button,.learndash-datepicker.ui-widget input,.learndash-datepicker.ui-widget select,.learndash-datepicker.ui-widget textarea{font-family:Verdana,Arial,sans-serif;font-size:1em}.learndash-datepicker.ui-widget-content{border:1px solid #aaa;background:#fff;color:#222}.learndash-datepicker.ui-widget-content a{color:#222}.learndash-datepicker .ui-widget-header{border:1px solid #aaa;background:#ccc;color:#222;font-weight:700}.learndash-datepicker .ui-widget-header a{color:#222}.learndash-datepicker .ui-state-default,.learndash-datepicker.ui-widget-content .ui-state-default,.learndash-datepicker .ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6;font-weight:400;color:#555}.learndash-datepicker .ui-state-default a,.learndash-datepicker .ui-state-default a:link,.learndash-datepicker .ui-state-default a:visited{color:#555;text-decoration:none}.learndash-datepicker .ui-state-focus,.learndash-datepicker .ui-state-hover,.learndash-datepicker .ui-widget-content .ui-state-focus,.learndash-datepicker .ui-widget-content .ui-state-hover,.learndash-datepicker .ui-widget-header .ui-state-focus,.learndash-datepicker .ui-widget-header .ui-state-hover{border:1px solid #999;background:#dadada;font-weight:400;color:#212121}.learndash-datepicker .ui-state-focus a,.learndash-datepicker .ui-state-focus a:hover,.learndash-datepicker .ui-state-focus a:link,.learndash-datepicker .ui-state-focus a:visited,.learndash-datepicker .ui-state-hover a,.learndash-datepicker .ui-state-hover a:hover,.learndash-datepicker .ui-state-hover a:link,.learndash-datepicker .ui-state-hover a:visited{color:#212121;text-decoration:none}.learndash-datepicker .ui-state-active,.learndash-datepicker.ui-widget-content .ui-state-active,.learndash-datepicker .ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff;font-weight:400;color:#212121}.learndash-datepicker .ui-state-active a,.learndash-datepicker .ui-state-active a:link,.learndash-datepicker .ui-state-active a:visited{color:#212121;text-decoration:none}.learndash-datepicker .ui-state-highlight,.learndash-datepicker.ui-widget-content .ui-state-highlight,.learndash-datepicker .ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee;color:#363636}.learndash-datepicker .ui-state-highlight a,.learndash-datepicker.ui-widget-content .ui-state-highlight a,.learndash-datepicker .ui-widget-header .ui-state-highlight a{color:#363636}.learndash-datepicker .ui-state-error,.learndash-datepicker.ui-widget-content .ui-state-error,.learndash-datepicker .ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec;color:#cd0a0a}.learndash-datepicker .ui-state-error-text,.learndash-datepicker .ui-state-error a,.learndash-datepicker.ui-widget-content .ui-state-error-text,.learndash-datepicker.ui-widget-content .ui-state-error a,.learndash-datepicker .ui-widget-header .ui-state-error-text,.learndash-datepicker .ui-widget-header .ui-state-error a{color:#cd0a0a}.learndash-datepicker .ui-priority-primary,.learndash-datepicker.ui-widget-content .ui-priority-primary,.learndash-datepicker .ui-widget-header .ui-priority-primary{font-weight:700}.learndash-datepicker .ui-priority-secondary,.learndash-datepicker.ui-widget-content .ui-priority-secondary,.learndash-datepicker .ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.learndash-datepicker .ui-state-disabled,.learndash-datepicker.ui-widget-content .ui-state-disabled,.learndash-datepicker .ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.learndash-datepicker .ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.learndash-datepicker .ui-icon{width:16px;height:16px}.learndash-datepicker .ui-icon,.learndash-datepicker.ui-widget-content .ui-icon,.learndash-datepicker .ui-widget-header .ui-icon{background-image:url(../images/ui-icons_222222_256x240.png)}.learndash-datepicker .ui-icon-blank{background-position:16px 16px}.learndash-datepicker .ui-icon-carat-1-n{background-position:0 0}.learndash-datepicker .ui-icon-carat-1-ne{background-position:-16px 0}.learndash-datepicker .ui-icon-carat-1-e{background-position:-32px 0}.learndash-datepicker .ui-icon-carat-1-se{background-position:-48px 0}.learndash-datepicker .ui-icon-carat-1-s{background-position:-64px 0}.learndash-datepicker .ui-icon-carat-1-sw{background-position:-80px 0}.learndash-datepicker .ui-icon-carat-1-w{background-position:-96px 0}.learndash-datepicker .ui-icon-carat-1-nw{background-position:-112px 0}.learndash-datepicker .ui-icon-carat-2-n-s{background-position:-128px 0}.learndash-datepicker .ui-icon-carat-2-e-w{background-position:-144px 0}.learndash-datepicker .ui-icon-triangle-1-n{background-position:0 -16px}.learndash-datepicker .ui-icon-triangle-1-ne{background-position:-16px -16px}.learndash-datepicker .ui-icon-triangle-1-e{background-position:-32px -16px}.learndash-datepicker .ui-icon-triangle-1-se{background-position:-48px -16px}.learndash-datepicker .ui-icon-triangle-1-s{background-position:-64px -16px}.learndash-datepicker .ui-icon-triangle-1-sw{background-position:-80px -16px}.learndash-datepicker .ui-icon-triangle-1-w{background-position:-96px -16px}.learndash-datepicker .ui-icon-triangle-1-nw{background-position:-112px -16px}.learndash-datepicker .ui-icon-triangle-2-n-s{background-position:-128px -16px}.learndash-datepicker .ui-icon-triangle-2-e-w{background-position:-144px -16px}.learndash-datepicker .ui-icon-arrow-1-n{background-position:0 -32px}.learndash-datepicker .ui-icon-arrow-1-ne{background-position:-16px -32px}.learndash-datepicker .ui-icon-arrow-1-e{background-position:-32px -32px}.learndash-datepicker .ui-icon-arrow-1-se{background-position:-48px -32px}.learndash-datepicker .ui-icon-arrow-1-s{background-position:-64px -32px}.learndash-datepicker .ui-icon-arrow-1-sw{background-position:-80px -32px}.learndash-datepicker .ui-icon-arrow-1-w{background-position:-96px -32px}.learndash-datepicker .ui-icon-arrow-1-nw{background-position:-112px -32px}.learndash-datepicker .ui-icon-arrow-2-n-s{background-position:-128px -32px}.learndash-datepicker .ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.learndash-datepicker .ui-icon-arrow-2-e-w{background-position:-160px -32px}.learndash-datepicker .ui-icon-arrow-2-se-nw{background-position:-176px -32px}.learndash-datepicker .ui-icon-arrowstop-1-n{background-position:-192px -32px}.learndash-datepicker .ui-icon-arrowstop-1-e{background-position:-208px -32px}.learndash-datepicker .ui-icon-arrowstop-1-s{background-position:-224px -32px}.learndash-datepicker .ui-icon-arrowstop-1-w{background-position:-240px -32px}.learndash-datepicker .ui-icon-arrowthick-1-n{background-position:0 -48px}.learndash-datepicker .ui-icon-arrowthick-1-ne{background-position:-16px -48px}.learndash-datepicker .ui-icon-arrowthick-1-e{background-position:-32px -48px}.learndash-datepicker .ui-icon-arrowthick-1-se{background-position:-48px -48px}.learndash-datepicker .ui-icon-arrowthick-1-s{background-position:-64px -48px}.learndash-datepicker .ui-icon-arrowthick-1-sw{background-position:-80px -48px}.learndash-datepicker .ui-icon-arrowthick-1-w{background-position:-96px -48px}.learndash-datepicker .ui-icon-arrowthick-1-nw{background-position:-112px -48px}.learndash-datepicker .ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.learndash-datepicker .ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.learndash-datepicker .ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.learndash-datepicker .ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.learndash-datepicker .ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.learndash-datepicker .ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.learndash-datepicker .ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.learndash-datepicker .ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.learndash-datepicker .ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.learndash-datepicker .ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.learndash-datepicker .ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.learndash-datepicker .ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.learndash-datepicker .ui-icon-arrowreturn-1-w{background-position:-64px -64px}.learndash-datepicker .ui-icon-arrowreturn-1-n{background-position:-80px -64px}.learndash-datepicker .ui-icon-arrowreturn-1-e{background-position:-96px -64px}.learndash-datepicker .ui-icon-arrowreturn-1-s{background-position:-112px -64px}.learndash-datepicker .ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.learndash-datepicker .ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.learndash-datepicker .ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.learndash-datepicker .ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.learndash-datepicker .ui-icon-arrow-4{background-position:0 -80px}.learndash-datepicker .ui-icon-arrow-4-diag{background-position:-16px -80px}.learndash-datepicker .ui-icon-extlink{background-position:-32px -80px}.learndash-datepicker .ui-icon-newwin{background-position:-48px -80px}.learndash-datepicker .ui-icon-refresh{background-position:-64px -80px}.learndash-datepicker .ui-icon-shuffle{background-position:-80px -80px}.learndash-datepicker .ui-icon-transfer-e-w{background-position:-96px -80px}.learndash-datepicker .ui-icon-transferthick-e-w{background-position:-112px -80px}.learndash-datepicker .ui-icon-folder-collapsed{background-position:0 -96px}.learndash-datepicker .ui-icon-folder-open{background-position:-16px -96px}.learndash-datepicker .ui-icon-document{background-position:-32px -96px}.learndash-datepicker .ui-icon-document-b{background-position:-48px -96px}.learndash-datepicker .ui-icon-note{background-position:-64px -96px}.learndash-datepicker .ui-icon-mail-closed{background-position:-80px -96px}.learndash-datepicker .ui-icon-mail-open{background-position:-96px -96px}.learndash-datepicker .ui-icon-suitcase{background-position:-112px -96px}.learndash-datepicker .ui-icon-comment{background-position:-128px -96px}.learndash-datepicker .ui-icon-person{background-position:-144px -96px}.learndash-datepicker .ui-icon-print{background-position:-160px -96px}.learndash-datepicker .ui-icon-trash{background-position:-176px -96px}.learndash-datepicker .ui-icon-locked{background-position:-192px -96px}.learndash-datepicker .ui-icon-unlocked{background-position:-208px -96px}.learndash-datepicker .ui-icon-bookmark{background-position:-224px -96px}.learndash-datepicker .ui-icon-tag{background-position:-240px -96px}.learndash-datepicker .ui-icon-home{background-position:0 -112px}.learndash-datepicker .ui-icon-flag{background-position:-16px -112px}.learndash-datepicker .ui-icon-calendar{background-position:-32px -112px}.learndash-datepicker .ui-icon-cart{background-position:-48px -112px}.learndash-datepicker .ui-icon-pencil{background-position:-64px -112px}.learndash-datepicker .ui-icon-clock{background-position:-80px -112px}.learndash-datepicker .ui-icon-disk{background-position:-96px -112px}.learndash-datepicker .ui-icon-calculator{background-position:-112px -112px}.learndash-datepicker .ui-icon-zoomin{background-position:-128px -112px}.learndash-datepicker .ui-icon-zoomout{background-position:-144px -112px}.learndash-datepicker .ui-icon-search{background-position:-160px -112px}.learndash-datepicker .ui-icon-wrench{background-position:-176px -112px}.learndash-datepicker .ui-icon-gear{background-position:-192px -112px}.learndash-datepicker .ui-icon-heart{background-position:-208px -112px}.learndash-datepicker .ui-icon-star{background-position:-224px -112px}.learndash-datepicker .ui-icon-link{background-position:-240px -112px}.learndash-datepicker .ui-icon-cancel{background-position:0 -128px}.learndash-datepicker .ui-icon-plus{background-position:-16px -128px}.learndash-datepicker .ui-icon-plusthick{background-position:-32px -128px}.learndash-datepicker .ui-icon-minus{background-position:-48px -128px}.learndash-datepicker .ui-icon-minusthick{background-position:-64px -128px}.learndash-datepicker .ui-icon-close{background-position:-80px -128px}.learndash-datepicker .ui-icon-closethick{background-position:-96px -128px}.learndash-datepicker .ui-icon-key{background-position:-112px -128px}.learndash-datepicker .ui-icon-lightbulb{background-position:-128px -128px}.learndash-datepicker .ui-icon-scissors{background-position:-144px -128px}.learndash-datepicker .ui-icon-clipboard{background-position:-160px -128px}.learndash-datepicker .ui-icon-copy{background-position:-176px -128px}.learndash-datepicker .ui-icon-contact{background-position:-192px -128px}.learndash-datepicker .ui-icon-image{background-position:-208px -128px}.learndash-datepicker .ui-icon-video{background-position:-224px -128px}.learndash-datepicker .ui-icon-script{background-position:-240px -128px}.learndash-datepicker .ui-icon-alert{background-position:0 -144px}.learndash-datepicker .ui-icon-info{background-position:-16px -144px}.learndash-datepicker .ui-icon-notice{background-position:-32px -144px}.learndash-datepicker .ui-icon-help{background-position:-48px -144px}.learndash-datepicker .ui-icon-check{background-position:-64px -144px}.learndash-datepicker .ui-icon-bullet{background-position:-80px -144px}.learndash-datepicker .ui-icon-radio-on{background-position:-96px -144px}.learndash-datepicker .ui-icon-radio-off{background-position:-112px -144px}.learndash-datepicker .ui-icon-pin-w{background-position:-128px -144px}.learndash-datepicker .ui-icon-pin-s{background-position:-144px -144px}.learndash-datepicker .ui-icon-play{background-position:0 -160px}.learndash-datepicker .ui-icon-pause{background-position:-16px -160px}.learndash-datepicker .ui-icon-seek-next{background-position:-32px -160px}.learndash-datepicker .ui-icon-seek-prev{background-position:-48px -160px}.learndash-datepicker .ui-icon-seek-end{background-position:-64px -160px}.learndash-datepicker .ui-icon-seek-first,.learndash-datepicker .ui-icon-seek-start{background-position:-80px -160px}.learndash-datepicker .ui-icon-stop{background-position:-96px -160px}.learndash-datepicker .ui-icon-eject{background-position:-112px -160px}.learndash-datepicker .ui-icon-volume-off{background-position:-128px -160px}.learndash-datepicker .ui-icon-volume-on{background-position:-144px -160px}.learndash-datepicker .ui-icon-power{background-position:0 -176px}.learndash-datepicker .ui-icon-signal-diag{background-position:-16px -176px}.learndash-datepicker .ui-icon-signal{background-position:-32px -176px}.learndash-datepicker .ui-icon-battery-0{background-position:-48px -176px}.learndash-datepicker .ui-icon-battery-1{background-position:-64px -176px}.learndash-datepicker .ui-icon-battery-2{background-position:-80px -176px}.learndash-datepicker .ui-icon-battery-3{background-position:-96px -176px}.learndash-datepicker .ui-icon-circle-plus{background-position:0 -192px}.learndash-datepicker .ui-icon-circle-minus{background-position:-16px -192px}.learndash-datepicker .ui-icon-circle-close{background-position:-32px -192px}.learndash-datepicker .ui-icon-circle-triangle-e{background-position:-48px -192px}.learndash-datepicker .ui-icon-circle-triangle-s{background-position:-64px -192px}.learndash-datepicker .ui-icon-circle-triangle-w{background-position:-80px -192px}.learndash-datepicker .ui-icon-circle-triangle-n{background-position:-96px -192px}.learndash-datepicker .ui-icon-circle-arrow-e{background-position:-112px -192px}.learndash-datepicker .ui-icon-circle-arrow-s{background-position:-128px -192px}.learndash-datepicker .ui-icon-circle-arrow-w{background-position:-144px -192px}.learndash-datepicker .ui-icon-circle-arrow-n{background-position:-160px -192px}.learndash-datepicker .ui-icon-circle-zoomin{background-position:-176px -192px}.learndash-datepicker .ui-icon-circle-zoomout{background-position:-192px -192px}.learndash-datepicker .ui-icon-circle-check{background-position:-208px -192px}.learndash-datepicker .ui-icon-circlesmall-plus{background-position:0 -208px}.learndash-datepicker .ui-icon-circlesmall-minus{background-position:-16px -208px}.learndash-datepicker .ui-icon-circlesmall-close{background-position:-32px -208px}.learndash-datepicker .ui-icon-squaresmall-plus{background-position:-48px -208px}.learndash-datepicker .ui-icon-squaresmall-minus{background-position:-64px -208px}.learndash-datepicker .ui-icon-squaresmall-close{background-position:-80px -208px}.learndash-datepicker .ui-icon-grip-dotted-vertical{background-position:0 -224px}.learndash-datepicker .ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.learndash-datepicker .ui-icon-grip-solid-vertical{background-position:-32px -224px}.learndash-datepicker .ui-icon-grip-solid-horizontal{background-position:-48px -224px}.learndash-datepicker .ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.learndash-datepicker .ui-icon-grip-diagonal-se{background-position:-80px -224px}.learndash-datepicker .ui-corner-all,.learndash-datepicker .ui-corner-left,.learndash-datepicker .ui-corner-tl,.learndash-datepicker .ui-corner-top{border-top-left-radius:4px}.learndash-datepicker .ui-corner-all,.learndash-datepicker .ui-corner-right,.learndash-datepicker .ui-corner-top,.learndash-datepicker .ui-corner-tr{border-top-right-radius:4px}.learndash-datepicker .ui-corner-all,.learndash-datepicker .ui-corner-bl,.learndash-datepicker .ui-corner-bottom,.learndash-datepicker .ui-corner-left{border-bottom-left-radius:4px}.learndash-datepicker .ui-corner-all,.learndash-datepicker .ui-corner-bottom,.learndash-datepicker .ui-corner-br,.learndash-datepicker .ui-corner-right{border-bottom-right-radius:4px}.learndash-datepicker .ui-widget-overlay,.learndash-datepicker .ui-widget-shadow{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.learndash-datepicker .ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;border-radius:8px}PKc\%)--)assets/css/learndash-admin-shortcodes.cssnuW+A/* Required for Dashicons to work properly */ i.mce-i-icon { font: 400 20px/1 dashicons; padding: 0; vertical-align: top; speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; margin-left: -2px; padding-right: 2px; } #TB_ajaxContent { padding: 0 0 30px 0; width: 100%!important; overflow: hidden; } /* Added z-index to force popup on top of LD headers and WP admin menu. */ .ui-dialog.ld-shortcodes { z-index: 160000 !important; } #learndash_shortcodes_wrap { position: relative; margin: 0; height: 97.5%; } #learndash_shortcodes_tabs { font-family: Helvetica, Arial; color: #333; font-size: 12px; text-align: left; } #learndash_shortcodes_tabs { width: 150px; height: 100%; min-height: 100%; background: #ccc; border-right: 1px solid #EEE; float: left; overflow-y: scroll; } #learndash_shortcodes_tabs ul { list-style: none; margin: 0px; padding: 0px; width: 100%; } #learndash_shortcodes_tabs ul li { width: 100%; font-weight: bold; margin: 0; } #learndash_shortcodes_tabs li.current { display: block; margin: 0px; } #learndash_shortcodes_tabs li.current a { background: #FFF; box-shadow: 0 -1px 0 #eee; } #learndash_shortcodes_tabs ul li a { display: block; /* padding: 14px 20px; */ padding: 10px 10px; font-size: 12px; color: #333; text-decoration: none; box-shadow: 0 -1px 0 #eee; } #learndash_shortcodes_tabs ul li:last-child a { box-shadow:0 -1px 0 #eee, 0 1px 0 #eee; } #learndash_shortcodes_sections { overflow: auto; height: 100%; position: relative; padding: 0 0 0 20px; margin: 0; background: #FFF; } #learndash_shortcodes_sections textarea { width: 100%; min-height: 200px; } #learndash_shortcodes_sections abbr[title] { border-bottom: none !important; cursor: inherit !important; text-decoration: none !important; }PKc\>OO assets/css/learndash-builder.cssnuW+A#learndash_builder_box_wrap { width: 100%; position: relative; display: inline-block; border: 1px solid #ccc; } #learndash_builder_box_wrap .learndash_selectors { width: 40%; border-right: 0px solid #ccc; padding: 10px 5px 10px 10px; float: left; /* min-height: 350px; */ position: relative; display: inline-block; box-sizing: border-box; } #learndash_builder_box_wrap .learndash-selector-container { clear: both; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-lessons:empty, #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-topic:empty, #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-quiz:empty, #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-question:empty { border: 2px dashed #bbb; padding: 5px; margin-bottom: 10px; box-sizing: border-box; float: left; width: 100%; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-lessons:empty { background-color: #EBF5FB; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-topic:empty { background-color: #FDEDEC; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-quiz:empty { background-color: #FCF3CF; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-question:empty { background-color: #D5F5E3; } #learndash_builder_box_wrap .learndash_selector_details { position: relative; display: inline-block; width: 60%; padding: 10px; float: left; /* min-height: 350px; */ } #learndash_builder_box_wrap .learndash_selectors h3.learndash-selector-header { padding: 5px; border: 1px solid #ccc; background-color: #e5e5e5; margin: 0 0 5px 0; float: left; width: 100%; clear: both; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_selectors .learndash-selector-post-listing { float: left; width: 100%; padding: 0; } #learndash_builder_box_wrap .learndash_selectors .learndash-selector-pager { width: 60%; float: left; margin-bottom: 5px; } #learndash_builder_box_wrap .learndash_selectors .learndash-selector-search { width: 40%; float: right; margin-bottom: 5px; } #learndash_builder_box_wrap .learndash_selectors .learndash-selector-search input { width: 100%; border: 1px solid #ddd; } #learndash_builder_box_wrap .learndash_selectors ul { margin-top: 0; clear: both; margin-bottom: 10px; } #learndash_builder_box_wrap .learndash_selectors li { background-color: #F8F8F8; width: 100%; display: inline-block; margin: 0 0 5px 0; padding: 5px 5px 1px 5px; clear: both; border: 1px solid #D8D8D8; float: left; min-height: 20px; box-sizing: border-box; } /* #learndash_builder_box_wrap .learndash_selectors li.ld-selected { border: 1px solid red; } */ /* #learndash_builder_box_wrap .learndash_selectors li:hover { cursor: move; } */ #learndash_builder_box_wrap .learndash_selectors li.ld-disabled .ld-course-builder-title-text { /* color: #ccc; */ text-decoration: line-through; } #learndash_builder_box_wrap .learndash_selectors li.ld-disabled:hover { /* cursor: auto; */ } .ui-state-highlight { height: 1.5em; line-height: 1.2em; } #learndash_builder_box_wrap .learndash_selector_details ul li { border: 1px solid #ccc; padding: 5px; } #learndash_builder_box_wrap .learndash_selector_details ul { width: 100%; min-height: 325px; border: #bbb 5px dashed; padding: 10px; } #learndash_builder_box_wrap .learndash_selector_details ul li.placeholder { border: 0px; } #learndash_builder_box_wrap .learndash_builder_items { background-color: #fff; float: right; padding: 10px 10px 10px 5px; width: calc(60% - 5px); box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .movable-placeholder { width: 100%; height: 100px; display: block; margin: 0 0 15px 0; border-style: dashed; border-width: 2px; border-color: #bbb; } #learndash_builder_box_wrap .ld-course-builder-title { float: left; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-title-text { } #learndash_builder_box_wrap .ld-course-builder-header { position: relative; float: left; width: 100%; } #learndash_builder_box_wrap .ld-course-builder-actions { width: 20px; height: 20px; float: left; } #learndash_builder_box_wrap .ld-course-builder-action { background-color: #B8B8B8; color: #fff; width: 20px; height: 20px; /* float: left; */ text-align: center; line-height: 20px; margin-left: 5px; } #learndash_builder_box_wrap .ld-course-builder-sub-actions { display: none; padding-right: 5px; z-index: 100; } #learndash_builder_box_wrap .ld-course-builder-sub-actions span { cursor: pointer; } #learndash_builder_box_wrap .ld-course-builder-actions { float: left; margin-right: 5px; } #learndash_builder_box_wrap .ld-course-builder-action:hover { color: black; } #learndash_builder_box_wrap .ld-course-builder-action-remove:hover, #learndash_builder_box_wrap .ld-course-builder-action-trash:hover { color: red; } #learndash_builder_box_wrap li.ld-disabled .ld-course-builder-sub-actions .ld-course-builder-action-trash { display: none; } #learndash_builder_box_wrap .learndash_selectors .ld-course-builder-sub-actions .ld-course-builder-action-remove { display: none; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-sub-actions .ld-course-builder-action-trash { display: none; } #learndash_builder_box_wrap .ld-course-builder-action-show, #learndash_builder_box_wrap .ld-course-builder-action-hide { float: right; } #learndash_builder_box_wrap .ld-course-builder-action-show-hide, #learndash_builder_box_wrap .ld-course-builder-action-add { float: right; cursor: pointer; } #learndash_builder_box_wrap .ld-course-builder-action-add:before { content: "\f132"; line-height: 23px; } #learndash_builder_box_wrap .ld-course-builder-action-add img { display: none; } #learndash_builder_box_wrap .ld-course-builder-action-add-pending { float: right; background-color: transparent; } #learndash_builder_box_wrap .ld-course-builder-action-add-pending:before { content: ""; } #learndash_builder_box_wrap .ld-course-builder-action-add-pending img { display: inline; float: right; width: 20px; height: 20px; } #learndash_builder_box_wrap .ld-course-builder-action-remove:before { content: "\f335"; } #learndash_builder_box_wrap .ld-course-builder-action-trash:before { content: "\f182"; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-move:hover, #learndash_builder_box_wrap .learndash_selectors li span.ld-course-builder-action-move { cursor: move; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-move, #learndash_builder_box_wrap .learndash_selectors li span.ld-course-builder-action-move { float: left; /*margin-right: 5px; */ margin-left: 0px; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-move:before, #learndash_builder_box_wrap .learndash_selectors li span.ld-course-builder-action-move:before { /* content: "\f156"; */ content: "\f333"; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-edit:before, #learndash_builder_box_wrap .learndash_selectors li .ld-course-builder-action-edit:before { content: "\f464"; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-pencil { background-color: transparent; color: inherit; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-pencil:before { content: "\f464"; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-ok { background-color: transparent; color: green; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-ok:before { content: "\f147"; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-cancel { background-color: transparent; color: red; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-cancel:before { content: "\f158"; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-pencil, #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-ok, #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-cancel { display: none; margin: 0; cursor: pointer; float: none; position: relative; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-pencil:hover { color: white; background-color: #B8B8B8; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-ok:hover { color: white; background-color: green; } #learndash_builder_box_wrap .ld-course-builder-title .ld-course-builder-edit-title-cancel:hover { background-color: red; color: white; } #learndash_builder_box_wrap span.ld-course-builder-title { display: table-cell; } #learndash_builder_box_wrap .learndash_selectors span.ld-course-builder-title { width: calc(100% - 30px); } #learndash_builder_box_wrap .learndash_builder_items span.ld-course-builder-title { width: calc(100% - 50px); } #learndash_builder_box_wrap .ld-course-builder-title-edit span.ld-course-builder-title { width: 100%; } #learndash_builder_box_wrap .ld-course-builder-title-text { float: left; display: inline; line-height: 24px; min-height: 24px; /* width: 100%; */ position: relative; } #learndash_builder_box_wrap .ld-course-builder-title-edit .ld-course-builder-title-text { width: 100%; } #learndash_builder_box_wrap .ld-course-builder-title-edit .ld-course-builder-title input { padding: 0; margin: 0; position: relative; width: 100%; } /* #learndash_builder_box_wrap .learndash_selectors .ld-course-builder-title input { width: 100%; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-title input { width: 80%; } */ #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-view:before, #learndash_builder_box_wrap .learndash_selectors li .ld-course-builder-action-view:before { content: "\f504"; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-show:before, #learndash_builder_box_wrap .learndash_selectors .learndash-selector-header .ld-course-builder-action-show:before { content: "\f347"; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-action-hide:before, #learndash_builder_box_wrap .learndash_selectors .learndash-selector-header .ld-course-builder-action-hide:before { content: "\f343"; } #learndash_builder_box_wrap .learndash_selectors .ld-course-builder-header .ld-course-builder-action-show-hide, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-item.ld-course-builder-title-edit > .ld-course-builder-header > .ld-course-builder-action-show-hide { display: none; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-header .ld-course-builder-action-show-hide { display: inline-block; } div#ld-selector-draggable-group .ld-course-builder-header .ld-course-builder-action-show-hide { display: none; } /************* Lessons ***********************/ #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items { min-height: 20px; clear: both; width: 100%; padding: 0px; margin: 0; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items:empty { border: 2px dashed #bbb; padding: 5px; margin-bottom: 5px; /* background-color: #D8E8FA; */ } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-item { background-color: #F8F8F8; width: 100%; display: inline-block; margin: 0 0 3px 0; padding: 5px 5px 1px 5px; clear: both; border: 1px solid #D8D8D8; /*float: left;*/ min-height: 20px; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-item h4.ld-course-builder-lesson-title { float: left; width: 100%; margin: 0; padding: 0px; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-item .ld-course-builder-sub-items { float: left; width: 100%; margin-top: 5px; padding: 0px; box-sizing: border-box; } /************* Topics ***********************/ #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-items { /* background-color: #C0C0C0; */ min-height: 20px; clear: both; /* margin: 0 0 5px 0px; */ width: 100%; padding: 0px; /*float: left; */ display: inline-block; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-items:empty { border: 2px dashed #bbb; /* background-color: #FAD8DB; */ padding: 5px; margin: 5px 0; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-item { /* background-color: #D8D8D8; */ /* #ddd; */ width: 100%; min-height: 20px; display: inline-block; list-style: none; padding: 5px 5px 1px 5px; margin: 0 0 3px 0; /* 0 0 10px 0px; */ /* color: #fff; */ clear: both; /*float: left; */ border: 1px solid #bbb; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-item h4.ld-course-builder-topic-title { color: #000; float: left; width: 100%; margin: 0 0 0px 0; } /************* Quizzes ***********************/ #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-items { min-height: 20px; clear: both; display: inline-block; margin: 0; width: 100%; padding: 0px; float: left; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items .ld-course-builder-quiz-items { margin: 0; width: 100%; padding: 0px; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items .ld-course-builder-topic-items .ld-course-builder-quiz-items { margin: 0px; width: 100%; /*padding: 5px;*/ box-sizing: border-box; margin-bottom: 5px; } /* #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-items { min-height: 20px; clear: both; margin: 0; width: 90%; } */ #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-items:empty { border: 2px dashed #bbb; /* background-color: #eee; */ /* background-color: #DAFAD8; */ padding: 5px; margin-bottom: 5px; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-item { /* background: #eee; */ width: 100%; min-height: 20px; display: inline-block; padding: 5px 5px 1px 5px; margin: 0 0 3px 0; /* color: #fff; */ clear: both; border: 1px solid #bbb; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-item:last-child { margin-bottom: 0; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-item h4.ld-course-builder-quiz-title { /* color: #000; */ float: left; width: 100%; margin: 0; } /************* Questions ***********************/ #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-items { min-height: 20px; clear: both; display: inline-block; margin: 0; width: 100%; padding: 0px; float: left; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-items:empty { border: 2px dashed #bbb; /* background-color: #eee; */ /* background-color: #DAFAD8; */ padding: 5px; margin-bottom: 5px; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-item { /* background: #eee; */ width: 100%; min-height: 20px; display: inline-block; padding: 5px 5px 1px 5px; margin: 0 0 3px 0; /* color: #fff; */ clear: both; border: 1px solid #bbb; box-sizing: border-box; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-item:last-child { margin-bottom: 0; } #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-item h4.ld-course-builder-question-title { /* color: #000; */ float: left; width: 100%; margin: 0; } /************* End of Questions ***********************/ #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-lessons li, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items .ld-course-builder-lesson-item, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-lesson-items:empty { background-color: #EBF5FB; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-lessons li.ld-selected { background-color: #AED6F1; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-topic li, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-items .ld-course-builder-topic-item, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-topic-items:empty { background-color: #FDEDEC; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-topic li.ld-selected { background-color: #F5B7B1; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-quiz li, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-items .ld-course-builder-quiz-item, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-items:empty { background-color: #FCF3CF; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-quiz li.ld-selected, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-quiz-item.ld-selected { background-color: #F7DC6F; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-question li, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-items .ld-course-builder-question-item, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-items:empty { background-color: #D5F5E3; } #learndash_builder_box_wrap .learndash_selectors #learndash-selector-post-listing-sfwd-question li.ld-selected, #learndash_builder_box_wrap .learndash_builder_items .ld-course-builder-question-item.ld-selected { background-color: #83e2ac; } #learndash_builder_box_wrap .learndash_selectors .learndash-selector-pager p.pager-info { padding: 0; margin: 0 0 0 0; } #learndash_builder_box_wrap .learndash_selectors .learndash-selector-pager p.pager-info button { cursor: pointer; } #learndash_builder_box_wrap .learndash_selectors .learndash-selector-pager .button.button-simple { border: medium none; box-shadow: none; font-size: 14px; padding: 0 3px 1px; margin: 0 2px; line-height: 18px; } #learndash_builder_box_wrap .learndash_selectors .learndash-selector-pager p.pager-info input.page { width: 50px; text-align: center; } #learndash_builder_box_wrap .ld-selector-draggable-group ul, #learndash_builder_box_wrap .ld-selector-draggable-group li { list-style: none; } #learndash_builder_box_wrap .ld-selector-draggable-group li { clear: both; } #learndash_builder_box_wrap .ld-selector-draggable-group .ld-course-builder-actions { display: none !important; } #learndash_builder_box_wrap .learndash-header-left { float: left; margin-bottom: 3px; } #learndash_builder_box_wrap .learndash-header-right { float: right; margin-bottom: 3px; } #learndash_builder_box_wrap .learndash-header-right .ld-show-all, #learndash_builder_box_wrap .learndash-header-right .ld-hide-all { cursor: pointer; border-bottom: 1px solid transparent; } #learndash_builder_box_wrap .learndash-header-right .ld-show-all:hover, #learndash_builder_box_wrap .learndash-header-right .ld-hide-all:hover { border-bottom: 1px solid; } #learndash_builder_box_wrap .learndash-header-right .ld-divide-all { padding: 0 2px; } /* Specific CSS for Course Builder page */ body.sfwd-courses_page_courses-builder #course-builder-title-box h2 { margin: 5px 0 0px 0; padding: 0; } body.sfwd-courses_page_courses-builder #course-builder-title-box p { margin: 0 0 10px 0; }PKc\~xC((0assets/css/learndash-admin-overview-page.min.cssnuW+A.ld-bootview{width:100%;max-width:950px;margin:0 auto}.ld-bootview *{box-sizing:border-box}.ld-bootview h1{margin:20px 0;padding:9px 0 4px 0;font-size:23px;font-weight:400;line-height:29px}.ld-bootview h2{margin:0 0 30px;font-size:21px;font-weight:400;line-height:1.2}.ld-bootview h3{margin:0 0 20px;font-size:16px;font-weight:600}.ld-bootview p{margin:0 0 20px}.ld-bootview a{color:#0073aa;text-decoration:none}.ld-bootview a:hover{color:#00a0d2;text-decoration:underline}.ld-bootcamp,.ld-bootcamp p{width:100%;max-width:950px;margin:0 auto 40px 0;color:#23282d;background:#f1f1f1;font-size:14px;line-height:1.5}.ld-bootcamp p{margin:0 auto 20px}.ld-bootcamp .notice{background:#fff}.ld-bootcamp--toggle{border:none;background:0 0;cursor:pointer;float:right;color:#0073aa;margin-top:-20px}.ld-bootcamp--toggle:focus,.ld-bootcamp--toggle:hover{color:#00a0d2;text-decoration:underline}.ld-bootcamp__embed{overflow:hidden;position:relative;margin:0 0 20px;padding-top:56.25%}.ld-bootcamp__embed iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0}.ld-bootcamp__widget{padding:23px;background:#fff}.ld-bootcamp__widget--header{display:flex;justify-content:space-between}.ld-bootcamp__accordion{width:100%;max-width:750px;margin:0 auto}.ld-bootcamp__accordion--single{margin:0 0 15px;padding:23px;background:#f1f1f1}.ld-bootcamp__accordion--single h3{display:flex;align-items:center;margin:0}.ld-bootcamp__accordion--single h3 button{border:0;background:0 0;font-size:16px;font-weight:600;height:24px;line-height:1.3;text-align:left}.ld-bootcamp__accordion--single h3 .ld-bootcamp__mark-complete--toggle{width:28px}.ld-bootcamp__accordion--single h3 .ld-bootcamp__accordion--toggle{margin-left:10px;align-self:flex-start;cursor:pointer;width:96%}.ld-bootcamp__accordion--single h3 button[aria-selected=true]{color:#23282d}.ld-bootcamp__accordion--single h3 .ld-bootcamp__mark-complete--toggle-indicator{background-color:inherit;background-size:cover;background-image:url(../images/incompletex.png);height:24px;width:24px}.ld-bootcamp__accordion--single.-completed h3 .ld-bootcamp__mark-complete--toggle-indicator{background-image:url(../images/checkmark.png)}.ld-bootcamp__accordion--single h3 button.ld-bootcamp__mark-complete--toggle-indicator:hover{background-image:url(../images/checkmark.png);cursor:pointer}.ld-bootcamp__accordion--single.-completed h3 button.ld-bootcamp__mark-complete--toggle-indicator:hover{background-image:url(../images/incompletex.png)}.ld-bootcamp__accordion--toggle .ld-bootcamp__accordion--toggle-indicator{color:#72777c;float:right}.ld-bootcamp__accordion--toggle[aria-expanded=true] .ld-bootcamp__accordion--toggle-indicator:before{content:"\f142";font:normal 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;width:20px;border-radius:50%}.ld-bootcamp__accordion--toggle[aria-expanded=false] .ld-bootcamp__accordion--toggle-indicator:before{content:"\f140";font:normal 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;width:20px;border-radius:50%}.ld-bootcamp__accordion--content{display:none}.ld-bootcamp__accordion--single .ld-bootcamp__accordion--content[aria-hidden=false]{display:block;margin:20px 0 0 0}.ld-bootcamp__accordion--single .ld-bootcamp__accordion--content li:before{display:inline-block;content:"-";width:10px;margin-left:5px}.ld-bootcamp__accordion--single .ld-bootcamp__accordion--content .ld-bootcamp__resources{margin:12px auto 0}.ld-bootcamp__accordion--single .ld-bootcamp__accordion--content .ld-bootcamp__resources p{font-weight:700}.ld-bootcamp__accordion--single .ld-bootcamp__resources-box{display:flex}.ld-bootcamp__accordion--single .ld-bootcamp__resources{flex:1}.ld-bootcamp__accordion--single .ld-bootcamp__mark_complete{margin-top:auto}.ld-bootcamp__license .notice-dismiss{padding:2px}.ld-bootcamp__license--fields{margin:0 0 20px}.ld-bootcamp__license--fields input[type=email],.ld-bootcamp__license--fields input[type=text]{display:block;width:100%;height:28px;margin:0 0 10px 0;padding:2px 6px;border:1px solid #ddd;outline:0;color:#32373c;background-color:#fff;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);font-size:13px;transition:border-color .25s ease-in}.ld-bootcamp__license--fields input[type=email]:focus,.ld-bootcamp__license--fields input[type=text]:focus{border-color:#0073aa}@media screen and (min-width:768px){.ld-bootcamp__license--fields{display:inline-block;width:calc(50% - 15px)}.ld-bootcamp__license--fields:last-of-type{margin-left:20px}.ld-bootcamp__license--fields input[type=email],.ld-bootcamp__license--fields input[type=text],.ld-bootcamp__license--fields label{flex-basis:calc(50% - 10px);margin:0}}.ld-overview{width:100%;max-width:950px;margin:0 auto;color:#23282d;background:#f1f1f1;font-size:13px;line-height:1.5}.ld-overview h3 svg{max-height:20px;margin:0 0 10px 0}.ld-overview h3 span{display:block}.ld-overview--columns ul{margin:0;padding:0;list-style-type:none}.ld-overview--columns li{padding:5px 0;border-bottom:1px solid #00a0d2}p.ld-overview--more{margin:20px 0 0;font-weight:700;text-align:right;text-transform:uppercase}.ld-overview--more a{color:#23282d}.ld-overview--widget{margin:0 0 16px;padding:23px;border:1px solid #e5e5e5;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04)}.ld-overview--widget.-support a.button.button-primary:focus,.ld-overview--widget.-support a.button.button-primary:hover{text-decoration:none}.ld-overview--search form{display:flex}.ld-overview--search input[type=text]{height:28px;padding:2px 6px;border:1px solid #ddd;color:#32373c;background-color:#fff;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);font-size:13px;flex:1}.ld-overview--search .button{flex:0 1 auto;margin-left:15px}.ld-overview--widget.-doc li{border:0}.ld-overview--widget.-doc .ld-overview--more{text-align:left;text-transform:none}.ld-overview--widget.-doc .ld-overview--more a{color:#0073aa}.ld-overview .ld-overview--widget .ld-bootcamp--toggle.button-orange{float:none;background:#df7b11;border-color:#ca5116;color:#fff;margin:10px 0 0;box-shadow:0 1px 0 #ca5116}.ld-overview .ld-overview--widget .ld-bootcamp--toggle.button-orange:focus,.ld-overview .ld-overview--widget .ld-bootcamp--toggle.button-orange:hover{background:#ee8617;border-color:#df7b11;text-decoration:none}.ld-overview--topics{margin:40px 0 0}.ld-overview--widget.-support ul{margin:20px 0 0;border-top:1px solid #e5e5e5}.ld-overview--widget.-support ul li{border-bottom:none}.ld-overview--widget.-support ul li:not(:first-child){border:0}@media screen and (min-width:768px){.ld-overview--columns{display:flex;justify-content:space-between}.ld-overview--topics .ld-overview--columns{justify-content:flex-start}.ld-overview--columns>div{flex:0 1 calc(50% - 10px)}.ld-overview--columns:not(.-half)>div{flex:0 1 calc(100% - 270px - 20px)}.ld-overview--columns:not(.-half)>div:last-child{flex-basis:270px}.ld-overview--columns.-support>div:first-child{border-right:0;flex-basis:calc(100% - 270px)}.ld-overview--widget.-doc .ld-overview--column{flex-basis:calc(33% - 5px)}.ld-overview .ld-overview--widget .ld-bootcamp--toggle.button-orange{margin:81% 0 0}}PKc\xGGassets/css/sfwd_editor-rtl.cssnuW+Ahtml .mceContentBody { font: 16px/22px Arial, Helvetica, sans-serif; width: 1024px!important; line-height: 1.5em; margin-top: 60px!important; background-size: 1122px 793px!important; height: 793px!important; } p { /* margin: 0.5em 0 1.5em; */ margin-right: 15px; } PKc\ޘ9assets/css/learndash-admin-settings-page-translations.cssnuW+A.wrap-ld-translations { } .wrap-ld-translations table.ld-installed-translations th { font-weight: bold; } .wrap-ld-translations table.ld-installed-translations th.column-locale { width: 10%; } .wrap-ld-translations table.ld-installed-translations th.column-title { width: 30%; } .wrap-ld-translations table.ld-installed-translations th.column-actions-local { width: 30%; } .wrap-ld-translations table.ld-installed-translations th.column-actions-remote { width: 30%; } .wrap-ld-translations table.ld-installed-translations td.column-actions-local a { margin-right: 5px; } .wrap-ld-translations table.ld-installed-translations td.column-actions-remote a { margin-right: 5px; } .wrap-ld-translations table.ld-installed-translations td.column-actions-local span.ld-translation-mtime { margin-top: 5px; } .wrap-ld-translations table.ld-installed-translations td.column-actions-local a span.dashicons-download, .wrap-ld-translations table.ld-installed-translations td.column-actions-remote a span.dashicons-trash, a.learndash-translations-pot-file span.dashicons-download { margin-top: 4px; } /* #learndash-translations-available { width: 100%; } #learndash-translations-available #learndash-translations-available-items { width: 50%; } #learndash-translations-available #learndash-translations-details { width: 50%; } */ .learndash-settings-page-wrap #publishing-action { width: 100%; } .learndash-settings-page-wrap #publishing-action p.learndash-translations-last-update span.label { font-weight: bold; } .learndash-settings-page-wrap .error { color: red; } .learndash-settings-page-wrap a.learndash-translations-install { padding: 5px 10px; display: none; }PKc\orpassets/css/front-rtl.cssnuW+A/* base styles - overright these in your theme stylesheet */ .sfwd_module .error{ text-align:center; } .content_article_style{ min-width:600px; } .post2pdf_conv_image_align_center { text-align: center; } .slickQuizWrapper .button { float: right; width: auto; padding: 5px 15px; color:#ffffff; background-color:darkcyan; border: 1px solid #fff; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; text-decoration: none; } .slickQuizWrapper .button:hover { background-color:darkslategray; } .startQuiz { margin-top: 20px; } .quizArea, .quizResults { margin-bottom: 40px; } /* clearfix */ .quizArea, .quizResults { zoom: 1; } .quizArea:before, .quizArea:after, .quizResults:before, .quizResults:after { content: "\0020"; display: block; height: 0; visibility: hidden; font-size: 0; } .quizArea:after, .quizResults:after { clear: both; } .questionCount { font-size: 14px; font-style: italic; } .questionCount span { font-weight: bold; } ol.questions { margin-top: 20px; margin-right: 0; } ol.questions li { margin-right: 0; } ul.answers { margin-right: 20px; margin-bottom: 20px; } ul.responses li { margin: 10px 20px 20px; } ul.responses li p span { display: block; font-weight: bold; font-size: 18px; } ul.responses li.correct p span { color: #6C9F2E; }ul.responses li.incorrect p span { color: #B5121B; } .quizResults h3 { margin: 0; } .quizResults h3 span { font-weight: normal; font-style: italic; } .quizResultsCopy { margin-top: 20px; } .ppalholder { display: none; } .ppalbtn { border: 0 !important; } .user_has_no_access .is_not_sample a, .user_has_no_access .is_not_sample a span, .user_has_no_access #learndash_quizzes a{ color: gray !important; text-decoration: none !important; } .widget .list-count {display: none;} dd.course_progress { position: relative; display: block; border: 1px solid black; width: 100%; height: 16px; margin: 0 0 2px; background-color: white; padding:0; } dd.course_progress div.course_progress_blue { position: relative; background-color: blue; height: 16px; width: 75%; text-align:left; display:block; } .wpProQuiz_cloze > input[type=text] { max-width: 99%; } /* Single Course Payment methods fancy dropdown */ .checkout-dropdown-button button, .checkout-dropdown-button input[type="submit"] { border-radius: 0 !important; font-size: 16px !important; margin: 0; text-align: center; width: 100%; } .checkout-dropdown-button ul { padding: 0 !important; list-style: none !important; list-style-type: none !important; line-height: auto !important; } .checkout-dropdown-button ul.jq-dropdown-menu li { list-style: none !important; list-style-type: none !important; margin: none !important; padding: none !important; line-height: auto !important; } .jq-dropdown .jq-dropdown-menu li { list-style: none !important; list-style-type: none !important; margin: 0 !important; padding: 0 !important; } .checkout-dropdown-button .btn-join, .checkout-dropdown-button #btn-join, .checkout-dropdown-button form input[type="submit"] { background-color: #FFFFFF !important; color: #333333 !important; } .checkout-dropdown-button .btn-join:hover, .checkout-dropdown-button #btn-join:hover, .checkout-dropdown-button form input[type="submit"]:hover { background-color: #F5F5F5 !important; color: #000000 !important; } /** * jQUery Dropdown */ body .jq-dropdown.jq-dropdown-tip:before { position: absolute; top: -7px; right: 9px; content: ''; border-right: 7px solid; border-left: 7px solid; border-bottom: 7px solid; border-color: transparent transparent #DDD transparent; display: inline-block; z-index: 99; } body .jq-dropdown.jq-dropdown-tip:after { position: absolute; top: -5px; right: 9px; content: ''; border-right: 7px solid; border-left: 7px solid; border-bottom: 7px solid; border-color: transparent transparent white transparent; display: inline-block; z-index: 99; } .jq-dropdown .jq-dropdown-menu, .jq-dropdown .jq-dropdown-panel { border-radius: 0; } .jq-dropdown .jq-dropdown-menu form { margin: 0; }PKc\9> ,assets/css/learndash-admin-style.min-rtl.cssnuW+Atable.learndash-admin-user-courses{width:100%;border:1px solid #ccc;border-collapse:collapse;background-color:#fff}table.learndash-admin-user-courses thead tr th{border-bottom:1px solid #ddd}table.learndash-admin-user-courses td,table.learndash-admin-user-courses th{border-bottom:1px solid #ddd;text-align:right}table.learndash-admin-user-courses tbody tr:nth-child(even){background-color:#f2f2f2}table.learndash-admin-user-courses td,table.learndash-admin-user-courses th{padding:5px 5px}table.learndash-admin-user-courses td.col-title{width:35%}table.learndash-admin-user-courses td.col-status{width:15%}table.learndash-admin-user-courses td.col-steps,table.learndash-admin-user-courses th.col-steps{text-align:center;width:15%}table.learndash-admin-user-courses td.col-dates{width:35%}table#learndash-data-upgrades .learndash-data-upgrades-name{font-weight:700}table#learndash-data-upgrades td.learndash-data-upgrades-button-container{width:10%}table#learndash-data-upgrades td.learndash-data-upgrades-status-container{width:90%}table#learndash-data-upgrades .progress-label-complete{color:green}table#learndash-data-upgrades .progress-label-in-progress{color:inherit}table#learndash-data-upgrades .progress-label-in-complete{color:red}table#learndash-data-upgrades .learndash-skipped{width:100%;color:red}table#learndash-data-upgrades .learndash-skipped ol{color:red;max-height:100px;overflow:auto;margin:5px 0;list-style-position:inside}table#learndash-data-upgrades .learndash-skipped ol li{margin-right:10px}.wpProQuiz_quizEdit .learndash-quiz-prerequisite-list-left,.wpProQuiz_quizEdit .learndash-quiz-prerequisite-list-right{width:45%;min-width:200px}.wpProQuiz_quizEdit .learndash-quiz-prerequisite-list-center{width:100px;min-width:100px;max-width:100px}.wpProQuiz_quizEdit td.learndash-quiz-prerequisite-list-left select.learndash-quiz-prerequisite-list,.wpProQuiz_quizEdit td.learndash-quiz-prerequisite-list-right select.learndash-quiz-prerequisite-list{width:100%}.ld-onboarding-screen{text-align:center}#poststuff .ld-onboarding-screen{text-align:center;background-color:#f1f1f1}#poststuff .ld-onboarding-screen h2,.ld-onboarding-screen h2{font-size:28px;font-weight:600}#poststuff .ld-onboarding-screen .dashicons-welcome-add-page,.ld-onboarding-screen .dashicons-welcome-add-page{color:#c6c9cb;font-size:80px;height:80px;width:80px}#poststuff .ld-onboarding-main,.ld-onboarding-main{margin-right:auto;margin-left:auto;max-width:600px;padding:50px 0}#poststuff .ld-onboarding-main p,.ld-onboarding-main p{font-size:18px}#poststuff .ld-onboarding-main a.button .dashicons-plus-alt,.ld-onboarding-main a.button .dashicons-plus-alt{color:#c6c9cb;vertical-align:middle}#poststuff .ld-onboarding-more-help,.ld-onboarding-more-help{background-color:#fff;margin-right:-20px;padding:50px 0}#poststuff .ld-onboarding-row,.ld-onboarding-row{align-items:flex-start;display:flex;justify-content:space-between;margin-right:auto;margin-left:auto;max-width:960px;text-align:right}#poststuff .ld-onboarding-col,.ld-onboarding-col{flex:1;font-size:16px;padding:0 20px}#poststuff .ld-onboarding-col p,.ld-onboarding-col p{font-size:16px}#poststuff .ld-onboarding-col img,.ld-onboarding-col img{height:auto;max-width:100%}#poststuff .ld-onboarding-col a,.ld-onboarding-col a{text-decoration:none}PKc\rEJ J 2assets/css/learndash-admin-binary-selector-rtl.cssnuW+A.learndash-binary-selector { clear: both; width: 100%; margin: 0; padding: 0; } .learndash-binary-selector table.learndash-binary-selector-table { width: 100%; } .learndash-binary-selector .learndash-binary-selector-section-left { width: 47%; float: right; } .learndash-binary-selector .learndash-binary-selector-section-middle { width: 5%; float: right; text-align: center; margin-top: 8%; } .learndash-binary-selector .learndash-binary-selector-section-right { width: 47%; float: right; } .learndash-binary-selector .learndash-binary-selector-section .learndash-binary-selector-items { border: 1px solid #ccc; padding: 5px; width: 100%; max-width: 100%; } .learndash-binary-selector .learndash-binary-selector-section .learndash-binary-selector-items > .learndash-binary-selector-item { padding: 0.15em 0; width: 100%; } /* .learndash-binary-selector .learndash-binary-selector-section .learndash-binary-selector-items > .learndash-binary-selector-item:hover, .learndash-binary-selector .learndash-binary-selector-section .learndash-binary-selector-items > .learndash-binary-selector-item-selected { background-color: #ccc; } */ /* .learndash-binary-selector .learndash-binary-selector-section .learndash-binary-selector-items > .learndash-binary-selector-item-disabled:hover{ background-color: inherit; } */ .learndash-binary-selector .learndash-binary-selector-search { width: 100%; float: right; } .learndash-binary-selector .learndash-binary-selector-section-left option.learndash-binary-selector-item-disabled { text-decoration: line-through; /* color: #ccc; */ } .learndash-binary-selector ul.learndash-binary-selector-pager { width: 100%; } .learndash-binary-selector ul.learndash-binary-selector-pager li.learndash-binary-selector-pager-prev { width: 30%; float: right; text-align: right; } .learndash-binary-selector ul.learndash-binary-selector-pager li.learndash-binary-selector-pager-info { width: 40%; float: right; text-align: center; } .learndash-binary-selector ul.learndash-binary-selector-pager li.learndash-binary-selector-pager-next { width: 30%; float: right; text-align: left; } .learndash-binary-selector ul.learndash-binary-selector-pager a { text-decoration: none; padding: 0 5px; display: block; } .learndash-binary-selector ul.learndash-binary-selector-pager a:hover { background-color: inherit; } PKc\wד'assets/css/learndash-admin-menu-rtl.cssnuW+A/* Admin Users */ body.learndash-user-admin #adminmenumain .toplevel_page_learndash-lms .wp-submenu > li.submenu-ldlms-topics:after, body.learndash-user-admin #adminmenumain .toplevel_page_learndash-lms .wp-submenu > li.submenu-ldlms-assignments:after { background: #b4b9be; content: ''; display: block; height: 1px; margin: 5px auto 0 auto; width: calc( 100% - 24px ); opacity: 0.4; } body.learndash-user-admin #adminmenu .toplevel_page_learndash-lms .wp-submenu > li.submenu-ldlms-topics, body.learndash-user-admin #adminmenu .toplevel_page_learndash-lms .wp-submenu > li.submenu-ldlms-assignments { padding-bottom: 1px; } body.learndash-user-admin #adminmenu .toplevel_page_learndash-lms .wp-submenu > li.submenu-ldlms-topics + li, body.learndash-user-admin #adminmenu .toplevel_page_learndash-lms .wp-submenu > li.submenu-ldlms-assignments + li { padding-top: 1px; } /* Grouop Leader */ body.learndash-user-group-leader #adminmenumain .toplevel_page_learndash-lms .wp-submenu > li.submenu-ldlms-essays:after { background: #b4b9be; content: ''; display: block; height: 1px; margin: 5px auto 0 auto; width: calc( 100% - 24px ); opacity: 0.4; } body.learndash-user-group-leader #adminmenu .toplevel_page_learndash-lms .wp-submenu > li.submenu-ldlms-essays { padding-bottom: 1px; } body.learndash-user-group-leader #adminmenu .toplevel_page_learndash-lms .wp-submenu > li.submenu-ldlms-essays + li { padding-top: 1px; } PKc\u++"assets/css/sfwd_editor.min-rtl.cssnuW+Ahtml .mceContentBody{font:16px/22px Arial,Helvetica,sans-serif;width:1024px!important;line-height:1.5em;margin-top:60px!important;background-size:1122px 793px!important;height:793px!important}p{margin-right:15px}PKc\ (assets/css/learndash-admin-style.min.cssnuW+Atable.learndash-admin-user-courses{width:100%;border:1px solid #ccc;border-collapse:collapse;background-color:#fff}table.learndash-admin-user-courses thead tr th{border-bottom:1px solid #ddd}table.learndash-admin-user-courses td,table.learndash-admin-user-courses th{border-bottom:1px solid #ddd;text-align:left}table.learndash-admin-user-courses tbody tr:nth-child(even){background-color:#f2f2f2}table.learndash-admin-user-courses td,table.learndash-admin-user-courses th{padding:5px 5px}table.learndash-admin-user-courses td.col-title{width:35%}table.learndash-admin-user-courses td.col-status{width:15%}table.learndash-admin-user-courses td.col-steps,table.learndash-admin-user-courses th.col-steps{text-align:center;width:15%}table.learndash-admin-user-courses td.col-dates{width:35%}table#learndash-data-upgrades .learndash-data-upgrades-name{font-weight:700}table#learndash-data-upgrades td.learndash-data-upgrades-button-container{width:10%}table#learndash-data-upgrades td.learndash-data-upgrades-status-container{width:90%}table#learndash-data-upgrades .progress-label-complete{color:green}table#learndash-data-upgrades .progress-label-in-progress{color:inherit}table#learndash-data-upgrades .progress-label-in-complete{color:red}table#learndash-data-upgrades .learndash-skipped{width:100%;color:red}table#learndash-data-upgrades .learndash-skipped ol{color:red;max-height:100px;overflow:auto;margin:5px 0;list-style-position:inside}table#learndash-data-upgrades .learndash-skipped ol li{margin-left:10px}.wpProQuiz_quizEdit .learndash-quiz-prerequisite-list-left,.wpProQuiz_quizEdit .learndash-quiz-prerequisite-list-right{width:45%;min-width:200px}.wpProQuiz_quizEdit .learndash-quiz-prerequisite-list-center{width:100px;min-width:100px;max-width:100px}.wpProQuiz_quizEdit td.learndash-quiz-prerequisite-list-left select.learndash-quiz-prerequisite-list,.wpProQuiz_quizEdit td.learndash-quiz-prerequisite-list-right select.learndash-quiz-prerequisite-list{width:100%}.ld-onboarding-screen{text-align:center}#poststuff .ld-onboarding-screen{text-align:center;background-color:#f1f1f1}#poststuff .ld-onboarding-screen h2,.ld-onboarding-screen h2{font-size:28px;font-weight:600}#poststuff .ld-onboarding-screen .dashicons-welcome-add-page,.ld-onboarding-screen .dashicons-welcome-add-page{color:#c6c9cb;font-size:80px;height:80px;width:80px}#poststuff .ld-onboarding-main,.ld-onboarding-main{margin-left:auto;margin-right:auto;max-width:600px;padding:50px 0}#poststuff .ld-onboarding-main p,.ld-onboarding-main p{font-size:18px}#poststuff .ld-onboarding-main a.button .dashicons-plus-alt,.ld-onboarding-main a.button .dashicons-plus-alt{color:#c6c9cb;vertical-align:middle}#poststuff .ld-onboarding-more-help,.ld-onboarding-more-help{background-color:#fff;margin-left:-20px;padding:50px 0}#poststuff .ld-onboarding-row,.ld-onboarding-row{align-items:flex-start;display:flex;justify-content:space-between;margin-left:auto;margin-right:auto;max-width:960px;text-align:left}#poststuff .ld-onboarding-col,.ld-onboarding-col{flex:1;font-size:16px;padding:0 20px}#poststuff .ld-onboarding-col p,.ld-onboarding-col p{font-size:16px}#poststuff .ld-onboarding-col img,.ld-onboarding-col img{height:auto;max-width:100%}#poststuff .ld-onboarding-col a,.ld-onboarding-col a{text-decoration:none}PKc\p,,assets/css/sfwd_module.min.cssnuW+A.form-table.sfwd{clear:none}.form-table.sfwd td{vertical-align:top;padding:16px 0 10px 0;line-height:20px;font-size:12px}.form-table.sfwd th{width:200px;padding:10px 0 12px 9px}.sfwd_help_text_link{text-align:left;float:left;width:100%;max-width:300px;align-items:center;display:flex;flex-direction:row-reverse;justify-content:space-between}.sfwd_help_text_link img{width:30px;height:30px;float:left}.sfwd_label{color:#5f5f5f;font-weight:700;line-height:19px;width:60%;float:right;margin:0;flex:1}.sfwd_help_text_div{text-align:left;width:100%;margin:10px 0 10px 0}.sfwd_help_text{font-size:12px;float:left;clear:left;color:#797979;line-height:15px;font-style:italic;font-weight:lighter;margin-right:30px}.sfwd_head_tagline{color:#5f5f5f;font-size:13px}.sfwd_head_nav{float:left;font-size:18px;margin:0 0 16px 0;font-family:HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Neue",sans-serif;border-bottom:1px solid #ccc;width:100%}.sfwd_head_nav_tab{padding:10px 15px 10px 15px;margin:0 0 0 15px;border-width:1px 1px 0;border-radius:4px 4px 0 0;border-style:solid;border-color:#ccc #ccc #fff;float:left;opacity:.5;color:#000;text-shadow:#fff 0 1px 0;text-decoration:none}.sfwd_head_nav_tab.sfwd_head_nav_active{opacity:1;margin-bottom:-1px;border-width:1px}.sfwd_head_nav_tab:first-child{margin-left:0}.sfwd_head_nav_tab:hover{opacity:1}.sfwd_header{float:left;clear:left}.sfwd_advert{padding:10px;margin-bottom:20px;border:1px solid #ddd;height:200px;width:423px}.sfwd_adverts{float:right}.sfwd_content{min-width:760px;clear:left}.sfwd_options_wrapper .hndle{font-size:15px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-weight:400;padding:7px 10px;margin:0;line-height:1}#sfp_feature_manager_metabox.postbox{float:left}.sfwd_advert p{margin:25px 0 25px 0}#titlediv,#widget-list .widget-top,.postbox,.sfwd_options_wrapper .postarea,.stuffbox,.widget{border-color:#dfdfdf;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.sfwd_advert h3{padding:0;margin-top:6px}.sfwd_metabox_text p{margin:0;width:101%}.sfwd_sidebar{width:457px;margin-left:10px}.sfwd_metabox_text{margin-bottom:0}.sfwd_metabox_wrapper{padding:0}.sfwd_metabox_text :last-child{margin:0}.sfwd_metabox_feature{margin-top:20px}.sfwd_option_label{float:left;margin:5px;width:38%;min-width:210px;max-width:300px;text-align:right;vertical-align:top;color:#5f5f5f!important}.sfwd_metabox_text h2{font-size:14px;padding:0;font-weight:700;line-height:29px}#sfwd-about .sfwd_metabox_text #mc-embedded-subscribe-form h2{font-size:13px}.sfwd input[readonly]{background-color:#eee;margin:5px 0 5px 0!important}.sfwd_settings_left{float:left;padding:0;margin:0;width:100%}.sfwd_right_sidebar{float:right}.sfwd_options{width:100%;margin:18px 0 10px 0}.sfwd_input{clear:left;width:100%;padding:5px}.sfwd_option_input{float:left;width:58%;margin:5px;min-width:320px;max-width:900px}.sfwd_no_label .sfwd_option_input,.sfwd_top_label .sfwd_option_input{width:100%}.sfwd_settings_left .postbox{float:left;width:100%}.sfwd_option_setting_label{float:left;min-width:125px;min-height:35px;width:25%;max-width:175px}.sfwd_settings_left .postbox .inside{padding:0;margin:0}#sfwd_opengraph_settings{width:100%}.sfwd_no_label{float:left;width:92%;margin:0 23px 20px 13px}.sfwd_top_label{width:96%;margin:0 10px}.sfwd_hidden_type{margin:0;padding:0;height:0}.sfwd_module.error.below-h2{padding:5px 0;margin:0 477px 15px 0!important}.sfwd_input input[type=checkbox],.sfwd_input input[type=radio]{vertical-align:text-bottom}#sfp{width:100%}.sfwd_input.sfwd_top_label .sfwd_option_input{margin:0 0 10px 0}.sfwd_error_notice{font-size:15px;font-style:italic;color:#5f5f5f}#sfwd-courses_course_price_billing_cycle select{margin-top:-4px;height:35px}#sfwd-courses_course_price_billing_cycle input{width:40px}.sfwd_help_text ul{margin:15px 0 0 20px}.sfwd_help_text ul li{line-height:20px;margin:0}.sfwd_sidebar #side-sortables{width:98%}.sfwd_header_tabs li{display:inline;padding:0;margin:0}.sfwd_header_tabs{margin:0}.sfwd_header_nav{margin:0}.sfwd_header_tabs li a.sfwd_header_tab.active{background-color:#fff;background-color:rgba(255,255,255,.75)}.sfwd_header_tabs li a.sfwd_header_tab{color:#464646;font-size:15px;text-decoration:none;border:solid 1px #ccc;border-left:none;margin:0;padding:6px 6px 1px 6px}.sfwd_header_tabs li:first-child a.sfwd_header_tab{border-left:solid 1px #ccc}.sfwd_tab{border:solid 1px #ccc;background-color:#fff;background-color:rgba(255,255,255,.5)}.wrap>h2{padding-bottom:14px}#learndash_group_users_search{display:none}table.learndash-group-users-select{width:100%}table.learndash-group-users-select td.td_learndash_group_users_search{width:45%}table.learndash-group-users-select td.td_learndash_group_users_search select{min-width:100%;height:150px}body.post-type-sfwd-assignment .ld-global-header .global-new-entity-button,body.post-type-sfwd-essays .ld-global-header .global-new-entity-button,body.post-type-sfwd-transactions .ld-global-header .global-new-entity-button{display:none}table#learndash-data-reports,table#learndash-data-upgrades{border:0}.learndash-data-reports-status,.learndash-data-upgrades-status{width:100%}.learndash-data-reports-status .progress-meter,.learndash-data-upgrades-status .progress-meter{width:100%;height:20px;border:1px solid #000}.learndash-data-reports-status .progress-meter .progress-meter-image,.learndash-data-upgrades-status .progress-meter .progress-meter-image{background-color:green;float:left;height:16px;width:0;margin:2px 0}.sfwd_input .sfwd_option_div select[multiple]{width:100%;min-height:100px}table.learndash-support-settings tbody th{text-align:left;vertical-align:top;padding:5px 0 5px 15px}.learndash-settings-page-wrap div.sfwd_options{padding-bottom:30px}.learndash_shortcodes_section .learndash_required_field{color:red}.sfwd_input.learndash-settings-field-error{background-color:#ffdfe0;border-bottom:1px solid #c89797;border-top:1px solid #c89797}.sfwd_input p.ld-clear{height:0;clear:left;padding:0}.edit-post-header__settings .components-popover__content a:hover{color:#007cba}PKc\H1 1 assets/css/front.min-rtl.cssnuW+A.sfwd_module .error{text-align:center}.content_article_style{min-width:600px}.post2pdf_conv_image_align_center{text-align:center}.slickQuizWrapper .button{float:right;width:auto;padding:5px 15px;color:#fff;background-color:#008b8b;border:1px solid #fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;text-decoration:none}.slickQuizWrapper .button:hover{background-color:#2f4f4f}.startQuiz{margin-top:20px}.quizArea,.quizResults{margin-bottom:40px}.quizArea,.quizResults{zoom:1}.quizArea:after,.quizArea:before,.quizResults:after,.quizResults:before{content:"\0020";display:block;height:0;visibility:hidden;font-size:0}.quizArea:after,.quizResults:after{clear:both}.questionCount{font-size:14px;font-style:italic}.questionCount span{font-weight:700}ol.questions{margin-top:20px;margin-right:0}ol.questions li{margin-right:0}ul.answers{margin-right:20px;margin-bottom:20px}ul.responses li{margin:10px 20px 20px}ul.responses li p span{display:block;font-weight:700;font-size:18px}ul.responses li.correct p span{color:#6c9f2e}ul.responses li.incorrect p span{color:#b5121b}.quizResults h3{margin:0}.quizResults h3 span{font-weight:400;font-style:italic}.quizResultsCopy{margin-top:20px}.ppalholder{display:none}.ppalbtn{border:0!important}.user_has_no_access #learndash_quizzes a,.user_has_no_access .is_not_sample a,.user_has_no_access .is_not_sample a span{color:gray!important;text-decoration:none!important}.widget .list-count{display:none}dd.course_progress{position:relative;display:block;border:1px solid #000;width:100%;height:16px;margin:0 0 2px;background-color:#fff;padding:0}dd.course_progress div.course_progress_blue{position:relative;background-color:#00f;height:16px;width:75%;text-align:left;display:block}.wpProQuiz_cloze>input[type=text]{max-width:99%}.checkout-dropdown-button button,.checkout-dropdown-button input[type=submit]{border-radius:0!important;font-size:16px!important;margin:0;text-align:center;width:100%}.checkout-dropdown-button ul{padding:0!important;list-style:none!important;list-style-type:none!important;line-height:auto!important}.checkout-dropdown-button ul.jq-dropdown-menu li{list-style:none!important;list-style-type:none!important;margin:none!important;padding:none!important;line-height:auto!important}.jq-dropdown .jq-dropdown-menu li{list-style:none!important;list-style-type:none!important;margin:0!important;padding:0!important}.checkout-dropdown-button #btn-join,.checkout-dropdown-button .btn-join,.checkout-dropdown-button form input[type=submit]{background-color:#fff!important;color:#333!important}.checkout-dropdown-button #btn-join:hover,.checkout-dropdown-button .btn-join:hover,.checkout-dropdown-button form input[type=submit]:hover{background-color:#f5f5f5!important;color:#000!important}body .jq-dropdown.jq-dropdown-tip:before{position:absolute;top:-7px;right:9px;content:'';border-right:7px solid;border-left:7px solid;border-bottom:7px solid;border-color:transparent transparent #ddd transparent;display:inline-block;z-index:99}body .jq-dropdown.jq-dropdown-tip:after{position:absolute;top:-5px;right:9px;content:'';border-right:7px solid;border-left:7px solid;border-bottom:7px solid;border-color:transparent transparent #fff transparent;display:inline-block;z-index:99}.jq-dropdown .jq-dropdown-menu,.jq-dropdown .jq-dropdown-panel{border-radius:0}.jq-dropdown .jq-dropdown-menu form{margin:0}PKc\V {{assets/css/style.min-rtl.cssnuW+A.groups_table,.groups_user_table{width:100%}.groupemailtext{max-width:600px}.group_email_sub{width:50%}.nss_plugin_license_email{min-width:30%}.button_delete_course_data{background-color:Red;color:#fff;padding:10px 5px}.cert_shortcode_parm_list{margin:20px 30px;list-style:initial}.column-sno{width:50px}.groups_table .column-action{width:300px}.groups_user_table .column-action{width:100px}#profile-page #ld_course_info_mycourses_list{display:none}#learndash_lesson_topics_list ul,.learndash_navigation_lesson_topics_list{display:table;width:100%;margin-bottom:0}#learndash_lesson_topics_list ul{padding:0}#learndash_lesson_topics_list ul>li,.learndash_navigation_lesson_topics_list>div{display:table-row}.learndash_navigation_lesson_topics_list>div>div.list_arrow{display:table-cell;width:16px;text-align:center;padding:0!important}.course_navigation .learndash_topic_widget_list a>span{overflow:hidden;margin:0 5px 0 0}.course_navigation .learndash_topic_widget_list>ul{margin:0}.course_navigation a{text-decoration:none}.course_navigation .learndash_navigation_lesson_topics_list .lesson{margin:5px}.course_navigation .learndash_navigation_lesson_topics_list ul li{margin-right:0;list-style:none}.course_navigation .learndash_navigation_lesson_topics_list .learndash_topic_dots.type-list ul>li{padding-right:10px}.learndash_navigation_lesson_topics_list .learndash_topic_dots.type-list a>span{padding:0 25px 0 0}.learndash_topic_dots.type-list a{display:block}#learndash_lesson_topics_list span a,.learndash_topic_dots a,.learndash_topic_dots a>span{text-decoration:none!important;font-weight:100;font-size:12px}#learndash_lesson_topics_list div ul>li .sn,#learndash_lesson_topics_list div>strong,#learndash_profile a,#learndash_profile div,.expand_collapse,.learndash_profile_heading,.notavailable_message{font-size:12px;font-weight:400}.list_arrow.expand{background:url(../images/gray_arrow_expand.png) no-repeat scroll 100% 50% transparent;padding:5px}.active .list_arrow.expand{background:url(../images/green_arrow_expand.png) no-repeat scroll 100% 50% transparent;padding:5px}.active .list_arrow.collapse{background:url(../images/green_arrow_collapse.png) no-repeat scroll 100% 50% transparent;padding:5px}.list_arrow.collapse{background:url(../images/gray_arrow_collapse.png) no-repeat scroll 100% 50% transparent;padding:5px}.list_arrow.collapse.lesson_completed{background:url(../images/green_arrow_collapse.png) no-repeat scroll 100% 50% transparent;padding:5px}.lesson_incomplete.list_arrow.collapse{background:url(../images/gray_arrow_collapse.png) no-repeat scroll 100% 50% transparent;padding:5px}.list_arrow.expand.lesson_completed{background:url(../images/images/green_arrow_expand.png) no-repeat scroll 100% 50% transparent;padding:5px}.lesson_incomplete.list_arrow.expand{background:url(../images/gray_arrow_expand.png) no-repeat scroll 100% 50% transparent;padding:5px}.rtl .active .list_arrow.collapse,.rtl .list_arrow.collapse.lesson_completed{background-image:url(../images/green_arrow_collapse_rtl.png)}.rtl .lesson_incomplete.list_arrow.collapse,.rtl .list_arrow.collapse{background-image:url(../images/gray_arrow_collapse_rtl.png)}.learndash_navigation_lesson_topics_list .list_arrow.expand{background-position:50% 10px}.learndash_navigation_lesson_topics_list .list_arrow.collapse{background-position:50% 7px}.learndash_navigation_lesson_topics_list .topic-notcompleted span{background:url(../images/notcompleted_t_navigation.png) no-repeat scroll 100% 8px transparent;display:inline-block;min-height:25px;line-height:25px;padding-right:20px;vertical-align:middle}#sfwd-quiz_quiz_pro_html{float:none}#learndash_quiz_advanced #poststuff,#sfwd-quiz_quiz_pro_html #poststuff{min-width:0}#sfwd-quiz_quiz_pro_html input[type=button]{padding:0 10px}#AutomaticallyDisplayLeaderboard label{display:inline-block}.nav-tab-sfwd-quiz_edit{margin-right:40px}.fixed .column-course{width:15%}.fixed .column-shortcode{width:150px}#sfwd-quiz_quiz_pro_html a.form_move,#sfwd-quiz_quiz_pro_html input[name=form_delete]{font-size:12px;border-radius:3px}.post-new-php.post-type-sfwd-quiz #sfwd-quiz_quiz_pro{display:none}.wp-admin.post-type-sfwd-assignment h2 a.add-new-h2{display:none}#learndash_assignment_metabox .button{margin-left:10px}#learndash_essay_status_div #post_status{width:100%}#learndash_essay_status_div .inside{padding:0}#learndash_essay_grading_response_div #grading-response{width:100%}.learndash_uploaded_assignment_points{font-size:12px}.leardash-course-status-completed{color:green}#course_progress_details .learndash_navigation_lesson_topics_list .topic-notcompleted span{background:100% 0;padding-right:0;margin-right:0}#course_progress_details .learndash_topic_widget_list ul{margin-right:15px}.course_navigation ul.learndash-topic-list li.topic-item ul.learndash-quiz-list{margin-right:10px}.course_navigation input[type=number]{height:20px}.ld-shortcode-header{font-weight:700;font-size:1.1em;border-bottom:1px solid #ccc}.fixed .column-ld_posts{width:74px}.column-ld_posts{text-align:center}body.post-type-sfwd-courses .column-categories,body.post-type-sfwd-courses .column-tags,body.post-type-sfwd-courses .column-taxonomy-ld_course_category,body.post-type-sfwd-courses .column-taxonomy-ld_course_tag,body.post-type-sfwd-lessons .column-categories,body.post-type-sfwd-lessons .column-tags,body.post-type-sfwd-lessons .column-taxonomy-ld_lesson_category,body.post-type-sfwd-lessons .column-taxonomy-ld_lesson_tag,body.post-type-sfwd-topic .column-categories,body.post-type-sfwd-topic .column-tags,body.post-type-sfwd-topic .column-taxonomy-ld_topic_category,body.post-type-sfwd-topic .column-taxonomy-ld_topic_tag{width:10%}.sfwd .ld_date_selector select{padding:0;margin:0;vertical-align:top;height:35px}.sfwd .ld_date_selector input[type=number]{width:50px;text-align:center;height:35px}.sfwd .ld_date_selector input.ld_date_aa[type=number]{width:65px}.ld-error{color:red}.ld-success{color:green}form#learndash-settings-page-form .date-time-text{display:inline-block;min-width:13em}form#learndash-settings-page-form .quizzes_time_formats fieldset label{margin:.25em 0 .5em!important;display:inline-block;line-height:1.4em}form#learndash-settings-page-form .quizzes_time_formats fieldset input[type=text]{height:20px;width:150px}PKc\n[`QQ"assets/css/jquery.dropdown.min.cssnuW+A.jq-dropdown{position:absolute;z-index:1039;display:none}.jq-dropdown .jq-dropdown-menu,.jq-dropdown .jq-dropdown-panel{min-width:160px;max-width:360px;list-style:none;background:#fff;border:solid 1px #ddd;border-radius:4px;box-shadow:0 5px 10px rgba(0,0,0,.2);overflow:visible;padding:4px 0;margin:0}.jq-dropdown .jq-dropdown-panel{padding:10px}.jq-dropdown.jq-dropdown-tip{margin-top:8px}.jq-dropdown.jq-dropdown-tip:before{position:absolute;top:-6px;left:9px;content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ddd;display:inline-block}.jq-dropdown.jq-dropdown-tip:after{position:absolute;top:-5px;left:10px;content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;display:inline-block}.jq-dropdown.jq-dropdown-tip.jq-dropdown-anchor-right:before{left:auto;right:9px}.jq-dropdown.jq-dropdown-tip.jq-dropdown-anchor-right:after{left:auto;right:10px}.jq-dropdown.jq-dropdown-scroll .jq-dropdown-menu,.jq-dropdown.jq-dropdown-scroll .jq-dropdown-panel{max-height:180px;overflow:auto}.jq-dropdown .jq-dropdown-menu li{list-style:none;padding:0 0;margin:0;line-height:18px}.jq-dropdown .jq-dropdown-menu label,.jq-dropdown .jq-dropdown-menu li>a{display:block;color:inherit;text-decoration:none;line-height:18px;padding:3px 15px;margin:0;white-space:nowrap}.jq-dropdown .jq-dropdown-menu label:hover,.jq-dropdown .jq-dropdown-menu li>a:hover{background-color:#f2f2f2;color:inherit;cursor:pointer}.jq-dropdown .jq-dropdown-menu .jq-dropdown-divider{font-size:1px;border-top:solid 1px #e5e5e5;padding:0;margin:5px 0}PKc\V%%=assets/css/learndash-admin-settings-page-translations.min.cssnuW+A.wrap-ld-translations table.ld-installed-translations th{font-weight:700}.wrap-ld-translations table.ld-installed-translations th.column-locale{width:10%}.wrap-ld-translations table.ld-installed-translations th.column-title{width:30%}.wrap-ld-translations table.ld-installed-translations th.column-actions-local{width:30%}.wrap-ld-translations table.ld-installed-translations th.column-actions-remote{width:30%}.wrap-ld-translations table.ld-installed-translations td.column-actions-local a{margin-right:5px}.wrap-ld-translations table.ld-installed-translations td.column-actions-remote a{margin-right:5px}.wrap-ld-translations table.ld-installed-translations td.column-actions-local span.ld-translation-mtime{margin-top:5px}.wrap-ld-translations table.ld-installed-translations td.column-actions-local a span.dashicons-download,.wrap-ld-translations table.ld-installed-translations td.column-actions-remote a span.dashicons-trash,a.learndash-translations-pot-file span.dashicons-download{margin-top:4px}.learndash-settings-page-wrap #publishing-action{width:100%}.learndash-settings-page-wrap #publishing-action p.learndash-translations-last-update span.label{font-weight:700}.learndash-settings-page-wrap .error{color:red}.learndash-settings-page-wrap a.learndash-translations-install{padding:5px 10px;display:none}PKc\&&assets/css/sfwd_module.cssnuW+A.form-table.sfwd{ clear: none; } .form-table.sfwd td { vertical-align: top; padding: 16px 0 10px 0; line-height: 20px; font-size: 12px; } .form-table.sfwd th { width: 200px; padding: 10px 0 12px 9px; } .sfwd_help_text_link { text-align: left; float: left; width: 100%; max-width: 300px; /* 10up-added */ align-items: center; display: flex; flex-direction: row-reverse; justify-content: space-between; } .sfwd_help_text_link img { /*width: 40px;*/ width: 30px; height: 30px; float: left; } .sfwd_label { color: #5F5F5F; font-weight: bold; line-height: 19px; width: 60%; float: right; /*margin: 11px 19% 10px 0;*/ margin: 0; flex:1; } /* .sfwd input[type="text"], .sfwd input[type="number"] { color: #515151; height: 35px; font-size: 14px; } */ /* .sfwd input[type="text"] { width: 100%; } */ /* .sfwd input[type="number"] { min-width: 100px; } */ /* .sfwd textarea { color: #515151; padding: 10px 0px 0px 10px; margin: 0px; font-size: 14px; line-height: 25px; width: 100%; } */ .sfwd_help_text_div { text-align:left; width:100%; margin: 10px 0px 10px 0px; } .sfwd_help_text { font-size: 12px; float: left; clear: left; color: #797979; line-height: 15px; font-style: italic; font-weight: lighter; margin-right: 30px; } .sfwd_head_tagline { color: #5F5F5F; font-size: 13px; } .sfwd_head_nav { float: left; font-size: 18px; margin: 0px 0 16px 0; font-family: "HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif; border-bottom: 1px solid #CCC; width: 100%; } .sfwd_head_nav_tab { padding: 10px 15px 10px 15px; margin: 0 0 0 15px; border-width: 1px 1px 0; border-radius: 4px 4px 0px 0; border-style: solid; border-color: #CCC #CCC white; float: left; opacity: 0.5; color: black; text-shadow: white 0 1px 0; text-decoration: none; } .sfwd_head_nav_tab.sfwd_head_nav_active { opacity: 1; margin-bottom: -1px; border-width: 1px; } .sfwd_head_nav_tab:first-child { margin-left: 0px; } .sfwd_head_nav_tab:hover { opacity:1; } .sfwd_header { float: left; clear: left; } .sfwd_advert { padding: 10px; margin-bottom: 20px; border: 1px solid #DDD; height: 200px; width: 423px; } .sfwd_adverts { float: right; } .sfwd_content { min-width: 760px; clear: left; } .sfwd_options_wrapper { } .sfwd_options_wrapper .hndle { font-size: 15px; font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif; font-weight: normal; padding: 7px 10px; margin: 0; line-height: 1; } #sfp_feature_manager_metabox.postbox { float: left; } .sfwd_advert p { margin: 25px 0 25px 0; } .widget, #widget-list .widget-top, .postbox, #titlediv, .sfwd_options_wrapper .postarea, .stuffbox { border-color: #DFDFDF; -moz-box-shadow: inset 0 1px 0 #fff; -webkit-box-shadow: inset 0 1px 0 #fff; box-shadow: inset 0 1px 0 #fff; -moz-border-radius: 3px; -khtml-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } .sfwd_advert h3 { padding: 0; margin-top: 6px; } .sfwd_metabox_text p { margin: 0 0 0px 0; width: 101%; } .sfwd_sidebar { width: 457px; margin-left: 10px; } .sfwd_metabox_text { margin-bottom: 0px; } .sfwd_metabox_wrapper { padding: 0px; } .sfwd_metabox_text *:last-child { margin: 0; } .sfwd_metabox_feature { margin-top: 20px; } .sfwd_option_label { float: left; /* margin: 0px 0 10px 5px; */ margin: 5px; width: 38%; min-width: 210px; max-width: 300px; text-align:right; vertical-align:top; color: #5F5F5F !important; } .sfwd_metabox_text h2 { font-size: 14px; padding: 0px; font-weight: bold; line-height: 29px; } #sfwd-about .sfwd_metabox_text #mc-embedded-subscribe-form h2 { font-size: 13px; } .sfwd input[readonly] { background-color: #EEE; margin: 5px 0 5px 0 !important; } /* .sfwd input[type="button"] { border-radius: 5px; padding: 10px; font-size: 15px; } */ .sfwd_settings_left { float: left; padding: 0px; margin: 0px 0 0 0; width: 100%; } .sfwd_right_sidebar { float: right; } /* #wpbody-content { min-width: 600px; } */ .sfwd_options { width: 100%; margin: 18px 0px 10px 0px; } .sfwd_input { clear: left; width: 100%; padding: 5px; } .sfwd_option_input { float: left; width: 58%; margin: 5px; /* padding-left: 10px; */ min-width: 320px; max-width: 900px; } .sfwd_top_label .sfwd_option_input, .sfwd_no_label .sfwd_option_input { width: 100%; } .sfwd_settings_left .postbox { float: left; width: 100%; } .sfwd_option_setting_label{ float: left; min-width: 125px; min-height: 35px; width: 25%; max-width: 175px; } .sfwd_settings_left .postbox .inside { padding: 0; margin: 0; } #sfwd_opengraph_settings { width: 100%; } .sfwd_no_label { float: left; width: 92%; margin: 0 23px 20px 13px; } .sfwd_top_label { width: 96%; margin: 0 10px; } .sfwd_hidden_type { margin: 0; padding: 0; height: 0; } .sfwd_module.error.below-h2 { padding: 5px 0px; margin: 0px 477px 15px 0px !important; } .sfwd_input input[type="checkbox"], .sfwd_input input[type="radio"] { vertical-align: text-bottom; } #sfp { width: 100%; } .sfwd_input.sfwd_top_label .sfwd_option_input { margin: 0 0 10px 0; } .sfwd_error_notice { font-size: 15px; font-style: italic; color: #5F5F5F; } /* .sfwd_input select, .sfwd_input input[type="text"], .sfwd_input input[type="number"] { margin: 10px 0 0 0; } */ /* .sfwd_options .sfwd_input_type_checkbox .sfwd_option_input { margin: 10px 0 0 0; } */ /* .sfwd_options .sfwd_input_type_textarea .sfwd_option_input { margin: 0 0 10px 0; } */ /* .sfwd_options .sfwd_input_type_select .sfwd_option_input select { height: 35px; line-height: 35px; } */ /* .sfwd_options .sfwd_input_type_select .sfwd_option_input select option { height: 35px; line-height: 35px; } */ #sfwd-courses_course_price_billing_cycle select { margin-top: -4px; height: 35px; } #sfwd-courses_course_price_billing_cycle input { width: 40px; } .sfwd_help_text ul { margin: 15px 0 0 20px; } .sfwd_help_text ul li { line-height: 20px; margin: 0; } .sfwd_sidebar #side-sortables { width: 98%; } .sfwd_header_tabs li { display: inline; padding: 0px; margin: 0px; } .sfwd_header_tabs { margin: 0px; } .sfwd_header_nav { margin: 0px; } .sfwd_header_tabs li a.sfwd_header_tab.active { background-color: rgb( 255, 255, 255 ); background-color: rgba( 255, 255, 255, 0.75 ); } .sfwd_header_tabs li a.sfwd_header_tab { color: #464646; font-size: 15px; text-decoration: none; border: solid 1px #CCC; border-left: none; margin: 0px; padding: 6px 6px 1px 6px; } .sfwd_header_tabs li:first-child a.sfwd_header_tab { border-left: solid 1px #CCC; } .sfwd_tab { border: solid 1px #CCC; background-color: rgb( 255, 255, 255 ); background-color: rgba( 255, 255, 255, 0.5 ); } .wrap > h2 { padding-bottom: 14px; } /* @media only screen and (max-width: 1065px), @media only screen and (max-device-width: 1065px) { #wpbody-content { min-width: 600px; } .sfwd_settings_left { float: none; width: auto; } .sfwd_right_sidebar { float: none; width: auto; } .sfwd_sidebar { width: auto; } form#sfp_settings_form { padding-right: 0px; } } */ #learndash_group_users_search {display: none;} table.learndash-group-users-select { width: 100%; } table.learndash-group-users-select td.td_learndash_group_users_search { width: 45%; } table.learndash-group-users-select td.td_learndash_group_users_search select { min-width: 100%; height: 150px; } /* Hide the 'Add New' button on the Assignment and Submitted Essays list tables */ body.post-type-sfwd-assignment .ld-global-header .global-new-entity-button, body.post-type-sfwd-essays .ld-global-header .global-new-entity-button, body.post-type-sfwd-transactions .ld-global-header .global-new-entity-button { display:none; } /* Styles for the Support tab table output */ /* #learndash-settings-support h2 { clear: both; } #learndash-settings-support .learndash-support-settings-desc, #learndash-settings-support table.learndash-support-settings { clear: both; width: 80%; } #learndash-settings-support table.learndash-support-settings > tbody > *:nth-child(2n+1), ul.striped > *:nth-child(2n+1) { background-color: #f9f9f9; } #learndash-settings-support table.learndash-support-settings thead th { text-align: left; border-bottom: 1px solid #000; margin: 0; } #learndash-settings-support table.learndash-support-settings tbody td { padding: 3px; margin: 0; } #learndash-settings-support table.learndash-support-settings .learndash-support-settings-left { width: 35%; } #learndash-settings-support table.learndash-support-settings .learndash-support-settings-right { width: 65%; } */ table#learndash-data-reports, table#learndash-data-upgrades { border: 0px; } .learndash-data-reports-status, .learndash-data-upgrades-status { width: 100%; } .learndash-data-reports-status .progress-meter, .learndash-data-upgrades-status .progress-meter { width:100%; height: 20px; border: 1px solid black; } .learndash-data-reports-status .progress-meter .progress-meter-image, .learndash-data-upgrades-status .progress-meter .progress-meter-image { background-color: green; float: left; height: 16px; width: 0; margin: 2px 0; } .learndash-data-reports-status .progress-label, .learndash-data-upgrades-status .progress-label { } .sfwd_input .sfwd_option_div select[multiple] { width: 100%; min-height: 100px; } table.learndash-support-settings tbody th { text-align: left; vertical-align: top; padding: 5px 0 5px 15px; } .learndash-settings-page-wrap div.sfwd_options { padding-bottom: 30px; } .learndash_shortcodes_section .learndash_required_field { color: red; } .sfwd_input.learndash-settings-field-error{ background-color: #ffdfe0; border-bottom: 1px solid #c89797; border-top: 1px solid #c89797; } .sfwd_input p.ld-clear { height: 0; clear:left; padding:0; } .edit-post-header__settings .components-popover__content a:hover { color: #007cba; } PKc\Jo114assets/css/learndash-admin-overview-page.min-rtl.cssnuW+A.ld-bootview{width:100%;max-width:950px;margin:0 auto}.ld-bootview *{box-sizing:border-box}.ld-bootview h1{margin:20px 0;padding:9px 0 4px 0;font-size:23px;font-weight:400;line-height:29px}.ld-bootview h2{margin:0 0 30px;font-size:21px;font-weight:400;line-height:1.2}.ld-bootview h3{margin:0 0 20px;font-size:16px;font-weight:600}.ld-bootview p{margin:0 0 20px}.ld-bootview a{color:#0073aa;text-decoration:none}.ld-bootview a:hover{color:#00a0d2;text-decoration:underline}.ld-bootcamp,.ld-bootcamp p{width:100%;max-width:950px;margin:0 0 40px auto;color:#23282d;background:#f1f1f1;font-size:14px;line-height:1.5}.ld-bootcamp p{margin:0 auto 20px}.ld-bootcamp .notice{background:#fff}.ld-bootcamp--toggle{border:none;background:100% 0;cursor:pointer;float:left;color:#0073aa;margin-top:-20px}.ld-bootcamp--toggle:focus,.ld-bootcamp--toggle:hover{color:#00a0d2;text-decoration:underline}.ld-bootcamp__embed{overflow:hidden;position:relative;margin:0 0 20px;padding-top:56.25%}.ld-bootcamp__embed iframe{position:absolute;top:0;right:0;width:100%;height:100%;border:0}.ld-bootcamp__widget{padding:23px;background:#fff}.ld-bootcamp__widget--header{display:flex;justify-content:space-between}.ld-bootcamp__accordion{width:100%;max-width:750px;margin:0 auto}.ld-bootcamp__accordion--single{margin:0 0 15px;padding:23px;background:#f1f1f1}.ld-bootcamp__accordion--single h3{display:flex;align-items:center;margin:0}.ld-bootcamp__accordion--single h3 button{border:0;background:100% 0;font-size:16px;font-weight:600;height:24px;line-height:1.3;text-align:right}.ld-bootcamp__accordion--single h3 .ld-bootcamp__mark-complete--toggle{width:28px}.ld-bootcamp__accordion--single h3 .ld-bootcamp__accordion--toggle{margin-right:10px;align-self:flex-start;cursor:pointer;width:96%}.ld-bootcamp__accordion--single h3 button[aria-selected=true]{color:#23282d}.ld-bootcamp__accordion--single h3 .ld-bootcamp__mark-complete--toggle-indicator{background-color:inherit;background-size:cover;background-image:url(../images/incompletex.png);height:24px;width:24px}.ld-bootcamp__accordion--single.-completed h3 .ld-bootcamp__mark-complete--toggle-indicator{background-image:url(../images/checkmark.png)}.ld-bootcamp__accordion--single h3 button.ld-bootcamp__mark-complete--toggle-indicator:hover{background-image:url(../images/checkmark.png);cursor:pointer}.ld-bootcamp__accordion--single.-completed h3 button.ld-bootcamp__mark-complete--toggle-indicator:hover{background-image:url(../images/incompletex.png)}.ld-bootcamp__accordion--toggle .ld-bootcamp__accordion--toggle-indicator{color:#72777c;float:left}.ld-bootcamp__accordion--toggle[aria-expanded=true] .ld-bootcamp__accordion--toggle-indicator:before{content:"\f142";font:normal 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;width:20px;border-radius:50%}.ld-bootcamp__accordion--toggle[aria-expanded=false] .ld-bootcamp__accordion--toggle-indicator:before{content:"\f140";font:normal 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;width:20px;border-radius:50%}.ld-bootcamp__accordion--content{display:none}.ld-bootcamp__accordion--single .ld-bootcamp__accordion--content[aria-hidden=false]{display:block;margin:20px 0 0 0}.ld-bootcamp__accordion--single .ld-bootcamp__accordion--content li:before{display:inline-block;content:"-";width:10px;margin-right:5px}.ld-bootcamp__accordion--single .ld-bootcamp__accordion--content .ld-bootcamp__resources{margin:12px auto 0}.ld-bootcamp__accordion--single .ld-bootcamp__accordion--content .ld-bootcamp__resources p{font-weight:700}.ld-bootcamp__accordion--single .ld-bootcamp__resources-box{display:flex}.ld-bootcamp__accordion--single .ld-bootcamp__resources{flex:1}.ld-bootcamp__accordion--single .ld-bootcamp__mark_complete{margin-top:auto}.ld-bootcamp__license .notice-dismiss{padding:2px}.ld-bootcamp__license--fields{margin:0 0 20px}.ld-bootcamp__license--fields input[type=email],.ld-bootcamp__license--fields input[type=text]{display:block;width:100%;height:28px;margin:0 0 10px 0;padding:2px 6px;border:1px solid #ddd;outline:0;color:#32373c;background-color:#fff;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);font-size:13px;transition:border-color .25s ease-in}.ld-bootcamp__license--fields input[type=email]:focus,.ld-bootcamp__license--fields input[type=text]:focus{border-color:#0073aa}@media screen and (min-width:768px){.ld-bootcamp__license--fields{display:inline-block;width:calc(50% - 15px)}.ld-bootcamp__license--fields:last-of-type{margin-right:20px}.ld-bootcamp__license--fields input[type=email],.ld-bootcamp__license--fields input[type=text],.ld-bootcamp__license--fields label{flex-basis:calc(50% - 10px);margin:0}}.ld-overview{width:100%;max-width:950px;margin:0 auto;color:#23282d;background:#f1f1f1;font-size:13px;line-height:1.5}.ld-overview h3 svg{max-height:20px;margin:0 0 10px 0}.ld-overview h3 span{display:block}.ld-overview--columns ul{margin:0;padding:0;list-style-type:none}.ld-overview--columns li{padding:5px 0;border-bottom:1px solid #00a0d2}p.ld-overview--more{margin:20px 0 0;font-weight:700;text-align:left;text-transform:uppercase}.ld-overview--more a{color:#23282d}.ld-overview--widget{margin:0 0 16px;padding:23px;border:1px solid #e5e5e5;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04)}.ld-overview--widget.-support a.button.button-primary:focus,.ld-overview--widget.-support a.button.button-primary:hover{text-decoration:none}.ld-overview--search form{display:flex}.ld-overview--search input[type=text]{height:28px;padding:2px 6px;border:1px solid #ddd;color:#32373c;background-color:#fff;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);font-size:13px;flex:1}.ld-overview--search .button{flex:0 1 auto;margin-right:15px}.ld-overview--widget.-doc li{border:0}.ld-overview--widget.-doc .ld-overview--more{text-align:right;text-transform:none}.ld-overview--widget.-doc .ld-overview--more a{color:#0073aa}.ld-overview .ld-overview--widget .ld-bootcamp--toggle.button-orange{float:none;background:#df7b11;border-color:#ca5116;color:#fff;margin:10px 0 0;box-shadow:0 1px 0 #ca5116}.ld-overview .ld-overview--widget .ld-bootcamp--toggle.button-orange:focus,.ld-overview .ld-overview--widget .ld-bootcamp--toggle.button-orange:hover{background:#ee8617;border-color:#df7b11;text-decoration:none}.ld-overview--topics{margin:40px 0 0}.ld-overview--widget.-support ul{margin:20px 0 0;border-top:1px solid #e5e5e5}.ld-overview--widget.-support ul li{border-bottom:none}.ld-overview--widget.-support ul li:not(:first-child){border:0}@media screen and (min-width:768px){.ld-overview--columns{display:flex;justify-content:space-between}.ld-overview--topics .ld-overview--columns{justify-content:flex-start}.ld-overview--columns>div{flex:0 1 calc(50% - 10px)}.ld-overview--columns:not(.-half)>div{flex:0 1 calc(100% - 270px - 20px)}.ld-overview--columns:not(.-half)>div:last-child{flex-basis:270px}.ld-overview--columns.-support>div:first-child{border-left:0;flex-basis:calc(100% - 270px)}.ld-overview--widget.-doc .ld-overview--column{flex-basis:calc(33% - 5px)}.ld-overview .ld-overview--widget .ld-bootcamp--toggle.button-orange{margin:81% 0 0}}PKc\gdd$assets/css/learndash-admin-style.cssnuW+Atable.learndash-admin-user-courses { width: 100%; border: 1px solid #ccc; border-collapse: collapse; background-color: #ffffff; } table.learndash-admin-user-courses thead tr th { border-bottom: 1px solid #ddd; } table.learndash-admin-user-courses th, table.learndash-admin-user-courses td { border-bottom: 1px solid #ddd; text-align: left; } table.learndash-admin-user-courses tbody tr:nth-child(even) { background-color: #f2f2f2; } /* table.learndash-admin-user-courses tbody tr:hover { background-color: #f5f5f5; } */ table.learndash-admin-user-courses th, table.learndash-admin-user-courses td { padding: 5px 5px; } table.learndash-admin-user-courses td.col-title { width: 35%; } table.learndash-admin-user-courses td.col-status { width: 15%; } table.learndash-admin-user-courses th.col-steps, table.learndash-admin-user-courses td.col-steps { text-align: center; width: 15%; } table.learndash-admin-user-courses td.col-dates { width: 35%; } /* Data Upgrade screens */ table#learndash-data-upgrades .learndash-data-upgrades-name { font-weight: bold; } table#learndash-data-upgrades td.learndash-data-upgrades-button-container { width: 10%; } table#learndash-data-upgrades td.learndash-data-upgrades-status-container { width: 90%; } table#learndash-data-upgrades .progress-label-complete { color: green; } table#learndash-data-upgrades .progress-label-in-progress { color: inherit; } table#learndash-data-upgrades .progress-label-in-complete { color: red; } table#learndash-data-upgrades .learndash-skipped { width: 100%; color: red; } table#learndash-data-upgrades .learndash-skipped ol { color: red; max-height: 100px; overflow: auto; margin: 5px 0; list-style-position: inside; } table#learndash-data-upgrades .learndash-skipped ol li { margin-left: 10px; } .wpProQuiz_quizEdit .learndash-quiz-prerequisite-list-left, .wpProQuiz_quizEdit .learndash-quiz-prerequisite-list-right { width: 45%; min-width: 200px; } .wpProQuiz_quizEdit .learndash-quiz-prerequisite-list-center { width: 100px; min-width: 100px; max-width: 100px; } .wpProQuiz_quizEdit td.learndash-quiz-prerequisite-list-left select.learndash-quiz-prerequisite-list, .wpProQuiz_quizEdit td.learndash-quiz-prerequisite-list-right select.learndash-quiz-prerequisite-list { width: 100%; } /** * These styles are used for the Onboarding templates. */ .ld-onboarding-screen { text-align: center; } #poststuff .ld-onboarding-screen { text-align: center; background-color: #f1f1f1; } #poststuff .ld-onboarding-screen h2, .ld-onboarding-screen h2 { font-size: 28px; font-weight: 600; } #poststuff .ld-onboarding-screen .dashicons-welcome-add-page, .ld-onboarding-screen .dashicons-welcome-add-page { color: #C6C9CB; font-size: 80px; height: 80px; width: 80px; } #poststuff .ld-onboarding-main, .ld-onboarding-main { margin-left: auto; margin-right: auto; max-width: 600px; padding: 50px 0; } #poststuff .ld-onboarding-main p, .ld-onboarding-main p { font-size: 18px; } #poststuff .ld-onboarding-main a.button .dashicons-plus-alt, .ld-onboarding-main a.button .dashicons-plus-alt { color: #C6C9CB; vertical-align: middle; } #poststuff .ld-onboarding-more-help, .ld-onboarding-more-help { background-color: #fff; margin-left: -20px; padding: 50px 0; } #poststuff .ld-onboarding-row, .ld-onboarding-row { align-items: flex-start; display: flex; justify-content: space-between; margin-left: auto; margin-right: auto; max-width: 960px; text-align: left; } #poststuff .ld-onboarding-col, .ld-onboarding-col { flex: 1; font-size: 16px; padding: 0 20px; } #poststuff .ld-onboarding-col p, .ld-onboarding-col p { font-size: 16px; } #poststuff .ld-onboarding-col img, .ld-onboarding-col img { height: auto; max-width: 100%; } #poststuff .ld-onboarding-col a, .ld-onboarding-col a { text-decoration: none; } /* Hide WP listing */ /* .ld-onboarding-screen + .wrap { display: none; } */ PKc\yc ,assets/css/learndash-admin-overview-page.cssnuW+A.ld-bootview { width: 100%; max-width: 950px; margin: 0 auto; } .ld-bootview * { box-sizing: border-box; } .ld-bootview h1 { margin: 20px 0; padding: 9px 0 4px 0; font-size: 23px; font-weight: 400; line-height: 29px; } .ld-bootview h2 { margin: 0 0 30px; font-size: 21px; font-weight: 400; line-height: 1.2; } .ld-bootview h3 { margin: 0 0 20px; font-size: 16px; font-weight: 600; } .ld-bootview p { margin: 0 0 20px; } .ld-bootview a { color: #0073aa; text-decoration: none; } .ld-bootview a:hover { color: #00a0d2; text-decoration: underline; } .ld-bootcamp, .ld-bootcamp p { width: 100%; max-width: 950px; margin: 0 auto 40px 0; color: #23282d; background: #f1f1f1; font-size: 14px; line-height: 1.5; } .ld-bootcamp p { margin: 0 auto 20px; } .ld-bootcamp .notice { background: #fff; } .ld-bootcamp--toggle { border: none; background: transparent; cursor: pointer; float: right; color: #0073aa; margin-top: -20px; } .ld-bootcamp--toggle:hover, .ld-bootcamp--toggle:focus { color: #00a0d2; text-decoration: underline; } .ld-bootcamp__embed { overflow: hidden; position: relative; margin: 0 0 20px; padding-top: 56.25%; } .ld-bootcamp__embed iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0; } .ld-bootcamp__widget { padding: 23px; background: #fff; } .ld-bootcamp__widget--header { display: flex; justify-content: space-between; } .ld-bootcamp__accordion { width: 100%; max-width: 750px; margin: 0 auto; } .ld-bootcamp__accordion--single { margin: 0 0 15px; padding: 23px; background: #f1f1f1; } .ld-bootcamp__accordion--single h3 { display: flex; align-items: center; margin: 0; } .ld-bootcamp__accordion--single h3 button { border: 0; background: transparent; font-size: 16px; font-weight: 600; height: 24px; line-height: 1.3; text-align: left; } .ld-bootcamp__accordion--single h3 .ld-bootcamp__mark-complete--toggle { width: 28px; } .ld-bootcamp__accordion--single h3 .ld-bootcamp__accordion--toggle { margin-left: 10px; align-self: flex-start; cursor: pointer; width: 96%; } .ld-bootcamp__accordion--single h3 button[aria-selected="true"] { color: #23282d; } .ld-bootcamp__accordion--single h3 .ld-bootcamp__mark-complete--toggle-indicator { background-color: inherit; background-size: cover; background-image: url('../images/incompletex.png'); height: 24px; width: 24px; } .ld-bootcamp__accordion--single.-completed h3 .ld-bootcamp__mark-complete--toggle-indicator { background-image: url('../images/checkmark.png'); } .ld-bootcamp__accordion--single h3 button.ld-bootcamp__mark-complete--toggle-indicator:hover { background-image: url('../images/checkmark.png'); cursor: pointer; } .ld-bootcamp__accordion--single.-completed h3 button.ld-bootcamp__mark-complete--toggle-indicator:hover { background-image: url('../images/incompletex.png'); } .ld-bootcamp__accordion--toggle .ld-bootcamp__accordion--toggle-indicator { color: #72777c; float: right; } .ld-bootcamp__accordion--toggle[aria-expanded="true"] .ld-bootcamp__accordion--toggle-indicator:before { content: "\f142"; font: normal 20px/1 dashicons; speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; width: 20px; border-radius: 50%; } .ld-bootcamp__accordion--toggle[aria-expanded="false"] .ld-bootcamp__accordion--toggle-indicator:before { content: "\f140"; font: normal 20px/1 dashicons; speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; width: 20px; border-radius: 50%; } .ld-bootcamp__accordion--content { display: none; } .ld-bootcamp__accordion--single .ld-bootcamp__accordion--content[aria-hidden="false"] { display: block; margin: 20px 0 0 0; } .ld-bootcamp__accordion--single .ld-bootcamp__accordion--content li:before { display: inline-block; content: "-"; width: 10px; margin-left: 5px; } .ld-bootcamp__accordion--single .ld-bootcamp__accordion--content .ld-bootcamp__resources { margin: 12px auto 0; } .ld-bootcamp__accordion--single .ld-bootcamp__accordion--content .ld-bootcamp__resources p { font-weight: 700; } .ld-bootcamp__accordion--single .ld-bootcamp__resources-box { display: flex; } .ld-bootcamp__accordion--single .ld-bootcamp__resources { flex: 1; } .ld-bootcamp__accordion--single .ld-bootcamp__mark_complete { margin-top: auto; } .ld-bootcamp__license .notice-dismiss { padding: 2px; } .ld-bootcamp__license--fields { margin: 0 0 20px; } .ld-bootcamp__license--fields input[type="email"], .ld-bootcamp__license--fields input[type="text"] { display: block; width: 100%; height: 28px; margin: 0 0 10px 0; padding: 2px 6px; border: 1px solid #ddd; outline: 0; color: #32373c; background-color: #fff; box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.07); font-size: 13px; transition: border-color 0.25s ease-in; } .ld-bootcamp__license--fields input[type="email"]:focus, .ld-bootcamp__license--fields input[type="text"]:focus { border-color: #0073aa; } @media screen and (min-width: 768px) { .ld-bootcamp__license--fields { display: inline-block; width: calc(50% - 15px); } .ld-bootcamp__license--fields:last-of-type { margin-left: 20px; } .ld-bootcamp__license--fields label, .ld-bootcamp__license--fields input[type="email"], .ld-bootcamp__license--fields input[type="text"] { flex-basis: calc(50% - 10px); margin: 0; } } .ld-overview { width: 100%; max-width: 950px; margin: 0 auto; color: #23282d; background: #f1f1f1; font-size: 13px; line-height: 1.5; } .ld-overview h3 svg { max-height: 20px; margin: 0 0 10px 0; } .ld-overview h3 span { display: block; } .ld-overview--columns ul { margin: 0; padding: 0; list-style-type: none; } .ld-overview--columns li { padding: 5px 0; border-bottom: 1px solid #00a0d2; } p.ld-overview--more { margin: 20px 0 0; font-weight: 700; text-align: right; text-transform: uppercase; } .ld-overview--more a { color: #23282d; } .ld-overview--widget { margin: 0 0 16px; padding: 23px; border: 1px solid #e5e5e5; background: #fff; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); } .ld-overview--widget.-support a.button.button-primary:hover, .ld-overview--widget.-support a.button.button-primary:focus { text-decoration: none; } .ld-overview--search form { display: flex; } .ld-overview--search input[type="text"] { height: 28px; padding: 2px 6px; border: 1px solid #ddd; color: #32373c; background-color: #fff; box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.07); font-size: 13px; flex: 1; } .ld-overview--search .button { flex: 0 1 auto; margin-left: 15px; } .ld-overview--widget.-doc li { border: 0; } .ld-overview--widget.-doc .ld-overview--more { text-align: left; text-transform: none; } .ld-overview--widget.-doc .ld-overview--more a { color: #0073aa; } .ld-overview .ld-overview--widget .ld-bootcamp--toggle.button-orange { float: none; background: #DF7B11; border-color: #ca5116; color: #fff; margin: 10px 0 0; box-shadow: 0 1px 0 #ca5116; } .ld-overview .ld-overview--widget .ld-bootcamp--toggle.button-orange:focus, .ld-overview .ld-overview--widget .ld-bootcamp--toggle.button-orange:hover { background: #EE8617; border-color: #DF7B11; text-decoration: none; } .ld-overview--topics { margin: 40px 0 0; } .ld-overview--widget.-support ul { margin: 20px 0 0; border-top: 1px solid #e5e5e5; } .ld-overview--widget.-support ul li { border-bottom: none; } .ld-overview--widget.-support ul li:not(:first-child) { border: 0; } @media screen and (min-width: 768px) { .ld-overview--columns { display: flex; justify-content: space-between; } .ld-overview--topics .ld-overview--columns { /* display: flex; */ justify-content: flex-start; } .ld-overview--columns > div { flex: 0 1 calc(50% - 10px); } .ld-overview--columns:not(.-half) > div { flex: 0 1 calc(100% - 270px - 20px); } .ld-overview--columns:not(.-half) > div:last-child { flex-basis: 270px; } .ld-overview--columns.-support > div:first-child { border-right: 0; flex-basis: calc(100% - 270px); } .ld-overview--widget.-doc .ld-overview--column { flex-basis: calc(33% - 5px); } .ld-overview .ld-overview--widget .ld-bootcamp--toggle.button-orange { margin: 81% 0 0; } } PKc\/assets/css/learndash-admin-support-page.min.cssnuW+Atable.learndash-support-settings{clear:both;width:100%}table.learndash-support-settings>tbody>:nth-child(2n+1),ul.striped>:nth-child(2n+1){background-color:#f9f9f9}table.learndash-support-settings thead th{text-align:left;border-bottom:1px solid #000;margin:0}table.learndash-support-settings tbody td{padding:5px;margin:0}table.learndash-support-settings .learndash-support-settings-left{width:40%}table.learndash-support-settings .learndash-support-settings-right{width:60%}PKc\"AA"assets/css/sfwd_module.min-rtl.cssnuW+A.form-table.sfwd{clear:none}.form-table.sfwd td{vertical-align:top;padding:16px 0 10px 0;line-height:20px;font-size:12px}.form-table.sfwd th{width:200px;padding:10px 9px 12px 0}.sfwd_help_text_link{text-align:right;float:right;width:100%;max-width:300px;align-items:center;display:flex;flex-direction:row-reverse;justify-content:space-between}.sfwd_help_text_link img{width:30px;height:30px;float:right}.sfwd_label{color:#5f5f5f;font-weight:700;line-height:19px;width:60%;float:left;margin:0;flex:1}.sfwd_help_text_div{text-align:right;width:100%;margin:10px 0 10px 0}.sfwd_help_text{font-size:12px;float:right;clear:right;color:#797979;line-height:15px;font-style:italic;font-weight:lighter;margin-left:30px}.sfwd_head_tagline{color:#5f5f5f;font-size:13px}.sfwd_head_nav{float:right;font-size:18px;margin:0 0 16px 0;font-family:HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Neue",sans-serif;border-bottom:1px solid #ccc;width:100%}.sfwd_head_nav_tab{padding:10px 15px 10px 15px;margin:0 15px 0 0;border-width:1px 1px 0;border-radius:4px 4px 0 0;border-style:solid;border-color:#ccc #ccc #fff;float:right;opacity:.5;color:#000;text-shadow:#fff 0 1px 0;text-decoration:none}.sfwd_head_nav_tab.sfwd_head_nav_active{opacity:1;margin-bottom:-1px;border-width:1px}.sfwd_head_nav_tab:first-child{margin-right:0}.sfwd_head_nav_tab:hover{opacity:1}.sfwd_header{float:right;clear:right}.sfwd_advert{padding:10px;margin-bottom:20px;border:1px solid #ddd;height:200px;width:423px}.sfwd_adverts{float:left}.sfwd_content{min-width:760px;clear:right}.sfwd_options_wrapper .hndle{font-size:15px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-weight:400;padding:7px 10px;margin:0;line-height:1}#sfp_feature_manager_metabox.postbox{float:right}.sfwd_advert p{margin:25px 0 25px 0}#titlediv,#widget-list .widget-top,.postbox,.sfwd_options_wrapper .postarea,.stuffbox,.widget{border-color:#dfdfdf;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.sfwd_advert h3{padding:0;margin-top:6px}.sfwd_metabox_text p{margin:0;width:101%}.sfwd_sidebar{width:457px;margin-right:10px}.sfwd_metabox_text{margin-bottom:0}.sfwd_metabox_wrapper{padding:0}.sfwd_metabox_text :last-child{margin:0}.sfwd_metabox_feature{margin-top:20px}.sfwd_option_label{float:right;margin:5px;width:38%;min-width:210px;max-width:300px;text-align:left;vertical-align:top;color:#5f5f5f!important}.sfwd_metabox_text h2{font-size:14px;padding:0;font-weight:700;line-height:29px}#sfwd-about .sfwd_metabox_text #mc-embedded-subscribe-form h2{font-size:13px}.sfwd input[readonly]{background-color:#eee;margin:5px 0 5px 0!important}.sfwd_settings_left{float:right;padding:0;margin:0;width:100%}.sfwd_right_sidebar{float:left}.sfwd_options{width:100%;margin:18px 0 10px 0}.sfwd_input{clear:right;width:100%;padding:5px}.sfwd_option_input{float:right;width:58%;margin:5px;min-width:320px;max-width:900px}.sfwd_no_label .sfwd_option_input,.sfwd_top_label .sfwd_option_input{width:100%}.sfwd_settings_left .postbox{float:right;width:100%}.sfwd_option_setting_label{float:right;min-width:125px;min-height:35px;width:25%;max-width:175px}.sfwd_settings_left .postbox .inside{padding:0;margin:0}#sfwd_opengraph_settings{width:100%}.sfwd_no_label{float:right;width:92%;margin:0 13px 20px 23px}.sfwd_top_label{width:96%;margin:0 10px}.sfwd_hidden_type{margin:0;padding:0;height:0}.sfwd_module.error.below-h2{padding:5px 0;margin:0 0 15px 477px!important}.sfwd_input input[type=checkbox],.sfwd_input input[type=radio]{vertical-align:text-bottom}#sfp{width:100%}.sfwd_input.sfwd_top_label .sfwd_option_input{margin:0 0 10px 0}.sfwd_error_notice{font-size:15px;font-style:italic;color:#5f5f5f}#sfwd-courses_course_price_billing_cycle select{margin-top:-4px;height:35px}#sfwd-courses_course_price_billing_cycle input{width:40px}.sfwd_help_text ul{margin:15px 20px 0 0}.sfwd_help_text ul li{line-height:20px;margin:0}.sfwd_sidebar #side-sortables{width:98%}.sfwd_header_tabs li{display:inline;padding:0;margin:0}.sfwd_header_tabs{margin:0}.sfwd_header_nav{margin:0}.sfwd_header_tabs li a.sfwd_header_tab.active{background-color:#fff;background-color:rgba(255,255,255,.75)}.sfwd_header_tabs li a.sfwd_header_tab{color:#464646;font-size:15px;text-decoration:none;border:solid 1px #ccc;border-right:none;margin:0;padding:6px 6px 1px 6px}.sfwd_header_tabs li:first-child a.sfwd_header_tab{border-right:solid 1px #ccc}.sfwd_tab{border:solid 1px #ccc;background-color:#fff;background-color:rgba(255,255,255,.5)}.wrap>h2{padding-bottom:14px}#learndash_group_users_search{display:none}table.learndash-group-users-select{width:100%}table.learndash-group-users-select td.td_learndash_group_users_search{width:45%}table.learndash-group-users-select td.td_learndash_group_users_search select{min-width:100%;height:150px}body.post-type-sfwd-assignment .ld-global-header .global-new-entity-button,body.post-type-sfwd-essays .ld-global-header .global-new-entity-button,body.post-type-sfwd-transactions .ld-global-header .global-new-entity-button{display:none}table#learndash-data-reports,table#learndash-data-upgrades{border:0}.learndash-data-reports-status,.learndash-data-upgrades-status{width:100%}.learndash-data-reports-status .progress-meter,.learndash-data-upgrades-status .progress-meter{width:100%;height:20px;border:1px solid #000}.learndash-data-reports-status .progress-meter .progress-meter-image,.learndash-data-upgrades-status .progress-meter .progress-meter-image{background-color:green;float:right;height:16px;width:0;margin:2px 0}.sfwd_input .sfwd_option_div select[multiple]{width:100%;min-height:100px}table.learndash-support-settings tbody th{text-align:right;vertical-align:top;padding:5px 15px 5px 0}.learndash-settings-page-wrap div.sfwd_options{padding-bottom:30px}.learndash_shortcodes_section .learndash_required_field{color:red}.sfwd_input.learndash-settings-field-error{background-color:#ffdfe0;border-bottom:1px solid #c89797;border-top:1px solid #c89797}.sfwd_input p.ld-clear{height:0;clear:right;padding:0}.edit-post-header__settings .components-popover__content a:hover{color:#007cba}PKc\7##Aassets/css/learndash-admin-settings-page-translations.min-rtl.cssnuW+A.wrap-ld-translations table.ld-installed-translations th{font-weight:700}.wrap-ld-translations table.ld-installed-translations th.column-locale{width:10%}.wrap-ld-translations table.ld-installed-translations th.column-title{width:30%}.wrap-ld-translations table.ld-installed-translations th.column-actions-local{width:30%}.wrap-ld-translations table.ld-installed-translations th.column-actions-remote{width:30%}.wrap-ld-translations table.ld-installed-translations td.column-actions-local a{margin-left:5px}.wrap-ld-translations table.ld-installed-translations td.column-actions-remote a{margin-left:5px}.wrap-ld-translations table.ld-installed-translations td.column-actions-local span.ld-translation-mtime{margin-top:5px}.wrap-ld-translations table.ld-installed-translations td.column-actions-local a span.dashicons-download,.wrap-ld-translations table.ld-installed-translations td.column-actions-remote a span.dashicons-trash,a.learndash-translations-pot-file span.dashicons-download{margin-top:4px}.learndash-settings-page-wrap #publishing-action{width:100%}.learndash-settings-page-wrap #publishing-action p.learndash-translations-last-update span.label{font-weight:700}.learndash-settings-page-wrap .error{color:red}.learndash-settings-page-wrap a.learndash-translations-install{padding:5px 10px;display:none}PKc\$BB:assets/images-add-ons/learndash-paidmemberships_banner.jpgnuW+AJFIF  5W3~q_k&֔N=FuP.b5ZfVsD2f䖟XK Ӗh9>60û^ JesJYԬPᡰzR19J0볥b_(2z^*;R򤔦u_JkW<}vxCVϽ/hqkElN؞ܭp =N^4럭ЕGŽ[w÷vQ76`Va'?8? :pΙ͙ nݘ^YPGc%%ZpBpyW!ngo~sDCGZNP><S܂`kj<l@s {&#&\2r@ oSȮoH Ӑ߲2DiY cqJԪ\8WfՈU-iblm(٫,-Q߀n%_I纚4@6z=!~:q53c6lx(sTmS>f41&5N7JG \tH2]sZI4u(Gwɳv΍k"< TbZqH\}^//Ā[w]뼛rp l\.>^N^kgfJ2߭.`1! 234LDc!u0M,AG3MR(lEYʶsu B$:WqHQݲ zIƮ>l-Y+'%3<)h٫}a/$ϤHF۬0NT<VU꒧-|to)SZTX1.2yaS.s+s[;yU/NI>QPzpќg6+_𷵺.뀹l`!"GNGφ >OYvErV4o+L>v78㗗kmK-#sj:D4K+M C QI@4pO<ȸsjU aZVV6=Դ[KV)Mz9ȁ̋ٗR${#fFďv깸z Oz]EΦa1{Ov^X 2m^5Z㚖[RMG g(j?.WCmWTtb$V!`\IQg c~ V}wM<8O k0z4ɔ3&R-HՅ5(pMrvhȹ)"k-XAY3VH42oIIgAkZ3͈cꄳ+L c~;P! Ęz|փ 6JNFe)^dÿi)$s(Xֱuo8Juyn[7f:Ys#]\<. ؓYVNO6բ] %)rvImGCG͕{1t%{HQLZx6NahVaGVP3\qKR^6'ه^ݜìq< ;]ӍyYc8潯 1~)AݒM1{_kSEva-IEDŐSsɲx~pM[t,uP*BxOjgWJ_/%qK70dd9޼/=l nQv<}z%:jGDϧ[^׀ .\x3Ol! 0ݱ笂ß\m={kk ko7)=觭 Ed;D$pTAVfXոӓ䱺l~8>8->1~0؛Ksv獧8j:"K5HHKYx%Љ]el]vbIr[{VdYH'QDTMd&g?oS !1"2AQ`a#Bqr34R $Cbcst%&5DSTҒ ?7X:CNXgdj"X*GMJjb[vHyR9zHZDu\1d['rMת͌RjHث٨#[yVNxeyr)YQrXf`j(:X6Z;בex%PKJIut# '2,KmA`h 4OoY}RFEU$8Y)̶ܠlŸSuUB{1nd1Y)A2 жߍn kt:鼟V]N8hjKQ5`&GJ.9o'mGB٪n1-jVR]1A v(N[kWJ.Z4laRY43O,G X3kǪ؂$Պ$u q_#Īk/k3ROv$g:ZBg`~'=ŮbRI8HK;{TjXr~eᕴKW+|YPZX' >\q5_Js?*Z1,8N=F-c,KAfVO&@X̝_we{%\M>_jmc-۷OV "NG:k5\%3m!zvIiq6-X<$y]J|I=x|_.C#N׵6!W8?·79`|eA2374 )m$e*1Cc*TU 'ө췍<k~8wm4$pXORYΫO_nwSnśS%֪e|ў}t=`zۡ;PO;v4y[ +UcXĠM|Q1jI+T% + i++u#M}X-=}@@qťxяl)T=(M5K+ؚ9.ĉ"&Rekh; +Z#xӊkgFoQEGFNҦQ5iJUHZI]SnɃT1y6mdG^8dbW?a@:SӉE|cSg]B>!}r7QLm`vHjUqwիe Cf%qC+LFӳo3Q̸:zldos6u嫆Yȵ%Ss),-E*CJ*qvF[L+ԖBO<5 Rw1:Q yg$p Ÿ)%F8&xl1S $uiԭ v(z']QY dG컆9cHo_G f;'d9$ΎY;@|[];5|/_\&*اknq)s.lꭕNH%U UjejH O^1M9,;*c4w+Yt$+Jơd~QZRYbN"</N8>b娩nӯ=)tGeDSk}TnV'O tt > 22AY䧇F= :@V` ŀ95UKKmoQ/іJhd&v揿cgۦ[ ;MVD2Bx C4F}Á~R8g?W9_ةrs-rBN5@3~psu?rn֟Ccxx#j By t߉猿)ުxl5#:?Z4_o׋+?`f1}|4}SxFhȼI8^Z?N"!$tWԚdEd8V6馚dݑ)(K}gʹuXE$+bRK# ƊI'I" C6_$,dJOqGB2z<^4A|A =aZo;Co6ZGt\Ӥp7_;)?8w"uZAJ&Drъ6&rWQ$"L֏p4p?ۯ &+@5q&#+zSH]m 7!ܪrߏi4|HB V$BbX/>jxQiTp*"8ʵ`zl#@ Iy Dk-j/pYJIh:aSbX[tU*Pao7P4N< `(M5 tǔHnpr Pa| 6۫I}IāC@MJA2dJV޺pHZHȇpa;p+<#)V˿ ojˆsqf1UA*[ u@`qF5ٞ"A 7PQ0hFzSںCPDo݄Bą6Q*눻A @1 \3 mJsXy&x\i+WN`=E:j="N(5*}7qm3m-[EֲҭύjП$ #l% J 5O(:3sad@Ұx DE+k1BPӎ6L lN%aJDJ qvJ}6?~i@Go@ wkJoҐ}on+H-ָŐӮ$QX jD #3F ;|82N?t`3g\Ly\vCusV_6sq|=Vbl4|Rzy1T؂Ke IY3a/lkku7Ix)H``j۠dd9Vco?{6%-ݱ`0}>+mErI=XM7iX?J(yl,K$ʼnJR-+mG@%c8={J3;K&5+mgPM}ƭmyijS"E;DCw [$B$}SWRx9EF,F$dɲ-G}Χʰ|dܓnu]6EV*tEîÿHZ7Enϙs_dTViWR#Aɕ&4c^d[qY&%̤7g3SC lH+‹toRA@IHcLk5E~t%Uy^V!5\oRQe!5F2Hg5,HWݚ_^xYNc c#c3dW4X[8pբ4dw$YLD[P]2+ǭ#*"㵨¢Otb'l ]UcI؆{eM wBbA L?ᛸ\ 2^ԱZiJ p ٴl6-^;hU=@5w;Z`R#whn?βPFv؇E1G),Qu194z.9J F\NT؆eܢ_)vcj5ܔu"ҲqG2u%#„4 dhz3<3}T\cIs\C<1EƥH:S&i\,I9FʹU?a,Dži\0lm/*#C~3dvJZ_Ѫ*^KPQErRfYF+rׅyE0f Ϥ_īYrG;hʦ(*= D$h,NaaGlp~NҒX8\@?LmbZ,朎rN-r7CzxYmMhӟWtUl nSmTűB!F6aG˨few ЍAÆ(`qApqJHpq*XrJ"\I-a튾H4M5Q4 \B 4U( N\o1j/=rB5 H0qbQ3F !1AQa"`q2BbRrst #3CS ?m5w`UC6ʾdc~'=6sZr:ԁR*e\)SSQ71LR_BwbR R=kyP.(T2{dqQB 03R\ $6LCavzē`:E~YC!?U0N@PbJ5G qPdw1NFOE $dbISyd‚Ra*K1" P8Jk`A,Řَ9`)0*U%Cc*0Y2AQdh@! tj~ +SZфVQUkTLe]"a6TVGXeDq pF5+7u4`oaԮn5T;c1,ӧp˲_rШI? & /FO,8F*D  -LFX" 7DufUxgz9CqU I]  @@)uꓸ,tG pSNQo9FF(qeT?*Fs-jUV1M'EUfـ2y8sQ=N1KS$@\LvVYf 3;A$SB ?ÿUJmEޝ!ņr" KA*(i<zͻ3K [j{3{CVO޸QvZ#Fa5},I$I&'Ȼm5 嚓?~PFreu^fݒw 3y}caňyQ}|N+mnX w OJk2R;z^KYُ;Nم\Mɳ6O_>p Kǝ >Zu݊[]'eu풼2WU)+QzԘpV.SbaT ly"+-/9ao\VR; v8TΊg@';ͅH1Tna>tCDN蜟3[ 3TP gvZO䪥eV*lI\"`ĀquOSST|}Sf}>9S>}1&:6U}KL)Qv<;%4T\@j$SU ᩩֈð[)9ET7)Qi%Ȟ@9Lq΍_q΅CqjUÏ?7>6bj @B`<5 P)C`߲U貃FK>XC)<y^-N=f>jF"}( 4XUgY=zQTZ49 @ $5$ W޴uiiGŘk Twd3eV.0mE6 ‰rI$$IO3 `1!&"#U %2346 \TѬD'V8gmY؎BxS].#cC鵉4I/ қ#tZr9#S4'kUwD; J Wt+qy RJ0ͷ͹N9Qm[GːlegrZs"E3-qq}caȐ]m.fY],qZDzQ͉sǛo^`G9ua>n 7ӈtR?⪼믨*gT9?6WErwپfGyG'?ƙV2pW + eHI~ѧX^ LwLrs ͋zՓ'LII%eT1>"i\H;jp{oͮug>#]?{ yi=ar[fc8;>_vUc9큑R紸lņ[w ˤ>Pدl+Kİb}}3 "rSb~S-=ێ2o4d>,G  !1a"AQ2`#BRqr3bsu CctS ?nCَ5.wJ\3 KS;lw,^Z̄ ̜2{(aޠNh e Vvxwx]+ Yb]gQ,xxLM,aXt]谪˪FfdE$nQz `# TzIj4,QYmM^lI43;@4W5J߹Y&Ĺ$Y#`γƋ``>ffXri oRzwhrX,ѢCDsk=ߪ`caY=q yҨ|I$ `j.| ׅ}1*GR e#b6<ϙ˪q `NX"bv$FȝHXٺ. 8J(ӬuUnj5CK;bO2KI=591\0Č'9e:Ĥ 3bb5nʂ{;F1"؋.32($5x ^Xi Ć `<V35MD 'iheѐ9R[6}w&" Dd*ŻO$̂ y4kgv w}!ʮ8AVqXrLJ Hs<^e]@ &ƒzDB!yՀ(D;Wȣ a@6"%hْX(+PR[3E!#VwjT Ĩ2Ir*9,ʺm+W) Mx߈$qfc =I6a#ꑐ20KD W(JAܮ7(.Ӹ4"A,fR;z<R/Q"I-U=Z ŋEAy/ri4B3)*bV,#f'ĝ!rypiDll2ēf4P7,WHUQ,W=MCJ^*tMMOE2s=aWsxbIop*|=Qh*6TP@ ?3:3>J$$ȿVa؍K ;vfi9}G#Z* "((s')%&mÈM{>&ZuE?jCsv'Oi5)!Lt3qĚ,TV葏?t́1c` x #\uYsM24&,9Ȳro9ϲ''G2ČO,P}R'iV pfDnISG0W+IYw\A`ĬkhZ_hɵ&^$M+%PӔ_K2JHcc30雄:g!1/cl~񰉥^\22 LHIIgESDYd,ԻA5W0{d_FY}ч") "&tQE 54VsUy*Pu`~8,cX?lXXl u(\c}(Œ$*HmNESS^#mWpq"fcAUEIy euEC޷ڔ)x@}k3q {=F8ΦtN=`Vw>j UP@/PKc\)@)@:assets/images-add-ons/learndash-event-espresso_256x256.jpgnuW+AJFIF  7 gϲuYMT?lB/G|L? X8>?p1-wOBMqiݦq"#y38],+:Ikz({m sTNƕ-W.IU<%z5 QPh 84(7T4k#`1qa}('"4p.N=?=M"*t67GL1_}@%[W|X  ΓXyr@V+a8^s4[fL~RA=C^:w( ҌnBY*O"`pV^?#,^WX^π"Qb3*Tndp4:r*5]);XPZ7(s0GDCbj<K8c6WTJe1ԣHGhN٤W? %i]`s:pܵr@E]-y~=[|\,yR:W7|P_$ou YT?tuq]}Z*s|ezAqӐډKb I}hnM oT3(\nzWu`e@%932 Ӝ!x6z&WVof*q a@,  @ pX ўzɜf;k؂4b%7@ռ M]抚7e>-<r_n J;}"[H:̟CȚSeraU>7GS7=mrnˤ1P\{Iۚz{]CٔWmjn;%״ڭ#Sԉ{LbiءQH $f!X+:g`, %=ٍ&,HCJP?QcDXzlճ ^tKgw-[" ?9o).ߤyѺqiY72Cԥx' c,6䭚Cp2&ˡp+M1:Lԣ75DG;i" *4J'd$՟d ]+LggIԺN`"ZZEH)@2K)cᙙ-¬Nؒ+Zcj(R)@8vsa}BS4ndXƉrMg^Bݦ +WSH.Oqi@J"lRͿWgu$Cp7x‚ԉ-k1CV*Jהf5탒:Ϩ|& t$kXVj7cXR#5l #CYTS|OEX/SsVhթ^1NZhiD0%hj LxTD"p1#[O\ʿ''Hί֫*F=@#]N#Np,'ix8S@.[ZV* _(-Q$R0-J_Vx=#$r"iFEUOi> $QAlš_$z|jJ>r5q|7RǞ-urզ?J_c۵ iS̒:^]TlRj>#$lhmk @6!9K;VbmqTa#(_RtA BO457Xdh.X:mc[h7''qk=AjԛS ۞uj=Ƴ<߹*<2 )Q!ċ/.Dٯ[L/7"\9 A8e#˾[ѩn,I'@{L;is#c·W( a*>>݈ ͢ZX}Vn-L˯V0ӷE$kn1ȱ@:Y/u Cđ0!@1"# A2pQw ?bn4$y=lPcht ȝ5 Oi:|楎ŀ#ֶwJ*%,@ԞYf 3}$G ŕ2 >1Lqz0Uz]mi$(k91G$h{ZG|V9Y3VO%Ȫ׹G'bgF;mBKwloTGv O#~q.+)M-:4b"0DDDOALVPHj]HJ魼~8N!$gB#rDq捿-l~yϡ"ierwѨ:NgD -|&K)|K|6i$گ_%QG U<D琤r5uU4fh7S(MCUXh,^ሟ $5gmUiU7{ 􋰅 hgZgsx랲=^=QՒtyZx$ɂ`Z)}#YW971UϗXpy%c{H2 TsǵQ{\fm:YFP-xy^l0+o8WNKH,5q6A">3ϓ*Tm\V+U[KSLfO%TiQ̾</@go ;L++"LO {cX>r GC'!q5t~C@el3 G!V"iZk09**#'ԫAYcc^:Fs0e6ri"/hC{7ceF@13lL$kbrW"9U'|[[XcUc8poۯ 77ـ-aMgx!hNDrU"a1 W<ɲ3sQ|Z_Ɲ5Ѡ<d)VR1B$j腐ru zZ̔uN{er3aQ*]28K%ZMW< aGya->%ڸ*' UOaDiQg3C_ ~-âQdTGV"ډڽVF2JPdJ]Wk/d_A4l* =7\DaLda;䙟&e3%1׺[V0D,#G*}:͠^YcIB¦| u+j_"G!Zl.*,ɧ93pgyp Bx1{B;ji/H4JC=|y׹bʋGd*+e}a(JyUYP\e5"DXITIQȍ&9@ cG5ȨZ\{ä+14BԶqMХK1 _ɖX5Ux[qNX<*1O_rƙ h \I!z;`OjsQTS4UTUUX+O¶ A2 اb#v QL=Qia$ClFsgOHKY:V#F}d}KPڽuW@oxrMVw&MMZ%Wr*r""'.n3̖ Adpl%$u\h<3#UTsUZ /8cƑ^ƓUp8WqFH?, e%;* @?ѫD2?)572$ndy&U{sqvP[Z]w(_?hqKA/Ӣ{y|+UﹺŞ ) /`p .W+HD0,#8+4j'[:Vܪz\ƑUkнG=L9$af6;+H|efaId%uV(dk +5r?1w^fgb0FȿV-%"|PBd(J% F᭫sBNjeU <& tqKTǸ#ƌ`10e2[p(yy/}$ez6umXtZ9?:* |a]q VsѨO/> HnsUj'# f HM "5ZZHi\uih5ѮEESWū 7" {z<:*xXm;kUO įS{z.܈_$NhXK̞y Y&1pF2+W3k ?Ύ3kG"ƈ df֌ukǯHYk+qΓ.;j b+֢;H 3l2O24 ^HU9r).~w ϋmGQc9TjU㐨8S6ZR+|ڪ>1Xw&hҶBls?d==-7=u4p\xvdU=ۋyTDSMJſowǭ=[nO1kKiR֮q",ϛ:P/uߩQu܅[muJl~w>g$8"#nXռ]J;%0ΓmQ ]L/yfɻWTTc;69r xƴ%E{(QJԿxTѼn!|kwNIޯ(X@ߚjuuSuĥƺhF=ڍ= @]Oe6E|ԱQֽ|I`B!u!^"fLhcH)u~h"\[~M?ioՍhqKȆIR(^=_Tr^oThjMz0t" BfFJdι9 MBk#6Zy]'zeR0n6K}%2iL)\2/63&b~rI"ŊV'c惣؝ZQ'va ->-I%ȭcxI uTi}mܖB\ɳ|џ4"|w=zD8o!$?j5cfEVpmU/ 1;s44gb R I xs\Ur \lQj , =Ib@*=وP;##!}c)Aߩ6^I#E1eմ]??j]7l/ b6*˿%U j̪?͋^3IOdBypQ}ɭُvbXI?+5߱܏8˸3r-b7eBZI\- t$9=yȉk MRU(뺊T@43:FA;–Xd;Yxf,T]t_৚_fObo%IIڋqxmHI(HhIDF'7[Ec3Fڥ< 6$e$4S;&,ozhwa;c0gJFԵԤ_y<fT#2ql= .0MQVV(fE<؀dEQyj$< oApI@Fl 6JRi@5 {XB1x~JipZGITnYeQI qWT5ubf@%PCqj@4 ~۬BN7LB07cJ?LiSHRoGgc(8Qw>)$>9g>D39&6'8TUxN5 /51KI'2W._}=P4:@dSOf$VcesۅLŕCiH,\#:e/3Z{<p]I$Hƾy#^ Э"~b8}Cb%NxVrXQ!b.'g'I͗:To$[G](9UO-w@I5scWa. Ʉvk!7$Ʒ'Tk akH*h@N+1dRB)J],7HF5Cr4J\Ԑw H<|,*D9gC I(H FBZ,3\BEkbG !0 9`:8U")7^Z/S{`~ec@$ۜv:D1HL'04 ~36z29~޹Mt]E̊)OXH~ "H2y~z \Gv3 ak,ѬP,Ƹ;>e`~q߾AJT ?,@ !"$34pV 1_-F Ԥ(nYqmMdUOLnFfœK- xg&3.cWU{o[ ㈡賃Yn|u{8E{a: #[#EsR6XYNj3,TYe$9ymj֧wZV=E]]ucf6¯s7q4]D4Ʊ=Ko뢭G87J]pY]r#F΄3hcGƚ[ &Iڛ12־>=aN}F}-ofL^y"z(f=Y؞cSxcsYc"XsfO)}6ܺA/Y@izQx%g͹8`Jfyf]^&.Wdb[8sh1Ŵ=>MFfY"yQUf8[s=8J{"fmk[%a5s>)dFM dܿ}ɺE.L4_:ך.HcVYjK̲.I=uy"ES[,˕ g֯'I8掽 l~erWp\is/TYq?bw.5td/) 9C#tn(#[UUdUq&#ins~qJzW~WViKi̗SRsoUBhˍT# *:*Y{?0{U)w i VŌ| ў٧rJNaFvD2 F󌈍B3hOI1"'r\vTX䭝9t1M4H駕ϗC!1AQ"@aq2BRb3rCc 0Sp$s ?3㮲V|jF>%F [1?.2^bYNe R@=.D dF jQQ,O4q,7e.iȋ* ~5WzG.)1ehԎH8RH8a|:{V}ybivY>@b/@, 'rLW{ڞ窐7:__{iJEHp 3..}ߣiI]d`fe .ъ:ܒAXF n68B,P Fo)ɔbFnj.;3 F`/9Pv.A6HI9>B3U*ŵc]$[EҋȀ%эF͚LIPqmXx0# :.[._KVTDQX3D#pG>,B³5:R'!B `=`ỵ` ARe$F#W" 6BOqT$oY:[`~џ?lZ<y8yXTY$< gA@1lDQ{ooGdq' di ̬jǹ:9dd$-8cE˫rJm2sG'DS0êvXHb,Erܓ:: N.el-f 1p}Z#3[;Ql;>L$s%,,'ף$+HMovU (]#vY&VvrIC8i%dp~jֱZ;DiGUnH~ӞݪႴt t6*F~Y_qzPUOˇ\<9;)إ&r pi59ʋŝU젒~5o[icڕ˜'e@@ Rh<:ݺCe8箕}p%POd2((ThN!HҁE%UR eP$c\.R"a y)vT7P~]M>%L<6X~$> W|HRUZ*P@Ú_1!&"8&Hdm#[fhh١pxuPXW$DFaI74K3F6ЃZX:0ݺ9R4 ӍBxSt!:ksu?ЏV(>ešWS9Uv: lѤ"Cj{` 6BA3 Ɗ|{J@<@nHXҷ u`"+PTSӋUYL`z:=-{?5[`1Su2?Q05qI [/OY 2eGѭi~l tH|8~*JGo"@рvDר}3as&':*_Pǩ@  c_+`;@-!}|@56 TX5+z黦G-sͬf'\t38b<ތ~lgyW ShO9u?Ch|gFqZ#M+иޅ!--+fľvtzE׎[,w޿+mZl4N eV5*n(9X1R a9d 6:\UlNȍ*nJ,?fn(.Jޮt_RsLH0Sj i6>kɴ7V;β/  @  X#!"$C#@AE'宝r*%rue䨒t2+`n JSn}GŗMVm9ys'z=Ŀ;CvÞ*] Y FIFw:fefYS Ӏ[ JX|>ԪzbmW䭾Dհa|'x$^$ӄN35(^SHHdBVW>(I&~nm~k9T`** 2U$du֚c5"dj;KR46M?^;} Hi:쾠_fțgГ_|\VY0a ; UߓvbDPuZ6 ־.¸VRH<$J:hiR#{l8`^R8888qkpQ#ӫ˳N.k]ͪ.*q(U~HJSDTmC3Gag8e:["pxf_[XP5}K@j;3yuBƟ2LN"`dUu'nx0T>(| :xˆf,oIۈe .8qt=s5QV"WT,CH#P/U) $M?)x-,^XRS͠7g3@J5TaAr}ch1d.02~I%I",P2k+FPB̥(dUu)-QJo~!R潙h,l^]s U8u+:_/VRNHH)HD†8XF6:YO9)}Nuxb,BC *ێjBeskS #rwuݚc\9cq2'dָ̃E հ< %㬻*˗P`|Y"Zuhܘ@ݱ;5rNcF87v@g4j[Pyn#WeYqg{;Ń=fؕypKmˁ^_G#NSZzRcp2;Nh 9ڊcW9 $bRUodz8RS>:bjk @o 55g}H(epbF6ǐ;V`ΏYfxXzZHƓ'~$Cel%سGDy+6r댞// pwB0DѤ)ELGN$:w2)ߔl'3c;67Sj=/7LP V@qFC)uXMKdrRUodz9NQ>:blk 8m fEwm,RILcxH{_ +P_(y~,QeB ':C5)Be7,6b3nEfxwlc><<+[ڄ6yu6PZrG2XXw" ,_wxoc>;8qAǏj<}v7Pq㱿ڃ&YMk܆j,>>?`/k?˥sc_!WY=z,]2[8$y"~#AayEuг8GRj旄@E =K[WwmQ62Np\쎹%s[ÓTh\o? >X%fp5F# jvÈFsb!WgJ`"[c.۷S]W pZ~kآ?[V;a$|u8RRNi ռecYɓuΤ_Gj|?m2dm`8}^̈S2feGVskab}WZW.pJ8Y%ٜZ""Wd.~ *$3)|a+(8;;8&A<3 I6 !nn;@tNU>'k[=<_*U B85ե^R+Щbe7!kN@:xxe[S6,$o+zVmhmC\\{a n>7,廻G6#Crْx,!fcI-N?9!"#1@AQ 23$%Ba&Rcq?v,u1h˯e]Rq,iD-c:ώ3$6=N43:ZC q11ʪ-;eokp D'ùO-φtI?\j-1?tu*|~:_4b$UoT˯_..e[C/IR~A>hէ]o3\"ZΆ:M`/OW\$vdk۷,zm7lv cϾOƸz*E[?k~1*H{uOOr[,|u$mCb jqmD6hEN LL1av7!yJ]_9徜t)Sd0D .Wnr%DLzxͼ5"Dih\O,(X{ :Qw-%OWg#%.+h*6봓Ib ئX.sY~[BvnrMï;\ߎ[VzbԘz % ɷjNq+78=((zl+/?M"Wau=+cBH}E{X)TGDG=MG1gТF{Lb~~<^qػi/޹aL}vlaϊm$ik\}ZdC1WK*<'-0()WfSٮ4QHHOQTݞʪOҲq,.hwOSDBƞݪ"LWiSelp$<ϸ]-[u&#tG) };܂ڢfd)+Ϧ&g̍}Kט5PQ= fFbd|"66D,DDDx54,دK>skN~g!|pSCwY6/\* ƪUM3שDOԉz`&V_fjg<Х`խVzHJ"bc1bYjH̪v@L2׵ږj^k7:feD|A-$卧֦ʪa5䡭EVH$@Sc u͏Pw?V))]qvX~ebUiN;4$ݴUQM\MBڋ*;h5gHf?"c_sHJgM\[ 1%3-:얋U9޽B*Y폏 _*k^k^ @O~VY+DU=wg=;/"%rԵy|(SF،d{f.9Fnf-4ZAL0&D$L 2jpR'gT/*Jd/At>f VViݧeD&Zю׭]BM{@kLPCQ\v9cbͰ/w@n]M=匬㘠%-mR3\?yp i:!6DPe9ځj^^_kj47\HXzԝktWhZvHIfߑ f:]." zw(nμ/{g. Z 9 ȌBZߴ\6+1J~> b[8]#H%1gkX"=<2U{/L!͹q)c=ygCT~nojjl˖[2FfS":@@D)s^,^VpN׬cbL}#-pn4 5DGRmOd_ayZf"Jm/9r(R6n:Yb*{ NBZ^$^kӰ|Y> BF}=4e]xƤ-><"bbIm%QԦi1#tFZ]P# jضi*ݪ΁j϶׭6: NQLLD2ߩk;P<{^eFѐՌ} OtOϧV#vu8̝A瓊oL%"wYűɲ3d^roYer<gCA oJv{W_Ven[ْ#210"1{ܪMY*͔۽2 hKqz+6ś "k7yZf"lq#3q9[[r4<"bbIM%QԦidIT#-^G-[@t3R-Q2ү>K/m9:GD/РJl[{y'hv'z)Y'Ytl4#r,L?hsG;CG|/FqGo}8|wTL’lkk7=la ~ڞ>ڞ>ڞ>ڞ>ڞ>ڞ>ڞ>ڞ78YzYPѥj~ :S s2NOG_~EQ&x܃QJ#ԅ#G왒27T>/9м:9J|\,L).ӧjŵ6=jĴzG2;,}NQTm\1_Y<0t- Dn-аv!᪵7 TXռ Tj vLXx8xˊyj˽!,>Z:5N3A{@b?OHK 3"ͱo!`L|ٺ}iukoAgf3/1C?1l7xᙼ5bCڦE[>F'HJU19 ՞j- Jav40{AE>[_[75LuxXX۱Q^QghQXX.~UйcD\I%ã Iw'E+qXWwj $;Jήݴe>#Vk瞪xMd*v0Ixd4 [q,lr;a>n?Ζ?Jnd"Yfˤ$PL2JzDL\[/jڭ3MYDHL 3)c3BdPElcF?%MnVVH^wDNjH._:5GW@+=W#BkǹND4[q=Z-QSN(~(r*oFniPߤUY'=<+z`n.iqOM lazLt"xoGS&t30p]]GfMBZ ۺMF"#/vv ItNkxKӸa"^16|@$ZgخW{E27s.֭zcTcM_չJV[eW][&&&;Mtm aH }v72, 2':LxϷisѕg^J-԰`` GF6~5VVtři}7h]`̄XٔYO2B U:4s31Q%?33q,M.AtVm2QP=31{5erM5'J=ʞK9zL VgCNGc{}lX6vcXPkO S~W+C5U{mU6A?>(Vµd:,[+AAiZn3/?/t৬wbg|rWVz"GK4eyX"q.@ !"V$#%1 C #Of4#=՚꠩mC!;!#-%uxV<+?i YQfԨr[z/m %K?{xDժ[gfdyc  ȭ>cyK%j "J*ѥQ.Z谝CZ݊ik #a̗;'Ok#>݈MBKvt;d8Wrd{ucGJW!+Qf; 4(K\X k-m6Rq9㋷)-:- c4Ҍ2ayqn{5Ԫ]SyV>~•xxɗAod :91ZD|\cHQĈʜG$E 0Dj\X=f:q|_c<PTG+R{Bz@|rݻ ­(x!fxdO٢{'Ґ)o_@%[(ϋl)vuS Gj:qM/d_(S#wn2MmF#٥%xa1qpsf_̈́|-PzDZԕ*R䵻j0F"UZb`#qyh+JzTed2Ԉl(<(eJCTW1fFd v9M4]5O#R?0-/yӮ2o2R7qO3;~jtyܢ_cJdBԔ(RQG`0E 4BYR=U7d)U\p-U9K婹F \K xED%~b_8/<cjxE٧vN79Ҷ#Jpj0 B (Po[$NPBK*VZ!V,jb+@m7E,59ٌN45T79O?׶x/K'LOPe|N\|N\|N\|N\( _n)d{<]P X:+0%t[+ [+ßU Ɨ`OoqNBoWSbƛѮM$\ò+4i)s,5=h"okŖM5RQzx]&?y#-ъ,,z{?Q9|Ԣ}Ry 0?)fR%K[ J+x'yE-p~`#R `/KJ8ZめfF1*.CC\ݱ[8O&*oI+VC⻏ZӨM I.NV d z/Wԝ Q Addt @我K} (qGa-B_4*|)D DZ<6PG nɑz,ڶL_ Dyl"+r?VyN2WCj@*+j<;Ie!],r?^.za==W-32R`<@ w!^D'_fbduZO_rv_BF6GH/(pfGHgA !1AQ"2a#@Bqr bR34SsC ?? TCBO*d?ق5T?18{#ZUwʒXg< BӈcqUt`êQR52_ )0o`+QXdFKƐ69>b[1ƶq I2:+fv^IN F4u;5PZjv+wC-/Nm|]O\s Z#B9@͈ΗKU,$nb`$[ٖ):+lYN[33$9ԔQzWwmId^J(n74&J ?F#@P*r 3& ")hAE*Ms1 L cn0b؃Iao .vÚQl0GtVe40@p8ģa2K̰=MB. 6(<8c婏y 1*I&de< ԟRKٔDQVgh]UTs,Hu8 @/,ehM.y32 l;m)j/v* ѡj7f7 44i%DyTݐ=) HNeyG6 ceqvhJ`JӤQ 9E8= ĪQ(KW **7""#'~ܜoHLjwkiP::UC,AS1٘*$+R+;ji`Mh ڦOGh?$,ɰ@iU2:nQˋ 1s2eaU =sɮFP5}#(h#SFksXUܝNx=9I Wǧ)*( F@D^:L B7 …O0n=Ԝ115(wPAVR*H\b1wc@?RN $ c. nn4Xaq"7Y[ uvT])r&ZYi1quu7M`fc>baJYeQهymPB5DH}&G#˙JѢ?>؝Q; ufQlLGߝ,B1_47#Ӕ DAEU=T[j\(> (fgv5,O@CU)Ҥp1wiҏφO#W_z9fF CD@ \lyލ Bt;8YYTn6a[T,:)T[^We#^qi!c'.Py;aܠ%%Coz7h[Δam)DMܨVHKxxnMCJXӂ "lhh5 T5' vTwI&8m$[^MS; .đuBœ+IIvpnBhSN&[xq"Vjrhl:vTW_ r[U$jPгx##nK"nk^axkyeif (=Lw{mGB=PAE;42`QV%;I*ŬFR"n:ԕ COdե2X&^ե4!*9[]*SYUXVwV@Ekh* <zX GfrP|RꎬBC0:#@j("#׶ ؂ "o.E+RPޑ=X23ĪnjN6PG>Y *BJ0u)\2U1bbƬ&w <@[XsBSaeF:]V(ρI +Ii"u8$ĴDHs{V>tI!?f#Ypv2k0v̵S5dyfgݍ@zxo?. !@ "#U1%2V C ("1OvPÇh1L<;RI+*tOkZ@Rk#Ě  ĉIBw#@Lc._yɟ'i{\g89;:cqis1 kSvǬ Cqv#W:$ VR=>~.Q*Lc$4^r)\Y,K+% 6~H^Nk^1En+-)(lhtlscJD(MԶ8n^:'[yE.hɛktR4Bw_g{Y#щ:l  e\"$vY{ Uv;y_"*f8jٙR#m9W"9ye80J119+kM8zBxв5흤5W'Y6εtEa=^ {%H%XqX%[.j|Nlzk'yT[y^=l1y@ZѷG$2>)X .B 'K./[%;q7@فG;'1VpANڙK=+|J䊢a ^Q1e a #!k `lBv$K |Yh/:xJF%UZH|Uec6`k˛k3mZ޶ n;ݯރk8ojd0b4.gHNV?:@X/sM__=m J+ª>,gXkvq~'vdz}uuW__].kz}E~^/_Qvߗ=Gghxl%>m9>4SR-;h/,):߻P*uRM8Xz#gQygߧ$VEkiĀz匍SEmBwUuo]U /,'E P (m硸MMUYT} s%bkk,sdv) X?oz}df4 %"=v5vڍsQUB>d"`JAB\8_HUUq`e`)V! U%DL&"ȞDH8,e#.!lHRyC !1AQ"Ba2@Rbqr #SsC3c ?0%. nԑ)H3R:$|s?#ca5Æn4ŮJρxf2y#d֍J#2f-5ԟfdij*1Y4}(SdǺVY\倿NeN d{chՃN| LZT1䶼sxօӌ.[߅m}>kR>obN):|fHώgR72R8t_\L\"|G''Q5wtjYTrxT5IS:h;QspA"\PP;HĔ[P9_ d9 vCY:%,t L$<CєF%H7ď&Icc/-.ޔss}&\r&Mʤo釜#27JBu׺%׸qСuR+jg.sLtU&Gﮠysa1J=WBN~ĝ4zPFE2DtO-YZ!jv}B;Yص NXtw6>#`u-ٿ(ɷ 8u=㗨ѥ9E[wE1Nr5o.+5/dO%HcH{s9WHMLeq#iE9gq+D=BNdLrLU_\ꁊNFn7u]ȈiI(W(oBKW Je3gj>%qM&ҾcGv e)ӗƚJ7~QZwcSW#Lj*T98#RL)7U\R^{?yKHPidž1\xQvQS'|Kq4M#F)9&(ti_8S֎9!gg,zH?>R?wm4?⺮nxi|F>Z-?яOc1Qa$DNb6j [ҧQ?$R?*H#Ĝ1e℀piv_j5t>Q;8*w | ✘u%VWkD&K劑xHF-IS,jݽaNVܯۻ 2 w}Zci|#1(FN)[pѨ)GIEc㏤OЪoɜzs'ꗅ@ׂeŴ{[+7Z,xc8;\ptKvTTnŘ}jTOnnJ|ejbm/*SRU~ԺEޏ7Zu5EZ2~07'8sq'߸ڄ\rGmo81d9]rXָ JA$mk}HUj[(Bw:8Y_r%#d]ޥ{Va:2 @_"kG"@ף!=eL'.HuELU_o+l5@P.ܴ4ʟp̴؉OV*vWh rƓ,Wu,BݤfZT6KA(.vk65Gg,BݤfZWNK>|P 4[OC>mNr6axP*`Pk )704@ 568j>Nج2Tu K8 ~+/F:(A1)S?0+8c-`qI U{!R&E;cPLEչծA ')9hcI\uLcެ4Zɥ*ZuMY F; IRkX` yVqJϚ:T#B1$Z)IvRnlqM7 m_yׯN:lRg= {k/[>bMv5̢`v㔗k$di8dPHWG ߵ-\d9ߏZWJF㌬ >e};@( XGdGF"L!5ێR]5gnlqڔKT;U1WTeNjEh0WNp!Ki(a.yV4QTvzʷ`Df@ǞrZ^Si"DQEn.4~͚o. F`U|#jMUQ03DzH4k#.po|,}}?K[$5@`G_asUy_q_[DMl3D&+ {nn @qH$$^b;m5׻ E4DYPkh"U܆\"~?݉ٓ[Fv *.SLh%6ȏ_7ٔ[ ՇXNGŕ=x:ۋ+Ę< )fƉ|"?&M0Ԍ"$L`ׄP}"}&l=-~J Ȋ/ٽya\c̜T ymu߆k x̴x5Mtef6+aX0Ւ(Iv@ 1y꫆͙W6h* eXUN٭>RW1K*MļmX}Q:7Bf9{Nbe=G!XuY8 I5pUDQSTDQTtANf3NGɵfUƘD{Lm[ί~7VX?{Xe[dl*㕮lMUymyĉSkEW$`HBBT$_qsWLF81~(sOuq:_]rQ#C{UqrE1NbMI?#1'eA=wؒmlG`Jåq_Ii~KH8)(qFakK\? fҲ]UASs迋fɑ) ۫,rEyގCtYm)G)TE=蘩eMxGY{O?YMńb!ɨarjóo,m)Nv]xqC;C (7 2n3%"_J-U|L}6}N7̆3g>yZ&auQ1E Ț$qeо A{X.⋌""ʀVNyc!隯€ĘSs)b@W˓X"wEᠸhtIElTGP>(b2ܢ4N ½{:A"nNJJsRچJ#s!+%;_4P{ 1%2*sBA%S ɏ2#㽉1^nDwy&~%Y Ez$2)>z*WخòH$M5 2~V?D{{]jL}6}N7̆3g>" j.E?ΏcFnb `NE?F &^k~mq:aC"tZ'1i'QltDU\ q?eO44VʲZX֐<ʹ;Ze{U̩3ofȲqb0ܘ/*<+du꫅\K=#O2 :X -jاӌtTN0]1 :#\fu7˽N.ݩ*5e?9Of4~.Ƌ>MZ@Rm)_q# (#5׿hrŔ&Aj!` O̎@Et{pVTO(vP'\5'%ϋ?9E13/Y+aa1&0c/3A9SApSߜKyipYdQrڣMmA>"9]UQ0d48̶OJ8ZW=? {3c9/K!7ypq]"uUaB/ŗq_C$ ]/Tųmn9Y<̢")%T|R.-+꣹efGӏ-i@s`*ۢc啿5,`EL^ɯЗdDһ k\A829sƃo;|C 5^ "gMx)kON=af= U2ָ+j^͜&"Uǎm]UUqⶊԨO⊽HuL4Z3[tEAs#= x8O/]Ja0N:H=,<^+ *\)3NDrXnX2ad<⻔}|c6~߻⌜XVsgYQfJ!kX 25)MƄYdHI=ADm%!1AQ 0aq@?!YeGWJ/NjMwqj25˅w7Bٝf/QD 7bPXWC.@ 1&. raG$NdXf"=6l7d$*tȰѸKVӺ.Bz}TK.SFND " w&. |#a{:\ RacQ𰢨DPwsB"î ̇d aއq=*?e@!݇OBu%tϦemsP4" a+k)Ca<# Q'"L}L0lL̀zA(p[9>Ⴑ 1kib|\*pY}u=l` &B0p/#!10AQ a@q?jvcDxSp2Vq2'xD`.4k?Q|0H94pHs\ Ah/H7gHY &6==(6qљ|1D|Z<2SFS&@bh$)O??y%̏UN5ۉ{;ZA0MP`C胪vVNc`,8:Dj8dT )I$]`(|X. 2¤PjůBy8_ކ\D+OY&d"g 1X{Z2yޮIlvĠ0V% v_o >@D"@d҃#O- E**B#Zhr`tRbʫڒ&r :r|UviǴC[CE"DԋCE9V8:& uLz馠'9D0 !qj]j-")''sa"`E,m`=>ČP<bPJ|]7;Ҥ<ge9r-:i+CQP'#Ϻǽ{C:.A)#=Iaڠ͚MUUyVPbN5.;YY}/Ģ#r~KDT00E)*W%l135!"#01@ 246TUR [8OSj\Vryz[7ONWNiypHdl2,֩T"bv =jzVFUj޳dômJς2nS5e 2f`54Dl&y0S\l&Vj + <˺A&[ |nFܹAz.^ߦdכ 28K/21Rmy zdVYKXj^q䕺GJ 6 k=BLT ӫA[?lo4ֽm0rh0E,1#8 !1AQaq"r02@b BR ?ZN|f: JA*tg~…H?]0CWw[g=M81YW\w=33 ֕WЈ G5}GJ95u 1g0U0ەXt﫦n1 }޹s͞v6W:úؙ78s2V7̾G6H2$Oflžmސnkt]?3o~&.₾yǥ^qkqv>4\ݙ.Na[` ۠KΫ&$2<}xhgkaXtƻKfXE Nj"j%>rO*56cx7uuͣ/׌|wxt=jn.|-;Z'*Wwisn̕_ekkz;kWkQZ&?Y#ɶ{݈JoS>[k[X7|QW^١k^-6jٚ^{itu u~ѵɔ.[k[Xbk}v7$V4ݬYnsykZBrֆGAkN}ygV\@ge.Ga7ܾ`)6RZ [5t[Lsr'246+¸BfܧJn!,d /.p;aEc ^ߥx1pEX wVkmƭ=Wj~15؟YVˬ'8b+fe"sc-z]E2U$˝1513!"#04@T 26QU l~Wg좫mQP GRwJώ*+!N1Q~zuu,rYg=PIvNJ5q#ڋ.b߆T$E, hl7d#mZR*bZ#I}\ثg-fVXq $Rԏ_6J&mkdY]\%TCoFsZVX?u*0lGMr”ah iQU_KƖa9,m~ $۬11/568|SQC̲ڮ#R!&,1ZuŽi(24s`[3 <3v=ѠiQ;+?.;2  !d{RR(d.-Q{U1 bfo,Yc:kH 1,=HF1oX9W>FL2AV\wIN{@ў ^"|dq$I{*U4/Hz:,1F/ ؏|HxH)"I=o [+Ho[+>_?_c*xr(+Aɰ:9#Ho ]rYwIN{@ԟن =UfY'EEUDO01F|7)Mb/W^(d\oWű ̒|Bk^27X9 ,SNIh춮KHOLtqQdǺ4 IioPٗVh^o 9ctWXڙ5+(_=do߭@|*du H8!1AQaq"r 02@bBR ?њd5?i "'ګi+ⓝwd^ L֭!,sy~sfyURYX w2W)\oѮ]19N& Xc=g*Ԙ37ncԉ?ߺxG"KWvIOHwRO/ՍXspe3ȭ>`G&a'iwy˼oM_ΏHc^Մ该6!W^fbh\_]& jNf޷V҂U-, 9o٢R#> uc5"8Z5݌hd6q.ߩSG$koǘӓLֹm^Ee7'癲oy9##UǘN' |KG{oKj._u;zZJ}E sӑe%¾KJ/*5n2\R2>āBGdW#ի-wK[MHpٔ[eZK:;n޷Vүx-nL4_v`szWcsṑ'$> .cx#֯ &l>#ډ\=pujZ9xg..p. rpFXb.3FDŦ˿dr[{Z&Itj6[-x®|`p(6mr' vkD q}SE~Z}g!0vwPKc\552assets/images-add-ons/learndash-samcart_banner.jpgnuW+AJFIF   غpI[V=W=fhuZnׯ& %tNpĿI{ka3Y דjVlsvp^<^æTk<ϙ]k6E}yR>O;{3ѵS[P.^I+\PxF s^Cw8Y ד(wSֱlֵ!CY דX܆-zs^u\TXg9m=GvZVͳC+}ٟ_'WE D6untآdM 2k6[J}#tسK7̬*`(ٚ´IPAݿȕ[U@1)G!5dDl;V=C}[uza5%-[]lm״N]->x`nѱgQ8[^` il!ym8 `/->x`|l 6R~UU[Q=-8q5eWJ>6RB X/͝~qxV&u0%J h N~ͷDLV>4ރn An(p_*,ƒI Jg'uL{֊$E@]GcڜT@15.v }XeeN0 (L8oMkyhz|s ɍ[grNؕwU,IbEp[~c9,  #B>|x}TT*xѢ4"Gb+of75nx;aoZ?UzNMkyhhO5V:6٭=<[gofK!/6+fml10&/ S='^uQq դ敗AoK e6+K>JT%NTVdC}l۱ |SܧX : )f% D}yqОj3u"D7IwuH$/v-A(|ٵeΟ,ʝu;w ghzIs_plm|EV(]޶X|PZ,"ݕ\Q?2 *Z@'U m>g~k-F6ؿ$X~LKd~*dȱ%A6(GB- @ "LCc`\.je()c^mO]~s_DȞ+N[ye/mZ% &0#6\ZIv30}@IIN8x>ԤrZ]_IEO?"^Sq?A1 KU6k1+ gH  !1AQ`a "$02Rbq#BrsS%3CctDT ?lf b2SUY[Fר }l1*Ҫ2We+1'F`r:mu9&eeF/84 HRW԰$r[Z,+iq|mS(m*.rE[aP{6A?:|Hut?b7eKJD;X dcAJ $pZ]c}4\gljx7,Q?ѩD=Ni%G]2 Vb3-L2Bk:I {TTN1l#S/j4b_g%wcJE ,qD@Gͻ̿QEܯ9K;I݋)9mreg?X͚ eI T&ZGQ4êDpɫfx5YUm1>!? pySϴOl#k\ Zޥ[ˈ~Ejc]NjE3txnmp@<@]=Mo3n/Qw+xOYEy|E D8V$m1Cqȱ H_E6*hcE.elԋyJn^p7MW$MS,\3[NpM%'hY:paA݆547U9E#zSf^2)@?%j]/=Y?2%yKL^06v7@X{!cnfuT{θRjyc&2F̧ ۼ] 쥝MKr=u2~8Y-ҞVKRl: j*D[ Z+lwB-4p !=+9R1ʂ5Fn|(ݎrZɺ*4udZoSz 9;ȁgd2=㚜;Gwᄀ"m1R@tSXhGd_,j pyMFeZbd %J  xYDIt_auc~'y9gx`ł4fЫcq3k C_(8]W~2J2gW겢D I'+=ܣSaK3EA5&"M K/zG~ aY~@4CV3- xj Md|= J{HW eIn'^u1`''b0vKFI9EqI;h?2cƳO<ay;# /'da䊄DDJDIIT {3aE7 \'lԦ;/`mw/YȍvpوJ8wK^`,oU( L0!p Ȫt+{UP.(S%$ʝQV5K^`DM0eշrIO&{FNߓBPLFSiIbC(cDpL2@ z4HM #U7D,3Z ,D垲Y@óll@YtcZFyp޾k(t^<|(Xb8Bh| s7Aԯ&!1AQ` 0aq?عa@0SI5D , Icqyǒr1#W[۹PkQ)hㇱ#ػLj$x;o*oi u[E;jN)ALfCAUQphhe5MbT7; Xl@ѯ\g IzhgQR<~U l7&K/uj;i~`"m.J D]2 hٝ.1De``4CgB-o0e L (hF"@ % +I *yJ;1V\q87T><.h;d8z͡W$ v2XāY%]s*m%|\> p\IzH4ҮѨN!8} _t6"G7:)r+T)4`P$vbQWbrB%(/% 0.@0y͏s mՀ\UE7(͘G{S,[ u棵!t(4e>;'&%- \ElcE:+؜brCs QR#X(H([h Sj;>" գ@ĺwz8L$#.YN҄pHgyf2 [L2$hx(D' # ۾ڀb{L$iv`)܇FE|T7Z/aA)ܴxHU,I }ФJ7ǚ2c~.<gHLK\/^rLIbN6cV6_` UK(o%8y`_(Y衆p$]CZ@D[4w Pe6 r#ʘR l[RIeWYHPW:hT.ZuG7(>M2Ys.Ҁ>,#*n@{ˮNRM>bPnǀ}o_C2O"^Q69/~4 LfJI/.46`0 3!"1A ȻYWWAZ(*W}Ld0%JĸiIuM:G6,ұ䊒}RaD^(pfvLv(}TP&fX鈩a౒!:<^Jj"vVH 1*93=,촾pRSe$u.úljD2{O*s#A9ȂPj(cUL޴~f.aq8ʕDpxV͇ov":ʩtFe21fpU,]YwMJTa(r] C:m mYN:NJÃ%jB+8T>ŸBr&3Lj[y^{Tѐңː9ԗX)c``r2۬G]5t8'Ѷ|~o\iu:$˭A - dK3tE1Ig&WJh~pqD'ԕD6&xHm}gO4TG 몧G+˥eSd007f-̔9r; )s_Nu.>Y7|:<4:\|: pácKîàk?|:<4:\|: pácsgΠJdb4q1[sD./Tg?(Mg6b)jQ!uccpCvI;4N T*ZՌ >v} *c^SH<ƇAMe p>VXlq}-k#aa!$gFbf_J31( *^I}6mJ<2o")]NS)1+9 1-b<LLLR֙A2%\˜SL^cٻQMYtILĻ'R&GHzB<Y}<;kRZ:N(HB2]j $"X&@J!E S+f[R.J> vmlY=F-i^2{2yj k$_\^=R%FQxG:@jq8=q-)#pudHDDC\G> !1Aaq"Q` #02Br3RbsC ?ކѰnJ p[^a?rA cxh̝0 hRãJI@uTRWQmUb!#Q*bDb}S($8"M1'̓Z"ydvՈIA2&GlFsQȝkܟ0>v]ϸQRTDP>wcյ>a`?S}:; NIu! i%FDzQ 0aaTk`*b7`h|7S,ı'$Kkv ui':Ŕˣ0@nEXulj'FB$Puy:0D]g##& yُ%ф#(]2)08,w]Ws>GE,~ h0vYnX,Z8JM3ۤ2c{'q; Rx!e@Q[H@f NL nFFX.ŎH$gܙ?G]Ѹ\}4مx0XlG` UWR8v]ϸ1T\}7_!ۅ xMD' v)x\lZ=*r1g$ Y7_oOucn8Uw=h{C9JE!`xw ,1,}cC \X,$nP{ir pi!F&-fÅlYI'_oOucnq\}"[}M{wCv]ϸEV6>IcrqyseOؒ=мh{/6Hx^ b*JP1;+(O`: 7>p mK pM2g%H0Y0H ,SN@ l,: VxEnךn<`jrK??@ל6(kGs,w]Ws>2}-i0x@ ѡ݅y߾%#{zM0yǂ'E(ÁTΧV7bD?K F=u9#)P6`e"uϐv _0p'Hn C6v2b@Hw!`Hs AԴ У4#xmÒ GON׵}u\Q?+83}J1s~<wq+D.G+R̩Te=P3aG,i{`Kj\ORz:Zte@9V[~S h,r_!lTud}idʳ_H`>U>'[*߄y\5BX Z,"cjm0%:W݆u%o p{[2Q:b~mjU=<٣귗15K<U?=ygC?:zyGG!o.^gYPΞQu[˃יz=.󧧔{73V 39Ѹ\jS1=jA $C1~Nms[S̠,!pv~ȸa"ٱ(f.; [ᯟ6*a8; 9nKK RؗJ9+Oq2 Hz:Z|X7Vr+&6C0ko[5,i.g5fs> xն uej\ݡbdT[^&$Ҏlة0iT66"75^К^£skbf]H~Tܚ ~b[' ^W-թIB(UV8V 鵥a}Dʦf^>ήVsUWű^ A+N|f—5 >@ Ѻ$ըŻp3jMk`oE=/F,œG/dQ1uVKsEƲMRg83 UXTچ˹> 9? !1AQaq"` #02Br3RsCb ?+trJ\K)PiejKGӲyA^QCQ?vaW~XH.i\5:AnaIq 8_h54*; { @Htu88]g9BT1p9Ka *Fy`6ntqNb lʠ7u+'h-Cڼ`‘O*SdwU-{sKhEc !p7C_\<`r!\VŏTR%@"B@$ISd:“Hse#h0A\ç$ EFoe?tH.'P-=  [G _2{  |8GAqteLù*W S,`4L"PS ڜIgꓮ;Y f:َluYN{x=;p1_ iI1 FctDN0V6☊sۋB K F  h lNa@0dVVݵd3 >`ۋOZĝ %U3:W.YQ:h$"nْW2A],$" z{aΤ/šW} L } ؎C+mk:$bͪcIPKc\C"(%(%9assets/images-add-ons/learndash-gravity-forms_256x256.jpgnuW+AJFIF  B@9m;j&"eg@_۵{d$)Eh{/^,!B+` 4=u[7oN4f -\1ic/^A n@:X6@ n.WVmC\Mb 6ŀ n[\q[5K곂~3{}WV?(? 0CHlh q\>OU' :v=ԻR;UyVSҪ nS(Mo-zgP"ms͠ 4VxҏVoGLEWzgWq( +\w)ԻR;"zQQ "we4ڲXWyzk)9ˮ(>0#;FӴa];FӴa];FӴaNDi8I0q8Fېu& WeS'mX:0 \S<B /Κ3yלQyלQyӥNg_r3Ե7L;k8R[AU/jZϊ?OS4V"ji9%<8+ FDO 3׫Fzmq,rf+Fz⚝X{$B 5eJ;"^Tsu9uNn7]Tnb$EZɄޙ1],%07M0]qc9^1HH(ڨugˑ2fW$s2  vٞ@D,SlJ"Ydc*Fu#7 s'XR 3*Hh'H"gcwe_ lA`&Rұi|t5(zwkVd~~ XL%Q˂Ş(NW^*AjY&V/$I$zfc?bX4v+J8۞DŽJ}sƙ1מޗs{uf+֓C)jvreRMύu] wJihQ@:рaIĴSREJW~Ɲcz˙W_w/EĺOu)$bB;B?c 57&JV#t 9n6au]axڵ6#-oËe} ;ۚ܈ bb> fj;5nr̿C=4r¤Pj"X?9xE$P7$}Ac_-kaÎhTOiAXܗ.=cr^{7%Xܗ.=cr^hf#ֽ[ N{.+OK4d%p'?Ϥ7umXd1 z*&û[;/&5u PN_O~3?ϴo>_O~3?E^y~`!bX]Gz3AYQ UHVb<[aþ"r¦=^O^z^?џ zZސcR'w}$Z 5y%6F Xuke1˿cݗ'X<ǻ.Nyv]tel*W-Q+׷=t;zE8W8ljUTQتaQ7pkx>Gz3AY]iʫˏ!\WWl;VcNYrLB:B_r:?9N1O#lelI&.0h8wf?$7稫Yco}VUa!≈ԒqcNeQ(VHfItpXziXrf z4w I5`&>!qyH?;UݽU;8|?rwQ zf" n w;G[,ɧFE>/ Ҥnj"l~0J<+PtEXE2peqfwwo8΢kVq|M v~F= wQk:Vڹl]sԋp#r!V]T [`x'o}1PJ 9vʃ"!q*d"EC[q &Ɣu~G˷+TCq߻}WCrکT4B@,[/_Bm1hT(`j=I.e<VA H;></*% "# 6 ltV:PS/7"}f͒Nl_M0></)Fe0EA[q "5ƀtp'pnJ;W=}W7 LJEX N #`"ٙGdBj Xp|3+CA0:EUk8mtI]:ӠkLSh)yu| h;cD$اHwSƒyʶo2}!>L.Dsl ;-ht`bHut'/AU AKܘϑ%ģu19r _6KW/*6]lu]_BXJ8A<A" t2@V7U26 #$0"15 HYc@rдnaYYG#&KemL@H.#MQ+hn#$`&A"*R&pMY 1!r㗉 1h]&([Ʈl`x[@uD**\Q]/{+KJ^4r]Wq)#/% vZ |KMrI$NPNMm*i$nq/N19QuV ?Nb+E<0=7²c)VvFog1 L.90_RVx:[fu+nxm%..u3GP]r2F'G?Odq\>>}}s$C]J`G¶嶊ǣ#+qWBkؽMx b5巀|fGT$OE֢7'>؝>F1]nۭw :ܟLbt{[KG 9;T/\[(3t! j3'96@9ܣ-klb6Qɶk$m G.3Uhp'=!a1AQs"@bq #02BRcrCS ?TmcIUDۦ` ݴ LUv. 08 $CY@(5BsV!R VCA(.*ē`(\ -XQ8 lh@ [?qp"̀9⿕MaH܎> 6~Ip Qn!B,e}2cֶt1؛aIBǣ%ɥ y+u ={cXHmԯ6TMf}eunA#+.Tt $g0 pe$>ѭ cP SJݮ6.F@*/;I̒~fY&jnFlY'"l=Dk 0ncKő` |Ԩұ]ܒOpz8GyF:K'TmCn&+++5f naҙY.G[iP~_sZ֏b73c`<+Ս/ٍQv,I6jX36{{{{{{: ں߫LuokJqbL4k&F'm0'um]foV5B}AiuP8-rlms\GW:?zg#T[[Qkm6$I(8ں߫Luoi(Hv=V/еׇuWsI4':Tx򨑢a:9 }&j+;IxW-+Jrҹi\ZTQ\:64pׇؚ϶&<}53퉯1lMYqg * lFXFE[&$OGu2jFUj Fp 2K.}\Z~5Ů]\Z~5Ů]\Z~5ūB0v&B/Lyjf>e@igN{Lv U5d/ڿYmaFQ7rRȢj~_?؛_/M&k"rƵ%5ݲn' c[mmʢmD;lm&kq<_Gb*7N= o3zXޖ-x7^(b׊3zXޖ-x7^(bʦ1vuOa2I(xǘy^6,yj̛]qlw UGerd #Ds,r&~s*Nr ָy62EK^ǍaL6cs78uYRA2D'2:lk6XF0&1YQ Y4O {p,gm'IYaf!1$PKc\R1a6a67assets/images-add-ons/learndash-exchange-wp_256x256.jpgnuW+AJFIF 2}43r<:#d<$:[Y4QL=,fU{@O\@=jlr̻d3lV.Q=b@pt;.1fͮG֨W>"4by_!0.^k[9fdI%Z =w6aL$6T,тȬV6_FJ{/y1u^ )~pl/؋s{Ya>v M]|=^Tb(⵮cJue[dNL]S9!ReF̧[_0 h Elwf#ZyuYiIhwGJUGZΫڽj CkV=γ?F![h< [XٖE] H@fc>)rZ+'@|qMc]~+L=*Yι/6?Xu+[u~O;ueV9@k~,:/5ԝ8WYtHhyo K+lJTjmzQ]!o.ꍂU$~4 4n mzo7(gΫ`>>yV{6 Ƹq&xLtܳ<J0-Z}s[pA#9uT&KfiOFa>cv{?jϏ=a_JM7?-0VYAOv $^kn_xN[,Y1N7K%` *eltR#qtՖ? |\PHa3{+V6,fc\]$䌐.+ף/HFE3 _T*7n$$:!Z@HCJwdSQ }voxx]uj_ZucVE53\ZW$A .iVYeZkgsJ43[K%ЃRx6x%tƢ:NYF-ԶX"J\RA6+6.@b0l%C46fi  ɠ7I^\:l%|fƦ^?eiցV {R6jMbu)E8MxCu uǏ.iFn%⺻-|c$j& )28w;=_'"|(.Kn1U9 ڤҗ(V5Yh5¾TMbm? J?Vjkx9E]^ysíƵlXhfenPw?VhP$R!z^4歴iqnEw_VƘuK"%O{"bc_>1| |X=xh7Gd3}-@BkYmÜ{8y+CX=a`njOn5מ?U^xVo]y㰋Π(ر[Xo˪f+dgmmiW()Dw.V QXE>yO˫])EB&:] Ȭe[IDy"IQuEf*J VU&Ʈsډ^ +/5ͶA]?q:8 l (*j-JnUS0]nP]].tUΎ:!孄٢WX%")ZtV]-uؽ Q&pEbJ>"5 Hj9%f${RL{?0\pn[U4_XCqoa:ga+h_*氩tʫբVDSQQ,J03Aք3鑆#R/[aVG=»I*}TYPveS.^I=q%UVpb0NP{e\iQbn82^`,Zr=uhZ'g5gW v,$IEx687_ō@4g/;3`a0_f1l hFDו\.M 6YVQUW]YdePtM"q7AbbU!hё}MRL ePA75^[iץ1dR774jT*vIJ,1]cl̰}OU1*%UNRt zU>RKvwyί> `2%Ʀk>.1TǟCAXE{=Âhq',wUf'S<,[3x 8%^<=Z2jvhI @ !1"A#2@BQa 3RqCSbv$4D%dr ?N"GZk,H} IszruM#0N6,-~4w5I^v+׏?\mh?ӭiꕑ#+sj2|_Rakog&.u =7Uv8Qy,`mEW.<Q=Vb$f %E:'+0g7,7jCG#^Xځ~:b;;a@v0䵒pށa7˔9$rJm#m9u;6=_WdcEzp \56:7'硭זbqΔ vȤ_kړPU]BE.ܥ H9;aJWIÄjn~WCۏ3W9O╲yo ?uBsf|• -+"|DsA#|_XjNr~M Ws{37'>ڃO#X%s OYa{Wqy>R\4SշZ]XzY=Cђ#4ͩŴabw)rJ8|eT,GV*#Ws^Tle^fPwQք1)Y`ji Ό[+ԧN lڳ69%JaKVg3ӹZQZJ؂E2E*#q45ڼӒ6Ιqد_wzV"=EaÎ'~bs\wuryZ3{$ifW>^IdrIgrxuT=˷%X`9;ycܒ'UڊhxpFd\6*ׇ~MdIT10ԕ[(&cێ.Fdkjͨ+يoVe}%y8 ]g*DM=_==^4X^.DGX uUqK9֦Xsħfs2SϫvFےӧPeyjW؝Ci(Ii2B&bK3&AG]A٧mաv͍kk.<@=zg64rvrqȈNi,Sed?Ӭ.oxb云US4Go%[dX_oC$SnAf˱ߌ6h0>#w 3qK~/.? K'χ$7z߭K0RR>"BPi~tyM htJ]Ki,iƗ;|c_泚ӕ׈3JhUsZyzZ6!T bE,n$ne#p}Ȑ (K40H4G  L)cp9#pAnjZ2CICMRcdf]⌏YU{PO_k`qJ)O>U] o5fM5?DySxՏf=D*ȌUVV[-Y֮W0dqyj ;8u:$YlLJi찍Z'+ xX9Е=XKE7dMGt}oSXiCh?wRj WH2y^5 e+>H07 [P?" QN8o&Ӵjj>麵U].̥ڸbrZ Q |f+ٻ=~u3o*w#6cCvȬo >@H8a'ɷ3(GZuy6dqvmO&|ߖկP248[6Cۃ}p̃i Bfg]a_}b'xZLYL=id }(mx_QdFWXZ&T@S\JŸ'MGI^xmbFʤEF6pzRl4-Eo+Q>00c4$o#;yUѰو9rd#uc.x[4ږ!x0Qv%[/׊Fuk#~ԧy,ܻ;ٳ:Вկ2|mp3\;G~ Gıu5&K#] '15ppc}[$D} yjrxrZeYi\YICMfкʷd,N xvWX°c4FMVa5Nٌl-B7|\,Ҷpf9׌ԯVc)e3zS-1.@7s~v#u SA;y,@-:(yza4̅O$lR; Jљ1;#"2'ى-G jrc"1F70u! po22ae^]//T7y|=قd9ٹp&w:2pѶWPdY5h7ն/g%bؒ~ͩ%'aa"!1@A Qaq?<&G34\>ꈁyAZ~YX*1?g^b@iO1n>^?ޥ#;$LsWM8ٞ^c!֜5bg!`&_Lܙ֭S%6٩8/vz0Q'2=ǗJ'ٹQG\U<@@@}&`i ɨa A~*mCf0 `\`E''q *?8f I&QRFUËQi]GF7OfJBFq<(Ŕ\&ME3^~=Mqjydԁ߆b RG1d9A5Eg7ȟp:à 4 o>XU1#ʣ38bY9Awm<`2֬w6'poj̒12ԝm6;X5~Icű Z'^lyůw."@!#$1A 23UQ ! BjK Jk Zth9b#:v r@ryTFQ&2vK3ԣv@̝2U"Yϩw쨰!MdWífjd)^zϬ"J$XH2 xY}.ɪ5NWk{̓i9ND-TLx1FO̸6%`#+MOGa`G95S76B)_w5F*[-kJa~ O1n-l&T%XPHsz*ojұ1mYSfǰ&_#1#*ZBB`62$q g9Oac׉딧۩L'ɖW?(JP^R&ZcI2])L{ Dɘ\1ܿRKo ܪFD&%n4Y!kJ3VůBPe+}dŵgѵ+ڏg*85x;!Tۧ"#d;էtYa{19WE$.]ʗ*qdV8Gf`O[9NA@C K dSfA81ħyuE#u#jN ^pĝUjX٥LrBXj\u@03BCRN ?E>?^?+}bW^`X*M\O^kvC35~w:•uFGϱb咧c͒$$ӫR`7wjԮj<ͫ#u|$Tn:ZIׅeI>j"0_.NW(ŵch I 9:JQm9I.'z g iwjҏhv(ߵpuVweM}Zt;Й\@1 PH8YZi5LQsc:̿t&NS~X N4Kk&]YlESuW6QI,f]2rͩ~6WU)5S*")ز}'v B_gY4XXM kA $}"G'Xb઺P['FG#^,R[ 8lV4M[ 8ɪ]CP樊dAE,F?\xr4-8Gg#Jy]ONPA66W;:c)1p[6#k! dͳ#` E0cٖ6fS?9!A1Qaq@rBb "2RS ?,fssz@鷻G5hȸ "*L/iF8XRVHHy5a#V-P^ FM%(c;?BWxlԥj5 JE4=}cw8LO( x#xLZ#{,^$VRY^*CY?2dGq#іEŴ2l}#zH\od0 $(IѿjAD@-%G7VS鬡'"{$w]?02F^;AT|'*. x6o*l I|NT|j Mbӣ2{ TU[ AvGkZpeqo9/b&Z!Ǎ|>fe~КGe W.Dr$:#;bM&!CjTk2T}u0_Lk5 JR,͝5@) € Dٲ0@t~IF( '$ JNz=8zPJ⧄j| ?եr忚ݶqca:|έwLE+a8Jik?&:E<|O}/YzISzS. Av]y!3r3Tkcos/XY޵@&:?Ҫ;pj~G"C= 8*85ulEe)=PMec;v>L{U#]?g6d|x=\?]<@C@]AZo,\w|)hW q5=t^x˱$ԯI5X@'̱S+iޥ*WP]J@iKcC0kE֔3$7 -*q7PԯǀѰ#XEKA_*,\)S'lX@) @ p! d:i.:`͜2}A{kʉKHާidܰN/7(`?12<&1LؘLlnKC}gڂX:棬9G120s4ckz&̙RKS5mkrw֪n2VY9ljG`uqJ|$K( {^@űzAA.:`͜2{08ڑ^:vm=F/(vV`)(4##q> _ ԫnZNptn?QkW1M&%R]$ELG~!_UW=pda$ MH!Qh6cA1cp=,c<|ٝlEI9,.OW趺^fEEbؠx3!IeQV+2Os1]nl)T,c9-wKL\sQ% "K,vѫXl֥8D+[qSՔaKD Sf2hѝ*t\Q }lޘ]ҭ`%_e>ZKd|]jzn>MDSzg27B:"wYVẪ lweYXecl3|U@ /g!ee-3ҴMaB # נՈP_W@nJjEkV>l'(RǘIbc *ˍ ] /e,b%a-uVg+qpvB?uJ=Ұ">;r+7Zeȟh4xquo=L0}z Ә8Dحo U$9y&BȗLOn`mwgf|Nⱱ'o+hL@F7""DbfdayEr]k.UpG;C8?zyϳ#\?~^:.7۳fŭX"Ĺ'+j3Mf3ץ0&ƍܶsa`L3: ='F]fXZW*PӿÐfb=ήnR٩nVkM/CR$%CR}XWңuBiuaj'gjl>kMө}uXv*.!1p\$q0Rfq= ++5XtTM-uK[ 3fstE[4s07L[_Ws-j+V `NreB##^>Uڷ!a)r MSBD՘ĉDG(-H &|)4fF >9??귉' Kb5L5l 5N1cduօ"vmm5M1Z%9E@Q3i~EUw[`hߩpjxz= 5fM1dmK;aӺsƒb+OvYn6*]ĹEDOVE,ؙ; ySWu]l6Q9e/7y;D{?nȧcx*7kvһmղMkMOD >:g%.&F1Y +i2Eg,IT0ɂ:xc䮵b|d0SlvdVZ2%J-S#i466[v0&_k"vtxWFXe?a}s2pmXjm#hA"mYqWr(%u#x.}zյSq"'JE_"1uoS gtWAMCeAr:j]Xk=Djz!duƇǦ"s%v֤ӕNbvP#{UBJO_dMT kuc'x֏CZ+[r+zGCs~ကJŃ9;y.i-o[_bx0c]?]°9IƄaT߼iWFLL"BHzکnb-EQdHgxᶳ9kwy3t>q{؝?)'u28fTQ-Kb bPn&3311?UcKڥ^k;wOUG= FBQFcq/+˭VfhT~۱q33idCɕ1#ۥR%5f>0(zodٿ7)Z>^dE|Gj1z闀v&c~ Rג2cnإFf Jȿ.C5bxZhnt4XSFעazHG=Zψ cݤl ̀9,7۪MA]"`Q%O\紎NYcNAqbU/.$DLnu՛zgrګ3W ni`SZi۪֌Z`#""1D{u5&;쭇#Rdm@{zыR̽~+RIDniLc [?fvA'QWM]OIh," ބ`idƩ|`T"|ub[㵭o"Ul2#;מۓM2Ų}{Fp[F>uB*ZGnA-%w&tf*/ Uh\>;1*OVE /+UIR FK;V0`v,2e=V^Ӵv U"=+KރϹvI;*+HhmZ:8*&Q6,,X|Mb`9L]!LKǩ/b"1rVmÎLiO)Egz?(O~!/џ+Uj>=6^?jz$ۓj\s?vVO UgL~s=c?+U,ULXް0"`* 3u* ~'[v{&OUZa9N{;,qXOj*"v=mNDNfkyQhcR UY@=+al|:bC:g@>$ jqrE':"6Sˆ.y5EJ m zHGOMb:W?EsyPM' GT€f+!$ 0.J"eT?%ÁhO(' hy G*{C Sg$1 7׳k`*p Ϝt $7T`ncSٔ97W,N\*}6;`JȀUtiEhSDx$:;r 0qfDDxHU1+}a.<)B' c> 4"' p#OD.ӔGaڒ\ I3#G~;߼1v Uʳ""=vn&8L~rRq݊E:}؈4Ҡ#D@VWbۜѤ4 *Ki{S|\eӘtGL«,isÍ/ZThh "\.wy&lZ}Q+#{hZo7Զo~&#'d@2Ȓ``8ў Bu g +%}:miRF5Sl^/4IBT+ Hd@:# "CjuvߪG9}+69GSQ'E*K ,# %v[O Y`Y E>HFWH)p5WxV 7"CJ?Zm_YqMKj]3|%a>,>,z ,1N]"ܖ (n ;QZjX*&P:fL4qm*P)Dp,xCuKXf2n}OofxE 1@ ^bpRAL)(&_F^6m+c(+UAqw:hIT_Y7d #`c5`U+@!"#$ 12pQ K Pq$&"`Q!zm/,KmCF?_w:_UV_ceT+vgŮm2ZVuS[G7ϳ"$1MS-Kթ 6]]BkUPJNZtԮYc{zLGZk3 ]7QKf!SWN}Xzfޕɷ9U9"D+HhSU(b`gsz_S^!|y' |"D&0|c8|u<{jIφ^2 ez*8XZL#qc1#3'eyz?T`f嵫HLDC(& DuXߒHGQ2 jޥEg_&nX_ ˸|@>u\hgE 1>ofwCe@OC:v+@|ǏJl綃 =ճ2ݶzSgrg_㟾9 ǯDkA۩z6kXiDg<+сY1VN+tF?J7wl5NWkr?@,0(u(l_XL jFAVX#3333?~l~ǽ3E97n} p=Z}94}ηv%KN, ]dXфD\;?L50k:8JבSU==ŶǗJvkA1ٜD uL\ jqD1#ۮ,evC0IJ)T-hC +^ӿ&X$?)_k9,š z+,mM{m L}^/`yXGʽMa}шzed Trxӿ< !1AQaq"@RbB 2rCpSc ?TISwRF{δQ/;~)geӑnVlB~9С)w11>krzzCԼM[HImڢ֗~KOl˳y:\e,Ѯ r]L"d}ٮ7]ط~6\xብ/GK|[k.lvu:Yt.MXI_Fq^B6Kxts7Xj%6;F\'tomFQ*"JGjzycgwPmXJvЭ}}u smGg˥a9i:xduK yVQ/{Fsq45gbhDLEE'iO?X)u̻&l>ErY5C[˓ʜ)Kܾ}GwҜFLƖ:Еs/-9vdNO񓎍-@_%;3 7S$i3?l5LT&kFRބojҒꚜ=Qկ MxG<{d^D{Nm(~ٳ.=ףsPhș6g}#'ᗻu|fzuxvת=)fjW8tʘaO DHN9 Ŷ[j?XhȘQቖQ7f6J*q:@fR&szdi(yW}𖎒Dx%V^%|^χ8[յ/Tc:\eЧ[3wU{y^MF߀oNZ^)_4HXhze: 㚯qV7ӚT8m>+qh[ Lށo>;Uܓ{A=LK~r:/(" "ze1Fcu !:~jv![):xȴGn 3$X=B-b>;ĨU&к^tmD=H}ҔCsyMҽ~3\-e2/f/_! @Zӥ)`)!1"2@ AQp3Bb ]\{Ц$($2mBǝTF=ihFnIDxҸʛ6#)ځJܒXy?!… @O #&ITyzCڋ,ә;W Oc-0#Jq&8njm=PNV,! 1LUBlrGHu,r>*O9K d>R$BH#+ x?!'dsZmyb,lz_ YEovQ.SQq6 8Rwִnp@ 1*|nWO7jh6ǎK6/E?&ҧA7vO3 Hq`dtOs" $}4C#B52n`Ojm8~A O?K8aǤ]QÚvH > Sq$I };@dОu"_U,G1D#[.-ǟ]}$c> .@_JNW W@*!r(RH%^[=b??) $-uCG5!DUC.J $-uBT}?uDUC.Jc>/J>p]P1rLyHQ ynSe!DUC.JqU!DUC.J뉗RH%^[=bꄩB]!D̺z SmItu/H?5HQ < _T *];@Tf<7 'mt@R7}Tq;j@@JC}Ns*^8 e~:=RZT\{9/Nڐ2ҦV?ЉzK _y@I/Nڐ2Ҧij=RZT2gkwzK XW 'mHiSmpR)m9@xvԁ67Os{ze{+j@JkhتzKCNsB*@N7V!uv  "014Ws2A#@Q%BapqRct?9 ™ӅVY?X`}?.^;win6[ Xd^lb{K֛-_V{Ize i/ZlA~[%M/+win6[ Xd^lb{K֛-_V{Ize TzMONBR b\:.(gf7.L4_Ws(e5[ɫ! VF=xf(U o 9^+pzVᑇo{/ڭ#e_[FԿj ?k{ݗ~n~/R20v^Uda[KpzVᑇo{/ڭ#e_[FԿj ?k{ݗkc=^VjeE)Q,B]ۦJURT`&~z?4gG.V8I;\و6j,|9"N` wZ}SIn]Ov~[-=kN}%u>op;?-g徒ֺT[zSꝟKwZ}SIn]Ov~[-=kN}%u>op;?-g徒PPLDJE &fIo\re ~^K&]<]/y~W0~mREw?\O3@M xN_{n$(Jv`:%n ,g;pN-$CB/?//S_O?//S_O?//S_O?//S_O?//S_O?//S_Oeb"xqSL@JQLNP;nX#F p2/THi"TV@D&7h93U2;!^t¶&~z?4gG.v=sy*oIZ;vXpUHgmQ&9ɪ蘊 (Ӌg]G aOiw1B4t[U@@c%CfꖓT?)\0Pq9CQ_Qeڊp-eߡ n1.d(o&"3 []D^}Y VM3ɣ4rQ(ɚp0nvB*m)O/C=]kz&u񤜵AS :P\ /^mG5S̞V˲lTf c\"7fr{jk']|uB*Ց%A}qÙa'pe|fotpٝcF.* V#4jPRsWO+oJm<]/GܜK-Q좩%E39tELDPU}{upEo;]@'ZiI)j~d],sH:2i.EI&u$\ n,NUMdL謊**(0 N9B߂w=꺁8OzvN'sޫ+~ d>Źk!r]C@9)XR()`fS|` U/ܩβ[{9KpTr:nwWTY-R=ʜ%}^^SdK*suzxNu>U/ܩβ[{9KpTr:nwWTY-R=ʜ%ETDLO4BGQK~sB~  i|/$! 1@A0aqpPQ?[l4W&|6lٳf͛6lٹ.GyZ Bʂ<"vիVZjիV-ʢD6 Ç8pÇ.4 z HaJ`t_JH|0_%wǏT3CI#(^N?ʀ]s$r+c92V1>" Id˗3 ă2Zt$զl $%|RE:IW&reFb}J J`&E,2^ixhV$px>'W~"܊LՌOYS5٨On^|q?P]dAEqRlg&Tj']t%͜*N7B'=3XQc{$P{\TɕW{+*>ך㔯:^<8 Gi#.>:IW&reFb}J f 3O^Z2*s}8ZY|%ҩ =>EN$E:IW&reFb}J ŎBET.p,a5;9:|e@|NwEIQEwҲas֒"QqjgT̷a_ʀ]s$r+c92V1>seA>efGfQa'W/̂H tn:7RBԀЇF@hCu 4!ѺH tn:7RBԀЇF@S&**T?  !s 1r"0AQaq2@#BCpRbc ?srt"SZ)PT}"rbrbrbrbrbrbrbrbrbrbrbrbrbrc(a(ti*S)Oj vnRQ$&sQEb8g/x8g/x8g/x8g$i JKiJņDEj v*'HJ M/[(o/[(o/[(o/[2%R&Sq]n44oGq]n44[IJ tdH}HQ<Ǜ\kmrͮ\yˏb%b^nVdNAt?>{ݩK&'بVANm;BJJ l LN-6R6R-OG3Rɽ v*'|ӛNQi qiA)$E"V$$0uTۢՠw$)I'5,Wbq[9{*)v'5 v(~ ԒSBj#Dm#NܦQM?՚M_PN+Q8ƃw⻛)Xa; \ $WӪ)$w0 oGq]n44ӽԨ +H+YBJ8z?TN+q6~E8Y=wi)?{@?P˕H$M_PN+Q8ƃwe5))"i@H9E`$R)[I>B@3F@IZa(?M=%ȳԲoGq]n44ӽԨmvg[ 8F}*i$rOҞə楓z?TN+q6~E8Є.ٚmQM/"5!䤇<v=,Wbq[9{*)w3kK ~J?*};2)= +Šڅ&GAK&B(%EKLʥRFvAJ Yf JP44ӽԨB ؙ(ƮDTձCĶfLZHK&t4ZR $3qEQ~%4BZBfLQ$ eNdAED_qEQ~K&r褮tA cyLo;ɍy1&7wcyLo;ɍy1&7KTtEfZ=$RB6:?.6U 03V@"#p1 gdSYDJ0+_ 1 1 1 1 1 1 1 1 1 1 1 1 1 12X('c3PiT8N,Q}\bnэ\bnэ\bnэ\bnэ\bnэ\bnэ\bnэ\bnэ\bnэ\bnэ\bnэ\bnэ\bnхR,-ȿPiTWKq$J6|eIsy*drU;IVv#&G%YLJgi29*drU;IVv#&G%YL~]m*n$q|7{лiTWKq$Sồꨬ\3ɧ#]{I!=GHki$5ǴI +H% ^1C 8Bz7|RauлiTWKq$SổbveM"dL vit5ͱύslmgƹ6\Ym6|Tc4hJϗ? !s 1A"0Qaqr2@B#CpRbc ?3nlrJU9LJ[Nۥ)RfS3.߱&($sT$E۲.^"{.^"{.^"{.^V"&8$&>Ƽpr$O_ ]/.Kዥb|1t_ ]/.KዥaS43Rrzj+ ӟb9G}x5фi ̆Р&gZG2<Gw#d?1;Tg`{S-+SrV:j+ @ϳIRI-vTg`CįbZsQ=X '#OVm>D*Sh+@EȃJJ2#[#$l؅ %Ffz׎Q]NF}a5V,q^+Rw!٩e*iACa@ڗd?W棔z׎Q]NF}a5'A})J" ZTx rV:j+ @ϳR&''p ^y+PH"Q_^8MEta9hjWlPzZriQ#: t;JkCQ_^8MEta9hjWdA6nJFĥ;ܒuPJR2I֝ZlMP:)TQG(c&0?Y 5+j(GMH'og}H}tPAOԭHG(c&0?Y 5+k6HPs;G+`ڦPM$6'=Վpr4f3ԯ+ !LBHa& zIޅޓ1$vrV:HJ mH)@D)IH4f3ԯ+ $>TtW-P 'bؓAl棔z:ZB@ Mo.*KhJT N@ m|1p \7 ErV>Ň)("TE oDyZGtyZGtyZGtyZGtyZGtyZGtyZGtdZ@=&Rg9m4PKc\ZɳDD6assets/images-add-ons/learndash-woocommerce_banner.jpgnuW+AJFIF Py>?:oxnmAHьqJF๩ֻNkX}v6(oJD֪ΛMb|Ww.D?;mR&ӿ2΋nʰyjJlyeӯ^0XnR423hȵtCZ7?]i4ּ` H]TqǼ~I3yZ@>/ d,AR,WPLr3LDmtMxbm}TqIM`"2gclgV]|*Hl*SE }u,$A@H.̙:7b:\ |fid$X Z XJ6}@b,+IBu׳~E4H)/>{}nZ).oEP]9H&n\|^HZ^_a,'68V.\mBO")7Rjq*Cq Qםj!jv||Er9xǪ<`v|W{0מ8GkPrͬB:VTcQAQ-Yy*|A7ZEPގ*cdO61k1vm`c[5(ݗҭ >[  r? @8!,LI=s0yއZs+7jɎXQdҌ0$y|{8|i͙QXv4 I9yV^[@8)2xif,n}Sʮu^|&BW>2ۼʏ٬ I9YXB9ȯ[ uGwuh瞟0$!)/ߎs=m =08,cߓk: $^QBD*cw̆0 l3ϩ36XbI~ry d[{ȹ+1jYdљl&ѡ ߕ.d?-6`!10 "&̭Si V֞i*7:qMΜSs7:qMΜSs7:qMΜSs7:qMΜSs7:qM3,8ËeQ9b Wy[ϏpFcw֞lj'| 4Ҹg.q1#[w^ρ-] o:}avZLHYҕjT(ƺc:7rOq#%ZV䬸^{bD7[9w}/>Hfr=]Ovq^f*79`" p [Ҭai@>WHF,hqHf:ޞiƔh…WXvWI3qnn)JEU'oYϙ(atFqtzNq ܭ'j\JǍO=0eڕZ[ߍ6r_|^F*,>3m uhiKU^Er)hD#{Mouoq(" ˤ?9$yy zrj{ 1Cι"eq4~DŽ(r_|^|duz޷{ԥ&`M;ӽYƍh[7r1nrrv؛"gץص$td?*D6rp8_4`Fj*88yw}/>Hgg&y˯mo8B&@{9ym>qVf!_.\(%%Mč9LiSJ+hRMyC7!#>Ņ65s D$7#ߊ<J}3pd!: P;G3OQ q|C4e>G3OQ q|C4e>G3OQ q|C4e>G3OQ q|C4e!f'JpU0uт~FK7R̬h 4ҭ_*{dOQđ·y4$1<*uk}GҮbff~lREK5KhSM1;u{-ͷk R[NhJO>~D 'Pv>ZQۂAF9SeSBrK3me` 7B ,h8ެe-kv:eSEZXdUsOZE>7mhȗ刾J̿"T]Z^ROUL}2hWN8FO~n,H>ՉZibIoa}9$idj;]I<+d[ajUU0o!oĺ'GK1ɥn_kTUG$)PReM](`on{a吒ObENղ /ʼnHQ`&B,n-Rs=0mհ^:gTSKəJL?թXB;ee(GtȱOb|f (mFǝ w< 2?g yb//ȕ?=cjéԩp,BG\r2 n>%f_S;D5Lن-$wb}dF+/SK S$1za6EO@Z*1@6:R.l¢iYq618utqoErXVصQ1Z t^iyXr(X"FU6ƴ5eJv;t8_%]_*~{.]TNSؾVďck1Կf}*,J%wO&{م/$K;*IDž[m[P:7bo"=x)b,o7hci ʦz$ìp$Q8U.}!ĄlFNSk"[%4a 0m9$Yбڧ4%ͪjg0Mƾj7ږǖ"*2Sw쨧FNh-Ĕ0lFFzpI$ܓwzN]n8Vmcy5qwn;᫐z atkea* ll#x/UAUc$(]%]~)$l7MC YZyג3z:G)jz9"j)2FLj䫪U2ƒ*-]KitvuȻc}$l@"!E& ܬzTLJ]`0٤ɢc 8Vݬoyb/,T_&=PLx;L2A'ȥO8RSJi,eQqAKH91m8H^VO,DTy9IoY#m%>щ#Q8vb7MbojeԕSű%wn _-tC$t6Kqϳ!TC,-g_pff&"8B1{c=}ᱞ>sxlgTJw<+6byi%7^Zʙ8㮦v?6'Xr "3n2Nm_8jdі>TG< xFa7=_!)!1AQa`q 0?!L>x[zx@_K=Oo'{y=Oo'{y= rTVS D]:8tGs)uHxN|PjdsC@@]GB܇8'JqRP(`r Pi{psxX{ FDp$Z@lnAXNb1<%C@CZBň8]#CODضolb8 .-9.p2y0 a׽{q2l^$ΛEI>k]gF6N]z`3KBg%o,ҁCRQ9f WGnGwBRbg?ewA5+ٛgWb3ovF8&$zՌ=l'&еdw$Y 1hQ Ֆp|8Br3dʀֆպ͓Z =0HE-Rv\;]<8P D؏dsfEavl/{-P>~zi`i4t.eZ Ԙi!Kp8[7=<<~('q+Ouy=)|6 㦝 "d@4 pyAPڎG3Cc1(dNh7|8AB!4G j=<}NYIwj_ym}$O3x٤z&8(G8tASQXyyXH~IԭÌq'A;tFI/^ Μ #opSД@ gbdVEEF)9؝E}V6pP' H9ެnDu0_J k4濆w 1:J`<뷳׭IvG{ƏEY9b%/D{R4nȘ66_D䪿k 9NsA ?JO_ƍ_AM4YR/1롄bC >g|! up K-A9$/!'"6B 3v8|1'1I%Ag 0 0oIfP(~Ǽ{HvXa,L͙NƮ8>1H<9Q M9-@9ʺb˲  -(PQ`C$!1AQ`a 0@q?̬9#QlSj>+tnݻv۷nݻv۷ljO1w,">EoPpX0AWE0D6#MOBV . E*?"x(*tl./_[;hD96}:d}|%*A)i1]Ev@ٰSJ9UcG#{\wӬ3t DqJXCZ*ADi?&B`q J'1rѭ񒷖P1Dբ O`Fo'My;W9Ŕ\1i.*I\Rdhnv0QgLOT)4P0PIX@b<.`8"x$[k:P)UX!|:-l,F(kiټEό ,OUqEt+O_(G =[. >T 5RO1DGdzh(6ٚ E'm)E GYhWL(ɬ^jGrO=fLB&m~&Rj H  4f@m*a10Ge>|+ם2@j0tϵ{8B7R(;vYfE|j@+|o%B 'RK Ԧ.! $)L@0w4`)k. *΅41m-EcJ~L#n+v`c3lTxPmVQ#i$ &DH&]c|^:`u_A[Hh$ʜ ?Tݥ=ЀnQ)G=-iLSll&b#.UICe8Ad+Q.Rc~85cl u@CU&-m=k8Սa pGe>|ف;ɘJR)@%lϨZvlS);YaJ"`02?JݩrT$踵Q`|9iRaE7m&vr*?,HsNJ5eZ58$XxonUyy gi^uf atɷIU8Ō-ĖJ60rsGP8*O@@pC`M(QEU0J9vC-kǹ(8㛨$&^hPQ'1au<)gt  GZ9Ge[MŲhps 6V_w=թfm1(@KQC>>hLa:4ݭ)NblVlU򌿣>%ԡ9ZG 0E9SK4ʣ0d DUP1$|LIw9Ūwe䴔ZbO& ɇziH QB+SFg($.l!v#0tvX 6R}uS`lama42Y%6Gy|st)>*t;1,bo"%NuqlQA|1W;*@1;qT"_qMZQHFTg0٣eE|4Mk=P 5¨ԓA8tbL@9\qףqMRF}dlTgr{}i>򌿣>9~ <09e ;ᆉ=Y` rj5mP:*DkV$U`5m4V= {Pׅ26P6:B`/QPōJH#D뺚la꯬gh)I$^l4LG}F|#`&GAbiV ŰQ(P@@8 IeNzHjI*)RHD4Қע%4<鬽2'2-Dfbs%I0֙@uZh4}F~He7\*vj+A}~+9b_Kr w 1^@?B5pafaǀ`8G쬹ӧ$:ʎqP)TbI&D!M5$Ŧ7M:af&Yf/1"Hwۆ,pX}F~Sb|Tx(f%F\)L> xglPvJ_pY8lGTPEUL@ yP+B%~9# i,uC[U #+ _{DPRMZ )P1f='ml2%  "|p9 y r{}i>򌿣?ESK;+Rx8E,$rP-p_N 䍴cu6\0}칬hdN 0PA*AY5Fn yRNMIMpe;s/)oiEK1{&%Ia#;^'U#I.k57^_&b|tӜ0e=`lz[4K8))D0-yՇ뉶*5CTf Wi2P;D0[7xɔ#>$ܐ1uyXx gعQV"8 e:,2k|Nx5'F"c#Aly͒ N(' oMJs4(Pj}"AѨ########"L\JuF+|q=Y`4Y&v( 2Z[~ ꢅÌUe<8ywKrGBk-p"aQF4>ЩN2dqFFkr4V`#167!"0B 34 ̮0ܕy;7(E&uE$A/ؓ\bNr:Pu$A/ؓ\bNr:Pu$A/ؓ\bNr:Pu$A/ؓ\bNr:Pu$A|*!ؚUި5r tz+ Pc^jzh0QcXZeږ?<"*R,*$ۢ%|nߺ8cvap Y+b(p*wW2i^'{Q/r 0$9!Ldf#|T7R\:q0m*Ke+m[!'XP>Ń^ֿ!Kkrۍv >' c)piGO81|iii 2rݷ^X) \ʹϳƃƳĮ5[AMO/(@@ ڲ-R%ב~)'ʂlnBV bJ US1M*Ec$ۑT) >Ń^ֿ!Kk)F{[mmNSĊC{7z:kk3^g9fx%R/@aط$,'ү;x\hMK^(ד@!\'k"(E"rMEj Y\koG%x*>IIBc[SUXL9nX?Ek7#)1R2ZN5RSl^<2 %BJ[]u. .fZPԉDddam(cJ`_(I&xԾ @mH!8ј,!ͣjN?>Ń^ֿ!Kvgqɶd>Xdkʴn ] WCΗEt\4JL%1G3٦.+Mnb.scAko(?0%ZƳrM{Uv~<0$Y.B| Ŧ)QscM% q%6NiRp>>Ń^ֿ!KvnXSK!r@9c>ܨڏbz̧R "f:g:g(v_)C5-΄%0e9fwPK:J[4[S2mt`EmT+֥VELRtM-54 aX##XϨz}E{3+ޱQ^gWc>XϨz}E{3+ޱQ^gWc>ѯ0`ȩ͠N*t`U9d6"jSF,jK38B.јfPI ߮ðrB[SD:jk6nZ,Q `#l߁WvE):Կ3-^0ɶSiq 2 ;% V^+:m0,I=±7ـ?efrP@LNSpK,@dQ$RM[$5ͭ!Y;  sbۧ ~Ņ0dsB1r 1,~E1mG"KRl=̟LȐgIzSػ6.A°J2럄Us`gd#.*OF?q߰AvIˏE5h$+ΘS/!?k g'xV'jpTP4 ( \ÈGGWa|v|'Կ3/E}xyCʓbVn^M&ƍwK (M&0UQfcē[07؛3 $#JAaZ~)mYIӑ'ssN_(X'2Fa"d\f7D5e 1DkfY;6 P{sA <%@iGkLҒ:2 t[}xz`FohQhb``4t$dAݡ ۤnv%`$u;\&r hKۓKD'Y @3G$A;r?>bn/)9 al*āmlxud|O~g^zF@P9@_?z_rQJ2(q+wtzjCq[ص(%ՕFomyK+ht[!|DT-;LFc 3HT ¯Mf5AV&Ӎ6s0Yq'!2aaML7d Lם>0ڵxq$ z16^+S5˘#iA츜o9jEGAA*= 3u{,=$q:MS" nC~ [D'.Dx6OsE|`4~ݞYEqs RIjhY v_D{=QZZ5<^PF֭k>zǦTn:r}X%H:^yH,*quK@y=- ydS#a GZ@^U@WUv %w.8Wر?| ?n\Rq%8GR.A[C4,UbRjPꍚw%EOE\b:Z9z^T]BzD5tw_=^/@O$Lx73[u*=K* 0` `DyZ('^6,vdiW^ 㗌*Qjo֮<@#HޛJ$Nzwj|ԶF&ݧrmS)jAzɓH!jDiid,d;5Jrwht( G/ތJa4982/gv*Z|-BqhimajncfrW^7+D}x=ptg$P7di(D^A\흅N8Em$ EzcKl8,5905ə$ld$=qO|cnܕ Ag9FVvcLP ߯9 Eȣ?dR%8u Gd 87SFKO7V W[[~3PZY_[4hݖ\]%e;yNS&N>L>k/|hи[tsWV**<&eZGG,X|r5ZjzLk%~X ` j!;`Lgkd;zxVJk`K*f|yQd a\T!UlV3^QwYQ.ąP/Nj =mED t"ɬ2%,P,\&B2ں10ѣ j0AD֌Bj""qJ&, V' ZDb80n!̸i+xzE guxXߔ|[pr_? GgY İ+٭M9 #L7ksX\<g 3_0U巹1TbC׳x80 xЀtk!1NÜÏ)Jz' .]S+.1DMv+ۊd\+wvk/wwL{Zӻyk{>GmS$A =ˢ'"5_ $&+ߎa>dd+D )ɰ_캵s.0HX 'E Ⱬu![m̷Tlh2,-uiv N~G9a0#Q V$-j:8nO-̈́nN*4S ~9>Ahi?tb/<]dE,2X+NJ?p_\_ |'Hn4d6$XϖGT H+q s\_5_gȑFL k$ʧAǬWyU`M)o6%tT)d \9qxF' XUEO$<2Dskq=;*YBbS ī܆Bȝa-ȮrhbÌ$F#FCDkQ>WK9RK2M2VFQ{d{3ʌa*5%;Em~PeYEtoyw8l9,BG_"sV/Su" ]*]#Wj cW;<'ӈg:y|;~T4HY !<)dHR1Sr)^y GUUUU_npinÆW|OfR5eSO$B'Wk⃲.s d렳1_xQ*WmX7Tڶ]&WOJ 5uMdC7k*UsUsUUx#!10AQ` aq? WB8Z4D e?1jBPr\*-{ Ftp!{B)XWѰ珬bl@Xcj,Ԟ r@8A=\Iq# &b^~@KK`p\riVN]%=DByc*=N.  ˧Z:k]Jb8E~Q9梽hT&ZM NJ{ >Ua{56 K+U~D{Xi#6GDDfҌyu#k&n`d>T1 nk#`ǞW«Z!J;>`X˸N)_;R?wD/Ox|63]xXo @+Ɂ?1Y.y_ͱV D̘ʩgwk& SE:\ScF> p5O0䂛OiyX .Uߤ>?]bBy)b@%d,O iM'əmY8֠dYp<7Q*'ϣ }fT 1Bbtc;{p# f%mf |[](7 x )ȫrS/j憥I*pf@=@u@bɊB<ȳ XCce$v'O3> =Uji3R-M{^H8[rQn3F;Jݮ5"c=WU'd;i@mum~J}Hw#gU y.@K@)0/PLInDT@z1COFɃS,2lZ"PX8wP_jU eCc6c .r߄S#w9XXVhslU# I:b0ͤe ys"ub"Iۂ5tDҮ'*ۨ?J:S5cUݩUr*D~G Q )ya.L@ʫWC !1AQa"`q #02BbrR3C?TV.->=}$  IA 7~dK;J ?FyeGa:'T=^9lU0m8Ďwi ӚgyPpj%G2q>l}5c'ʇ 0C{KqNG8*6WBX#eo0R(P #3q8zx8Iz63qdA9ykXkUz\$uqnTI$Iēn,+/Tw{;'~fF*h C)Պ#렢݁dF81F3Cѫn (wQK-:Q *=T%?YQ&[ufPj_:4AZT[N2㠥5:I&&N6H$n„m+:ӌ:.DB>ZT k¼SR)ƒwc1qMB+{k); ;12Ru(KJHDMssd\>Kam)WGK0 $FtdS5D|ΝHWC Ю;N~OC:T^VBU6AN`~uї5+רy:+rGu:瀴{:Z֢D6Gi0Ehsٖi8tUjҜixXEhŽ\Fi@CLETJě%E$)$f(ROO;]ݙSr?G$,>;MPwNT (0R)F&]ADW_3q6!~eWʆ#y!'4:$ׂ#=-f~-7ݸyTlVHգE8R.\MM!(V}6bW*jKCeUm\O{I*ÔxKc2n5NVd@HV vJL,F> WxgAB;,$pg OhfbF@HJ8 uw,egqӨ)q$`JP"P)nsG 7ląM[#5 cru"^;9ͶCM%0vVzN*o (w# жԤ8Bq/SwTI}[d8- 4+A PNq'-Њ'sءȋLt^T[ÍϚ3e%HQBB`||k3#}OϕO I<C`ft )HT4R.>A>9=rS jI ~$7qH5R^_zHMdh2.h(m#HG5!12AQ`0 "#aqR$3B?Fn&SY:44R.{n8^M֓n.koEG]jL3.8{ty2j4ze*J׵p4MtA~Ӊ?@yϴɕ3ϜJTwPx3#dA[uTZMGց6e@Yؙ1oH<%%P]>"MA6V|DzmlXOh/*sfዶdj$Jɔl4Q,ko|f| YG"1'pO^ksJw,<k2z߆zŸфT>BY1պRFw>ԪQc⣑dPF3xk(F*' #Aff9oāa{|k.+~l$k"٨* +o[☺3.1, M6"M{\TGia2e;9*; $${J'7 ˝md>ofN^d҈N3DnwXqIZQ,Wbij{^9=ғlkEDmjLK6ڻ/ C(zԝΎ&SҚYw?PKc\5S1DD;assets/images-add-ons/learndash-paidmemberships_256x256.jpgnuW+AJFIF  P' x' xcm:-: <ܩ*@x +yҞVX'o6~@ :9K߆s .b۳,!؏W Ǿp zc8ۻ\g hx73~S}x?go5kXx,?NUZےj]'~wgàM KZ1OruuVu.C<o>^u(3k-$9=65@л} 1<I?e;*pƆǃJq</2%֎ai콟^vH`:<G} ݝEx' x'  2222222 K]d9db`F@Jn}Ppwh# c,WyM;Sd@昮_1dµx*h2>O2ըv[gгk[=2Ԛo]qznS˳d/xY SF@GB^UUߗe'fWљq dp-c2ze#t =q ӹos4]NRV.WN`F@5jx702 ǀoP  3Miڝ7n}MNN[wм }9y71 iO;3ߌ'qir4{&.8g>| kN|ˆYηĀ' 闙:ּ m6p>yzm6U" wҺ^:gS@uˌ Ѧ.]aGm9=78 YGzqpqí}WI8Rmp{4k_\w-w{6N3TapP`8nW720P !"3@B&4AV$CFGW z|>!'}>C ]2*Z` sQ SMKEV]ʺɈDS,<js-VK/*.[8fvU|p  VoOұ}y0CM$ptӮ֟prcmRJI戒;!ƠTW{o5&uYGYFpw@u`p'W٫7Sx`[!H|Iʡ|VW9ʗPT'Hwca#𚡑_yT,Ppa,M,K=EoX\H9y9EjѺRZSڥv7K&,Zc= 5aZSԛ*ε V\B?Yi[9g؄]^>”) &1:~>=1HBKԧuZ-j Al&7J 9 uֻ|$i=g(dQ` fbQ\5h tC\VAƏr8*+ C-J%Q[0TYlp٥IJglkpN.lu[䢼"c1a1Iu0(X}RԆˑc6AEh{_b%ȴ7Zw;MnHI:IOe>C UQY%uW{%wM5;as!ֺ֣25Qk c T.[fƘ$0i8lWkvC\@fmǓ4ˇ 49l,ҟWc]FdY;9"&d䓴Gp2u%BlE5J^:5[&liGn]8U,h%Ll;VULi3n[QgO+~v=lqyKP)%F^Zac$[&%_-rR $VX_5jqByC1P!CiQ4u^n89Sه5X AsV`Q#Sv4~ِZilBG`~y`}+6[**J蝺7T;&R`[ITQ:+j2 n#78gTI"E0 q&"͡ ʫ#zrmv9S Sc[?5_kS7.M4FC1|{2O'VgHB4| Z%DP! c`tꩵK7[c{6'QIYLW|T 7+6*٫c\~F6_gBtN6@5lW 6Q2fk4Ձ̑=le%>C)C0[a، u|kȖƟl.8* V9yF- ՝=c2j/? Qx:>w(޾xl/} 6_^~HrV3Eg=E{:Cj"dU(J!3_ݯ+lp-[kD`= MO.G~#M‚̥TyԬyIu@t]džaz c"gNѕī曽=]n5]č b9D WF2w"mX嬎%KTJ#iֽ\x.ڌ$XLJS=)~$l+9"XJI/$H~>C @O|>!'zP  !"1A02a#3BPQRb$@qr 4Ccs%St ?d'o6I {d'o6IF,fo|(yGB8q$G=eK_pF,Hi_q ޕT"FZi|9#_.+K$+E<D$XHhA'oKFrSgD{+4hܧyNJ\m iz]LVڼs<Rg$+M'?JV1;klh}NO1>&%hdXPJd21S$A`aPW3A<zbib "t)cbG$lteta#m?w$*=LNiL*֥#!*dV-Y37R֝D:A/rPFcɿ|RYَ^1zsI`=(erIhV1-XS#'cuId+K6@91Z4p8Xҙ5$C`@Dr#b<5*k5YbR /GOvފ59! |̖(Y3zo2nHQhGC&^W)O1A,ʒOrAC*N RkV04\.v"xN%k]tbOVR,XFHYݿ@.QvR=@>q@wXQ1rVl]no*;.S׃<܍K${n#lj;*(i4ߏrԙ|%՝Dט[$mtV/Yc'2M!V׬>1߹FTYI~݋r3I%ϟ< /V:+nz8uIHo#~c m 0\^z(^$-I26$XNhczXw"Wy-KTi仛Ysr*< H͉(qZaqSH>(ey3%e 3X6!w A.I'etKg*NkfJgw'oA*H vɔHj< b*jܺf6As-jAZ~¢%P> 5,OzO2LyI8?;(vЇdGjtUڈcx,nc.[c- N֑{5ڽ_cћ ֊b3pxs܋NF[0<'5uA?#O7: R d<CqC"x ==zH:Mђ[I24m[S/w|MeWj'q/΂9ǒ|Ovk{]o^:RY}evl/ߎ?=3v?S38Ǚ~(?ce9(twv[ڥGcx'rGyV)?|>O=z̝!šf1 oݝdcĨxF]NDprw㜝nJj@8LfAd)r/^ 2ELqK2z OS;:[q7Β7N?I N?Rlq/r)OǷ?0n:5/Az"U9h {5%|6ѱWrA)GAu j#qFٙx,JS},: rDyRS㮋_6Itt34>v-nun`҉bclA !G~!=z,Ȏ&rd?3CUg+FVs46CAISY~ nzxyJ!A1@SЇ2 '!ϝ$1*EHB^+UĻe*ĕ0uͬ)V@Ƶ4"TUJsDP@ea1 WIN0`72hf[(PsXfWt2Cz@pTUP6&D*F8Q>ŰHcʪ਩r+0@=l;d ~A)PfcȤWK'oK!vRhSu>l Q8Ī0&< &<դ 2уv)0@x;sTfe͈)vaV2Dd@G;?1= AHh*S'~PQ\Qr)Sc+dDȼ7pɹP#G\U^Bz f̗fm Bv\jt*yM߈䆑E6rd7ؿ6BkjOH.J>A&lj&ߥq^('*WS Ⲧdl*0F'RWoO|ŕfOMP .+tX~9Es(CJ&A`ȑF: !LX`(!hNTC߷@ mZtD?g9VCcq>46^N{]ftW$_* AW ۛ&W)N\oW7z39>c8DDLs x-(["1[S@nD+cxœbpNot+f dw~`1a=UM1=rYV1riNb:8¨GK;,~6"L: xp  ])l$]k(ޘ  A4Pw9Yֹ{Β?I5uzÊ]=oNGQ~s{Y}쵻5tq'݂ރ,<΃+H} z2\SL!";ַJ_NPஃv~_D&M@^Ơ1 EIteȸ1flj;fFe`r["mARJ[E3DJ1@ŋ 7TS=ɜ!o!=*r=QB&$NF9 tpAJ`guyH*x*R'%)1|AyNy<9baXy󜬊ݢrӒĊ>.Ͱ$X򑴄{ؗ#Edkh 7Dw/{N DLy6twD6z=$(I[gB8<\krx©EDP@4nPr4tr&HUaQLzÐ^fičbt J;p\E?1n3LmU bnAN&hʋi"ZLCc8RNAi+mv޸cJw+;Uc]! o_ wkV^!9$x;xG|f:(S n_DKdq*5d2E^.;,HCf#&+wRn6 GAa*Jd kBd_AAkuMFڼfAE/t ts"64IC3D%PDDDDx"6z|J X8 ]og>:6?h ;lɎ`Yup=>YCvlGC!:[5䲒;FJ̴PQ8e8ATh&4XK*nzd S}Di&:dʹs6k=`lm z@6F !1"AQa02BqPr @Rbs#3CtS ?}G1 cǘ*90Ts`e[()#B 3]ZH>": fyc$zR5ZQw(9Jȟ&+mfqyVHP2NlI`AA6-*'2- N`y8TԀPSuUbP AVf!UFN؃8F6fO%Ydzlarvj l R$FmvM7B-!ʉ8Te qI`İ9ӔO+yi[誏hth (|Ylj>QPv*sZf'gpev D 0vqY44/b9_6qo,r+A- `I(#4>7RZ)hίiU` qdl"sݰ2N-:l+S{.-`$ILEpbu`ӑ.oaEսo\b9G{ qќ6m }%@@QtE}e//GdsIS[2E,`k*k f8+I F?3Ҷ& 9 sݡ5S&Lp ƨ=(M (66#F^`ێIo"ko?Hc[ T',G 7|GX3\uPEh%>-(bs=(uL{Gl*Gt~:hUHi1cF4FgQܩu(p>"++ b/=!J]01h|*)QQu. "AF 14r/e8Ոa3"dnԍb+[ݬm+|@mtm7xۊ>o6oV#@:7f7* 1ƧgQQu/hHVIMTbYm%wz-J%G1iJeM,0#I/8|j9 %jTB i6TEEd}QyG1 cǘ*90Ts`-620!P "3@#$&1ABCFV {>'}= '[ `@ib4ԲO:tM9ä)%vMH;pEj纞\6ǧtV ~6nya3HTv=QCI=IITI5PGSF="rSsvC%`11gb% sM^ͯԯM388ձ\iDǺiJ#XT/uY25X JgX'Au?H1G>iWlXh 4C8yOp4E*y.5Ps4P:Ca9Zܤ&l=[L80$CqCnѶzý*j娩.5dw%=)C0吶Uv{|nVtmor VfKM½%Y'ck/,tͩ{y?Lu1u\n*3WC~?3Lk~_'6nlCfKX[Jwخ#ϰ^X)M5Q)ȹ; UtM#\R^!>VJVIF IX8&}ApMVVG}Yp]TӇ}rH8.(F (ٷEJ)T4lPM&Opq۴ALS!JXn.T,!ʜLX٧{XV>*H_# ,{=?$'VpC(JE伃YWߴOp{>'}= ?E !1A"02Qaq#BPRb3r @Cts$ ? }A>xPa<0O 'U ^t8@73,1T$o^jul^#B6ଉ_nثXAȃ=6(*yu#S31lL.EjzDh2& Th́W s,jNJoT2UȂ3dFb OL&H cv:ݟK=$yQW쪠8kl+ܝv k@X8׵rNśy"pCy7YK|zxS* qUP2HqRx@鰞"rI^'gCTT9XӴ׋ Ra%X* ims+J BTUgi fN 4xM60^( cO)1VywUJx,}ICb.l ֘@ʤ$mMm*"D@9ZtĎ0B R+Z +/۳wOx3$CҹrT0īj1le23HݝT4T"*I)]쯖3I1 BȸXlEXUp)"Հ ARA r#} Cdrd6*М  mY9#`c+Slf 49ESD052Lb|ީwS_Jw\r j"TЌPR1%: ')0BȬj<%DP]}Ig Ml1Ѵ[S#0XRC)>Hy>񑪲0^5$I:{lDzҮњQI%x F 13SH~VT2&6l>ET*@ju3殰(̅(z,'Id?R X0<)wOER6*u.ZSR  F`;x,e2mx+#&9CR!'cI8K@%Q24T"nr*ˉ%bMI6萻jC05W#8dSU- 5P{ERkФGB42fr\MHEF,/Mq1<䍎eϜf $+#E `Τɩ$_#m( "%\^H\J C= FTv2K v_%|hT n)55z:T0%DQ(O&cqI3ٓg\+'O хV=4G_Yt>O^.wHBѵ.P:0V-/lT  zMowL7/sH=+1VV Ђ`0lf$$fI95O хV-4UAf}R',9$g1y`8nOوLSV5{E1_'(@^Ft_?0ܲ`b}Z @Tu0!yaEc`]2jPIߪ_[ wr}ܟ?ܞ 0oҥ%FcQwΧކFO{Ac'n zjȂ4 ksO7-hGqvBYF165` /8Aꯜԡ[^纜0eޫY28*XvUHczu jXs-ox^?ͼ/nxvBc!% ͘$Ҕ׾A/Vzn zȽB=֤s =6u!APD",-%cDI)39s4I+UBQM<0,>E[?nʟ3EE!;XЬd\+A= s\ᓙ-@ p=[PF6wv4 *Ğwhϡ=b4!ִZE z.OŖD`l3"9ՃXAݓEW1^ z+V-w&KF͹^kĭ$ufrI=ٜ C\' }A>xPa<0OoPKc\1"HZGZG.assets/images-add-ons/learndash-edd_banner.jpgnuW+AJFIF  S}ׁ $nПk@~4m@l_kMmϢ2?ȫqeSZw_,sNiR57C~𨚿|ÔX}mJ,cH~2Y98'h#K;#,R~%nvtۄt}/WFgg3WA?mqt 9u3hc<.2F mA玈ONs/;܋W#6|[D,VC`cNH{D]'9F);jgf:2_:o)gd@? *-kK=؝=q>w%ZUUֻOdX"7`J/ )H'6#A+Ub؆_J5eZ K*%>sz}a|2߸ E }2˧ᨷ%@3>@P yκ`d`D%fM6eIm7#]^`8O^ ä`ᕈRn`%jN^Z`,^KuOE~`~QśeyCnf nyR* 'uZo* * 2W;F]<W spH@r 7wefbL[yޑ]^X:[fRX1i Vc{H6iҿ &pcXutɍ=ɍҪp!nL_C֛6A֨{p9N_PF[ypv+6ήױ/Lpiv :>Bd T /`  $!#1Yjle ~`q[»#?;5yEof9e3SM~V(Nd4܂]E {b^[ gogʝbA~]q,ŝ]h3Kv{bQR[%uE\ 'iN;W_5QVeVůFRɜWQ ׉Td%5eo4/t|hDWuzFR(b1X~!)5䁮o 5m([LiΡ[mlte6P^$RrX?u+:“qn6mU([s$ yb^TS2DUnviɗqqLXND8*E^OS #+eN88;ܴUik^}֘gNh@3Y`xͭ%!cV Y͗nAu*mrmq9e#2)i(T$ݎB w;`.m#Kf2N:j; ^!o+ ¯iǔ˂&0hh >4d7v~ZjRR6;:bckvI#x@BݺEZoK߲jqabE_IP;HW޵W-j]-L/lK>&,ghke_%DQ0ok6I%xHJݻnQj֡ #ˏAkD=_rW+wTI1%dH7SU&Uj5Iqm" 'p"eHp, ԰RK:, ԰RK:, ҂oy?,wt[\ =)]SK3Wwçɽ^]U.klQjWJ%|[EH M{][U !/j\F+}KFbv4|\^3[<)ӹIqrki1/Sڦ>:X3vxf[>~^RvSt?)Q̆@w6 EW8)ɪ^"әP]֐)_J oƒ#~/c[jm߰3.3 Ebd@b_-R` m~c uUx_`4Α/]vۗ,԰|K4zpW5aT6fMOݻv˗|CRA"NASRrܣpXWjG_•\2c]J}_GP9t[ ]VH[RjJrsp ,DoM^o/RTUF){{EvKG !"1#2AB` 3QaDR$&04bqSr ?'bs%"cɘi>!rDW2d54d\~Y&i?bOr[үDRRo7L~ja"4bwꚂIo5Weiφ̹UqZuNB+$C3Rf$HMX:@AZ<մ_,j&9)e*ˀ0lɂ6e^jHT j H{E\mew3֊r&[Y+ʖYz4FBeqO54qGBXnn501淮*]>ku̝IpH״TzHM}D(,HLrcgԻ)_ # qU>d`Zev1Eq4uSCh)( bx:J LE rd 'b,9R37M-ZWFqAj鯞%}6FJvٱ+hnMtb,!XD”ġlw 8L>Ja kˬe:8&:js#m1D$47\V9\5 J}Ev`T)Te_q*C!nm5šN$1lNd XJ]J,Ć>]@!$OhxŖ› }rR4z hhFxX٬'3&bJ7wv[%SuRޛGh<>+udէGhΫIҮJ,Yꄊh@D*.Z'-f6Z }Z&#!Ɏɪu 2@UDVd\DphkHREА4^f5j르ZN1ii%VTd:tAD@T_4N a aT7𦉸*,tXX<7vf"m,NltDmE|nÿ6r;{[י+zN[~m72 jSl%+*!i6&D]m vlk*(́>"$ȒbDwRZt TT\6ϗ"uRiC^G꧛{pr\Te.7(K%dQӪ~\h.9^TM$Hd/GX;SsOA&̉I%W+&wn@4싐lq23=4W3W"l y*oQ_a Rw[k=_vA/EYf M.N1OuQv0ނ,7"Ns9s8@`ZjE08EȸO#mțq@0] &凥YO|r% RYշ7k\2*(ungEO"HqmHi-QSٴTFPbr=4hrM"d(jp:eu:!R=Q ϢE,d$vs">42}@huWهVpƶWmwǗe?GkjCnbZuL[mM5AR#"]+/,`TD&$QJ7YXO*}ExvC5IoNRJ`\A&ͅ_{w/k:kVGbm|y>i ̔вsevڴ$5_9* 'Ҕ/n>őYz6_o{Xް<+ arl%*ۓsYd:ac)zMl=Hb6{IW\VeLqqo]f-*)uYIKO)6w63ml$ .K>F(4T.CbL2 ^*y&mwewZ){i9Tj]nbO=zIb~r7w2r'{,Z2lSUD_QNvlo˻+SM8\]- !/3u҃mT_a@rLD@s*_sߓ.D;"dPtD%yHQM զfx HQgՔ`y_LUFuL0!Pbs. +G ]#pVV@T'+eAB:i5d5N)؆uMV ǔ۔_Tsu_ ; 8C̏@:7l8t0$P^>rnM K\vBRR㲭t^>tje.quU:PQWezoVi!E Q\p 8>NpMJ2? h'Wa8|^ߕ DD1gDfЪИiT'y1ޘgċm&)ZrS6ŋq17!_@ukiLM L].G{Ću_!' 9ͱL] +h\].1&&DG $,,Tv$srcv1e_Q,) ˬ9 EAI5l/U"a>P o2nÅ}lnOߟ(:>\/k~#br^-(| PXDDT9 xy ឫ} ut2>[yeSPtmL ڒ64[` .cP"sm/͎V@"blDL ڒ64J*,Msl;>(9cei-ӽG_FxH.r˗.\F#<V$G?4mށ)hk Nߨ"y!eEXhԐI4$_?)hݾRU7J [u371CG%Iq8PV>m<ҹ/%5c)<6=n`9lWR3!vTAnf^9fUd*'H]4^NMlZCRSJڝgBT^NM(H%I(Usi1Yq*ܠe{"Rɔ}B=StF쮆^%r`!ا_ʞaI_X\x d60:6Y 6&Dn!J ]#6HG% <-:m0y$Hz'ch`Uy"ս,ZwE|~1z>&|d?t$~KAsX.j9rn-u"?p[ZEH(D8WBf 61:8LlMB 7Ci5Ǚ_r8 R4j'B8YX"R 1ZΙ7a4K97;j^wZ&@U0HRޞ@ bspĪ#U{1x}4ㄳp#.U{AB0 ci'Lze u%. X]3H-}!?{@b7!RG܃ғgϯJM>)6{3ғgϯJM>)6{3ғgϬq4y)(()qN[f:C8_XQ9Țy9pӝi/σ(Ԏo8jtu#Lӎ[ZddRL!brp$a y Z"~,#f I,nX])He.qBݔqP9b)܈J#, ~˜d1(1җ#W ch MQHQs)NXy;iVZ%OrAXM\GZ p`]捾68Z?TJ䑧vV:S+YjѠi+ɪ)1k(:Ao?lu5e ⴨*ޫYSwh +m'MTRE@5ys:," Jտ@X،ri832ZtSڍOjaAO|*ryFw]ԙT _c) :'(q2Jff4 fI6;n8:Iz!RTjIdqƞ BN+ G)'4uٍp*8QJ>XᎹ"f3w<Ԭk13d`3=-w*UFQtrs"r `sy,)kH!^ Cﷂ$N #QN56Z.X*2k-LLeaq sDp*I5$+HΕ Bx8ü˴e@5Vt[{:~?VΟogOշmt[FGGw0vĚaS2pԨb9҂v zW1_r%i>zRTN 9~rgflc㼊kV9=$.~T`{Vt DҰյTQRP%*a%a^}s[U&V,r1+@#Aur-会8#?3GR=k5ԜiCʣf|XW @iR,#UI $t`E4WU S! iASOשkW.A$̧e-I/DE x!pIvueo MZUjJ)6S yRc'S1\Yn$ /#@V*IQ i VnnI H+̉hZ4{} %6#䃉A(J9MPAȂDexW?'rr<4`i:PF@e e~:Z!! `g[!L5;1Y pWLC[]'3Yp̪Ǧ*9jA`<@f$ 6tA e`"Z¡,Yd z2tqUe:Ҷ+͉fnUFK:@N%J,י~^h=֍ {y56 8PHe :rRMQ=ώhQ{93&`3{H[߷) HyŵO<5aʼnZ5JHS=a mhNѕgiF4]fH>;hc3s١hZ9=״rJICaxmCkAG@[ G(KF%!irOIub`͙[~@bv"H <=Ցn/7oŻf7f*E;[2;-uǢ Eמ?<.~=^x\z.]ysu?SGPeK]InԖw:n%Hqx*2rPGAT?)3X0OHqIFׂGvN)t+{7k]vi8v2SS$ }YN51ݼQ5 kT^wMXϵ񵚶B"#0;6eRIV}Ih,H`hZ<7tB8͈˛(KMל(˛)R;C-N+H$;B !1A"2QaBR`qr CbsҒ#03Sc ?6kgy^%3?q320PJJCNV%y"3ov hTPLH``F.m A-)Fe9' 92&偨=".h2 b`F{zاh) o34oK6N& (l^kǛ\I!OI7sT@=K[EED}0@p c."(AdE\ & ,E-r,z!(WRF*]Ak+{ YeVRwqr#oE+}[oE+}[fXAUuĉ̛A,QI[-w$FęJ/;"5Mȃ ^IQ׷~4k8_:\6xLɓx 3]y>9͉4 07H)V[XlJ<[QBh0m_Z,e$DG da: |xK0? ^O$ёļq38,Xz3L83㍁ƞ^M='2. n2WgcŘO=wb9*r!6dw]y >STp2e4<dEKCliG JV,T@ x ͛$A2Bm](`NefK3N0f`Am Z*,dTB* HﲕbJTSvެ05ՋYڗh Ç@MET~' &T[K@b)\`՚qJؙjI8xRVS"d[XBl@$$0߸OnDWFORe~ ~œL5' +LCN>͹[:.@"ᘡI13N$ˑtY 1W 2EݟqИxZBqcՄ +ue0gE5BBXtóc| 5-W淹߱!>~PKc\:GG9assets/images-add-ons/learndash-event-espresso_banner.jpgnuW+AJFIF T0Z%7oM땳9e CNA ޚTT-'|}P6kb|Upc50Kcƕ{ Ggi@Ivb\#r61vL4lUKnJ`/#MZtY5N 9Nr Fv*@>a _Ǩ[EV<@kv,gK? qTnwKb;~:)g+kfqA =S֐ 8>mWyCQįP]7xysW&=AOѰPvfkޠ8z˺@СtOJEa}j C: d5oj::)Yu=v8g3ɹ_TAv»棐{>0As.q[l硍 Ŷ@ sr^}G{f1]v>8P r5.xX:x1 ٳrzbP;)@,)l\9.n [CrJ^k_u_-ԀZX@vzxO]Eļ@>BH0s{ ŀIYWF;[WdܺԻi ۪}~;@@ KMq볟h_ɰP aU$ T޺ȭQwf[-xp&G\Oѐot3- ` %V ,=ig=YJZ6/֍_?f-xrn6WZg `Y_n iŎE&~:"~l^YIpևvP\e'+k¿*SoFƄnu0Bi)0^ d@hHr=ٳfgnҽ^#kO5DԶuZXw)RZkO܄H8^܋齪J8(W.ak7M"^'lV_nk3l -mH#_ 18:+ޕ8׌*!$~񾣵gc!{Vu#Bk7L▴HB2QW1,5QEDT0"+&/da4-cI=d.~MR.8r%Y- A(%LiI Ƙmҕj[,WM[-a7CQx㜞Fjna0 @̊&8j T#xO b=u9GšJS:]kt Dj79[)p7" JH<5k.D65W4CIJ( a/iJ9e]ږqMl  W" UTMtQaC$>ƒc)["HWCȚI%WSPME 4r@+D!Y`eV@ƏŒB?^4~]հ.̵AC-ƕ9@?Jc]=|@TQ6C<iևruG٫yO SЦ)o`8^6_/].u])27Ķ;_c5c)8aYu.RD6mQ͞tHw=kƍe0fe8Xɤ7,W/`NI9 JlJِϏ,r 2G$~*Fn_V:V֝˃H7e[_e k $z,4EMĂN.JALr~դkEDHhm~^ep2pYmX&3;XGe7tUfc g{>'ӑ H}`>]-ZLpڧBYòH&0٫rx A3EQ5o: Ui]xTwqĚyڲK}dFYD$c}Z Z>9M-[:Y?IdGtŦ;ΦYQ0~Vڃ:JF4qSVIgs2S5m+cRF|x6ka94eOkRAfQ 3Q;WW[xKb>k͂YоJ!lZMl+O#$yBc{>LwQ~MBQt?@2M#23o=-+ r/av^#I,%` ?<Ǹ8lU2CRrY{~n#RW97i /ys 6\ZsLbuE<6Ȋ[R} d2eWɎO_ Z]Q0t V3*gmfu-W]<)V/s):G.NQV83Wh߭ؼ)_#x1J kiݭ{Q %e4F̻PMǛ&6RD8" 9ۧk?.9bdȗ/-"ڱ*s|RHDd}<{;N׳h^Swn(c3RqJYT"?O?ZTk B&}:0[xj<3S5mcͽyGэ^{}3mWmv\UMa~13=C;n?3Ka)g)U'8:Kc bs+DŦ슨dn#mnf<$v8{d9[S.y,XųfUnP{X; ÚϪgܫam [@1131>:?QX4k,5qv[qZ+elRbF r-'F°Q3'#gFP e1e[YU3>~*L}[Aocf:ŲCGdܭk2xlƒV].cM2"L^?q9')%W$1;(w<*dYl$S^j\%MYA`L071=& Bԥvs( EHqz_ؾr,ϏCcOKNM.a"B:d( 9$zl 1Q1xOTx gȂGS2cﲝZJ򆢑]ki,#X DctN.#h]^TC c"v]쏽|t(C? HZ`J6{Bi>wG- \#[C[0 F60եi<<6-cz˄IMkZUHĎ ~f_wV yjN#4*T (#n?isRW酻) [&Ҫe赝Spvy"|t;li|x(6u}tbw8D65 ۫o57 ivVVƪ&](0 xΩ~ε9)Scg]e 8;4e uDu(i$1R~s |C+fej@ŜՄ_ ̊XZ"Uٜ1ld56[!Y\Jib>w%Ub[c~iȱ>k]zf}zRULݫBa'~(oS5>NKֶ֠SUb;akrinյlGR_(vǐ7(c}^gǩz|o1M v)M +Ɵ&B4GĈ?B) H~+mc xFP.c!S1V\_PWw.[ȱ*^k%1{GPDdSo$E3:b=sT:>4|6o;!S(KCe j&vǥhD7?La8|X+K`v{&`uuB;)'>:)Y*Af*]L %4HdN?ڛ)w2J+b̈́Die > iEx2RPLrc͍GwU} }UL1Fz!(؄ Sb_EZk1ghb2x-4v?Jxs9lXtf*$ӘIxtG *u;z3\_L.:Yw#zAP;Č}\.52 ^SRd"} M=KdI$ kDL#b܅{xM :h(r|Pl'+`fZ,9/UMq:XxzUg@"kix"6ǾUl˓v8n $9%yKq_.'ԏ`?[DW JњW B9|n2݅{#nLm}r2.#⌮jKk`Ac ]d5{GOb^1/ojS[^V$6MG%#J8֛r2Wr&l:/+c2\\c 1$}Ȧd~۵K5 \hYݴr?W4r18̎7%'SU!Gp/HI,*N1zOmq30,#Kx Lgv+)eXr!O}szr]͉Mud|-xԲ;2. Bsib< ~U{joы9y}\dz.yB>bb"6 ,q"<\UBt$;}crx[j[[G(7v:[kGeʼn%1E2Iɜj1q::w i#8?NoPu\->!:cq(/T-8O]}R;$~ݽȄe4gi3_c$B<"zWs+,+l)!̏-;3]K(1֤?Zs Qc Fs8hkFE;e "|Ϛsb H5Q+QrL~w&P֬E:hiPc]mm*MOA \3#c#@|hQxZCGDj`=-5r͗K+DXU'2(;rgR].d}2 Q)LD`tc8½ X޳amQd&ę&"=kQs*b<*@X 83s,:\d#%Gd|8T *$a0c NKnWmBF4|vE c4>D0 h/3!ഺv#nZB8#GRq#OOL cYa1+4B/~z*ș14eY`p3#Ujz'#T*wh G+':pQ*N+UޤB8+Z:_bCTU9 XR^FA5әYG\>i 3#u+0]sI rrD#BWK #&5֪Sf+bzkhC[]ȃ= ,I4ȇɭa[f8PI?)s[Z(6|ݻ, uRJ*DL!nI! 9oH (\G.MrBN*~ * R,$m!E ,>|H\=ڶ_8W?Xb6 R5Q 4' ]6#1ÜXL UFIanYBEtx2lzBgqۘwd~ /:^6vN6*%~%XX~Su*QD(ĬAFxOpEs)%\`Kk6lN0Aq \Qg zw:l~QH" dYV'sv#01䜃#n{7ӁS vƌCcgC>ó8D4 x sQ#;HE/ȠT %\cGR;F2 T /v d)ԕXC,/9 b%'oJH֋F6P Od۔{@eHib bC}4)mR&D:JK2#f40bαHw`ۆ&)X[x?1Q` $#!"%U ;g8vpl;g8vpl;g8vpl;g8vpo=p.ʥMD #=+kKTxݓ [XFlq)]E^~{#.t40C~-:B?]ŭZԞ6]PTo=nFVg:VJJnZUI]u DTZ7lܛwѓMt*i=ewygbVzZtJ/AZNjjkuL+.(K{sT\}ַcϦ+A}lIZH1Wh!XS][%-;QY_wz[WNc ZҾ#,BdovA^==8aN%2br7h].D2/'Um5pa#~UϢX>_CԖǑO/vvj zfz9WNeʊ/~) "2FU4oY* bo`J_a]w qگZp!󟯷tZ6rѢA*6} q&r-fk4_ON鄵Rrm2Z6;?3FA+q?Y7ot$/!LS%H66=U' cd!!Pd洦TI>5kUE!_!k5lPRM-{_)J)Lj7үتhZ ?M:OXN/ N>£/lzʇk2[(W{3ډz}0m5'ۨ7ٍD}IS_H@! ,ʭbapf*~Nirrq [E׾XvZ}|_x;Mjbc|MI V_}؟^/t?'R"++3zI=b3 #Yz%)`\}N]ilLW^ 1Ħ3=ͽ)>鮢^r_aKTHi4QHҩ ջ*7cA Da1Fq_*Uabj5Uv8?yLL Y9֖bgۜG6VV4oz"]ﺽ&gN6C1h'7eVE2uBTԲyuxFxdrE}W`ZӤ&L)~jҨ ((]9urihsoo=U-j% ]uDܒ|Tk轹I[oG\Ee)V,["ޜS)F 5ȪZ<}i:ԋudD.Xu6P *j.Be6 jS ;C()ӕ4$>Mݢ-LwsJιdlC0jfFwa"jWXwՌ.U5Oa9ӵ_$rݗP6]HΪk|]oԎ[:xXR2SzG4UR7 r3/$%,p0" mlD4If>1nuBJƺ#TBJ\(uXTsy9t3rу[?VV?drL.vY*e;UHz(R"o.5uAT'?ȜL31rřHzr#*tP Q}1{4TsX捞`   A7-<艖2OrPu&bjǡ{"(5Wv [V$rI>r7I$e5ز@xKU$r%1:8yMa]*.pj߬}P2HrƩ 1 }ʓ5G)epj][k|)$>9g>DCL!"aA4>]S R 4cz_xZ xlltYzF_ ;PEcjMUz8+Udzᏼ h7,uzf"t@F+Sn#V1)d)r(ău v$zX"E $$v?gR:R*~+B@&%݆ %n.оCt`Ŵ2(,cӚp>`6(,MÒKz)SWS9HeL#Fѕԕ4p~:/7$kƨzku"GF XX#G5l Q Ωg@(ը RPH<[xlԋIӎ8֑riJ)5 ʹ6hG,Q؛N_2+/9Z5b>Vv(tx5Hw;}D:󙒨L1H'Qr V؋":Vިu4McH散 xVTU+kpҢVh"ur ; W\e$֣{o.Xu>R̷;e}H?g݊z=zɮo-7g$q[3,xkFW';,Oz"ʛ"~)TmUxRQs'rw$iHi utL|{&X#~D[`N]xQGis0В4ʣj 5),Kb5'(?bN?9so˱L=޷ }}Hgɒd ^ĀN<~q?I$- ;ǁ\Ns^a{pF$7>ukCF^vʓ?y>9ЮgBTmKM(SkmavldR3;3S2@k/g|whM$_TWA!볒3ϫ5W/ܡ2"y?GYJ^2}ƭQvk)g)uѬ"0Ỷ]J1~^};/3;3M)LFYt-;t fʵϯ)"q$ ) >dFr+,2#ET<4Q=&HW߾_ J<ƱSy榢2N$ iqc;`( KG+kk!OD[* o"AI[se޿ϻ\*&W} Qsױʏ*6(nYڭeq߳y=5UحUUaK=P0`mCEXpם79_IMjngfҲ1f-U|OH79M,_-=16U(:iS*z1ߛ<ŗ+\?!kUS/+7p^Wi1%8d!1|¤lXM>܋s-MV>ªcV[ ^B9O]^VT^h@_r0>*\yy+7Bs?B""y.\X۴ynMů|^6MSa8H909+vgC7۸~p(V#IQ:|-(}vc^Q0[.鼤8_7/<7-8T2TjTnUsy J;?/#+mgj umI7h&WHI3UbB }Z@$Lw#̟ *VܽɠApxgngo=R l&ey/ ޔ'=sLAN]|[-/$-pDd2 q4vOq+v*Ҥej"{B_K4?(s !]P2u>O) YQ|r׆JTnkU1G^97MECnʑ;A !1AQa"`q2BRbr3 Scs#0Ct ?Uhl0 )$E@g#BH: ``{JOg%(A#`hE\RؖI?|Ոabew!UM5Q$YI1؋416eB1͔xxIdScsf>XgSҭ@=0(]^Ú<+2c 30KQln]nKqRI M-r#Okԭ.GGgwAeaZXX?Ͷ"~ j.U~@~,șF"bʥ b@kRr~I*_+UqbA$fqq\{Wgŏ1QPoYt7WPcU7õ)(o2p7*8Y?Rv.y^Olb pP/@Kg 4luh^vSK`q#?5$$ZPzXo<8VH=\c-3Aw!A'摂}PI'b)P]yQ\hUJ"T eb>{@jd&m^%27ҧ8e Tyjݜ`UQg҆q$kTFtmo *ƿSQ8OҒK2յHZR+Q-Vّّ*$es ef)QW#G;DD`fa^DZ)\9aW5 HTlҏ V3{͡ * jIy: !$uZ!j B4=3(4 6P|CH\y~F#!f! YY PV\ѵjC DrS}l520 A <6,p_#T:ZߍjtPMt ٯ(>.QiZ'L >W; )PYjsG\XȎ"s5#|ElZń^Ԑ2U: 'P-#-3nh*I٩| b-ؓǩ?(C8ese:C7J44 WK_~p/!˪})tu4~ögwb#[$ wTXf*4đr4 (bnhV*ֽ@;œT]$#mA "rPhA#d$G\usV {M!4*:*#2kdv!3I+H]X˰efPN&ec@x$[UTEM <'Zf]OFRT8;Z mw^哚Vb[>6ÅitXѥ93 a(*kAtELE?RZ]$$'1:F q$}G"Ցg6QiHv;"vTO)4(,7 1UaTԃF/jFsNVDA>5mRO抨N#V*_sTZxw:Y4!Vܳ\Z{QU$juc2!AaEA H7I/bj*zo =yL.eapB a*K%`98'`0ڙa*,@:cbvh#FكI@}nf,u T(7'BAp)Io+RsTGOy!BV٢J"mdbASԣ7*`77 (#,u+.]uWR·cjc4h>Tw+F냫X\& LV9[㒼o=>%mT^~Rĥ՘e>y՝1; X[Hj#OAkUq#):3Fp.V857crjaoB.zX>2u2{3E!&?WdK/֘oF?`\yn_3aoI036 (5"[uR0EQxdnTs'꜆:F?51 ҽD`k_//PKc\I~4~43assets/images-add-ons/learndash-default_256x256.jpgnuW+AJFIF  !bI rv{3n|$[uY׋Y2GY;(Ș n}+;GMDJ7/[kcv󭵑F SsX@0֡ {fo=r#Sf?0֡0}"ES|MZ5z}Sf?0֡OMZ6cqkͳT˵D܌o@13 D7Sߕ_Hv@t*p G'0Tyw_pyQJc\TSi"Md+kHD>GK('8TLRHddV(i+|ZkH2V%۷JI]vLqJߥxЪkk礢%6 [xIPsHRio&@^G<;"MbSW<w0>1F] #1!ҁ'Ԧ̆0cWo\dhcV}QpV8JmlLb(2XAe|U^zK{b3,fSc5PSNϣ-ïnR}`gMm2~@Mӹ6+U2}?bbr(ikV+p>گ=&i`m㬯4 Wz1dl[VV; Վf-1Ml^3#><53%}:aQȡGD$r] "dՋfSe_ gh/zIdiXZwٖͩ[_,#g{ blLZnL(H);V7ǞQa3 V-lQ83H^gğvFbzg4RzEhh7:}}J=}$4{)ӮP7zgh2JYWJөc['>lusa֑wmsrf^ѡkSapғ9&H"˴`799'{kaJ1n;;+=zz̡nݻݻf{~ A)$Ӆ;Frh#d!{ÃLtKa<Y R`g9L^50 bJ/Tj6/zp`ȩ%"sALVn^[sx[7YK2? @"a'wrok*<)dl^CY;IV6xwϋCcE+kG# 9Q)2rW;:!1"0@AQ #2BaR3bq ?EzYєo6^M82#eX͡> uiL`f89ҚVR( ߯BO7vF RbEd"#7w "GQdk^uS'HKqUU`wߌqY4{*. $(U_Iq u2+#3q#yPi1i'u6Sۏ -J2M(]=]y4p#ky4(%SfCO9,n[ .FiAVx>*xTYhԷmm=gtfn=F22ldfB6EnZ5H%9KZ*QXe\ kJ#}i W緷u2RIφӪK9\$_Wh&X$  t7u )R7\aNߑ@zK1j~a-m=&V̍ ;F穙jai܉Y1btzg岷oq^"v]YDaC9mfUjOqU}K^Kv[+R3Ծѯ&,R$dwt=%GI e (?W`?.$]M^"^֞Dk(,0u=|ޟ+C/Z1/(6-TK nݽI"1_le=R^1Bc$@=dCS_OGjgʱ5iQUiÇgqZf6jT#2Ax=0ݪi('oqc^4I!w$lu~;yج:`2дN{ y_+`cyiFl(+!LnAU9@2I9yRtwpC;kAn2͛Zy+ҒmD%W!I.r|V!൚:yْYF:Y~[=VYje4Ghë1VOVV;l42F38䃏.Ywꪓә(u>Zq܁tރcV沲@WQF!qQ7Zn|V 7n#L@pN)l#rb7g굉Pii+(v˙Y1u܏aiw- ,) Cִ#h܎CmiLȴ2ؼ|JO E2UIsZc9T&-UAjh 3nk ^Usߊ]eޖJoguǗ6cq6D|v3's|&]r[U u"ENSHuEά`v[%`H/0mȷB~-Izv$w+VZ țK'l,IlP:SjtHĸw8GȀN=18:ӳvg3w ae@lm'GXҌ|ݜ>_j؝@}%&6FJaзU?{RqLnTn#pvrvE 7>I@?lro*P~V`{%1S04H<Y_M4uZ+׫HhSu@jaiGx 9+R_yI,Gw%_=1xc5>oby Tn6H]ΚtځSQqٺ6)Z_!Z+G*Zq13Ay"Ch2Zv[dmue;P7VP[y# ҩfT@=٦41{xzni4 fE(8 iZfP Uf0bx '8 ѹ죓}؁lO=E|` hI$P E="FfU[)4 Y|̎NۨF'>'ӿ.=](k<*ljո!xyj1XYc*6u_9XW8?Fe,jJL"QzLdO wRӬէ\wPۻ4QQi<zdh! ٽzp8 ,v;nL*4\k֤(,{ ?k};/ߞlb׺Gzvuf-yV@OaFW]a&SXeۀW1qo{w%_=1w%_Y0)ܛa&exW㲒_КRȱО@8g(iUt_#bg"n|MԎ4,}QJG> ӸiyHrrm~fGnz7،չVHW#PvK_'X!@VZrz%]${iم$O.ZlY?5w2"lgakD!;BRǣGe潹[ 5fibgJV&'bzo^eEPk*PҚЉ,:b՝qt%"ɭ~G?+Wg[i5 xb\Kw,ԴIUxs@yCHӱfz-ݡ` ~L[IQ,}h6GCGh>khj_ΙٶךlEBgg=WևkWK5VY^ϿkzMپToV! z#װlX84a1a0DLd>l_Y>2+?U+9?|At: 1 ~8zcp'|s/o_} R6]^MʱXN늵ye Cq|>݃A+)OǑynK mȰ^לԜsF1BEDW.qb H03]AvͮAd&#̾ѽ~7Aۗo%.W VҭV0ڃW %2V*9^"…dhBd&m۲?.e>o {6Z[_.Kǖr7̾ѽ~7/o_rk9UY;M_5(g9`e5&()u4>ǯ"4yl;[v6};o%=+ސ[p0[s ,ϥ)BR'GNGW!Mt xJ.4 ʃilTE{e:UGˑ L4,43 =ᆇ3*᳼=q;ʵR g I_*Fl9VܑUyrWTHq Gj$(f/tUK l;J-jC9 G)%E ⠵;!1A"Qaq 02@BRb#3crS ?XhUqY%'Jx]Dp4AY$s(P~JGI-$C~Y'W=4efuʑ-\ z;dアN|iЙ ':ȹ4`#)&qTvKjÃȊ+\@,UT(QAvĭAB- NIUxb=y >`:%jK!5EGe9bRI̚VH^ 7m" f&PF#ˤ*dϠפ^oe$їܘb5?6f'H>:cF_}֟g5 "(NS|W٢hŇn>GWqF9g Rj.j`tJx9w*Pw4/-$)5|[8;;nCw’55d@wUxcYPM+{:ٙ\ч1FU $D/&jeiG'!?BP0K(<5+fШ)'O0 yGg6-XnS+sFݾebJ1vjMtI#Ԍ<;7^VT0y ݘU q뙅!|b{HGg }EQJ<>9z`\MDOO9C[lwxR +$Pe$3on `re*~DFsPNi&Po3V(<؅wy* 'sC`,CZ '" i^8$c@ qD^zs]~J[hOdwM&P7v2 %nvcᴛD i4EZrwZ؂) XXL1v@'ӛׯzyiH?l4ul U ؂=lHϩWӛׯ{f|yC%jQ*$e`kq1ta[4,G'|`B9iGda0$+C)2i6v5D)Q;U/Keu/57QYGW#4S-%0$F qcDZM^sj}F¬lGq ҷg!bo@!఼ZCS7Jsvr'IoD`܊8(B4 c  )Hb}$n\RTh6 qڒH䑇Np5(r 7euo}EŕcnF${|b|B1/gf ٥ ~jt܆T&_U}jֶr8DAÖ]ef;nꠒ>*,'QWc٩z~]NSB .\޾ϩm)䶠/&de ~ !|SӤ^3a_<M?3 tFoZFl&94kV1(a5T%[SB jb2cgQ.0#6v\VJW0HuMOj ^6FrHl1Do|,UqTZ 46}!E)nT\%P?.br ;~J 7OԠA G 9 ^wr,t׶8cL1M2kا2=xjY(7D Rv;qK)BP:@aQ֣﬋fյ7QӘz5{N FA]LDњdT;`c-2 *RGh7IcF% o: 6y`R yc:Cw MGV:F`ѦwczEW\FcORW>,Tb 9\dME\&I1O5kN5 Ac(4oczE[fntZQ]Xӌ0i $>?'_}d_{և;zi2U\S!^ɻJ''(lwݏ)ȲM]ǃ {LoÃT5G*ڱb%IgʞEddgqs!kZX5353E3%>lP1Fz@ LH,|iLdiRߕ`uaprlq3BmF8bV<Ⱦ%/W`LD]mZ#!9KԿ X5'voUpDr)dϺZO4D5#*LsW` 2pĈ.;? !1AQ"2a 0@bq#B3RSCcr ?aӀ>^@!f(uAr`(E=xz(~##^G[1I%J&]rHw )Px"5e? KA=l0+l )tx] +li79E㶃hȫkA9 _ь1)VڲY5aii%p?y$0;3J (iTrHaf)$y V1ձUשRHȓ=%'ߑ&D$/r#27:Ś9a 1R Iaup !VRh'uV-={̡yC}ci$4;˓!$tWo,LE[!KOg?<"f]E~4iRUhWA5v_>dR (H317k_;"9ٓ>1δYS؂4ޮS658z=uاXFFIauCÕcW-"ґȎX!ARFȱ Icxq݆, C*!bWd?(XI$ oQ!Xpv/) @ $ Ve7$|Y؟^Km&\5Tg*a\24͉GPZh *5cR< Ry5;HzNInby>Z4ު84 tѪfbka~[?}l}n.r)-9#[jL*^(#Wx__6n dV1$W H{޶SJ.5|}z0df8AķmzJdnV4lH$-f& F̎;2G-/T(Ĝ$@cˠɋ!Ex޻18e'xl 4̀YOc$_<7<6-I6Iy2⽙v,-R-[>*O@݆؞k[fʧo"J.ڑ31,,$I6~ IavԎܩ __P 8blވ|gY#4!s؟ SɔS9_C<]X hb$]؞I,Ē?ABI]Y~U/p _^qdlC6ʩo,;obMs;PKc\no3 '?'?7assets/images-add-ons/learndash-course-grid_256x256.jpgnuW+AJFIF P")@P")@PX}@|RH-"97Ovi\`GyXoNw)A]w=&G,{b݃Nw)A]uoCE\gJNmh';qN<;Tp_{֯TW';q>ᬋE>*~`A9su{E׿8!k<[Z E(4skrhs7\kIߞx"95'<;\/yg5Ⱥ E(4snCj. s根A9su΍ ԲւsJ Z?wx"97xUAmDۯةjNw)Ayx"֟@F,")@P")@P" H DH Dd$[O/jЉIe|y,ZH>Y KѳX{ܳ$'[g[se+۶4JVY *sz7upD$j<%..V :"Auuvh}+=HU/ \ :ڭO%B ήdmmlbPogWH2NζVVgP+՗oe\ :ڲ%EވaupD$`_,xm"@$"@$# 7Oa8|^J:HCƇM^:u]<pkA85_=7W3*|?v^:1}FKPw}oԪrP~5 eT('tS >YfUf+A85_=7c>o_/U ک{zobBp@9Y{\*eUMqzPN?WLz k֡7دs z44*bYGnϡ_/U gXm ֣WA8nPlv@{+ 5036!12@4BAVKzcW a;1A vc a;1A vc71TXԶER1n=,WWddSCTqx1֋&+?sFb b U b b\t' <_1]wARfC0-ǎ^UGV޴q?- BfC0-'tWJ}U"Y fqvjIv++U?)TafOAwiybb-wYT5̢QA2HoҜ^r~k֨j1(g8wwZuZlBv ~ NC YcAaqpׂ:8(aɌ8 È dhÈ0 8 c.9,WWe~%$'"r#ȋ]u2XzU"=Dw9jrgt]OܹoV\";ZQֻ5$~ NCg~߉}QGŷ]:vO ή5$~ NCn6QVvխM¢CrG\'ݼ;ݼ pAy5h{ Moo@D~stv++%Es8щƌN4ҏ Tq_TF'18щƃPݴbQhDy#^rOAwiybb,.cw7ÈÈҭj}޴qtV## B7TkC0aamVD]a?aݧ!쳿oIJJMiXrVLV ޴qs+RVCwJ}UC8y+JMB#S]a?aݧ!삗N(r#.b2 {>Hуs1s1C/b2#.b2"fDo:' <1_'.9-4ݺ5`k%:KTt-QZGIj%:KTt-QZGIjFDTrMo7H !"T012QRASaq#$3@B4CDbcdr ?A[BPBkH,fUUUUUUUUUUUUUUUUUU=YNV6]✥# psT%9B(~O܉J #LG@hM3dI&3-v"f[D̷؉e2'Eb^qQYP&13-v"f[D̷؉o}#sm@muMbfWD̷؉o2b,d-*ATT#QLq.tK|)mJh PLNɍNɍ9ZfTl93BG)w30[oڬl5U ==x sP^bS{]ȇX*qVyW%==.4:Jl492ƈߘuj<7E9oK.-^K1|B4v5Tiw":&~GThG]=Șt\!u,RՅ/"N,hWsR ZTJ<~\LJ) *dH*bZ^MȒNAuiJ䏫&JPP!Gq CMUgX~Mm\TGpN iVQQCBClsJQ3㮞QLq.=C)IQmDՐb}wq'w؞6i&i,5+]-P#ѬO7>{껍-8Ϥ1ÜEb}Wq'w؟]oa(K],樨g&]=Șt\!92&aR-r@"znOMڇ\yBiI qjYѥU\1|B&iZSj Dݨ;<e!gKD4͡1kjVbznOMډPPPRMU2(4FǣQLq.tK|ҝpjYw3t׍Q܈>)Q7=tƚ"cpgR[y')&MD"wpr;'ڬ[rE~퀬ZéUfPi =*Z\.Gw ^[Mu"OҒ휖&@[%UAE+E ŬZCAJmYRT(O|i&8xxPQ(j !ɾѽ977&F0ULTڀ?h YBR97ASMaɾѽ977&F0oR6lroosMaɾѽ977mt-& r:5DDςĻ=hQaGYf=ψA?gQaGYO4?&uQ`c#~cO|i&8xx:%|6Iw(Bt4W ;BTs3g! P5$@ (B&#{]Ȅ)Tԓz!(iZE+1맾4yn~Ζ[L mļަw/7Kg{%T RQ+I%iNEQ̵MrT%3yLb^oS;oJ^ WRFm"%3yLb^oS;ؗ--%R *UULqO|i&8xr맾4yiTZqByV۝XVrd` ^ᄐ+}xV}X>°}ׅ` ^ᄐ+}xV}X>°}ׅH6AyG&auU2쨨E1RR[ (! 1QAPa0q@ё?2sS;槀w5<Oj_&;Q5;(gF4hѣF4hӲoV]L1?auԾ`e0eVZU TK~O/;c\"bq.:+( ږ!vPi뮺LA+d1-eCq"V3zTxD i* X 5@Q"].keCqfFN;L;iaAAUO'ip:BR?̄p-? H8P.,)8% D(ոO'b`6{`? W;pow5>@t 囈ѣT V cƂhѫ ]0͗m4h;L;n;; J:3Jj$?X =LHiN=o}2e*M%^L;n;;9v(guC GsS EС֞/C^QZ F V-I\б p`1ͩ|)N4hn] YrςH &H9kKpow5>ೱajٳ,Z,i,^<QFsfJr:C6 +{q6i|ס meCq nmm_LF9!{smvNL;n;;X%Qu\HcNF8w^ݪSȁ&([׷o6 GsS Īa "^q/U 4NC`jq@w^Va&TPNjaׯYS Ah[|#5̷;ɊbR̨r~ $I$I$I$I VTk% [ ^;槀w5<OjxsS;%!1 0APQa@q?!~k 6k {AA/oQp4a8pÇ8p-(ɊXw {}CBFU\uBH?v G@l/f0(Nكugj`GP в o#PD- |LCЧ*6ɕk=,P3g_NLƊB鴱Y:Wnz2䆝š1'FLšfV)D.`Vr@4Xsm!!ӕ剆s&;gK9N+T>m 蓞?n"bE+_5#3EP իR c \_b͸իəc an^ƭZ@dpI0C_ V&2^݆  *dS@Y^A^S}6*o5]{vFt1C_3{\YdmO5H>Sm/$k߽g4C,MaPR8kØ:QD"qyz̏tq sHξh9帬{2E/- |,B}47v1ύ@v=/l=bYoǔ0!LQG 3n|C`b Jšv'2A#L@Z,Ơ6_B6倦s0bO>hkb`zժ"O֭V"E%su_jȱХj?~??N.{H1&d4rT̈fZ`KC^W€S~?YeYeYeYeEG :a<8 _m~_m~׍-50362!4@"1AHg*c+F2c+F2c+F2c+F2d6ɿq_)ZaY|uSN߹SVRɽFx37'm\晱Ox37\x37Dh9#uS{*pZDqKbXF*%ۗJ)w"mN TPa76DMD=]UIXZP4,g40A7U=׿r լ0͜g{a.+dI}]8v%  ߹S͵jތ&$a%ssP{TU%@c.2de~棜+E)_K-XSrF>6J~J#5Ae\BHZ|F&ꧺT ~i3F|hύO;U>4gƌџ,u&>4gƌk-]  ߹SZMin0χi&iqObiw"-P>M#H S5iv"VޝHl|F&ꧺT?tJ%޼Pl~ټ5ĤAsA#uS{*p3,v)Q[YJ[n9*V%!ˉ(sUYB!1AQRS0Ta2q"3@Cr#Bcs ?LpM'|1;1;1;1;1;1;1;1;o0YJg߭᫵g[KLVh,-6>Ýv1sɐoPqwmGz cS0JV6qwmGzޜ~CPhT8;69m?`;\t P/Msx)J d3L5IT@ckB)J*5c;$%wW{=}ad)NOOU?n@rÇc]ӆAwW{>&mv ]@X]0-X&R @^ *,gAu+4A /TzDFؘMJwLNׅFC!nK(T7VDtR],,gkEY)7Ln_*U1|˲} ɿyTܾUSʪcrSU틞vL|7/TܾUŤNvD+v_* &̖4cl U6Cw( 4fז=J :YsA7/!Mʋ/tZywW{48,sA}T ܪl T(L\!^Xl`;\t P/%qiwN]p=,X%wsT> L/WXhq';;̜2h7<2|sKH4P=ӝNvw2 S3[;Nvw9d xRB̦vj  +sPdB% K%D?z⡇D%N꾡@w%J q(02]Ġ{OP`dB% K(.PbZ2Jm:}~ -ԘNXp&0&?AwW{vh=,X%wsT>?-/( ;wW{Ye;<Ž0]AcݲłWw;lq5CDOhJRip\ .K©C'fUj-ki7. T\*KFet\ .K©p4U. ՙ %Ww;lq5CKvڶ,sGbӛLf)YDVk2Lf)YDVk2Lf)YDVk2Lf)YDVk2Lf:UcrDՊTA*۳O. 167235P@"4yyyyyyyyyáf`zڼ/㐡!CB  28d(pPᐡ!CB  28d(pP?9lQhJ_[TOq?PUS( Cy{rmtj4iSҧpz)b3V=Jƕ;*wT\Jƕ;*wTXV!.qg&iA2Q=SgXro^ZjW'2֗R7Xro$UNI4?;2+V!RY5}$:" y{rm%]H}h^}LmkiE]UF.Q Ohώ3ۓlMK&⺶ej*<6xm~3,Z[ tVWƦm 8+Q;z4&o׺|8mAGWo UE?tv}*|苧4\EɶDV\t '@)iʏV4 '@i:Fxi:??Nt$9!.qg&iJ('ŶfVuz໺HL&b[77B4游P' ڲKH]$:" y{rm%]H}p^}LmkiE]UF.Q Ohώ3ۓl븕X21Ϝc9@"*zX+)\|SNqM:u4돊iӮ>)\|SNqMu)'Z;!{żc3{@5jeB2k/ oˉfm5ދd h1jht+-쫣-쫣-w< CT^]Iq-쫣-쫣-쫣-yqTglWF[WF[WF[WF[E!igN#_*!ҞiyVjE;oˋfm5ދd/j> V'D(niG(^Р=j> V'D(.ma3(#3Nu\fbtO> șZG+5g~"՝³6Eܖ|H1V#AC|xԄֆm RZtLU|{ _ ҲTֆm RZ&3mK/+)e\ RZ&3mHMhfڀal0SBMM1er՝³6E˜;Vvߗ 7@,ym1c&2 8Hc=?MDb#<Gy$XI(=cQ$zǘH1Db#<Gy$XI(=cQ$zǘH1Ej?}ļAD.$%bo@+, 9@, 9@$!1 0APQa@q?A>}p;w_c1pHHToELuׯ^zׯ^z0C,оB2M-$ .)=|KC6q_PJWH{eϠ)\=e@ +LW@2o ?_]XYXuf..@$8DAO]_cP/ֳU"8{\ˉ:4 .*DkOr~JK&z+#ڕ`MTri#ȈS\_S.tLL^gP.D H$X7,*]ŋy@r!O:tvTɆn2 ,ÇqbtЊ5:Ƅ+^j)/E a <J 2UkK Y.ʼn)ʠyZ[&lePf0lh(aeC*ΌX-b ɯb/C̸=p\$1!%]J \2๰PGjFJX9f\hn׀e#L^kq%eT/nUpn(ivKi)R(¸9WiBAn5BSvDԛT%;ݺ@G t!rJ/C̯r=Bŋ ᰯ=;L3,iu *!5ToH8z+M(V/E K q'`/C̸ \7 V1X ,o"AO/ yڗ3"w"VHԅ/C̸NP"뺁_@NGo2PfjH%Q!jp^qcQPC2ί450JIeFƪqFg8x|}tIE #pxPD8p ˓a[Q^_b ߣ?8}/+``:p5nL0 0 0 0v,sZ4cN=Y;wA>}p(!1Q Aa0Pq@?{8;8;RD bE0kPtT:*ECPtT:*EB$PT6%HYQ~3g+Md@ /,DT]8R*5%R (<B jg ̨8e4*tG2@!FlɆCdz㿲klҐa2@@< DVP+NbS6Ffq $ 1hq5iMGWNkipcdz㿲j?7/ŹP[/8$XTamAK-2#R.^_tKVdv;:B\L/P`#$Nf%/gI'DUOrUҶM7;&p&K$^5j"h ]fP%ly|־k_5-pCaͩkZS' `$@.ɣd٥%U*_[@9@N[ƪqa!`zܸ'Hj:8`pU@ܳɣd٥,xWj ۭv 8Jl|ϟ>| y&qH H `\ճ@zAnj!Q1A()5[? 0CRYeYaP@7B*6'HaPZSYe`CĐ!J 0BLܛ,6r"H_{[? _CPuU`!@ D#c }z"q-܇Yǡ,+\(N>)VBioǽ歟k>,=~|=N5l,fr'9 nq?q?q"VfX“$/)>Y* ĬX6"ހ4ǗǗ^R qJP+,hBhY&c~~`gGÇ(I6 C{[? jdi@6H&> )xmGI`9lٳfl5$* Nձ>96ldCĬj H`9\ճ t(͑B<*īׄkń婀KՉxٲ$4)F1rnե1,Mύ/e 0prsgc/grĂrsgc4 R(A \& FSՉ:-,Cє )cPEV9UBŒLt88V H$$c 0=" ǽ歟{"l( )*T ٳce-nHF?q2*&96lĸ*bk`瑳fMR%E}N5l,}~x_ euF`"UqNf=XW \~ lՏ{[? _ pD$!S'זXe y#A'ˡdHcL qzy~Ӆ{[? dmJs((,8lnQI#S>| .7T b)"d|IHT P89\ճO9\ճ՘t#BH e4"M4M4M4M4ЂH$.tpb @P@U .e[=歞sV`g\ճ.j5l {[8PKc\P]--3assets/images-add-ons/learndash-samcart_256x256.jpgnuW+AJFIF ^hrt7j@ܭV׭;8ڟ.k `PhhށzsZxު`Y-{f Fo@tf8S$;Z r(&L5bұ wkL5pl_>@T)PXe8Yu 3%qc`LX)9ݲRa)~>A O8!Sҝp"s$lkcTE :+/ 랴mXIDa"fRKr(QU)&0h5 ۾ELda2kGTƶ#FRƼaJ9[DD';1ƹ|{p(8FXЫ_$5׼+U=Kj̠v}T\Ai0-]\NR͹Utv @aYm"ew8G*R/,ރA`#d #:NRnEt %c=E[$ I<{½Sھ_LEdp(1gZV# /A#!,z>`Q"j@ y\Xr#K΍U[,cĿ"ӳǜT%u.31ȻP=CV%FaĨk=k*LoE6B>r S 2nv:dzsHW'fPE84K켍ǂLƵ?uމHx1deg* ?]/X We-; O7W3,[;JAiĶe:3 =%uM`w?9u˥!!eI Ah&nM4M4M<33]]TDy̤<6rd.kUbRbm|4_Vf}S֠~뫺=^_| /@xW{W fg=j*OX~zP^r(ǔςhi8v>yT0P-1 g$g*cs$-cra:Ŷ 'ewD);&!t 1 KoTҙuf7;n4 ` Z($c7xW{W pD8ve="ȓ󯌳PgE܇ʵd(T}63 |TE"~=|)M3M }pf(J:KcxUAUX;%.$ _2k]7˫\= r]3J k8]2e* lseXr{w FjA=^N)e Yu'tr&Tܘa^r %4M6XQ.jI2U<ÇgG9YG,^zq%u|6DԨY.rTQ :I.ja2|U6_>e ma١ܜ|<4Pk8hHQyWV'ܟA ث얦 !ht<:-rXPiZֿ8;>!1 "0AQa2BRb#$@Cqc&drsu ?adZr4U[RJ#$vh;Ҏn 0{EMrm8ylJ'N_v}BӬ6N l.rcn}=gŷ9{7f we[.;ya6twpPN8ie:̑EN"bVf?u$1&NY%iflu ~֎!Iآ@e.06hB/XhZ+_dږ $i nJD{54g+gfڬs`2ݞBʿׅfF{|lH去"q!S7LD<|6T'ȱXˊU8zб=7SIĬ|(th0Z9u>2&G?fCmZy7'e&&S޲ŭz7vfxծt: '^tarX콺Q 5v$*ƺhRUP5$9):vsPRGԞ8b$/irR:*5bhA i vUU{\l}kn)\7,t=07 (;^05(zH7/YU,A ul%fA2e 9 &E8'ZZ8ֳ IՋrSTdzr*cY_ৌ׹c tשY %+T`vԓ/2-lЬ[Oe }:ԨQ+֯ J8}rddbEIbl\} ZYb-SslA!";)i=Y ] nSo9j8eO^aO4߮d-W7y1jҕlE3({($%TK;w$!1A 0@Qa`q?'(LtQ˴^D.L`Qf[bI e !YҞ?w[Ul Dfru<vO ;G~ۓI'뗊 L~<`u9{4 \< Win"<گ.y6uѼqu*@l<-U.)d1?ÄAk(v8nfEF :1| 9CՁkLJڈ ^#0l-Zp[2paCEyf?(TʊnQ4D9lyv-YAڐUѨQ<6(64ndXAI8Nj|Y^Lj%TTYkt `MQ2"Ӥ0Cn(7FyxW+JP Jr4!CiC@`& @ZW^ =Uf\lDFAhիIL@0z 8Q({°(a MEB)X$wBjS+ TG48A ='ҫ@Y O k‘ 㐧@.*㪮W_9 Yʒ_Vf4^aXj[O|+0 356@1! qlSJ{ { uՎi;0UrxHqum*SfTx`q}E(8!lRqBf+I)8v_x"r@op淑kj3(J{ϻ}Ocg Rp8P,)WXYGsmAL$ĕ 123?>|3T?I,nIM'.lP^r+gKLŸH4q60Y}jG7h NNĶlՔ>|3n:6jRk *lB`>a:iK}{O Qxc6$`w}mjJQZPIsWHZT A}sN5rC6lggSTb`tv˔!5!A1Qaq"0B 2R#@r3Sbsc ?tk̕Ak$0*j7[6EE?>v>k;.O~J!Q q6oR7Oϫj5 RD1a:DW`mHo) qp|ӎ,8Xe` ~ﱜ^1D;&F8PqZ|{j;4pckZjIGe <Jm;P(Mb b=aX*&6:2,2I0`o1{#$Χ+.Rb6va2Mē$'Խ֪'vAf&̦̰겁$0{lkXt$$ NQFve%YUu aKXdn(eHEOPP8Z0v$ֽ1:7L&өіxH}7?ҵ_;zIhӍ&٥ ]k8Qܑ @l0M"ǁAn~ZŘI=R>2 l2~1u{3p03X;6T_D qm|EZPIR.J$9j2VT! De+FI˝$5^P?nMTon;1ac|uO h~JH2 ~E4d^i&T\8ZF (.B1Y,$ `j;4p`n=}o~UGVZnG[U|֪۸ﺕ_)otkuv4ui8%XA#P Xq׌~uԫ!>nWޱ[ITfȤ B( $1_~ KIت%PN3BA'Pʈ9^tW{EO ҇umT'{+[U~\9=7F}!E7܀w\%;A;tՎP1RN}ãREE^Pmbq;z.2q$SvQ'3""Aŏ7yorLajD++҆" 0`:ST`YVrA5d̦"ti?{Q@63tz qrigb)xYQRNp N UQ$@%\jF OiÊUv^*-BU̜8'"@z6c}He!}jIw7*$%Xn"'ØꮳmAs,NlĒw }ڍ#rq xZĒI̓nx\8uMҭ}R(H x0yXJQG ^ i7, 2@;+0 356@!1 J+xBoK_Fg–isͮ®Kqf\OJgC1(^V9DXB2+;~<),-]pľaF/Lb#btDC0pYa0BFo-U2trX:PSg'P?\lit&A}wp RC8V!e+!R<p.Km'U:yCiJF0bŊo. 5r]0b֪Ũ 6~V[%qiXӆ c 1jT!.ޔ/iW^թu mE̲]'HŪn|0yNv]jTT7Dc Ed+BVh_ ]mȊ9]z6洼DtZ2$H"kyatOssBA=uze:BY;59v~"3mZM{'MN$}߫5 Qdw}ۚ/m~=2UZH;ZIXp]΂z Q$$k'Z՝QUefl äҢ09{S8̹eHi< ,0#PcY uh MQnkKȾ=:G^ HE*c+f:&u?y:^b^õ]-?xIGG@/0AWP"m'.vS"KQ2e$|ŗmdҬS3${Nض֦EE5|AR & l0b=5d*( ]PAlگPeW?᧎@xjטMl{;=M%^Rh4o;%?mERU7tz8&oceSZ;BmVs$2}}%^R(ѷ5^IGW甼é>miyQU/0nsZ^E4z.  A mjdolc tO8:2=kF֗}a-/Y4fE v$ .]@of08e6ZFU%k$m8,6TXo]?mN$݇knVhaxF֗}i QSxkǁEbѮ]$pblFbeYmFQT1`SUiUOVNEp 3`FFñW;As+RZՕ2 ӊ0j|q*AwkUac #nxAmGp9Ewa Y1hP%K 6Iz{/I@$SFD4v^f7ڻcl` JSvT<, =j{X^E.6:1-]6`QpZ<`nY@ gjj`ܒ0,m^N 5PO$w؎:δN 6jH?+T`j_b$Xt@ ?PKc\p 2@2@2assets/images-add-ons/learndash-zapier_256x256.jpgnuW+AJFIF  :|d,D/iVv5UgYί~7b@I~`+5S-Mg5_ !t#)>2p%Q36c~c|eyFfbK=uvf'EplO8 |5WQOD~nvN y]X,I?6f3sZdߞν1XweP-0m[{3)w:jmKC/ݭYJkxLGQavi\B@hvq2 N&@  @KXu+MVdDz7P{+Q%L )N5++/ &'W,Lck5 B]:=i<4Q6`ٙr<vB .o³lB] sN-A|Tb+G}ʹ4Oټ˿.zoe 며 ~9K{'{;Uu(޳8z[nD C>,:vovV8~}@_C@!/is!ЄӎO@,BݪJzue-=#sO:+3-gfӐMEz~"lZÑceF¥?V}3͆Dt1@Kh7Ǟ¤}Y[4-t7aTb3=nend[WAZV:O:3] e)=\ܺ {@2 7@W 38UV"0 K(;:O)1 0;$&Ncu8.;A\Ƙ*/d$^NԏضMiWwx1hBӊχHQ%XDzi i6am\TߐkKgYe׾ DA`sU)TD_j`E`{lY 3`m %3rغeĠ +R vKeKB`w?f̜(YO,Ak}J*(φGԢ6GRLlY"*~ֲfZxs>Vu:nTyOLgku!^(rBn㝺`j}ΌLC18´"%OnGQl--+׭IG8szoG7ȑ @#?;Ϲ(͔ӱ2(ruוZmn", 7\!٢k=7& |ojƍU;Y)[*zRR"?h+%Zjf)]|X鹴?e{cՄic;֞V#F\L&9$;'v>r]!qBi`h%pF`uv,U2;g0x>-[վf) ͹WѷS#&ٵigﵾS0hW6ZSRt$0Y -T ⮙mk/O>$I%Q4Q5U*^2bGl3KB9vƆFQO+ο\rT7eS\O҃k1~=}WHwG=h6b+FN>F;VXy)A#͢Jwl(gc0}*lc7R5]LIdh[\p:ʚ@ε?LeV]fѺ&Y\.<_Ę_L'v~kt $Uo:IXg)37ynynYjvS$ps;.`,*)?gnC=w^ǫ~й\orpDQմkVNrnTfPq3uS.Ȓh=WJPQd .Ⱦs9{ȶ^l2LԿomb~5r?5'L#%b,>w@TQ؊q2ŒHo)z|^+_>"J˷d[f_nd?`ndĆXytS JW0Q|{Zv{w/Cү$ayx):dML?0:-#!y֒+a mJbf_֥գo;cp'{9{zgkYQjndb y1&h!K4~Zw#)8yO; ?!&MDO)2U :q G잣֤$uXdYa9a_c.$Sy֏<ݻ1H(kК1 ,$F4hn 5vv ,S;OsPUl7R +.Z6Bk0jA7FgW>v6[< ,Ne}9N3=Jl0{>s:zu/¨ 8"_vT΂_ZѲ<,2O+q=Rҩȓm5]wg@gqGe޵ >!8@~q6<元CVOи_գo;.Hu=_O=+b5l÷ G !1"A@BQau #$2bqv%0RSr3Cd ?&HÒoTϺZ&+<F(>ګ,패3ZfTrqDS"HKXU􎛐E}O4T&IQAe4UFݽΗRemtY5#`X1^LX{O6_a: Z0z%IL8B@TE0%SV*d+嶥vy[1&mqeo=Un0"E$jIkvB]܀)e'k$D]Oױ6[{Sц$V%ObT47URE!Uupd~=L26CM8|׌ nۖ]$p2CBE^'6;@Jѫ6M25,Ğ‹@VVmVqĸTQ}U*iCN qm8!փ39')1n#վL#~V:תS8P|b1^x>& )WEryŒ0:3<*mm$IEzmrTq?F-}SQZccm̭wӖ8QGً_YEuZkrʕ݇!-XճlT䅇ꇤiHɦkj&W%qLxw*H~>S El{Y@ºD0=C&Cѱ&$2#Ha}ADđI0 Ծ >ZWsKd=K<r)koJc\䦧BbԈQ+s|A[g .=I5}\#TLz|),ɶw䉕QobK,j4S]`iq $g4VudfpKn8D`om]Y/Kf/S ^\ꚏnoax9tFUsk0]z\.mL.Ham8ӥ *&z жĥaDIga=_'")a4q0¾>lePrUjHmCdݏk0&]y &Q#Mߴ9U 0+1,UU[u3ͨ3%eˬjjkGF*@Hl$6 gT8N`MS^Y71Њ=Cu36qiēԨZMPa>jT;HM:nY:#%Zq3ǎ|(#Ed}N5ʖۺڵR,h\z Ac U޴m@ot2#Ư oƞR\OKAdNc?!lob 6e\h)REujc@IփmKs(qC^˂(,AWμzq[! sLiMp@$FdDO5Ջwӯ_e ؽtʜ t5STU"fwn7 1d &n!rwqU zIu;*8)+/M6ˏ~CoFJ% 7U$VGzDQ,3iDا?koO+*\MӭWYHk⯟}@y?z-JU=|ׂG-:NZ^nѺТ. j嬁c?_ q{~1!=I]PpI~,j`F򣟤2*mrȜBTEڟ!`aS&J|Ѷ#Fț"(ĉ@tBt~K҈|Q{k.e_:WbtIar rյ9 3},ciY@_Oe').ۺ{rj ubݕ6XJ]HҾXd=\uuTng)З^H'M|n;g^.t[ʪ2JF$]IU-h['</+Bn#LJ!"XNɥ2fRٰq7yˎ?{K3$ ΍ M5uTIVj, ;Lf9q yju{m{)D٦DmuܭNK-/~?Q$ '*c 4H-Vvs/'M?!9k0"ݩUB4YUt$TIŨ`quh-k詆Cڜqq2tMvR,§PzXbS\}j3l5P㕔Fnś˜$u5WT7d8쩕K '_R~|%Pݞݔ[{L~Mw}gaZ~o2i-m퍷)".x<{|=/]|n;g^.tUژ3q&,Ò1!\";_P}C?5]zmZ}ekNL`O r,)xtjg#VVo2@2֘iM bJο[ ihZRme *f k,vȄz4Tx"C*rNm*Zq*}0rS Upeu-}d2NCت]|pvYѽ]ikgtC6+nAIOXeFV^6jM[朱K '_R~D@,+ȘQ7Ir\ۊPup(Fk^\<|gL>ԋ{HW?i ȚDV +cak97@a55ԻBRFkksa֍p~:>s;HyVjlG0"Hr?1pMDYT[4M=JȪ.eȰI ;iQq0*"xGv=$U'(#^^)ձ/|;~Ld.-7b?Wmm Ca6ƵkcH[۾,8%KNMc#ԟwS,Yaf3$1*K1$*.Fqr 68dVh@*U;!Q<-,~_'\ȵc}7)a0WQK.lfc̭:) G/If#ȑ8SKil| lURXc!}MFlaO{VכJlb;~J@yjB 8۠.qm@z[+[4k,wQ-a1%W+}^׊μHl#͌D˹,nb1.FJizk"v.^siV,}*Eady.PcqǯőŹ\Wf>~ۺJ>?u'.U TWb9 J( U <3-6m43&32T)]2m}//g%!1A @Qa0`q?2Jf1+H_z;kU{, 4 2c2+B!jԮq(U:sD3P`]Sj zChiprq]jq;{DŽ GHļ]B!*N~Yr47x]Dz5C҉E: Mm4x ckSp`v,!z#*QBQ>p2V(*&5-q7v90۵"w3< cHvz8?`Hj p+gr,b7e0셝 jSB)3'(֟n-P@NMZ,nS!ep)B^6yn*QŸ#UJe@9ewwKYVT/;VsHhT6Bo/X 3xl*!k|Nl)(}wlTr5"1 j`{>z\-A bC$v'55WMZKùJ\C8TGJy:k `*?o9lb2aj0 jo MpAL-;DdC 1D~ hVyM@E $5 cJZ\ՋIL)b7aϤ&+ʧ6 >; %ھ()%V,xm,"= wV_^GonbiϬ{tE\'b$;pM7:>ِS6MnnjjPHwن`)eQ+&WKu7ε5m`WڕB^QZ7Q`YS!/Q(C ]_B6һXD?W`P>|U>v}dVjwfU` HZ 3-SexZiS d+BKS 3p}ǰ~:Z,#Wo5[oh0vQ]b aٝ;Y,ǐֳݰEx+N` vyl@RFyn0}˸[u밐VDž\WSZv_dۻ@&<F5EڱU.K5GۋNz ̤3ڨJU/3L,2b&BqJx/aL9P̈[g-J6r;M\!8XeTzHTϮThUQM%*RƗOy͸rXո/V? ֆЧV0|.k6Mn:A@5 Z\7v#8tBݤ7^ˢh˩:8ː{+ǖ6 'R‚>*$еw\Q %X݈G/[u纭0?xI#;Ŗ[XvEk=+[ὓv[F0;O*7pP,WoXvS7RN}=Nu̅jH&4c=8;QRnG⢧܏7>΄OWȊ wK&'19"qFJ†ɮ(PpI><8C-\l8oei]@YD|}k ұj-Ve_ |ΰydVV2ZpMm֟wˡ92*7&NJE PV0k^>W j޸rQq}럚1ZT8æ$@_nRAXNW5Y˘ xYHÖa;=@$XpE1$Mx˝N.i00J0OKTiCƞɖx%S"DN=R ]>-vwˡ92G kT,2g_;&ж*)덭)I,~ynu߿!65hJO~WН_4SVHU ב; R Et6Ɂ}ĵ KhWMf{OUi%Z[uE7pيxJ34s&96\뭥P9maJ/z݋;k1^QGhMsv-=_xXlSo%+#Mt&Ɂy3 b +Ku,ԉi4h8va#S6#+$o5S׆|ΰyu3P\f650$PXD  !1A"Qa2Rqs#@Bb 0$CSrt ?&ZD5!u;*л4{ %$HAJAwqN Ҁ*FA c} Ll e܁"}F R)el2@ ) l1"[زI+֙[пLDːyƅp!lZ5+.Yh6w~$iB Rq2 fDs\ꊒ BC|F7ˎ2TAnm2̻Z" ʉFud-sy8I:9Wi&'ҹPBX(/]@$uK`hxvJnPQx_#%վW~,CmjA;SՌ`Svf'f##ۻ$=d=d=d"yG&1DFEJv%C2ѫT^Vt,nǚ`Ð>Q,ѩ<,!g 9L Q˫Z;  RK3.d3fn4v,xH=ߠI"`(%.U³!y+BmcI`eZ;(ڎFHa#A1*t1YtF~q~K@@>ԑ[Ĥ,gV%cUb $,BqVpRHerg1F]T":̎*RZHD#Q6HL&f6:.G𳫕u!:zwc-fi sn"lF30!g#[RDw"‚ijsj4}R"is/T; 5#Pc/ocfb`g`j*ѹGe5ws:"F_q(˥Fh|g%H`vήTKl3Ȑslr-RސLu$ ,#9P5FWIzrs~ xw+R\s Asg⌿MiW]ʩ;ut,($nI=3GB\Z獐 ,B-(#\M{U5)bE)CGMO0Fe)^&$k`u dd9yXg G!KF@f;:FD25L"0.Y[ssE\ˣ*umWg_cH{OgGqj@42![f% v$"]۰' FƋQ@ 's4#1Zbg+$xVA< P1".h+;1񶔟uc4 JB$wZeoqY/Z/U7qQKf2B-7MlqWxe+1qTt%=̼1,y ˻`qP OGZܳȶ:u>:3N;E* ZR_C룸#"g*(I Z;U)Zbx8<ʗ>+ + Rqˏf=2:\ìyD:PVfC+_ǯ$9RdHfs uNEjF,jC*&XWu{x|}* ghgN_Bz.V}"֖kuFBm UKvhwo3&iA})H_0ATHR΅?X] BT [ Q@8yLРwsBEUEGd J2$0ǫ:ftd_x\}:8eR'(K/`iP *Hp;:dA`o~ P,TPr_q>:o}Z/U7>9:ER%8RFKƷc/!XUNL/6U !@T"#02A xN" `hױk "XfRbu\׉ְသJk|#{F+^CT<&Yo`C34u&H'INlap{..8]@ҥi.4Z QV/Bi`Hӕ7[YpqTd1"1o=9w!q(<8 K(lVmjQ_wOTFR[uT ſE jYd87r-`8⢈!Air'r:$*r|njJȋÛ,D//m18Ivк c;aO<Э(JQ bAa)ҝ)B3;,"`׶݄L.9IPXKXbݭXd#ZfX^^Kqv8JJSTh11;BQb_Drfb ԒU֫G#w-\V+ĝ@aحPm9rCʿ-I}Tvrvæ֜U'cФ#a,2T2.ɸV,)Nn~qJss =-^%$M\Ğ^2< !1"AQaq2BRrs #@b0҃ ?̠6ѝjaA0$IΓGR$H`ȃ9-ۓ302agk-skl^ߧ py[63 @ mӨUo-TcR\mC\׍\. `傪o-I3O}훭pY-nȱe9$W.vpطC w Il䷜rpqx3\+2([`eA21;X[EK#o98A\ Hۭ( rǯSlĸ :Al"8deYz ^WݶU2 @UNyBVoVf f35Q݁WHHRsXRz*‘e" "n)Iޝ+k酰BBʼnd"JYE.ݠ'~C=S: &0%I$rb OƽYS * ̌x5'EEQ'%+jTfa׹+\0RXD]ECjTOYg[Do8UZXe%BU$$DL'zNNz@ ?w EdžA ? Vpdڈ`G½M~MRUzVg 9] *<9tdBq]gIS"Gt#Gɴw_Ɓ=PG |R`  0AY,{Ԥ'3\u1b$㌘U0` @NUV,:j:Mlv*O] /'i7["1Nn-pı,PP ab%+c(0nGAp1X` m+ʠ,P`HW4%Y~QKy,!Y9[x∥NZO*pfeڗpRv1FG8.k߫јxUPI$2I 9C*)f r`{_d;wpagG 5̏ݷWh`WܗWܡE] q>H+\W;z(t8!: &3`_v\m tpth5"Gƹϩ)mq Ce!N|~߰a^%=73噎>6O 8jJ!DITVZBU8FQ[w|.s3/ [CK8es\>,*݋AuBT$A55z^Uy5efq;Laֹϩ+y¨I?5'@$(qpz,Y'z#P zz$VvT$0ūA nYc1!SA/퉶G= WIgZ Sty uLHĝh$b%HS]Bm9@?Gۮ}o2?vsn0VAuaN. h1@;F:fPKc\-((7assets/images-add-ons/learndash-memberpress_256x256.jpgnuW+AJFIF  '+{H}sq "r*k/;wf l/h= d.X?eM$ CwZ*Hƀ$d j͐O=d)t Zi>{Xӹp9ϘJQGrwTAy=}*O`|^o[;~Rbto\^=~yl@T>K§>oگ7JGrwU*_6eتWL1.i-M/+q i d淆o)20$֙ٺbtK&P0trBtC[)a qgВsP$f7kv9R$%agG:JCQW7ЯStuE?r8wK|E"]QOe;z%"l.2Fǝ=}6HTSi#co$K)LvD[N &ZIy-~B+=%>?0 W+` 4?w?˫chZw׸_Qӻ:njVL&O5@d;q! véq~wgNx- }_yۯ>ʻr$irG >#`-ܬG/=~OH w+* dz_=ʻr% [YX /^^{c x K]JUQ8 @6؁II !1 "7A#025qtv8QRarsu3B$Sb?DlA8Βl6dy;.ȶنюo=pӋ7Ni5ƭX@^ndW<Hh)."DګίS .Sc 1!g;BosfU i2ޟTN(8ُOKEO6%MpgӣrАUy{^Q\V( ɴ+q~n"j>j&**uj)Kӽ`pul ƜAW4y{7!;_sEն4A6WN7A=yCڇqh騣b.$ v$ƍ1#KĨ IipW\i 1Ӷ{֤J7DT8I8kl+nMnґlg±%nj]6[ϴN3%dpv.6|<9״>A^ק,R^m?KϠkbٰQWmaתt@f@bm! "/mݳݏ[R3"Leq~UKUV h=9諧O?l{6_\m h'N72ï5 ]p= Ī٬!I96NɯS2ADDHDĀIHIDSEE訩zYfi5߽ԞdЄ+CѤ@BA$UEEEQuEOTT^'h2BjQ~-2_eDqS UH4 6 Z٬(/DKNCm]11T&\XmNJ'%lG!N, Om6$֋]%-:&by iה KÅ-~nͺ.2:"(d&HUQQS` $6b$%z]ɶVq^ǸQyP RΜIU~O('[ENd{m'eb&^Y2n {b6MkͶ>::l&/Uc2UM<&3JܘSB>Lȏ *yLΊ3Cʽ]uB-YpN!7^s^^Cl-2{Kɴa C2]@}ڢkvTV4 6l26 'km۷iiƞv֡&-5捱]~¤H>\"\93&z\ɐ<tWêtT^۸gRF$Znj%uILBYFDFN;)p~1\ZCg&@ BsUGqVBS_6Kְ۶VȶIn\-Qrpf#H\o1RDQTT4yeY/ӆJ+]Soɑ{,jywUM:{~*<ȽFCϐ.~,<ʕTT],!*{$7װ|@[?>/]=~_oS<}这iȽFDϐo.~,<ʯ+~Jυ5+&3˽~n܋dOb̪Rxo|@[O~/]=~_oS<}这iȽFDϐo.~,<ʯ+~Jυ5+&3˽~n܋dOb̪Rxo|@[O~/]˹_?.%'f{+Ų &amx#ΐy31fڽו;#'αk|Nɋ ֢}$ VV IKl$vWGIB{x^+Ֆִq:d$&q.(v'uRCXW9=ݜN4ݦ}$O><1vfY^;Cv=EoRæ)@ = Zn* ۫)E4Y}AOpBm& BIoOi<;ݻ ]߇}rxzp؈̈ȗR"U"%_U^?%!1 Q0Aa@q?<&f @MܑbtCCf0~6c6.$xXyɕ܋p.<֙:Xd9#$IC1h7",DzAI iV`-( BG*vY;U9D3rGL20cArWb -@D1F=EoP(LMMwD$DDGCwmK  !PlD{ݽ2%1? aAܲH#5eP%hb7X뿗ݑyBW $HC0"(Wt/@E2^$\w|Z;4O(xe7 TZ?E !1Q 26Aaq"04Rrstb$B#3Cc?ִ6-ń 4}|Y ZSwS^10 } N(~DIM8g0hB׊ƫRy!d*I 4g\JSg/iZϠ*<| X5GZUOZ 'pk&7c"FrZ)[sёpNpqN2ﴅ)'$]b2u|sdu+_|,uti`,REVO]+'Y$2DCm J $r׳aTՇKΊ`_RRm8zg9}hU|Pii^ihTn (Y^AOu8/]K 5\;Bq֊S;m2f6%B8* ]x38 U#5Bv܀"ד%ĉAl oH)ٌ{ϸMj]&q\R$Fvbu)!GoUFbuk+ЦFkʧrTWo<ڼ,C:ɥ8񒸶#+j1U*Ia6?АQKPk!k߽)h>=пSX:̬ dCTeFFO&w`kbV#(NĤtjjxA[ =qkW%sQmv 3&bU 3 0fxX P(զE?Ghn^ڄZ_,JL,!j2΃3jOI\{*ms+HR{"+.$!T8FemW?4fQFij2|d6]r1儥#6rr¹݇f"cR5*;r )H/#*fo-m@Qp7kq#.\zYvR<ΣjLrc I;\AWHhYPXFmi2ROA(2A4C$(@gH6ei@K(HJ@u$m]6@L*@\ڣpI$Ӂ2F~ox@.5F[*#hH_#S8Z*ZS6 NB2أ0Yy K!AhBN).>\i,ׁӁݛ+  ^0ޭ'z\b$S y"wƞ{x8ٿ~8^lRtz?q/N)싵ߢy5tG7f9hEzGWJ |.bL+?U:p.~\i绿,ׁӁݛ ^+L7C2Tž~Ȼ].qq^Nsvo󟶎$WD|5x+0ޭ'z\c 2ᙯPM8Y}pbrx/ăC ;ÂC:*IX'Miq#O E^W7SOiZ4>4׸zY(e5JNԨu@(vZi՘94 T8OB-)RԔ!$3$m7.P^i)e9 W)T9nUn,M惆JZכC$ƉѮR*QgvղJC4RTP#BQG5J`B@#Z%#y ~6m wR WQ[s:Lp\%FH [,l5.eRB;h~ymm*lp&wFxja D It%o#1jm5reX}uPTO`:g |:]q4RT*EO$7N&.2 v-B[AԄ~+Q=[iAn1h4)5RNZE1I- ePdZuG‚@ * 4B")*H#ǣִo8aP9-Xv9TGACJXbhBC4m0RWNv8SK5R"Z)RH#Ze%nu6iH[!iڒѬè)i*JR OX:$@B-ˤ.FJq5"\^+Hr%qR&Q4RvIBeBRF*JIE(Q\7|(?#QrɨFWFa3_TL5$qº`BБp/&" )_m̫̒ !-D`"|#WrAәw{>U: =o5.s ?q\H_:O4n1ڼO+˽MYI澳|\)wg˟He? B7Oyvx9y\t]jϕNOw5gM|K#>\C)OWΡ|EGGǁz3W>Tx1qg"鿅Fqr2RnS Q{.=G! wp>$.ўG`5 jOh'WdS o sR ؤ])0 J4m8F֕XQZIRkPY'ea&Mړ>CO8TI涒0RR|+TͩdC]ȉT TJtaUz ?O5aԭ $6*Nr'#шf#:ԣkx޽SɻmTKi[N ZL)ɽRid|JQ>e$(мZ (zF!U48[)7"p1 rz RAdsHO8PVhh7RK>JBT7E`;}EǜZ{8SԵ n]7lۮ *2>:b~aN-KWz<`JH)4"y'1g4xwtiGN,IQ%FEPKc\t|;;2assets/images-add-ons/learndash-bbpress_banner.jpgnuW+AJFIF  IO0==~b̛A^,.6)r9}RqaGJ"ְr-ґl7>n`)Rijynu`@?K3WVaIw0!U zv#ꆞo"LsNһFt7|ӛH#z܀61}5B>*Tu8w<=J[:;0kw+GA7^ȗNsGt{ys ]=,JYN¼3X#{ QŏGD(Ui۰1d8h:wd*Ή_у4åȺuFcljv7_.L^gjgQ#έw(zLYו\5Q{ݘ<ٗMhn_u;%u+ ` "#@=l}wM.HueU8I1_]:Y])la߮gI "|?kc˂6v.P8۰65E6ɫ`WS7a#UZ]{3&ߓ0 0kVVS֫XSn> Eg $ U-ὴ1yuHW: ?X!. l9cQm>IjDzm߷^ ,/l2=2H &MaѦeB,jrՁ>d)vwۣXGʡ+HȏWzUwrb.D=jcfl>"L%F#%vFulN4Y:Rg\ƚyְ$;}%U/5-ٯ=;6j ,{sEI-L{VYy UDhkeihhn)8va:`_{V4CM"uBwOR(2/)vI6;137 4fD(c6?ݧIpw]=X?CR~oBé/i~>m@Z1‚". {/0)XbzvH֡{ҨQ"}ꔺWfܒv j916DO6n0ܹj(>;>~%aoojHT}^"<;tO ^,R[2TW*jܩkK_I^H#OmP|c7ArFY~jb\:v/g4Dα~q1KYf坱=\LHq0Q39R#]k 7NA ` q네-\)JEi3bKI͊?;yRh6S[mªXuk _0eHn,ݕ2\KkLGț:e䈊fLUȩ}ʯH)Ɵ 4FRna(n8Z鮍NjWtH8f_%`Xج^i\73\@&AdN<9%!GVZi 5Ӿƕm2ex?5㛸 }6s;k QmUQ6qI6dL/M/2becHlbCndBH/Q8RrV0ZՊn5L7 W#97Tr͙cF-y"\VGj!a4^%P/沽sbf\W>!uh$`;r ٰ6NƏ~e-ȚNkY9W}v]5wVDQM[&9U$0bI.XW=sQ!SvIQuSBrC~bʻ2lk)k!9-ʔK"5KtThɷHW$56d5%+-!aQ%iQd6Gɧ}^lHUN]_\N  ȗE{O(㪮̄|kMFVn4 D䴫 T%(DT@SR"%E⪫$k|GOp<-R{MrWաn""^L"uoBꢖme$YzH\WLҩ sG9 "l)X'Qk)Tݼ/Je_$xNgl<:r0哩a.c(YV4kX^;w3-B Nȿæ?Hu1QUM=:.g_ iMSɉp$o͕#)][Op -x%"l$U8o5qƔUC u"J"j;rOQwjhN=hl/r=+*D!_?ML3y%\ˋd뿷"1_ ufe>^Wdːu_3pxʹ-5XUxu\S3un+:4.&ZSX\ Lw1"wm$xIGSuuۋ$fEi;'uDU}Y3(jI@Y*&k:!IH/Dk6 xMW ]5oS8(&XDELK'ؙi.{ en *{^D%2 T_*8WKg%tBjkI=_zx_a-[zR':ъ"j#~"x}I̞ngx֐l~lM~Reذ"nIG`NӮ"p"11~2 mM|x- EJ6[&pGTzU d&tkٹ*Oy6f m6#LiZ'}RT׋l p%Qd]xMIuv4|5Pnj3z3[X' h/pPpJsom-.We-k;eX+y.~oQ?OK-qCvD|EƉ˴e*.\UH0Uh;^[3 dY#>]k/֨*]mKʁK QLrBj(Q 5kTE0zE8}S&>R_2u_py5Rq\%"UqQ01]DEN"F> D-iflF# Ղh+(1$ICuxތ!1qbPF}5Qˈe5Z&[Ԋ.bq+H,aCZ"iշchz nrU~7EOiMT^Y4亵N^m=Qfsb>\.u#  w#Q]hDw.7h4AhԊV3i $DH_[eAΛ@p.DTkjc*2Дp^+e]eo4ԘA< ׊ FK |ltkYwRܛgg9vLy/QQDDD.|痏!57ʔׄguGۦbTUմbʯ~2'gcNq9ڤv}NTMX׈uª]sܴR_i}y275]DW\YR%9vѶ#ͯ4=MOWsޫx9h}gGm_ݺIub Ǯq@y[guU^99$MN\̙q/ypd4^8rG4q76Ka@E m|W$m^5s抩dFfdfd.DJ0rlQV-mep:?"mSZA ̉jFJɗ/58h_jeHҗ3n9m7=՞}eBA|U%^꪿#!1AQ`a q?G;!XP$,8dRCzd;0D=߼l?T~; l  qyKRpX .l~" @2@8/yP SVe9.mW2Μ{ lb.v#8Zw!Oۄ `6!xJPhZ1IlX vi{^A^4 B#!$c %yH而Qd 2 *MGE\~ *  MNi=B5~q8\M-p&& CظG!T00Q#o'[wAcOb(" (;\rCntaSyyb{qJov;9kl\"%vaJP<>ܯ!YL!Dqn.$v K3 -^"t ]Iv$cF#VEIY*r@hIx0$$P 2?Wu6@|F4.z,xLv J7>xRZox?87h׺ɯF hM/&믹2kp}&'*HQPdi䛊 mִ8eVB[W ##3`b&[ _c˸.2Z ym1$:y7㠸A*rZ6VUɈP$vVT€i E@ 0G& X\ <79 AS _/E<&$ R^r2 YKط/9ZhRgxl wcy֡$ hGyxU98!HRؼ Q_ D"l@˽`>2O*K`EEn-bXk4LlDSp,N#A]>PY"R:OR,o SpտtBα.B/ jvfV.F%^Ȋvb'R_FJ q5b'*m8 AVd ɨk@1i]UjJ!1AQaq"B2`br#$R 3C45s?"*SmD D_YZZm؇=q^H`ֲ$[]ԭ>?Bs(״T|pAš̀7՗CHS,%pm6ѓvKT:+gГ=/"ѫ8Ҥ lxdrcwdIìGew$g!^sn $ )T? Uf/ޚiQ%OŁmsKT4FpW,--OYy5w*Q6a10%l#F3TSl;K($y`4% [L]+r~I*q\|Niu-6IRfPhH &,%J ±Iᣅ-&:+ (PXZIϸ=ѷ}ͮ&;AH@0҉,10ʢ IΓb8HH$g hYBdď+ԜsM"A\NL%)9)J@x.y뉊`8jHai̊.HdŸ)H$ҔjVex'VB7Z~2eMΚDGDԌ)ȕ)* I!@FqkznDbBoap}YF3PHjM؏f.ueip#_w=<v,ݔpu+m'~*=`Br0m ("'s Zm#9e(R@ I) L*A@#5O1#[@q):JB A l (MJe\w yGd8A"@֐'yvMm"G#k41ȗ6dU[V!No21q>$'Mf T꩸9`TDd+ e@ao(/,yԻ5J} J0r7U>"Ƈp:/D|,b=p8z>0RyBM oWTx]./ 8RQ pYQkk K""H|)M"[Z47XN~[ gЄaK<#DX>$7%J-xOmr^QA8z)<>uF,F[5ӃRSL0Gx ]n%2G[ ;5Yե<=#R*Ri{ W&1f @>I-Y'on)]HK\)}76b^hQ蕅77&H+]⟰ƛACXdqħd!)JGT ^ Ǡ[$ajNQ#nl\)K:yWji|E6_GaiOei; 7>]0mnA#4u)9(wї;.q D)mD?-:BR*hV xY5ػBϥغVUh{vʒj3[|+KEɤvBmIPZh E JSWA^i>B'I'Iׄ>V- >qbW Q$1k gЪ#RAG%/-%nGunD-m.6PFpFJ",_;K;n-Òt*>#Ey؇VRI'GJ[!IPFA2I jӖG%`&q?h|="oy#*x$p*(B67\خ%L3aJmCfqiJRe9P'qrlU chIkRO-l"$-S俱<Ոppiޣ_*r62vP$ĵ'-Y*)*PJETMJd7p`Yb"*6Z6o}TKߤrT~CJ]1!M(QI9#`F\SKi4 uH4khk!1 )s%?wu冒y:2͖E=ќnq}F/++*_0ic\K1pJu˧j%E=4 3p W943{M/߻%jNd7:ԼjMc'79 !XP= djIv} CR|TxեH+pt)J ( t)S{:4;ΫJovڡyhuxb4iS[ȓ{~Ow2U15k#d8 D<yMRӛvهdمexv@0{/zљ`k!İ#Ghz`yZ"%Je)q8wXy_Y:FH>6g{k&QuʆM4KѐBUNbT639Ie\vUMg\ukUT禊XaT]n e"ʐjV~5,DTU=%qi5Z^_ $QA $Tff6!1Qa"2A` #3qBCRSbr?R.ha]#5dJ;KG TpiĶ aTkT؋ (M.&~#y0 җGk]b6nTlʥP5Xk/JNp"kk#$/5^t,#RFѵE?jEw)ӥG*|ĺ 3?8F`^J:^MXM׆!a# |oڤ\c7 RUǝ@d^GNy*}#zzE+r5[Iq֧:EZPrf7|0O3tA֢^5k@i#`/FiPu*; & ٤*%7Dj<Q$NLSGٶaSTUH%FTH zT,+Hd^OFw0e4AoG'Y6YW.[wj\;!%E֣qGE]hE,3}V8$i4-dd^o"x^u&8WGl> [(뻋h]ԍs͗PUMd}'VvMU]hgLIڏRgJ²Рu>mZc cX7lk#ςA06Wb+Tx]F^\69B p8;kZtW #]˷e[`v^G(`$&sRKFݹP~`E{ȯtz~]r7$J=c^qJAU}Yc7U/!AO%Ud9K}ƣ&j -JIomQ?@*V-?NE1aWGmpͼF4Un)K%wGӣ%;U-ەNFȍp{$ T[Ӑks{`[Ў7P>ʔ[,ewtsM\hnIEv\,]TkghŜ/3ՄM&~*F{$0@$V9/3{7]< )yǀ΀P,U4X3!ouB: ?, ` !Vr+Cre8lJ5z{=UJ-K_6/\u _ /C3zMYdu{­pl {Mcl٠#^FpRm;7o`Ilb蠗v~6?~]~ԑ1JpD0ČBu"˥c)4Q;فcҬxK[t2&NX,bO4FarQ YP@"ua#EA,f!:ȃ\qM}> G7İ횳]iXOFh1둋r2"Dodd#^Dt}xg=Q}ҤUεOh`pB͚+՟q0bL\^ӷE6uݒŷ*zg!.-p]3?_C*ˣ#.%3{@2;5Ah/WimE}"YYJdg'@bPWN`bnH7OȐ$y ^Z?4'YI >*EZP W.[@Dh\4Fr/Md֭frޣޥ0`}57@kqU%]M Yj]xWq93S"zau!f 9-c;[7&PkV&_Ts& y^4'PbCöֶK hma{QJP{b$V BE 9bHJM@ T1UzcpۭZ!ˁ]a"DFK?ݻwٿ~͛nnv׎7jufؾ%W喊t`h whGd4>:><>+@Ť޹($щoئb;Mj8ݻ^@a9J8*xn=79]T<bymS.JNr$%e=421K)i!E]RhFvaq'1ՌqR$_U HGoIEC&-B[8;q ˂-/٦ii2\5(8-9N:baQMpaiRoǵ>";ҙ`ڿoH%nqvlͷ2׋ݯq2:NRu,쾱۪C`a5"\ Wl39q8qBd*l|lXWAz|{֜2hcz.ѫB}5X- nt25Xq T~6/M7A;1Yې<3< X/H5,Acj[ߡS'²G}J=U7%F0 K3 hP͉I%s]Q%a̠sPo-օQ%QϿG;MV/lNHH^˕.A GUSB \#4Of{ӻ_ n]-ϋڅH˪ux*=C+d]/臨*=L+ig15<2TFءbh^&:8nۭ ׼̽lA̕%١8ǗC$(( )[IMC; /SjhN!D?iAč,sf'd7TZZ}.pp~duw9v"0#58K$V)sѹ6'.U\CHʵhvf,Rְd2HկZd1kX䢗>q&᫞6s+'طĊE0#fǦu#ޗG2Gґ)'Ԕx0uhXaĀ'}y ؞/gc_9qg83z +?m̒uBohN64-'pԩL2hH&UV=k0G&'` NrC?`f<Jx X{R:w[R%Tjpŝ$-s{U${i;vr3"c1>u PI":#h\ZN=mgvblrCcSV V}'"Zǰ@D~ߌ丮isM3C"ڋVU`5LpMKk5->XC^ 5-䗸ޮ֪%].])ܳX^ѕ4܃0jUӠM ̪%v]f%>ϼb;tè:%0@;geӯݧyIY$$>CdJ&MQ)kgYt T`n\W؜@_ƳXR %9 Z:)gM]ΥGaScұ8MJ?ĦZyY;[NQ&m/U7F^[9vk0 dQTt閠~=q?xDAGvu0XD&-9#;=&^C5~p ;Jm$!I aqeE[h(MD7i 'mqO%/[iŊ]Lf8.w$̹˱*Ϻ5pa28*W.Xs3|g3"+ֈjNSyS ҄VOm9[V{#r.W"lcw1Pr="sڢ,J/(Y[Tq@q>YQ]*]Ns"'Kίsk }TlBc/~nZ5R%S@,]+[L=<{n38+# 4yo z9Z̺}= EVqU 7mtSڷS kmJu8B΅+Ϻ5Rl,_鎽GA8/SkNn1p,;QkcVaxAVȑxh- qյKA[j[YkULg7u\4.p˸ S%08)25lKQ8KWڸ{w>,ςMؽ6tTVo Z0jRv RK aryj6 ~|aPSKդ?C5kΩ: Sۤ7E|6Q/5Yǹy_[ӻWjj?ʻm?:y.cڷkH֝<È[2&$C4WAhL^WP8C2dql5ů}بRbYPҝy"~|]س[Df&&;Lzܼ.?i}v4xVb1lͭi{&LLNԾZr^myEiMtK mr)?o=F|VY̘ OqNgGq|u30lЬSv8tf~l~߷r)AD-fJg`8޹^ޟ"ܽ!!75\f@~#ͅ?ѱepP,٣iXۻv&ЦFn6&Elݽr ְ1l9"(L=N$h;DU+ir/q؜l6ڲu6l8ϰLQ11c% zhXƚQ[rz=0BBQHJ;Č~Qɢoi33kBfm2ZKSsdjLqSe%hl^/uІZ/KZ?wZj8LJ-.P`dC )g]I SBiS܋IsonjW6{(}kI 9c7kZmkwc)r(UZEUM\,PfėKvNMG3ߴrcMwȮ [\W;ȢMztj]QtKq Wł+<­8u;BWhSM?xyS[WFV~}$\2S13x0ҨAYIzsbuc|LLI=]vj+,sA]CT1ڕ׆eGj֍k]2Za,f[a:sjvVՖVBɯa RPLLWŊ"mgD2}{k{rM,sƎ)=tZSw=}qx:/p:\_?.!f%Wl;,`"$!12 #3 0ש?mh%֟ OOz8 Y֊ؤQ1B{zu\5 yhs|^( k-L.H~-􋛎Kޓ. TqEi`T0 [˗o29l O9f![ cF9V?n\s@4a$YssQۥLJ'%rTfԉnNXQ7E}D~6yvo+Oަގ=nf c9>);U%rQ}.:LcE䟵\r/&`^9. ŭGY"<"b;5rݶ3kkh$s@ 3co{DuG>Sy'm9]ULJTt)Swi l ThsSqnW^nOp?JτUH_0:#Q,zM%/{U `@ cpʋI >OTqԙd)+g"h=9'YLsꉕ_f$׫|P !Hy'$6ѽLZ4l[b%itM'Kd}sMIP֚jL_rLlt|Uh.[ZiqV* 'rPT xXJL֬XWkX:%o{> *RajִkX悸 w}w1B+Ɔ=XFvVQK{KhkF8TVښVh&=Zaa #GNkgҫӶظ-t֥j"""":r#qܺ9B>A Y(͍D:$s WY=w;[GV^y!-SA)*LT iBN+k⑳Ӳzԏo H4Gx/X_rރ&9$ˢ|s{,H[m&5pb&f"#|b3]i5 Jo; !1AQaq"2BR`br Cs ?eT$e:&+Ku ^71 sź5Z[YAQImi4h YHpk٣}Z"C-'82'j¶Q3 L/K^S8݅X*#Q7F8i7O8OGGsu$f|J6.\brs7r@pKǃ]BD#}V;.V425Ķz'ᕥpڽhħ:C,RJ.Mvk}켛J9J9ɾ/3]9 GڗثK .w۞;5}+٭0g8 # mg:u+b)G$5-n_{Z=-j=Y2AVo2s4KmcG8ȭMvrݜ_j?2BfL*cJmvI ח^dd԰RK~c=SwWjs!\_]hgmȫhp0j}~s< A}Qs-&7>Əgl Ppi/t|^%u91MG2l ~ | xZU? VFt,_"4iҖ72?閱}F1Z#ӵv{-%tܘjs'DXؘKݕ h='/MX{J|G!::~nw4E>~/t4q-VC»c(bǬngO&^!!)z:6<6=\X+$ۛҖR9r<ȂD*y*A*FE,\iaqc ydRBUt8T#5[w}R5ڈcV)FE 5<;OntJee//qB԰TnK#H|;Vcs1 e8 t[M1ڍlh0=q ?Jb?Y\S`w.م^U/T;qXh׈YYŘ\=)PBfMaoKN-;2ꭉId$z9K.l 9 9(YNq"ט&IGkԓjÀ[!-}~ʟa;x]69ݪtiE:Sv\kkb !ŞşZ)G NgH :0xڴ--ڛ5@Z2}PܞފV['=IdmYÈb[S.%E姭q'*aqa([TcKok =,D?0+KΟ]~&WEzr> F9wpج5ٱ)8ͩznUHV^ZԵϥ>A͐~r, ]i[4Fq?EW:2)p X@5lg\5̆M랷J? 8 |}^dƇ; 8.Y '^b[?>ɸ=]jמ hwyyܸS e斜 ݕ8,ũFg̹+ך^ yC;ռV̻/j>U͖ǴkҚ@k)iNWIuTb-rIu ֎\2yMOC*MT+ի[㋔'V۸qӱW(e"[u?9/ #0@" p!% v0*|[rO#vPVqm4'^nOg]׼ۊjoz0l} 17qd/Y4YDEn;+GIc'nkön7u\t$͢d\I=c88ccSCO''3ӏv@ǽvh4WYQ i=|Lg*20ҿr>+c{u$P9mp^r=Jk{zť,K W$Լkyl-ٳAgNǢP4%e?Uqnmݰh*\>T,պo`Ȱ+!{䣢Q(֣BW~(GL]yƔQ` oD]F4UQ%3I\3M_hVm-TH2UTPS -W򟤿f*Rѷ.8"ۖ5<m9K[ț !ofv/2pѣ#e 0*{ȴjM5O\  یxCz>4R[w%qqdz2xab! 8q53C6뽈0[jx[R@+k %.?I\Bη3J#6y\ڪqH~iܾWg Qa-r)DXⓗ ;p*dor*TA,HOYJٚ>Y6@7$j0[]x?UKmzV8^<ŋs2ӲkpPUS\ftsHjL㏻+o$OuD]{1OYK$ ;EX{hɚnh*^Vdy?MHKV6 9QŠPj}+nK} u$K⛛ث`F;\du^ T))[c`_LFR22Ma ' j֣a?uwWSxm!!1f׼q}SFu2߱O.D[%#KH1C7RGu(dKvo-=9,Pk[ MlgBv=:*[7@z=Uҟap?3 +-Oqy !=x=6? GQRl->qVn=x䯍3e[y 8ћ>3ï(U=xS0g3++MY]0G)3:?2BddxZ|,WK(nlmm/D~ei*9%939 .A0q69 b竊IIcUpڢyfmI^dq)➬Ӄ!˾1ӫ)( +#"RY0^5K4}2šH͚ ae*{,yǞqˎq˪Yhߗ\^xyv3,#`C$q9T!^IV5:_ b^Հ5[i^㏐~ Q1DX ٌB怽s+&Fz&M{7>1JUu5  ';sOM[25-qD5_fRG">f乃_$$ u7`rlmF96Ɯ]"6~NNBjE2ZF!Q43b` /[x1}N^݀(\ά^zNqjʌR t#|-vu[ `ˁjBVlx?۱ 'ZiYn;}e8=,fΞk7k>||Wg˚˸!8)١xWaWC] g._|kY ]-kY;x' B&õ8Î%),3RCչÞ"$P[s Il wbڏf)3j]UzF"RVNrẼi_kY>&@$;">_ mBtʁ#oc~'Vyo>w0}x8/sVRXNN?E!"1A2Qa #BRq$0@Cbr3s%4Sp5Tcd ?F$^qGy *wahKM Tr(kzs@v!fa~\B:*Xx.v\HYX08s^M\ԫy_.H(?_ !XFv]VdK|x3&$*;4:Ӄ愈bM6$n86 ).W70ȋ *Z?XitR:j+6Q_EXŐ 냔[k&b mi/+Ùz#C uWArZwUW+K[T׮w9Ocb\'"jk.ėYVd.wT&WK;5O"?ʲ{d 8p$oI2Wy# 6]e_}%0v Ji5tZ!anDA|U|qARUPSEENKmҽ*\|*`D(Ŵ.ٍq]m8"cqx%r;ofJt.Pm%-s,u/&@9P3~maL۳MIɳKhDjmES?'(+-dvg#KDro1v}ES>S"jOH6D[$̠q|d=`%j0塪'UͺKN"tDDDOSX4+] uwp"Tѷ) 51@Sͩ44^=&PV嬸Z6SqTF[kRgj8pߍM3umj2DXLv6}JKs]DoMr=ZWBj+rIBZP_P&YLq|;dӸJdwWU' d9&7 ?Y?eB(P$#p|c-TyN,/kozM24'#07|ta`ͯy/"~+?ӌ[]UUf]q)d>u'x\%d9ѻL{c%Zܴ1 뜁>9MNlYʩ{_'_ "U0M姼D\Z?J-S?Y\Qp]T xo/8w1rVޤFMf˩3();dU`͙~\2=&w%QطنM|3en JԿ׌k[—]릓O^~5di9~l)ls> 8:ccEF]t"5y2~EiLx 2w:x,;O>h:7cL8>:rK&*db xi8sVl<)v}5}Luɓ/E:ˁa Ɵ)+u-& QP$efcu6F]1,&"~̛֡+e;T㷗9J%K1Yn;q9o"TV5i0%_+1\^alT=msٜH4n讷?z/ e0)i̲DJ5K_Â;pcR8dA=ǵ̤5ǏM72ݪ{}YnqN78s;3dSg25|ͦH1y9#̏n㪜‡#kѨ?iHՐ.WAwWW4DN}gh(P #⏂E|± w1!2ZJd'^%Q!yTeMԁp|un^l/4l^Eݓ>`]7O%5ǢHoW]˫`E2aeJ뼵Qqc1 y CMq5Oe^?AEmGiYlSAm=t47<[[,%U MV2&-b +6/E]Q'>>?dZ<~i?MJT ̧l-ϊZR]35d=+zH' SU6vMz++(3+Q-Im,m8|֌k! s)TD\rZ:ǛA`'G1_>/=[EިwtR5Upq첿^u\ uN5A,N5I+jof>ꌗ#˖`)H rucc )jd"$$(tTT^,F۔5pě)t/sw$! E8Iv$P ݎlrEeN9I۶I =6=LˁѤ{YwPyOq42L@yWQ񪆵U׼x'@K;tJt;6ANdSEh?pҪ!B ~4nmNtTTѽ[p\xM 1WI5w{ENEt:m\ <8.͇$ِã S7 _2s ]&_|%eFv̉BC=)|Z$_m$cC۩Fuxle[AF &yu4WwϵUVb5mqI·y\e\xN¶s=WJ43[ρc[`˅ҽIss.gM5tD PM7q1*]$2LycGa)A&vj$[pWjq>JXK/M{Iva 3Ի\S zX{EVY%5"Z}#Ed>}S͜{k)Bed=(-'jըZ%Zr{Bot-,Aw0&I-zT9HtIǟ}"%Uʩur$(H&NE!Q1Jz,b-6ʽtAbɠ)1F6ATӲinې05*r?F:q,IɓNu^Y#2Me"Ėز<Ԙ$9uOT}ӟ]UW>vsEl+=MAh:wnHת CdѺZ10"CԹ&h̊Gj{RWUQUMJ˩]ڵHpYU*JPT4.HLPK3tN>6\#mrJ]4Xl=a2un_UZaP }!q&s)zŐ CÇXʄ 7RiH N=bd@xecF:r+CRBp/ӈ98b`H%VÉI( ':;J@ƓZ4h7=ABH̘T2e::3U,J2B (4m,Ig U>&ÂU0E}pm3q ȩK^%EY;>;B)UF }h , frt솕 3^+1lCLN[\a](Ql w}nj8ꍪdlfbo|R~?_ Z#QAtW<|w;b!fD۬81Gwn*hv&-@- @`r3ۺve ߦL iK?Sg DBm[@0O/.aNhzQ TnΎ$»d_Na 4|%m#6{uxZH_E #we0lLBjaW6 N%@ Jfk iHT[z pcQ`6jѩ~ts})Xh0Aqgx:dړp(BPA=-TX(?@lRn F'i&aLo w#ԚNqx zJR|*Ub#L4, '/({0ů.TW%A+i%'_#!%Kk׮y٪fJ-hD/DMќYFUw `@]s7Ƶ5+}K)݁рr|OMP; ZЭ`Kai6Rdg';?<I,2hbf ȵL]U@IƠ0XMsI%!h,4M@ gdMc5:4$KAL {Tv~ $ůlao_MJ:mYJA>֭‡B%f[n%W`+Tn#. tm=ܙn!ٔ$H"u݆#݁WOD+N]J,>r%]J0$k pVNiO!ǁ417NW㉃4Z5-Z̎(M"Lu%%X,"ʼnYO6TˤX9i[jg>E^Vى=Mh3E+y{\ZX\,sIQ3<*+A[X)vY19T4Y'Iv`#r%SkѦNI.qjSjOGZqZ"AWIL+9ZոI& }_sJ:%aHQ{ B"zJK)twqY<-xgۜȣ|How %H]]|KWf|}Lv#ׂ?Cf +~j5֦Ռ2/p(lOto8xl(m^XnlX]tjm7u`|9"v z 65h<7zPcGg5R~zᜩ:I`7?rX yAxLX`sx\ lj뙬DlYI\K9{%^,lu2fEh+[@\V6A/bNۼjO7ϟIϴ<֜e);n&*xe2YK~/g=teݴT^WKɠ ^7QI*lew 5;g J;IۆQ$42U쪮UrULl; bW}sIR<|(4uV**Op`:*L8#<2C͑FWbDM1')|8 ]Lnx+1I$ !1AQaq" 2@Bb0RrS3pC ? ՠq[/y{Ov4[ޭ~ҿ!Yxh޳b>nYiR2R'ew9wE*[d]o;~X 1zhc ;FRMu$d%p"BN] ެCXHzBZ:PU൶>y.G3ܣy(K\e#oW\ߣqJepd i M@E5TEnٍi+Su?LjfF55[N$h>oHhb';x=j]&KZÄJ|YX*گx3Rݥu$L;ȑkkQܦ{%K\Mgʧ/Ʋ썯cEdGْxˬmLN3HV'o#GY{kwJ'L?UN<e{4/#,yD_~'jTU<~Zw{cPKFzo|@e7|JTJm=w/ ;KȽӸ؏9Obڷko"H*ғ@ x-H(lr,%856#Gi!%*C-X RF mjs jfWpصiN94D-{VLR5CyB`}w҇6+C;/q&15)\V^ڛh"* [VQ醔9EiPk7EȤO D~ Sj1\V;{%J$מ \#&ݲ݆vϪ>eKg9:7e)jvD00)?J_ ^vlJn÷gG$s-*Y;xHRF^LjHq,9G=EY>E%_ƖYc8hMJ QK,@pn6I3|G2UUQeVeIky!lQTM A j?ڪ?#XS{9zI0y!\&`P+:wrEO&gi2KsDɫaHċʳC'tJ_AbspB¼[Gy/b](u@s Q>57OG.EUGbv+R.U<)1H3W+283V#uHN4NI5l=Ĥbjh7sLt7KU˖_Ic+o3iKEښhb_Y~d4w9jp؈H[_wmc$$LFF-p2%NF~櫿2WNjq!vEa˥é7Tq(ĭ8'2jd<)1H3W SS*.}GHFPv.ejh'咮[.q+`®e^ͮF>j2Ixfj3JۨPҷ Kǟ S)V*y#yt.{ʬ 2jЌ8s.SqV$w;U8Arj #dlv1]I)x%`s<%lѶ]7Sc Tp;O$3 kdNO>Y)܄]e(pxl Z42_iP*K]s7[,F wYƙܑ&ʃ$G"ԃ wn<+2J}-[T!\I9'Lr\0lh8?ZȚ$ܿfc9?' !01@AQapq ?wCoڽVQ{TH1]JbiHn A*,Lj% Tч~,TJBwe DN Lh-TƠBbCtJ+zJCh"Quk1cB897pڟ&ycz>O7{PKc\߹&990assets/images-add-ons/learndash-core_256x256.jpgnuW+AJFIF  Xb`dr i>~{,R`r >ЙhO9w&vfv<%GgҤP+ŏpCwh_Tĝ5)g q8s'{]jnxn2~>9L>M|Neb?{Eo%9h=?ݧ=o>5$ngC[f8$͡?  X/ 861fag!ZH [M`Vn5YjXtλZ(eG3Ԍ Oh+%YbliDk^0toI*mײeJŋ;B(a.bfъ7o2gԎYMGLb6\I$yk8G lBm@8 6RVtu 247q!05@"#$3s6tRlSC7 y `5`5`5`5`5`5`5`5`5`5`5iZa .Mk< C'$`{AQ};nCI k/ΕUgꫡY8ۓ(q&'bߏ(6@!Q o.Wbm9dTo'۪A1fSjt%e>UcI)n}3U))Zrc J7- PM~\CvKԒq =),:84k ,4e b,7f* +Z clwB&mim@#64 +&G=жS+#{YOw[Y_u{h*SjJХ!hVYwYu:Od<2c[viMz::dS?RXӆS29;e#6i+E|LG% 7QR!,u)KReKVr*>bF/)KqvXSbp?o"4f HsXECP]XXpq#9R#C @ f5*NIW92eCǐzrҰ\,RhB% |z*$Q aym#+P8TP :9n:h!Ȍg: /L`qcUHhYHOOOOOOOOOOO["Q,dR??!1"AQ#a 2BRq0@b$%CSr?'bV#ݚY&*ya+,>vEȰ"WdX| ]a+,>vE#FAd(BE$Sy={U gIMl]@ !ԡ|bz&;6y2,Uq #.Gt-paP W]2˳ Iao6;B;^&HPŠ{-f\Z$mIa\Z܎u`6^θVS8ي("3 }#ǻV6ZM> Y!39-'O5qst[_Ic;շ"yKIj;s8"1%)G~J[ֿK5i{"n?cWi~I"fY;9FkY&V]0gLj62m=Ԧ) 1㑬6 !\`Վ8?;6|t3C3:ܜl/n$m(Fb[F((b#`Ql}`:gĂdqx69szYW/iXQSf:nU~ʌU3Tbk>AVO'8F#7Bc|\),TT7Q "fVًjէmd!< JI1ͱrFdӜxdi9 sP0BKn^#KVԎG 2ѳ^Y#2IF#[ۦG~5w;6Yv&Ì]|,[ćӴn~"ppV@ͭK3XAơ#z:%/`|jIyㅷ8 ;`B!Nī Vz״^5{lw}Fl{zf{V;4pG ւG \WI$1ٜzG{5n^Xi-XE樣M~3U[ĸCRy}7~)cA:r WAFE{x6LX O Z#oiGe]AFH]`50MGYRwXr 9&`S|ϟ>gvbpGQGʔ X͋D B M|VkP pT'PPX0dNʶΩY[$aUyb'zڽeI-x <*X3ɔ.}IA5;]q!'ACە\S 6¹ AQ״݅,'S1('r= xǒgfWVoYZۊC6 `QtGI=tBT"pԻ=dbg cgFsqs)爢j]-jІ0 '064z A(3j0~ L!P@f*6^s~15<`<" V`ˬpk ~z#@@y(nAfbT4`pJA?p"Nc2%Lq /}_y"G u[{q&E)±I$ϒ{=O|'|>I$dX `$!10AQ @aq?>8pI>:tӧN:t FG_牂!CDuȋe yCWڃBV& -K0U}/Ȧ>!Ȃg=)`q2Gf!2rJ8*JsO x!Q_GNP#$ xN\|W"׾׆nECIJy3ִ27 6a= gĀ"wH΃mn]l C+2GPbQ,k<=$O0t,&& 6LS:m򯖷U^esep pa yO- 䀵%(PfoqeMOmDP"%Tp` hܚi8_88 }*ieQHa n\7RzÅE]A p"y$ @7@%㦀A '`U/YFiBŋ,Xbŀdj[+37SW !035@A148V $;={JկĔ`VyէAyiwmZ$VyէAyiwmZ$VyէAyiwc,z +q9| b-Tvzũ)|sv8m\X/NzdË wnW۔`\))q&BBM+ѧY Q/'Z>Xꧭqϳ7xKȾ_Rp˗xd(+b hι.}BWm?w}uJ |UkFi$%[9ŖuMc]PP rl^k.Ic2f'㺧s sj*)sY#XR>UdT:(AV4]selt6X,s(WѨ'يMm08mL^uSָqv坩+2yۍ Eb3 :lM2{%'ʦh(+Aͤ0 PEduMz5Bfbj8 n32Z"9_7j[O=2,kS)"UMn@u|xf-CK<(ZWCّ@Ȫ*eb0Fiq,#/1dGԕPb%t;R(Dp;,z㫸)8lxj$$eͱV%nL:n"^! RU,YC[%JErVe"^FDN%VȪ\ M/:fTU#,rp[wn񶼃|UtuĎfWw$"v$%S1w)2* &$U(!pȳt6SvWbboZTjԞQ|j~,K31,ĒN'CiUT^c$O2I'sV|KO'muˋ*=Q4Gbt?K5%J cP*Ke&I!U7,M=M.bN$+JDo6H%5N%N!0PYwt{n$(jDxdv9xh\n37gBHfKIBȠwWV/LA 8 e  `;U}%SYo9TFP,m9b,|u:RS]nMW$Kǧi'eN"8%7㕔XɌDc/̠M5[Qyf͒v&FaOҝz5I/Y ԍVDbXDD r;A=E^&dV##u!؆R :SԞ={"ǮکC,q>"Xw7-XZ5 qP<"ߚq[RTFa H{"`${H*zNI#M[w*ѓ zj  0gx-*(_%v&`;<@ClJ(>gx6U%,ŕ@1ZgD!Ye8°LU{J+Y1A 3]ؘ.v'fCfFijkM?u*e"X#blubyXK )ha(c qXmod2ƿE@>m,^8HGc!i )@̄(:QvRYѥi3B^gw5 r!#8f E`v'L4Œ\T^( 6 Be]3Ze{ ڍ( ,,39Pvr,.ȟiײA*ETv6ךEIU;!? n=% {b)RLA؃$HFWSL$`嘰'rtHoe$ #eyЬlAA6#c\( Ę6TɔBVՈ5qViT"[ekRM" z|/&, k5F%3Q83d}bAZ<0|֨*0baUQ5@;}3ιFlr6݈򴻦i_%~fÉF,3*+ElSWo_sm7׾;{섩lcӳ'Qv zeyЙ!~#(c~;YR̤}/l4?!˥3?6 쇹mF>sFݮ1f+r(_⹿ZCv9MKNi#>&>#mw%9#;Tyu R硟mb|+_,Ɋ*əN˟[dאҖSg_ٸ6I\ݖіl@C1NG}GHK"G nH8X-{0^t).i&ANda2bD&bF×ZLemϭ~k2Stfv%hcF,sեճ&DPǽ62L:ХPo ȸs:S4QIŭ0FNVdٙR8ⵧ+CJVm+Mki,RV+Mm}MkNW"AD'&3+fH?vi\Xw 2Iu~A.Ob|\{([ /{|' Xݫy<+PmL_: 1,J) \ح;4{>y>OSΗ>Is_M6B|)JL$^̌ ?)U-&E50K7b3c6;trL$F9.kVi\{)|⩡a<:)eж\c3{lٔʡF[(efHn̪)\Bժ/̰~s o(u}SX/f^بv3aFC#*X83νbxnIGJMIÇ c{5s_FWsiݕkfl4g+Vq{:T b1{`t(k{UЉ1\j$zwNo;l>mo;l>mo;l>m0`15ϿB !"1q AQu#2at$0@%3Cd ?תabsƔFڲ>KN@KVkX?_u` }Ճ5VkX?Q*5K$(%V &4o[ij?—rpQ7r3I*f$ ;kԗc&$&hDeCbۏ_-):(y: )*:VmW,ȫp`u%O7RT$:m3HѦoֲy4!0r]7RhqZT#UFmkr|N1 "&>y:uRTYz|vI^j*FZڧ|O}/Ξy`a1a<\ R9:0L[za3^sfgXR \5TޥVIҫr'Y(*7}Ͳ"Dv׍Mpf]a'xg 5<5v!CRJȠ)C,+Nvڪ*z?Se peUwu1BB#}WM1$9LffZvV fu//UuֺyCӲgy2sDjQT/VD6|,?޸o8|@xlكTz"I;o6]ۘEv^P?y@0;JYHث Բe6Bo:ulAdq< ۘهoK\,[es*"" UPg]t<v,.UUA'ʠ*`P4:{ϪEU >=@66>D U~?Yu$֬%̀)ٯeӯ}C/}0%wl$q^w-ggs}"v1Kcߊـ}}c@sE>\T,P#oS,#=AJDز<<8:ljQiŻaYNx-(Z:D!WV]+ $AcCfVhget>Pu=O8ݮѷBsmm}t(+gE`AQ>)wO֙G%#B~EnI)ȱ^)I{KUs2fLLW 8xc?ƕv"6P^&g9$.>Zӳ% V3 E|xgeejrutYa4 w.'E(mWpHBgқGBU6*@ #qCz~-Al׾SYr$OXYПX۠wy`PC Z >Fq2BTegZjqrĦC8@fIBۅ(TlB94Iv,|<8ķuF,ij31ݙKI$u͘B9I9݊(;!cmܟ$ZgwrYىffbK1$I'}IXNʪ$1f,!_X:\XdM-*2rG #p0!:ҝ%?jr$#}]V2*Aph+eI!<؁i0ʮ<޼E@*@ijy$N I!A>HS`W e\!A&fui*!~<>)|p..b%T8!5RYOXw4RmP`90NMBbDWa,1w,Ct7q5J/ _k5{ƽ^x׼k5wxBorID%cj4ܒXPKc\MkE|)|)8assets/images-add-ons/learndash-gravity-forms_banner.jpgnuW+AJFIF  J2(^¸NKD"gZ~r@g -t9 %aԿ#k:KATwMk@іDPV-n ?^J [=ccpVW8҈/%wQ͡,@ u)㍣>ͩT﷯_͹ժx qF[fʭvS#aT0ޙlk b3_z^%w=ge%uzǻzRWO}Bj bUǹ}7=60TVV?@f*MG1ʺW60TVܜi<+{Nsf*@5_kv aʓKSOܞB&Z:̳ wYl7 OGS`!S2ʆE{@{ %Ԁ: oC1픈vj\6.ktQz;zl\Vf5MtwN~VzAYg+08w5sjG\1nԢmq=ʄ/Dj:$=]iMuZk]E֚.Qu5pD9qIQTvai`[p9xY>CԝM r!vOr׼d؊,7|YoooNl6 mEf{6u)jRڱRqCOES@3MLrW 5 {:mPx ٝTt|}!`et0\iΧTuìV&2/+F{q58b5fltp2%-!-7^TOSP'af;pe2DwPPKJ3[H4ʇT+DDגtu6:l=UIÀ:b)GR#~OMQb3%14ugb[iS㜮&`Xۖc2#*s+akIt*>O-m-MTqv]% ģOz<)<4疯|ړRډ% 7 ʎ}S[yɚ/0D{vH_N-2CY`E\[I}H΅$$Hv_A7NuRT%)ʔ`81Xr|]THX2Ue-zG%Mڒ3)U+k8Zqj*Z֢GYR(L2y"jB9 є~"R)3)rT 'ZM1g&S2 TYI!X#wu91hPWd9U0 ZXJDyScm2bej' uŬRwzRl\vN"Et6i#̉D(-[iҖ|_A?/Oo/Oo/OQfaCZ 8 W?TցR 6'  sV$7!&u_jٿ=鞲 fn$NeA/R?UgT۰?c&*;֭~]fPs FFB $Xi m!#ؑ^N)"RVԥ>#,)j*'i>yU>+b^n+OqX}Ww(FCyyE+(;v v߅Gu:կ˵|vlߊMKΔy"ہ\ GeR>;Ro£}*Y)ңl$OrJ%)7HXrCPfї &;Bw@Rlk׉_v9beWݎyUcf&U}癉_v9beWݎyUcf&U}癇v)%OXsI $$_.BUd/:ϱ)I8#1V]͋;UB4̽t6hWZOÍ9"Avm#Yd֫B5PFz$SoG} m֓e%IUM-_NGd8(r\J kjá\mn8t9RZ05+ i^uFmCSQ?Bl#J΋-jԉ-kI; MEEOh sѝ#f5S!@?P~S⃵OI) sRbLJB:C̨b\xVR>'lƑn)*|BHE&UT;()J7RM$$OO/FqMW5`jZ< #% Mv/Z=+n=QS'Iq(6:Z#jJ ;ԒN.g/=UMFc8E#$6FJ ցR0!h:E2wٔ:< 6I mcwh|r˕{@PH>GF ",Gs%^mZŀ e\g)vrܧg9]>@9@ok 2KFt!y"Ij ;E`Y+$a%MWk֒p*7sUY冗|r7#P@ F (D DQG "*뢎 C(O'bE?e"D$HڤnY7ZG@(Vőg(Pm.ԓʘҠ뼂PW\L~dU@؃CUTxٳ7FxU\ -朽ESm #Z2}PEUMPD4G]{@, 7U8(ƅ됂fPb^S*_Vy4 лɧXSxE#fR7rU"H%#Aüg"hql~!W8a@o4Zy&A%,S$'#Bɡhq)[j‘  'd}74㑔 tc[cn[i&G ;O z2)0`jSICm:d2ķ,PtIC"޺O=KkCZC32NICo 6*,;])OueJmaí[kВt o7E-KZlδ7[kh8!d'K!m ma-S mZ1bLrc{bM}wi8ugt3XN9R&ͼ(:in ઓLwLwLwLwLk''X8(SYu􎙥W,2=Ι}go=SL'( ٟ;3f~Ýs?wbomY|)Z9/lbV%}yS7Yip$r% (KmC G 8oQ}$nz#spI0GCmlO඾t/7G:eME(m vy5LR"5\T_>U^1:HY=-G}ڨ< 6N kLڲSws_dU;[Ox>Ͽ"j)ko~koHkĸDGIYIxt.lO඾t/7rr_iq۞Z±7E*b^ owAyb~P^wؿ(/;_/ 楬KTiB6ֆ薵8a=2^/|'df/zV j@A$̘ t_?7 a NAT_,sYA:+1%-䧢ۍEu{v 3olVice~^ EhgE\hBHӷÆҔ)B'²s-%秇˲trUv_Y$ «GKҼ1pA!.sczre |OP\zKPՊPj zOmtJl9oI `V:İ;M)CP0qY8m+Wa oӦc1xrk\j:1qZC2@ !AQ"1aqs`2Br #R0c3b ? .,rS,NFᔞ>_vv.X;)&\s] qٻS`1C"f[)pVȃ [!`Kn^ 1o07 `dtVR7E竹=-J QHP3ƶA(rKL =qv8ovbX;UP1$^c|A0ƇI*JZ 7 |6/oHBqFڧ]HJ_J[hlagHKmR2j6f)b"h$_U' 6St+FҵVl2A~23kB`\)t`,ְqT`ʜ :5'lMZ:m2-·qR iN%6bIʈ&_LʴʅPr,1 4+`Fc2#=OG9=ODsB*0bJ*5.6Ja*tL{֣K"jne)Du~v1M ɘR6"|FQp]o;&: ui~3Jhf_ĉ W"b"cbq$ԞX,f vMZyG-khQڢJ`(;:_iR]r$j*#x&F:j1o5/11AVR vGYMUB%T\X 7;D>[jdTTZ#Rhe/`1E_G3CߚF7E9ʙe_Ք_r6H˕V2_”3-m3;Ġ$@azq_L:2ەF "QIUnA<S65jZI/g }$0n:L}Կs5IWlL6thH?V* kNz4 @2(WVjoW `iji^UV|/U54IqA7E:FNd"2;n-_6eSG2@@IR/֛xvxp 3J"+Zv=7}=gCsW9U]VNF7N, |ޤ(}Il@?ҘVL*@Dϰ(ֱxH/(Z&mǕzl7[/ǮVq땲zhɏOlHi]AF'Q?<n|`xwV"GܯGo:WLn|FƉ3̦EKEY^NX=*))c^J`uUkt{^:TefGjU^)PW,i2Fxv䯌GXתu=ƯҘ/UZWDJΉ#Z8^N{y8u5׺8דQ(gՂarXתu=ƯҘ2eU\W[UNptV2dNsRxߊ]sKa~)uebF3B\7> !1AQaqr`"2 BRb0C ?"IW!<H=jJJX@x[êkT1Q O4&偄J-sVK;%9$HvI"G8jURѳ3;$If:GQdJYnh2֮2յV \՛_c tjɪ|%X}bT{EG)j>Gai( O5:5M<=̴bn$OW]m -) Z#'$zMFH u1 BЯ4+ хVHf/w)UP*)XGTW{й$%> enګI#f.>3E"yJP)5Lg` Y$mUwwQ>$lފ*+!?$sGcbC=V;i`!%`GlmUGTWz6= $A5#G\(6T}GlmUGKBJd)$K cGhq4yƏ8<ѠL1p6+n V`!7 jX@D d5!|~ IUY:H7MwnyD{䏉6feWY!3*[ 4iCZs냺[[TuİhbjH8y-3AfE+$kUH`0Bu(Ksqb$\hViCaAVƍYSz*|#d\ QQ'HI G2>%Vr 05AA@uABzД.OPKc\PGG1assets/images-add-ons/learndash-zapier_banner.jpgnuW+AJFIF  KńUhv6rT@I[Mށ!84}vj\|$rd]<X(ei5l} 9[G$oVD[RSEwVSS܏[WƯ](UMit6uߡ/sTS^si9b/ U?We9nt$|P}7RgV֭q=iݤy4etoϩ-΄!1;}Tv\?L(o-Vۣl>:h^2V[&ݜ 6FF-mړ=wR.>ZO?gDDElj@ p n$=(F>n܀K8oe,^_ Z0ylf136i?bݢz޿=/ 䖯VOOuoY6;\^{KT_{e_{ؙl<1)r". ?[gvq'dȶ^ =\HCj}[ou#nUÛ_YVfbԻ)[/Η I&mYяAz;٤{feV@@@bP}oEa&_l ~,~ܟJ$/ >x} ?hot6w97mKN:1D) }"[f`LS퓄4W՘秢QEj|"[9W}/'JZ7}c, 9?{ll_MѼHfğ̾1:N'R[Fh1tv_$V/;]l;&^hq.ʾYPp.74`16!3"36HZ6)qfxUBjo2`[^{q}ݹn:E~N 'pp`߂ks{jn*M͓3_SF '9k?T~XY e8#pٜ8E(}EYMW٩麻~W9}W9}9`' z,!&S_Sv([uRU7E|ZL0@ǾJ|1Rì ǚ}G{78 h|1$ºّlɍz ,I6H!T2g}5ƌȰv  7/Yt`ѵj9Yg.+ˆ" yzq1 j!2u7|L香Vv'x[, MrQivdw@o*՚MղjKCg  Էg5N4ũӳ;) uՃ|Fx/GŎB(Cӛn}C+m+v)Tdp0L>>{{"lHńFTSN:?Lq$]M'.K<N܁],Kfަ/:d]ؾxNso[ʐg[//5r0tޫr:x8.:%cft?Dr\:JHUقǤ`?t>zq W(F  *2|]9޹U>Kidm:m!ΥlK:t^g/أѣ8xc?81o/Lz@0:m+yO:X{Rɬ"8캯^:"LEՓ{p3}eYȞ]͑|*yx2QA$pWYʽ6]R޶%dXbxVrIF@=MO QqQpH 6'c Uw?m#Gs=ZL d ۶ΕP . {޹Uc {"n˦>BF-h51tvCKzؖ E:t)-wR{J!MD Dt nF''̅(k(bURlJ?GmCig֮_xS%f<  |'ۖ-{ʡ^- (=XcYe#*#K+BɢјOe/Uiwb.eb?CLvef0tur^~E-iO\_<f"R=v KIУP-'I1X~Ѐ `NkgHiݮ}Ub =Z.DI爹 f* P|YX6sBIlXZdqiH;{#%6s\zqe1-bԣ##ng vJm{ ٕyY rבF Sb?H+ LC+VvBqIg濄,?"3j7^E~,[=4X iWS鞄S=3Iϑq5o#e7nYq'j=㭋&LLbӴ]Q%>1 VMHl :'71ĘeT. )-?V=^R\DhO ׎tMzyEu iQ2$3BQSDzHhe5nbtf7X&(LgL~FH׳q9n` }"\`8Wu[ M8vU?]m/)suj9dr啔q-c8Ӌe]^ ͽ:Qd_ 7X9aI1iIŠu0aVJuJOVُTNJx\Թ$^ >dz_#T-^0YՒM dv8V.\dLPkfg]|=:2W:2n|y53paV:@՗0W&5k~((fӕ^W^ㅩa$fQnj lƼ LqtuL.%zw1b]٘gH<>5cO_7b|QGoz,GegOm/)sA8}jr`:H`h-|Y>ΒEK>)~\tݦ ݧv4MqJі:56/G],tyY1)\I|F5cO_7! 컭&&4S[ 7x8Xp"{AK+)Ǫ?>~ F۶[h;#]" @9˖<0InM *cMr35,{iN>+_]rZ(5'XU_5#e0$d1W{)y$dYu5mTL@kZ,e_c*Xϋ9\}Yb_5md ,qwIW1o2LGO^16ƿV25؈,]m`?awL3?\K-/e$KY)dgQt~`?*=,/L CiyC-b.X.:+j$#`(5bTLsȧUGZAfMIq0/p̻;XʡE趞G3}fDN2#{_>uq v%l6ucX]]ю(zҥɐxJkF}xVNWCcRzP*6|Tx|R\[n\ ZqBɑ4dN:2Uo 'pڹ=\cLi14ƘcLi14ƘcLi14ƘcLi14Ɵ '!1AQ`a qp?!3FA~ }"ȟ|ic(:1VuՃgr!"AmEW YݓW㚧/KЉK'e;NU? p MBpJKF#><>:AXkI;?emASi1œk*k 6"0~?>|Ë܅~g,1'q_=f %$#qIba_'CC/c(黈"#'"{ɸ9j 3+@x*Uxͨ3E#uNml!_ j@Qu ЪJ%S8X`lX|4J8mQ+=3bB_ڹ&?ּ͘Yv=\!D$X`Hc;Ut=ؑͺr#V.Fv# FR`if/tߏT*v+f`aPva{fwSDȩqoЀt޷AX⢶t`{Thv87MF)@)Hko˗~ [NI`'}ih2[Z8v/oDKq.xQn8mAڀaՁi }1Xa{x4ORùV srB巸=xGF?>۹rStj$D _5 xS5[yM M,(}*P]Uڅv@Vm ?cQ#SA 0)HW .-IF! '{[c0X3 fm&q{S:>֕.Bt ssz4`b7={qSs[e!KY-B hHm6 #FԱzmlW ߖ5fS@}hVHݥ> = ?JQ5ߴЏT >kVl%#/DtQz~ҸcKy(ynՔ3Ulj3 %"T I4fW&LW`.)6Y'1<^@DAfP|9ѮdM֘R&XʧޅUy à > q04W"O?ϟmmQqUUUjU^KE"wȘбLNRP?uT#+|Jw렡Hw喎$0E6hiᬢYTB0ߊFaD`]i,0}J.iW][^ e~_m1(Zk\oK3pR 5yY )K`7Q7`5V!#6T$2R"34 V⶷mn+kq[[V⶷mn+kq[[V⶷mn+kq[[V⶷mn+kq[[d 5G 8jp&#+VKT6@;5%xm@w/.,RZ$kܬ1Gf52 7!Ē;g܄lRQ㌦ǒ 3z]4(NVg*& =Lq\y%"E2 r`Fጨ nNJ.ȱFVO*LL}&g*J((, 'ɦY%qJC_qވk3 |]z!KR8J@MD LN'HB [٫:bc@Arpq''8&N[iuKnm7~saOy 14cYťG'(Vk^^c t{^ZfD4,ʀ*Wk3654eRMB&ءM44#+ S:J~DuJ5nHgVJՒMo0[_OMu؟IY:r'!*RBZl\47x"A%CF Ɏ1)#{bbSft2O[FN$zfꒅAƶ6aAVFrkOyUrg47b5/g0,,*8Dr.~~5ֵ{Y38KGcTR S`uNQ>ibތM.Iֶa*rVyDu*3qjۧy5kV9 i4KdJ;t:<"tNS25VR;zsK9llͨdc,`0^JmL[Y:$E"(yNUb饐) J!Xj7xU7,zZ(>kYBloȕ2Y`]`2r!"RBZjy3dɵ)ViҦ{ΗT}D->9j"bfLP#gmd?N*N* irvmBЬQhȒ870Ztɋ@Swalδh}d+noU OiGZz`k:WG$Ӝk|>˟mQ(LI&, dR:{afTvG9#<2u Xn*-tT֔~5 VJlZd=hRAn,kOSc^O!TX`&Ixdq'FtʰgUGCg !e~ Cߌ[VW~2*ʶk"DD'2&pz, Ć@P^(ZꤎVm#ZV`z3sc3KiurWP(aieܽMȊ.~1PTwJX#c/JYt]Tgʬsſ+| :hM u[P Jؔ$Ěḟ=z`LA palδh2j!ʗ 528kS/=w޻z]w޻z]w޻z]w޻z/B!1"AQaq2B`r#Rbst 3Cc ?@uCVPGֵeRP@b<[1$qr0 xl n*n064p 1026:LȥKfaITu Aȋ9tX} D @Z6>}}LkZ_-0YR\PZʀj{%UG-EmUg,YA*h?Q4UJHEL#%iӡߗ1W{8UAA;rda HFviҲg$pLZW`YݎX9e:\Pћ'@ب:PQ c6rF=kF;I@HՎ`5eLmĐ d,(k6VFl,LO]$;b(UU*`{I'Y'c?=c?=bxu6Vҏ^W(;wjS,+D>.0e!A=DD] JcBpRFce TdXSG/ˆYIyҪIrIڼT҂Ɣ_y41c7a΍xyTXU9+#3M&^`jW:ܞ'W[4íM4`I$2X eR2Ghz۟x> HU.~CiNvpTT`<`jpB1*"UP`1ŒTEW(Ћ2Y(F]0lTC"hjP"$JJtBXʤcʸeЇ},H#,5E#w&B{IxPYhغqV~8*zX،y_JXO]/VPH";\%V-q("Z(>x"}N@Q#>㰠sFBzg*('v!c1Δi:ԙ)=i'Q (f"W[W݌^HʶfaЩ&_f6`Zc8Ͼ␲dՇ6dw3\FUOݛ`1=@I U#BQ^ZeB3 f@ 3*eW!O0ʅHtpS5f{o#y~3cf}-> `bBxi Y(bk{xe9jFWub˪qPboPǜ`M!#eBJyI6ۆ>Gngă8TDZ'>Fkhxz:#dD<Xc֭:uX8)yW_h2JKM HO.$K]PuI"P`ǘ768old<i N{22CHk `6 94b.%Q* ug%؊58׹W9ݎ3kv (FiBIj?kTcd1륑T΁d6 + VFA n:aCl2$cqWIpS2B$6^RLn  ˰^#c.`iEl;'F8%'э,՚K;Pƅ:3F6ښB:RsȺ믺9=MzprWFR+{f}!댟NÕ(;L(> p: `16u^MQf" Üڴ <[At)V&dZچ ;oc5b-,>9f ܸDn毖B8'D =/9PęԾ4-1EaY88a+v~ apF.*HI#pp}mzX$-ւOWKJV!Xцy|(> srO>D 4vxGh,uQ"/x|w)OV,rON]}_y̩iWn5! &K@+ TiocRM% VOmG(ōk޷hT_e^dvߦ눚{"jcaTXaE3/O_͕k~9 ϖ<6/x|w])̫ͬy@#:a{UDojƖ^t$soOT$+R>le?G kMV:( _0ryh2W,Ee$9zz Am{K3^}97&{1qȑyW4fy>j["~WFQkLF5- B8_R>lOy.4#oUz J@![mIS4?wKkˀs0tfeh~2OIeD8atq *y\6vŖ`&{1lk9-6yD 4fy>jƝq[y.ZJJ&m:Cꄑΐ;{R)r?Kg95/D,#`{/n_?=ܿ~gnܳkYSm琜`Ss8q"Tvֹ-JRT׹m51$+kkkje9e0A 6 l*| p7+0%UbiLA%X8XP0` $":v|W!@PխK7u0$*$$ Z \b1DLwH[Yqʱ"n~EI캕1N##0$*Nd :g  *8 BNC6-D{n1VWھԏZ$9K*weL.X;f&I$$$j$J%X 6A$[h|RљAeb5XL@1ѭ wD[ Dz85~k[V3II6gTmBGM,bR Nq g}T@trIsN, $oZ| B vw\a"9PYe`Y}d;<&Hc:mo\V\BCny"/4e9L`+ m؍p qF’n$ '2f qaE2IDU%OdWFeYYݏe&YSԏidB-+`՛7 `g%DA+1^ qum\)8d8梮#*M,bg"Hg-HWzWzQDl  `Li9q5٠@GD`ZtsUYyB\Qٴ۸F_¹~ fE]rRdRӲIџ "1k2螬Cϫo3^ԆU`x C}ڏI<1_~|3E\lLRNJ1anW@ 6LA.јqj, ^[+޶ fZBLYw-PKc\W))6assets/images-add-ons/learndash-memberpress_banner.jpgnuW+AJFIF  Pe$Zt;Ik|[)Ǵq-rkvA51TAֵn/c<*i`,RIt#s槢]3uPy2d2Ғky+;[ܼz*/[caG}5b A+YJM!K$ԟRXJM!K$ԟRXJM!K$ԟRXJM!K$ԟRXJU+Lq_"mUѬX2n5{P. XGF 8#{cXI$ F@wN5?^@3o@7> BPyU`}sl|πyvl>⾙kvO= {WFb‘O« Tvl%΢)fQXDί J2ł u|t& /ZPf,s0i}BҀ̣6`#_ Kc5k @LbP9hWieZ 7VH_1~;3_M wWlu/OczQRaWJpʔ--~q޾ ƋIrND@ӌeeS0t|t?fY{TAd /]8ټ^U9oGN3oUfA@Q )_j 5fX?Y i&rZ;8bH   ! "18A`w62379Qauvx#$%B5Rbcq?I"Zǟ}^pٽfp]2jA&ə<͒\b1 C2xtcic6)g>EؓsF9ˆS3D!ـtp-uk'ȝ"̹DE NPܦsxoLצWخF#E21^$;8,yXp*J!9ga_CKXg\\$siy'joٵa8>L0筜) :d'z;MN1i d&f$jUf9Gk:mqN (qZƳKu-^_K_]WLSi_l&Ԭ'uy0xԄA' EՆ`RY"ݨ7cMIVꨂ(tER5RU3 MDr(Cl=x'E:ԏ`<?ScL[,"gL@n C+~Z5uvʘu^9LE|2*)Sg/&nj]ݽsQFx(C~|<WLY4f?e mR-2 nT"DS$|l Ur@&0FZa_D,"DFA?,HG ~p5{MXb F]bkݻ;*TdfT) uثu|,nfK;IX)sMO;wfP æ+CM4ыtpnG"8mm_\$t3 w)m-J\wۈrChGqMtӣm?i>>"0a.Pm5z"r׫QcJX')UR`nȂPD7uu!#?_BC+Si<. Yؔcp`9(@H۬eA&(J0dz* JG&="%T"ϋ8D圢%n*z+iO\5nv+Rܥ[(( 6ڴjųvL[7f͢)6jѪ)lٺ$A"I RnTø7]Ҳ|;sGX#t-U=#pTW/ӈ/&a34y{%bU_.NHػ4ÙRr[9v!jb@vj{\ Ϋqc, v }FIPNQ( ܦ*NDu(eX@(U8DGq1bO8SrCrv}Dȩ"C&jEp!JbtɆ HaO36o7cٖ>*k%f[;JپȢ d3Jz<$av(vفcJuYIzDJ9v0,Rw(}6$Sn[;GM)[#b"bʙyTխ-\ 2$Efq!l#ډzjt#(vuڻz}lSq+4n21ĥb$HITUQ3& !r!p;*Yd`MddDɄ `sҶ$0n,Um;cus%ݏ\j$%Vn#*J|ߤaZfBǦ-:O˺Y Ғo\ʸy 0Y˕ s|DԅWpg.Y n`ټ}s1ĉ6b4]<QA*u&΢CABn>`K_ CirL(<4X`evc6+Z &&ۘJENa`7~pL=)}[z{ M>#K=uګQ;w~n*>~io,N|aعKZof;ywG>_0{WZݓkzw_[ʸO[?Өn{.R0}ϲF9{^Vwd2'ݞU}mmY@?Ke'/+:Prf6Fvf ZULHaŀð_vi?IGe@wG򀈇y'5ZL/Wz;Qir=se-ۇsULY`1ArVBF/80tmKUL>&1&cHWcE"K.u[TSv8u0Is*C}]+VZʿ kLXkV(sS{+8f tn`㱩*+Ҍnr85̩p휍v:LȟJJMb*b"c8FꊿtP@'P,.ܒ Vt%X @ !WCΙ7靳]O㗲1RNC*nM~%5NO:~b7nwdkKl<՚9Qԣܪ PA궜u@,oҍ(~'8c:2M$Ғ'Pfy G dCHS b9 S1LS1L`CTlǚn(v5!cQ7-O3wtufw&`+TZLfH,awE݀٩]c(0hw,kxs2&[7qV2Qn^eӰy7:m-wFMv"% "!vzn3)cKHO;q%13.y 99jg/_=t]S sL#YS"am'(rz7"Apt: 6\ svsuxF:Ԙ)\Sl'A~%J$cU$m?_W< ،;8zFQvvz7RuI'ʦfkyt58)P)}yD` 0)K[>H?S52ӑKSHZH#I#z:~qQ<~6Ԕ)vP й@nm?}JE=M&s ʝMX-% VOP80GJ݁­T,GGq%*Z$`Iʟzn"O7…X+w '' )g~\](J8/5ܝ^T3/%ƐYN.֯Ge6>#P\Yd}AS*k- 7*Z1ECbSe0)֕ғ#Yr3]6]M<示N&|1YWsҪc)Ϝ/v<3!ͫSx5y.Ӿ - ݏ sj>#^zKgO3xyg>}*6>n .2?Aea5(=w@mZoUrѫi:iZ,icۀJF!g?|?&;}k"]KLMD8QvOq9DDA= ʛmE*JT5AFlbTD4SDR#}5HۙDKGtr˨Vi['UUC4MPM 2ʢ^U$v\ lfXi(O) .f-SQU3\t#Hԛ5 dEZI)G$d D\2%e4q4B*eTm!|ʖ=[ "fT 9붶)s)V2d%eijH)%*#Wݦ5ڂSΘ9_}VeH'uXk:M2Je?PU)BR$`99Ds 9ox;R{AʼxoMI[g[ 7zE/ì-e,ʽД {N>_J/R-|O67!gP׼s0'O?k#{^|eS%]V?_Yf3<><֙ z}|y+όJ{ĵ1#VLZ?|WQ{91\lȇ@ǐDQ~sSu4n;k!{ IBi QP@!y.C&I"R&u*SqJAuMu63 V'$ `Zu_A:PRo9s).m0p&߽GR2F1>njTaEI OTAEUB.4I:Uͅq63Ty$ ԭ c]\m nid%PW$n.gAIrj50х&੦եb- ÓoDJ$NIO6[3J"ێERMd6V 2b Ձyu $ }Sgq)= %u D#H~ C+  KDnNqfêYP=u)kҤPKc\( GAGA7assets/images-add-ons/learndash-woocommerce_256x256.jpgnuW+AJFIF  P' x' x';&=x{<ȞEFi6m}Xsc$enF^lHOJtkaU4QT-&*YZE֦w_~;W"CI<w U_a].ze[-u&:xq+ד8jld>th7l*L amX{w]ud%P3Һ,# /3NTg<O}ح z,# qvE>c;lj3w9sGB2 r;} ld-Q47Mw;_# }|W˜F@ {㓀  ''''''''',`u 4[SPgX^YO;'wNyc/|7O.]=Z~'ؼtal\J~Qߕ硝KNyA+P4ڌ `q8M~GE. ~*5+TI=-m>q8ir?OjkBPB敢\Lwl_ɑ*H[(q(w;N߾uxƢw3_9a_~{'G>uP185jV@uVg*pv߫82 WrPV!4qs013@"$#5u||'̾}|'̾}|'̾}|'̾}|'5U46V2ljpOY%ne*;&B߫(Цʈpj3j[cTSdðW-kF|>o^SimqEJz|V(N8'05qkSBƥ{bURANF_n=Ѭ,A@_w~)yc+H^"eW'vٳ,t&2IdC8D9cIF'vQ䨹-ӾG%}7?DU->fq:F󅭉J}9=nj  "e4]ְ2ȟ*LeyK9d> tg9]\WϞ29JbC#JlcIN{J!\VLj@_n #Kd%7{Knx+UVk*mMFή>,M3|#;'tZY~7N3ImŏHX_lвjgȄ&BL{tq5h-$:[d~\_(O3ySMqYO7=Ze3, SqUh'uI]c kHD0NG Tp/|1u1W]"/JtSYm>s)dSvHMε"n]/ЮgؼH9R@sj#ZDkx_ ֩_>+$1{S3 eLg4YQ҂F;RqV#Ӫxu/_׋ܿ|w^/rxu/_׋ܿ|w^/rc^L[)2 !\kgųٺ"Mrz 68mC/_׋ܿ|w^/rxu/_׋ܿ|wY[uk֯[yI0,*AS}F ʫIۮ+#X؟LχlKZLL>{O/dʙ`HO鏙}Oo}mY73}|ܙjQg2q c_a>>e_a>>e_a>>e_a>>e_a>>e_A !1 "2AQa#P0q$@BRbs%5Cc?ozmM=6|n,fYohRʣSZ96DG^C%^ΥVܒ<{$~DzGl{$~DzGl{$~DzGl{$~DzGl{$~DzGl{$~DzGl{$~DzGl{$~DzGl{$~DzGlTɰ%?NW)Y$cq5\0t}6:-Ϩ]ψLcq)pļY*6s%`V"?S0xцqkvu::sTXIWh+u-GHG:؊xVX#tPST3y7SS :Jz:(|ά9%7uiVBZ&4\w!HFgdo8ڮjy~mFZߵS {Y#u< V{BLfh2 [SZ99lU+2fǐdxYO)mIhplU4 `Ϫ2O˖CS\o <+n GNRS@, ,h _?ErMf;ѳ PwTZh‚:jhJQGy8W<ڊ :z~Z [1 Y/ǐeR_,|7ЃċWn,ēH)]e`pr$F0+ -~~ۥ`p1AǜkHTR kq]IR S&9TPryg̒罙:O*n< ;ETI e='~lp;RmںxOO X,uMg!0u܍4IgTRl؋W4My7:nu\,[@$hƺk,0x*!/h]kW@NF2wz191JpOkݏz>t,Xv+i֦+_Go-y֥Wi <84Ò3,iU^$SH1vJu\ej 5wUPrHRrEF>Cd7Jjx䤦M3?NXsyǟ 7"O* bpM' *Kh{x!uj.4mͿz>t,d˧Y& n4r Y0M4K+͝8*[v/UJ t-b˸p/nP-z8vήI8MW)*l3 z p$qF[FW/8 Z:JXpPfS:Y+fꋧP_B~"M*ʤ-}?6cOMTѪT9UfDbRkuJ#ʨUI[0Ro#fthN]z}6~XЂ;/[=4 ^GSlJ5jsT\"F٬UYWUrI?p^Opnr"PmE^΋3#-d]J\p{ Fidmbq̦z89su%KI#J:0VScbH] z~X&$[4,|?Am^E4k$n<A![Cc]7ac#N,Eh̡$KeNIW4r*taAŘE3U/ \[p8x|!4@&ő)YZWJWw'V{ -%9_u>yq;U>nA( Tז%6kU>b<nKnJ @,FY${fתqM\@,ۖWx$QBHUz>tkNNQAqݨmz!U\:.iΙoۥO+<2Iѕ7SӦxHWySE%8/!cN7K1_1o6cycͥm/i|6$ӚrX{d*U2~G3Dn"&G cfBh$~oa)x^:<`$U+w,fG=6̝ϬˠX8#ic \Rs|ozmM=6$!1AQ0aq @?xiv<rƜh2mWOQk~^S,)= Jz!okPȼ%Aflׅ!nANj%S(!]O3E^zj¨G[r "؛A'CENU PA6V"&?u\`P?ޘ' ^qō*N!muŠw$_2؊>4]#%"E.5NpJ\|k,]5/d(Jp6сN{ !#BKh0K O-xC`rnuxRDdVr(@Ùtj&a>+%10EjYE4ZP6TB&`$('>$(.B8bb! !!M ā]#bv@0bŜ(*X_~ ~߮q900"E|8nhTL0[vs}EB5a]Ұq{3HjߓS V ! T4ɩQIw(|ŢcNDKmdRp.NdU2f4C@{˼4C@{˼4C@{˼4C@{˼v慙P^+ŜPk6x4C@{˼4C@{˼4C@{˼ъrYߜ袓tADz FJ.:aJ3MvU?1MR6BF2A XRMMſ`go JTU l`lm z@6=`@ !1AQq a"2Prt0B3@Rb#C ?39g.s=s @\z3L&`|L#ǵ}=_oj|{Wھǵ}=_oj|{Wھǵ}=|fV+FN*Osg{̈́bj1*KF15R"țdJ+*J*Gs{F[<˜j " ,Uכ"tᣘ%=__gVN|g^%1. KߢH>8e-'/BOqȖGzf4:bcv[n)8Tok+Kwns;Й#劔/Pgq^ʜG@N@v># (IH1SV+uJRyYҩ!v1J|Ԙ5xf]wCT=dod蟵!A]n]F[ ;fWbXf)qb8+gOl8jc1swwR*IS-*ӎr4X1 @O[Ec"C@F:OHeEbTя^v$P$FI!лkY8KT\r|8zV2ڢ18OMrx+eל6?Ɵtwi&mFaPmiŎƑϻs޾:?I} 5ZS8頗3#?WkDmpG=庨tQMU$z4֑/h}$T |êgU2+{=2'5zT+Ռ}]+\{Ƒϻs޾*RC$LuG5iG]V71;h? &b_NKN8[-Y~T gNwcK_ߗT)bI%+>աV1}Mrƒpi*4^ؕhƑϻs޾+2oEFr@HlK@}h2#x.8+Jټ6bR|>+,b4RB@߯6ي).G>GΔox:knNCq-9lv|2JcG>gzR38+Rj=]6mqy|W涮-:WT m6\;oӽ)͍Fƌ.WmWH%iZ>3oD&bpqJ!VT<񖼌~{:w-6w+M<#G>gzb{.FWM׉긥R]5X]qfQ86"QL hm/r]MibV5!$ץ4 Rng-oqrT% {[7HԞ*ERZVrtEA~/ES#0|:39閔d Q#;.r{2V668SqŸӎp?)8O N Qҁx6O lSɑ<6rNM699t\46ێp?)8O N"*H!߂8@,;9\f\mȉƾ£ipQE,Q{#2܎+ҌE%gaTbI4Ya,%l+!hK@\z39g.s=s @\c0 2VP3!0@"$1# } '>p} '>p}%6dK%H@b`)f)f)f)f)f)f)f)f)f)f)f)f)f)f)f)f)f)f,[x wEIB?q,F Vmj5Fs.ۇ=rR,pTn5s VdAt]"ʔy,g[X.Ţ(VJa"raqӺ34WQz/!yJ?I)cvK]S'n*SD;;LtO>r܎8jjf/17vdŭR4xz>4ΫSH q9%iJi3˶Y)oBp91M;|pJ3 90V? &ZV&z͹\(1iD¿PvᏓ÷YI; Nk/Oz]nn'r(!ߞ.Z2I#pQݵl#v1[VD?.8֢3,rב%d7dz@ P.7WJ;M&*S}mzJd㛷C'?2=P.5aK_-ҟpdH)V(SK(ʜL>!kN C]'nT4Dycud?_mudIl)>WMO5s %6d͊A @La^ Y%P8Rc$Tڐ?e)Q{K 38RM8u 1 lbe:º`+߫ p >c6D 2<27Lb zM&ˆ5d/J;)t{?, b(fqTx[}4+6gf]_ўz=R/utkSRL-L[/Qᵞ1 Yh}KD@?xD4J/< KaRD@@D?}5jZ4@8(s$_I5UG,g Pf/hFG$`iZan9l!Տ_8M. b"_2n*ǔt:| n_OhJLc Q<@L RDŊ)n+k_juP {KJt@*12K+8X 9e3 C̴dAsWVJe뤠е FA&ٖf/,oJ= V߲s; J|-W}4C1xs-U-kC2*Ko((Ne^wPrSz4]'-W:N`7%bMm 5V5V5V5V5V5V5V5Vdͺp`YN[+qA Zn?\Zn?\Zn?\Zn?\Zn?\Zn?S3mKW= a&+UW_NY|ѻĝCMĺ|A+OS)>(tu~#x-c K`O}>`O}>`Ou? !1AQq "a2BPrt#0b3@Rc ? }A>yPa<0GO# ' {UZKԓ 'Jf=$w6/}ݽ_wor{ܾv/}ݽ_wor{ܾv/}ݔOVIzOwTɱN :4b y56oGvpGV!Atա P@cVuOS7J5uqh@3BW4ipG YI& 5T1 6frQ06,z )̴/.@QQVRNHCl=86):4%lYI f#0E@9BA 9Hg {QfA¬Tv\?Uà& *}* 8`Z3I>$]6sT%uLeK;'y&It³z7wQkW js E%ܳ C#8&`UU̠cV`  \qUbr*ℙ6T4XI;mYb Zh<QBƜ]8 8 "IkvHѰx08P T@>˳=MajexPaTɄ g)`Ptޮ.IZu'c3znH8bf}Ӻ2TZ+A ҂FylK+qljc_L%;b2ӢXҦNT{U&}RAÇUSo F[`<8O#ڋRT*(u韟C֘נ4gi" $I&I'y6eHlY"v m$H'iQju1guN謵*R1o*lOpbI*ÀtELG~6.#gYP~9=sρd5?3^VF 3 |m2-I⢏JdH"@6e(ST4`DS l}d" G&ꆪGE5 ȳTJȫ $eO_-_UruhTfu^K‚0H.WzrCUa|3lg {Qj^pu*ckged0Wo0l\z.$қvnQ ]MGy,=&̬ UTN6*hdRI^=,ԫ jw=[A'5cM6бjf&v iNLm+Q1,ܤZEAv:vNʪI?;8O#ڸL1u»ޒuES*SmH $ AV HA3;NB:_v2|ETj` Bnt<5(7Z4zE .@qv0GM+e#B Q!Zo*IIUƯn5~q[_jVWdZ.~v ')SXt'ѨD(U1it:#JTeƯn5~q[_jVa5yPa<0GO# ' }A>yPKc\}=}=6assets/images-add-ons/learndash-exchange-wp_banner.jpgnuW+AJFIF  hnu:O?Io1Ps*w.tyw B_]N8ȦY5S뫗m7Ew[jCܛ6ۯkmV:cfIɳYkp=ܫD `$u.]=>y;-9D{SJJJu;j&_!$]PMf[U=wN?$@ZUX 5kʓV.rߖБf zנEWatO\;%ckݟ!/>-{2hvLkͫQ@Zc\y}>L갿 .܉dNР׉B[599Z'lgxV]#MN֡F72Nط(BZsn!e$kCP|OGv_ &c.,2 `!"V #$&ASU ~dji\ԡH-'+6k? g1ӟ`LnqG²n {WR!a"Y>UmJH)xW+Myc¢/wNCkyCR'J"D"TQDhuJӗ}{e#;3Zl@A"TiK DYאg t\ u&(8olx^/*u n[hd aC_S$ֽկҟf4v?b)Tv˷6t3{s,ŋ:BIRC4N}8QG &ર2gjMa.S=e4!Ȗ?aQP,qqd݈kJZIڍO<];hf>h=*MqGGܷ K]c[]g-Q0c=t]",΄:DG>"kyi9qe}Ds7EDDsJ5!C YV5$**_"f)֫eܵ.zj6ҿ`IU>s35Mn_ ;M ҋjLcHfdhT/?RwdUḏqr[Ldz٣^:l ʞ)ť'+^GԢBSi k#ٕj0lsJodD}1z4߲FjRwN;,1)gfGw[ Kʰª'|C0"6V}my.RQ馂{d>.<-C"[fakMVrœy uӝkz:dYǔb]PʬUaP leK]8;unU#\bGo+8Zߌc^8- *Vt5.z&[lBkqxX؁j^W[I_oӊ WW><1c96OMl^Lc':kk_hCjRi6BsEk(|?86o3>86o3>86o3>86o3>%q]}85L֬ G BwlqlJK"ӔDVUvEMŵ5x% ehrK'.\j47$wH׼lR/.= V}uEo5Zt[3ؗf _i}%oM-nKTUO =)+"R_b @40!ŝAqO9MZ0BlT ,qm7cn4vIQWuC̆'Ea)ΥveՆO|/:Ka~7x!(oERi3]Sm׫8Z7dnU7b^7KQ_ Y#C rqr3 AɄ5 RJlDĄ_yDe+a92lH][C6ӯW#/]&Z`@(u e}kj9nID0) ?iR ̄E_$2b!%a^,^!ISZn=zX lR)|iS2]R>^Dl_Gr#Jhc1k/(ɋ?u(~/w@iƅmL v?O[)h敕#U/5v OH JاR50>H,6-6ڔt8y(d^LO<\~C>B^- c,=9!)z`X)/J՜g&v,vm l)n)K_I !1A"Qa2BR`q#$b 3Crs%4STcdtD ?]Bzoik@7vm^p=ot7MNk߲+m>;vm;-'UMLfԌZjOՔH9!?zFU{b*!9$aW]=:}wmqj@V) +tqk.Y7̸kGb d .aD^i4ר.M1˯wE_6(c]ٱ'kُ1eYԑ,PMj(x([t-G&UZA֭Gݴwa΋<1rl '{O[@\?IJ4گ0=mDbMoL3uaܐ}'v-.C(XyB|3w/JF[Dۨ_)iܲs;0C-$#ofv: fű}8^$1mwY7:+ 8E2Of;@rHnU*rJ5~M #4t}nm[!5; tJ<7F3P wk vb=hxy)Arm:_)nG5XV yC: #qس7Ιj5i"_Zm0uQ屽ׁ1Ve=HWan<}ȧO#DU3@I`'Ӷ$MVz7IUUQvBE=5;1%Zo@{1F9* ! :x䌫'5}5ժZ8* UJ>םj-6AzWշsG'Y ^uٌ3WwWw&K)$QԟsF>aw(㳱ni$ӯ˜|jtѮH{XtSW,KxT|qV AI!*3,uCد]UT:p]c*l CjJhđ?E]Z䍢x,`YampwAּ [JŖcXnQu`U\Pϲ==?'LΎ:V.gIS$~/+hՖ5?uH)֏wfij.CUTxYr\>^.-2:{fY8_Q'̪鯜*qk"VWy`z12 mj^Ve `#ޮ4e=;c-2,SO2ϱ*RE 8c?kXk"U6 ,ZQ@ c^qXϬ}M#n fY [R?'4sZd%~־^Vï20Ali*j4F4| yGz\GoEbT%j|*66vnҝך7hs1gmAӥlt?9|H4x,qFݏ,ur^#m]`>^shQO =i|FM1~-,nJPw>\.g2l=e]OK&Es Ndi۟jly2ZE>]$մ OT!R}Y;M+؏͚˹lg;N$\>;PwϯnWC:9a]g 1ӆ)i= ;mY~nek7re>ɱbm Yu1BB;1u>\sV+rt2mTO nNjءZkven^6F*445WVEOYGC5]kꙆenL]6HlֱWS61䷘,IíO7~Ot^d$nj [22^)5*p6̖]A~ؼ:Í6*g_՚Ğu%)ܬ(2^fǂF{1ܪ58KYw@}KW5N/go"JN[p$q5*r)Fnkյ8K ^ixfuVIJiK:3|^o1vHFdl)#z+y[iJ qD,hKٍ=)G;.aUG. :B9 /$n%Crʃk8g8bK6HuyfpC+)*uVV  (:C` 8sgwql!pd`Wy2y٭`m٥qp F[X4!5f6:3TUvj={ݙزKzNݦIOpܫ ILRjIZ{~Zдݧmnxf ʣ}R5s uuԵ?W6G%]d>{;vW<O4ƄLS4+:Øf߮aN6ug\ **,!qk1NIJ lTlrʻ0j 1'qIfIdv:#yf"#VŔF]"}P$vu|iߪ\zeJGڰ5گNE]KuÒK31YO%!1AQa`q ?!2X7!5 UķT`m`\{#&EbaǓE *ċhg*kdڅ`QDXd@u>HX$GfO bQ aC5!9U>dt.Bߊ[b\(I6ؘ`--z{'*_i/.qFXPͅ6D ZSDH@`h(@6FXB6 %zRk!J`3rULxkA/< "(HG t&VP&AeDB3G/ķ[q 3r 8~-,PPp[e+ᶌiECaT4\L%&d>j%wQⲓ&!jq ܌F:1u,@gEC@mq$`R T1"A [NIa5>ć;담J9O4WhS!(ҥO&PD.0co+'hbN}Z CxxXE5O)@ <$H\J׀Ʀ;H I(vL;MΥ*SzA2!0Р#DY44D<%rOC*0Zkc(Abو {!3:\ HSn,Z^~.q1|)RG$ȥ+Og-$jd#x?XؠyС?$0HB*1hΓ0܍:8ŗk`G6s?GLe@YɅicdwd':kKNbR "7^ZR;G-#,"ӧ1/(¢RVzNL٤T%Q;BNZBM F̊2`M5.;d/tlKf|R@ iwP}E,mH m*1h7A|9j;>pCDž%Tzn@Rb &C84?nВ y?n1.rx+f ʤ`2J6W,Vj[*NRbYe+# pU$TXcΔwޔ9zX1H P=NQ "{#D;.̩CrWv17OHߞWp ~(2H!ъZs)@EUr Q Ksfs;򉛝o#Df{%(bc(Pb( "18>Q q"Xϭ}lYV#bw82ЖXmv%ˀQa% MذV`Gx\hۋA \bL7JZPA8qiJ GD8ʄD*v ]j2Cc%-=`8~Le݁i-Po1V!sIQWU0prV/lG>bf،Z*hX-#tr*\+[#%!1AQ` qa?G9wE{i Df#4 )܇` h!#9"+a͝QQ6]\DQ"i"z~_SL8$@[DUC3o"%BTNĈUsQAa9=] 5ΝaI1 C7 + kA*'] F,kzV.iftc*(+W'X^4⪪v}cd&T6; D*d%ODl9`(sVbr(UlSX7L!,,^vU1m[ 09 M8Ke9*;Q1_.wYS{&aC2a*S'Y <*.D?x[ 0r%ޝ֍ ǘ¬GЬ(cҘ`(@4D؏vOz5$S kA"H)5[h"8*@ZeGvb_=mJ!51&b2PHMt@bPb>ÊӸ;+T5_[NCe{Wub(pl5ѲZzWĊ3׀M@*t-4j, K$D$ #ib|ThqVy9yF[jfJ0!Բn2R&#FV8z+x!m3fbzǿG0ϋjJ@ofSyN8sG%q`+1((6'268A Ԡ`D?` Щn@ y"' (8gULTZ.4ehkyjLPqN2Em ~^ըV Qi ^HLU Mm~I.Ql- 6;l[iUXu߇ya]*RӖ*Қ[qc{G sZV;@E-Ph ymgmi!%8y Q2H**^bn>C:XQz6S=:̳eabFB_9T7453TcӐ y&t;c>`!PU)e(K(puRـ 1`;@?LLx 5 "8@J0j.t.ӃT5 g haZ=^~)]xKwңy$ 9]rm%A``5fe u897F{#?5财MAڭq\wsWA\^='7oϷZ#c{>^KYInCIVOAPڮ`a.U"խ5ѝ7Rۢz ӱhھUTW&eȴ;=(ťcՔ*uE@ ȳaz`b-wrFpM뵪DDaY)#d (A}cp*fð^92l7>Q GL>JwFY~U\ LX`>(gǓחt 1W}su$iZVJW]KJB^ӘM.A's0:p@R,T WMlZw+  D|ѷ6d֡HSRjˁW8?:yvo:>"|)ү C>6g7}ָMaR(ՊG3Dtl͡o,vuY ,;~H~ivVbUH W$1Xď<[DA5Uawj=J9Hz8Y1󩗤Bxnksmt@mUL|%iv!ݗ[Zoڶyfm.։fl )Jtv)x%/Ad}_斞qU9%}pxXZ&,w%Q@wf-T(vE}Uu6ĒAxd2\.Z+?m)KrUxC&Ohm1T'fNieSG%5$ף4g&),vē\tsM,vSzzG]'i/8Y?$n6D+ئNSizFNW%eU4<4Rk+8BQ1ŧS$Ѳ__/2jO$~}#4$T47TMKc%h7įgL%mJ+_E1OA_]ߗmƝD)>kͥ{31L.)Gydfkl"sS,[,mvh ڢIC[{gjԨ ùcΞL' qD~]? ]0+j{3kBt\-Uy=|rw=j?^C{ϊLF4n@o2U_J ZWb>&|\*'BNU?ofύ4͌멏TҦ1cV}bUoۺgu~n>ٙ?7!1AQaq"R` 2brB ?"-0;CXʃԌ&(Y<3@x ɿqVlA*3!L~O}tNs)!i4NltsɏmF+M+_ ޞ!kfj8|ח;l͹> s=ٰ\yրbsq3ZK]iJYʼn ~q$<0KW-G?)mW%*1n83N"k`VȥD~/M5*Up"ww:|o[;*fxZ;"9cUjJb/+c"3B2ohk7Lmjem9kna~)wM]NQ&_HWO:v11Lxn,a)޻ ;x~lN YTI2;ͽD}NQuB?M9i7ҟPEw<˸Ush+.cx>WI?D|'Y&қ]F\I(eDQ&}'L2= k7nݳv~S?ǔesS0Lѹ]7G=/7G'KHlv6JZg7bɎ'NySDvrR5gܛ4ĝ \r+#yW+~rMc@<]ŬHK< tM7 .ĢDO2.8R(lnT r>=r?jW5F$:#}|aUl s8XDϑtmrBf]V& s T:7l)^L|T̍#EW]|lLW5RkMK.FD+[%loŘN~ )Wɀ/alC;{%Rg6VdWwn(z6|jr@*H}_+sn-8{VqJKJπŞ"mT[77C4ZE=Gr߯m_{w!&+E5}#K2FnlNcq])cSexkn_ӯʡvq_]ʺ ,Y23? nni*񯾄 v_F&F5QH HlݫDܥ:WLWe4Sڢɷ-Zl[77W=3δY|cgeDܾ o-AE|^H뛫mCs\h-[l?޶1!jb賹%#wr]S 1z"Rޡb9Ou5in` jhhD аYuxQ DY4&X Ʃ `H=Y{`Co-/.OC473lV {`xcƂ{儼?O5==qBcڜb"Sm^b㹜7eډ.k(O0zҀZ}*#,q?2 6345P`@!#017&ɴ*bK&ptQ5x\S)`u0:qL\S)`u0:qLj8B38y?s_&xE^-oopR7KuA~-U[%_þĕr$ Q=2X)#^&*x&x!r8$>IyXwޡN3[<Z CRM__˂%ir7cϱvq&c| 0hM7Dɓ$cE_>¤rlrTQLM_LYU ˝^e,Dk.dKKuͺc7zINT, *^(qUk+[,KK@d6ՠh1De$# B vwaz8o/ [D g nyJ5+Kuͺ?қxےTG)( ˘$( QCn1}ҍ_GE,IဥcI8/]hHfpٌm}t-n;Pf0xS5A֗g}kH:F;{¡źe $X7m&) 1]OGș=j_CdkăYwRQ^|۪ma nua||^?պNP#\XbiäO/w4Lhݗ!UbvCR'6lb;rM<4JIy@>VqlߜW9ME$-6Cz[ޝ\j\Rlj wo;XOxM X1!M58{Нӽ?TY$B^ۧ2x# dG,Aj}:v<r Ӷ6Y=a1 2TCYj, .+ ׷it\ |!z,eciӴr]bOId>6Zրzc$>?!oH}~2C<iO7dy$>?!oH}~2C<iO7dy/JFג3 n{0ZE[ B[ѕ7?Cqfl Ui_j8i?hj7^Ew{ӭj<]@PI'@Ԝf웎$/^5:_vgk"b̧/bk(gIՊiYY# RVr(WϱLt[> 1|v[؈Jj4?~A(~ٟ e$f8ɚ+n~8dq׳m{wzE+l|+14LWpƣIfՇKI@=1Z Ěm'k4;NF('tWxER8 e牘GimOTCXuCn:DL(ԻG&S}Ҩ+D LaIfUMx+T;-k'i4- (O'Pq嫞GY=;ʬ]&F2M'bx$O8R@ߴtܪ2Իc,5m(RpGSe̬YYnޝk2XA Dy®dzkWYg]|@޼/$6'w^k/#5V%zw`/ٱ|-lR"Ġlu,ie"&{ƽ%hK.σ^ ˧N3 tBЋӪF,ntsבe`-y(1;[7H#]7oFj'0򯂃Kq9G Cw*tc\K̟˞IVΡ,ՔdUfR<RU Z1+$VbAʣlt1_;E(/

      )f3mxwnԱQN$kb'7>^MW)xNsۘ(HV5iYn!Oc1oIni )[NGnLD9d^C@In1ډ6ջiǖ{}fl}{0nxiK~=ibHPqOCur5Z$(oCY\w6ּ2Mg:l+VmzeFϯi^m+J8zHI+\;E*Xg#QbN%y([}? #~A( ~s8"I$Ymm~N0Gz #|hytW"Y*4t2##Y^d8bD.T#j6ѻT2i_B_OI? m ,Q"u"4P<r5]wǿc*D4M$2={XܝXI#tJd3VǗݙZQc,w=+Cϐ=xxv`yz@HDGe"&m4x%YMAܢ"Rұ.]I^ xQ՝xVmGQ3LmhD4v5.yLՐݱVz^ZG,;Y6% bWvӪxp'am9|.^rs/FjhZ#(SFf:xb]aG"4),#zWE"AR,|'*Y5:k4gӏ@Ra&;h$]ado͌-F(-l$$r,52> 5官6kErͦPd*%Db8Xo“]{4dbYL+Y$.XоofI@?7y#B4؀{$j($Ԝ~E0|C;zyby-GOmTTwԂT6cݱ\)Z0$,zv8eω:g0*3{6\O%[uC4GlքDr8P\ʣ3"7cg`fxoQe]-y(1o1%ZT)yw0vc3?{C1v7lTִ+ DHy] mLpSaY`Z}jE,M 4]%lˎ@ X+u^UO[^?#rM;tYRū,u{-ICGq ax`:5bZ#>-F}#&f#Rԍ +!I`cFТiv3ܪJT30<LDP6S򕿰1Ǘr}|&}oAW}ގ>?62viK4g}{f^O)l̿`85sM;$c>QW0p~S)2)ۜB1RwEܥY΀pJuLn 0%*Bם69!"ra#s yaJѫˤMœE j쁟#Q$Q!F2NrcP[ 5fҼy~QlxPߧ{ƘYkUZ+3!kavY)Y,'lSZܐB>q(2y\y[.qwfՂy Hk»!I61%T+q<ߜ|5'bUF6_(+4ui-X5#&a5:d48YC6n ߈[`G(n B` t NNI>LG㭉'ׅG/^I(&6*J+B2 \]<>9MiX %b{2 yW :.jR3S18)!umX|CqюR  | <۱嫞GcV9yuZw}"gk!ax jG+7P:4e sq1 "w$uk5޳;( gGc>>>vQϏ|}|31ge;( gGc>>>vQϏ|}|31geȍVӦŧZ FIII=d*!1AQaq@P` 0p?!p (;PRVa}Oϟ>|ϟ>/\xL&h G#7wՂ ;NT_(٠@&v#{wzpєb΂a0)Z9Lxj]:r\aD]¬ؔH8EOR]?k=rmR& =C?N|CNh!9R~"!:g^^Ttd͐=63р` xv뢵:!dP!iB?c79 }i#O},==bgfo ]A)QjT:}i[KPИ#˃[Q_Oj遷%%\tlls0o0Vs`oD.dQFɟb8-$1hGUQ3Eǎl4QڤXҤ:^[q6W<0fc}Nm&X`ߵ(!xɈ"$R_zA$ oETT q1 dbg'"<}O/gʭKAꀡe%q}A]@k_:̚"bC \ 2 }ghm+ތ~HѧHprj]}Ӑ@Cl6hN2J8PB/^zׯ^zײ[s5!0q=AAPگ%66U1345P!"#@`02&SV ɵΣW+xk]T% D㬆qFC8x!Qu(:god37Y 㬆qFC8x!Qu(:god37Y mh,E~-nU=&7K*pɢ/ỏ.䝠Ŋ"u}$_dfiZnSmY45Tܬ3%^eeו4!P4L2gLŮCDzv5y_ni[yɚWRݯX73i}LDBQLU&T* 1enpHݗLda ˂Cj0OI0n&wn0lNj6nY'I2e4O\ճ)Gau~[kE㔚7H%fA"jYX29misdڬQ6 I-rdھq)7ve.t-0%0w*c(6!e Mr" 24 Jo#8+X,SsXs1L-G$uğks썯;Y2^`0L훶hsCVifdhxג cȝr3OOhG/ZĥY2!sSɑjwmIg)oUIŲkav *ƛbs[f%DlNKȉ%"$ɤNMf*uݿDEl^dq1zH0y]tQ|b<潱/>|؎4FeMH\*01LpmգS3k>/KrUΰ&v ~'4+EdFұْ)N#dbvN`IÁj]^ݲ͜DLs%$ʘ{GK4ޭd+)nW uoc2On"< qc@t!^lc3 `=eUeэ^cZn@Mnke6!=v1&(sh5I.P舕dhOkk@&egaR'fSo8f4]R:ltJʦ;.)%j2.GH%/CJe((۵:SJ<]էkʰ1׼7*jIԄ7:Z1 SM}_>m&i_Kvn1~Jkyطk48)\":˜z{K׌J*ZEG:R$§S/<-ؗO-ܭc.lIľ"y ismsS]^R}9egh$ *!33"̻ RO?+GϘ>Nm[*jnϩn7VTƍpadidm5YJXXpm"Jn_j~sgD/zM*JG 4n|itXvGh:foC2swdӝW;q w )@[e䚼lmf^l"ﴉ2hx6#Ow9y)nľynkdsdrL%hcOk}h,j-7[np;NWLYƵMI nniYP [gu yjӖ%]ܷIbi'{WhDBqMI4%|,*zƂ>Ux9VR͈S,}$)'*aL>̲2͑"H9]3$2$/÷6#=/÷m1:ӵMybvD%0wּqK[k#Db"Csn!r_+SH \-!ЊQG$Q0$ J@EA< 5 e)UPQ9'#[#\8%{ q;HQ6{)?H 7HUz qW!o\$OZ?6Vo+Q$dH確*UR fu= ݠ@Cj?0\?Wn-Zrt'q;hVW6e.9A%`2&ۮ{ör;}ůWkޗh|n/}ElT[23P'AS u= 29 $NN9Cq\i7`BԣPrja HG/xm\[?mr+W+/5~ B$6^Wjp"L &>5 ME;m%ñ` XAÉ8DIӨƭ<;W"$`O*Er;}ůWkg7#x E,I̓*ƻbxo$x@2 *2QԪ,hI+\$^@O5?zZ|Rܩ8Nȧڮ,2惫H^pxZdXN F\[ų.\`e,Vm%1]Oq3z 1O~!@A{8HmXH+A&RYƁ&G8,Ns;z9ħHʭt1C qLFwD\be`diN " 9% kxR+\-~pONd Yt|S͏թ>G39l7#&(c`'U426dN"͕? +VW)2s$wN:S[#p eeSefv¸OImbiTP7Cwkڹ x~ھF16lDr*Rԫ3m?JmF(~+DؖvfVr`RK̆Ytg 5џ.j\vgţH4adz :k`E'Bkd 8*cNy ?Ujڠ0ʯ(0Ӽ@EIW#߹HqKє Nu mGHE;{[iVEqd0#ujP T" ((UYB̒wIA:o?JoY-̰s#hA Yi3m.| wZ`th fB n-v?C-o?G9\Яhi$3?A!BtA?kGUW[ͮ]m6muok[ͮ]m6muokщ\76V73P!"#124@`05TU ɶ:SnaM!^c:nv0æc:nv0æc:nv0æc:nv0æp67(eQpʿnGE8Cܢ ]d&S^A#n`3S69.QꕥiJܗ$}j `&Re3$jEyH%*){Z)i#S}J$œAT-좖Ǫe`|5Ƥӳ3wܰŷh^ΘvnQ+e+/]#:5W7dp.01F6I^ ,CţZ7^j*1u4`0/9 $nN>]Lqy%PErٷʘo}f::T?Iag+<:@o&V5QK~ѓ0KR-[cE86ǥfX5kҖV iOS{@cݙ@!Mos@'.a]BnvMoDqYj[ N^ENv%}?sJV/dI,T.{^ 8թ[T Ĕl' `IZԖ4)ǏH̎wjh\kWuft]ٱk-eXo\5z[EBHܳʃޚ_nN8h`C4>"v_Jzt,2YStp!K{֬^ >M{T~ܪ #yw 1XpPt]bVo=U)EeQVCIξ!V NL+}%vZ-KrK-~SHsVX %Dgۣ;c.* V䖏u?.IhYBQz֦1[b-jM묺캴ǰa+U.6ۓnO덹?+6ۓnO덹?+6ۓnO덹?+6ۓnO덹?+GrIֵI_J !1AQaq"2Bst#PRbr3@`0C Sc ?y||Q(36yƞWbW}^ъ1]{F+hwWbW}^ъ1]{F+hwF$^^DJ A5$QLs?&c,\iH(<ᘰ(4+\l }^&×Gb>z` Gfy#Wcv&ړ`,S`n&Ú2pR0(w .nNI_Y"3[/s'GCXrQu 8'Ap>׊WVNƥIN}4w)kuҋ+qevp9TRO0&@$ D~=a*c#׬uVCvP`efJx⿓a3n`b\iauWRQ}~n-rGHg[[[x>׊WVN . 4u#ѡbUF%$y$؁dkhPcQ`Mo#qVhu#iśum=W:H?q8Z,l.2_N bXAϽka<7j$5c7eUQebXkD/cҴP¼c/g q>b .iOJ?vw'gQ\ \ծ5O=k)_fSj %XEVFQ9Z%^X]ypF]Ϥ bd;{rRßt^4|/`Փjá$b5BE꯵''2gf*6Q@eBz^J,`[1kjPL>$K9"/Fr%+3$YOA#g T:+q*SY%osRbLr ټUUm[n4o$j#zOHSF,R1C dk PT ٬%; Pu,8<2_N UGjIKYO^1$ٙ`J>VFvCR)c Gaaqf4|п)|sa'$ǐf-(J$A()CFċފ(#P~kuk ( *l5$Q̬-&m3mc=_%R51*-e!}q+)RO8?J;A^jH GXX4v.5Up?nJrV٬f`o/krDe_VA %+z?4bߍr=H㨉1Iu%K5Z1٘Xm3)0`8+qfXشE'xEKmJ_p y2sЃҭt?,*I [y뗍{}ܷ<#[AرҰHWSJlAqֈ}٫2pԲF |um#A'ڗd+ʥ^ qzmON4epCKK 6DDPC6b͘.N,KoDظ Xw&&Q,@U%G6rrqƓU[eCc@y$V&<ن.HүFDHْ0?d(0i-^4'x^iaNn;OBڲ+ _,4Y,J$wAYˍQ0ɠXgHo,nǬר0z/q^ W0z/q^ W0z/q^ W0z/q^ S GE7G)!1AQ0@P`a qp?Sm6k:W, E (PB (PBWvM`}apR6S`=< '~g4;! T01V̡Aat 7$ 8|Wtb3>l+bK|^ GyS +&frX0uH8$J&EOCŶYAKói26>G|C` !A"o !bX Ady6Arr8Iq@A|8-ni ^zEswj71K@s^vuKYX#xd+`}+A4CjZ^e?=A} SgYA3H̏ lWob: gkCMqNfpÍ1 I>;6/iH LCRk+ef"0BJ&ULSQU$׼Cyd?OYj{ammY043^ PD2k:!Zj \Ɣe?g vAi㠔v3KT%F_tAk趻\+rH j45o6P DDpGI h!H g-l A5.=ud1BHQ\b Z'6E3&5H]i XiDoK>ʝ$جRTV XVR2G*8QL6(arWПQЃZR" UzѾVb24B`aF(L}"*""Cs(XG<%[PC2u?q; ,(8Jکl!Mq< "54C^Tz 0TIfoҋ,\٫!:#ҁk)לB) sek X4Z\>JhҖKh4Ԉ9O&ep?-Hl&w{D&!)nʁyF}^~zd| |4ǡT1{%/g@h׆$"&(N"+~O6z{W1Bƕ*U: UEw!#{'p] N'8dz F*M. 5EB0l3 i>0i[ mQE%vn9(W8`RACT,0_jH!seRX=A V(>T :H ȂJ3qDc.fUrΝY"Xy5uV@D*)9ʮ* .W>3x)؉Q\%h}oݍh[J{BAtb8!^C]8c(9fw9(4y-(aF]Yg(9Gf c۩hǡYv꿭y\A^\u$塤\u}#9 E~bf{o-@Qchp؍F'TXcIȎP:4)V %`he0 1)܍WKO* >(w\ʯMTe?[VnK˭Ɂ_q6 '&֪_ԃ )qJ E (PB (PB;GxS?q\K,!1AQaq @P`0p?a(!:`-ln-߁s?bŋ,Xbŋ,XxG8bBĴYK~MSS3yg@]ʀP.-Fq6{%zHA7v'JhZ۬F@xcЅZV3;(%UY ',6{^f#D@GZ~l:J(T]Goz~yRt1>Ao(5tfW/e/{9$`̼$EW@9TP&R$,Nm 4|H%&Y0T9 hL9Z^r‘z(Fݵwf:PY&t*+RanI,_"i؎xiD2_.`=oHQʆ;LjS(); n"vwB+Tc QGV<"{_Ds4j- E0%uixA%O a &-R68i6ɩH8}:iY|'a @dkk3AH@J\h |MR3qk\HiXS5r-AnWzj+@B(Sw4N8?ft<`@&`"V֠4s`▓A'XʃQ= %t>4-ϼ" w@aحeTM_8)INV yMɇF(R%`8d#I/,)尩0)Q  `KQRU.y?X2z.FZ:'~cX ƸLd~M*,}'/%6`b#1ܙ>)ҽ;J uT$6Qm9A{Mp$- rrt,3>(`l(ᗂqeUx  nhF$2Vd+'WC8ʹ+quUeM.ERP"WW'e1͋: ZTϽxE*H nkK'X\@.&؄P r  /~[kiDbۿGBܠ@Ǿp1@Ý6XrWtor4e-z!1 HLO'amlYNNB7@d蚾 ۞970P}>vCn1QurY'^IUU& +Fhɏe3x$g6@%]:$ԢYu1=I_2Ia]n&by5ľ{cpBE* jX|g.4(^D'}88Ϊ*`Văa8!PV #ǥ q@T*@ {{a=Lg/w#=pDS!ڻpMadSi9/(\eڧ1؅ZCcLqv Dh 01ǢdPv1deS>sA_xrZ;ٱ)?TYDaOmTWcQ#Nb("r`٪ӧN:tӧN:typOu$@ +!1AQaq @P`0p?Z"`_{C/0ߑ˗.\r˗.\ryIAž }*AAjh hy'TyӴە78  C5/"' vP Z W,(i;:E)*3aOV{dQP?q_ogvm PzBv/Rfݎ9~=$qy3rWeWWX)kUU` *y Ӳ7+;b H)v!!,쵨pz vN`C#/sZ&503*M4y9XLEQQLC$KQ n!R!DM"lM&Pg=7r3FjubиzϤ8a-ب{s[}Qd9PRRfLJ:HOץҖ;N(LH0H y>Wu N5"HYɵzb@X۫ HB0U#X~/:XPԗW (Q3 jvDJ][n)aCi(dt4 YX4`[b@"k BAϗ0Ho;)NXJ7] ؒ]ye?5uNAR8V0@XH6{pr1!O l7o}bMqAqH`gQ!Y 0!MCBK;Ifc^j rbþۺ(Ua==#!ѩ"}%ر߁4A3qgƀ^ &7|Rx%@Pjm ((d[(! y͊U@8./ÎSϻy~$_/\JC_.QvYNj>70ȴ(./89Esg1 DR#,Y!aāPQ 8tR..Ȫ`)5"X1-Q*p,튻g^#`5w:%zndtYM="EՈ>(̪$j3ӆ̈!q& Y`r&ht0p *Ȳodvp5 ('͟~r} (cڱN@5QΟ4QWh4F"!T zVT@4,0'i(y _s|V_Q`8G Rk#(&ڭԸx9״p eHŠ#x_ !L9t֤F-!Jӫ]%)QE.J 갟56@[T@#->\YPm(@T؟MPe y`~5J;F!zyL_P@X#'ߝK(HUWB, *Y{xfhGR(dBkk>@'{GB$P H-kLuz$4%mm9ߴA| !  2Um/H[םΓ7 :}_ҍtƁ/YI!beaM^ZWOw+d_':Qrϲ 8ւfa'V Th<]0/j לG:,z)szD{-"ǖw;MțkTbҿ@&.~b7M`aw+PKo\N U}{w)ŵ2 ` !18"vw0 R{WUnE6KT.TR6>_iS\d65y.֛K"]G'U5XIzfZ(@O :km훖 X\XM~^h-nhqd cf{ݥ/4Uk }KLFxvH"!⃚.^u/>4z?|]Xl;Or/<~\~qA>ռD6\}"ϓ'#W1&ȉ@"N`Y|(#&;yxi'y[MV=|UPekv@Ldf{9ň:ڮj~"E#{_43߈x1޴>v1Ύ毡;~IEq/|U›}m/96K:gǺ~#FW઻kQ]*V/ :5mT 5bv݁}|ICEMUM)>S:!a$] ΂,90ս(f4}dobtQ#W\w#Y,*]KU B#GEאiɠ"9'$B]'%&:^@os4lyNeGרj ig7YB_[x 'Cv lZ:bMRfBoדPBbECBpyyY9!)OR] E aWRyDk}.ږ]L_Α1NetW a"2c*jN%eJ p{ư0(~2WƖ[I_I8UW_>y/0-;w ,\iZ=D&" 0 C` [tlogey0<1x6Lt%n.N_i}=7CrzDΠ1doAvDo5AV8^ti%֡-\3| HRgT;o &k'o+&߯+R1 ֋3X|V]v:clvλg_Rr)bRj"5-̢pT"*jG?9!]Fgr@8Fۻ(s7[ ^*^(N_7ZdpKac1 !8AJMEc+fRav+i->*z, b~ =%mIt:nhU в偼LBCG_;Se[Q6H{{ ,>Y?iŲ̤ j:fE,T&@y5! "1A`2Q#0aq3b?K鼶iVEeIe۬(Zw$W~Jv-U)!y8 }T+TLLWԵFFʒ)F!TiZF57!Ϳz;t0,abXKy9¢4(VYb=kSo3DWLDp TEn4j↼@*:[X鹫̛Xf@GGXѧfTefgğ$W#Fu Y\jF̧Bgq$xw6uy_iS +)vRVwA*2+-fux Ê&k%$Ղ 5 AiӫUV5 l޿=]gbXQ0jU-kWDJxKdXD+XuTD{Xl]ڌ~gjcW< Fc76tDi]Y$b$ij$I$#Md`զAQTht>ĉg"K=<7#^JہIZ3F|2MskIe'Ay73_ӷ"O) )Jqi촚n9cfI#|T8h 2,6>zRUH؂z5ڤKek Un ۭՆxX (TKb~07Jgk .G-08*s f$O%]1jJ?N`Fg٬Oi/vO=b!,v6L[9ID΍,hW3l +_$I?~1ŜN6?W-*غ b4&Pt=Xe;>WDK$Yv;˯GQGZ6gOWQa>H䪜IŨHunD 7hasE.ĠGmb4JRď>#YRl~foh,7ԈcsgybGm=%Z6L(?Ճ'Q_Z8/Igx(<1(E&jI%Q=`l9TL?@C~?R}zW$o<{l.s_CUǏpwhUيQɘh(fa} Bv*wGIU0`7[8 ;ë ']!7mr\d+k|j Pf7=C 7Wqi;Ih)XCVwFub=Ԛ6ݙF:~͍[ю%,X(-c'J,EZ+++^5Y;<BѰ T#ir3s.ʏ'\w3yXs,^؈1I mQ`aJs Mٹ! 9,SV7a +YP]̮ҹڛ.upԂ Ճ5ܹCfyS%ԥv$s 񬃅o3*F#K0y5F$X) GzQ~4 !VX!dp~ځX0hVRh%VGU`G Bإ4sJ&o*i #{RwٽV N[/֌1 [2 j1fynFX^R|>iAY+ۥn9YE;2:z6O,w+QetTVH~O]"X-{WcǍ'7>\ 8?i]ibӬeJ18^:^1DP|PU]Y}#0+߬O(a+ <۔ ,E)Ȣtv($GEkVU!!mEfc=q'7#Q ܰW6.:-2٤[Գե >Ȋŗt^*IbQuVhwl*,JWy +:OBҒnvܦIuqf)xex2::A؏ԫ}1Ah%BDQrI&HXMy1x-FEannG$kYCb>DsnYr~; ,*MA]";H6HuV9z٦w}QQV,0892@,j2} ͔2l20_SSu)V^Gq@6DX <\lv<.|fº=cն΁w kZ*Vт۠%m{:H}THr f|2nl ̘n5]5T18{qEcxq6u e "=bʓ CRqUO(͐ҿ|?:ceqyɓ1eLdR&U"PcNKw>g FqRddE5=eIX_cCBҤ RT_nũ``סks0+v2k, 2R^KXsUՕ JBVRv\,EK/|>[3,4VY}Q e*cWL+f]{bPuu+Z:tJk*23oG%5aw=xWQ{ӚCzZ^,&SfcC !1A "2Q`aqB$03br#4csCRS ?C$yx`OR4c PcPHL@\\T%C Ue0 27؋LB#vu= a_!7Um)H*uٵwb|ى'v52n ##H7d`8ˣaA9I;>@{k; @D.Xu9؂;J,mGKg4٪鬌Yس33I$I$_Zȗ劯nI*ʪ$e$^vc#h]=t|zQՑo3 Ly/'_܎ HiL>X#gG!UA,N@ 'jV+O!DH%, -2H1(Ie\]ԚYEd@ȥdv|SD񀘺Ǚ'V8Pl(ƞ\HGBI @Y1+͵sgwXYLGYLeebֺjf) $na780,@d;6s!ʦd?Tk L:GI%UȮ̎2RC teRb)2. 2;X;6{@ 9!̅G7'sҩ2(JsyK\ly5XQ™e::+26 4=d'=%]TePim!SSmT32ܐt vo68ދ;IM$| ڢi1Xً\6m\u,w;hU ϗՕQ}ԗ@0sqо_A:^)8:X{HY}'xSlUFc.ZiT ؆UG2<@E_ǖ8Ne5*O0b6XDn0KRJQ9qB.#F=ǘF/K$#t~gaK40%kHA5ϞϪtVo:O>g)26qx1K-L!-y$dRvX-<$nt`Fʢ:ڮD5?7I h$fؙjJY7`FaRZVIr# l!QnϰInm5U=v͉&Oz 6Q6(gi+`$|~A(9Pr/a-}f{VX5M^:nsvm-?`ȫ 5q/L83hĴU 8u6>Tݟtտ`㑪{+#Z:\yf>O Qg ѫ2Ҥt\oS6h4 q3`AѡQ1R4呗$9$Rpc_}5i,H6scDž@s8!)p$S$dg1:$GT~l8(u Z fH#=j+Pl3_L|Csu a1L« ??UeYg|uPYQ/>)O=^[A&{Ͽ`Dh!d#{ hs-"cÝeGQacv `hij΁ Q9x/W%"K%sĦ@'J )X,~vr~A׸^b3l8JDl,A`0E$NЎG^Їp潮:2W,?5Ji]uw\olSVA`͊ G!bȓEf3> 穋TK6*aLMpʖxɓ1Pb=H2tь!K*YWJCfbjkRQ@ *笌sf2}ۤn0滦?|S)/.覚O/!}vq<7YLeξ,v6 AE@HAJ1?,_E$A&.݈^^F*iOzٔ,wEY6aeX6k،y&eT%e[ZQ 8*' ܇ui\hs[ wSn.9{>ggY*7+kݻ8ucB !"1A 2`a#BQq$03cr%Rbst ?C65< Rč&"* NNkn̢dU MDAV1+ 4֩O¨2S@e[Cd@"颍k@-39ݎ$X}ʀ( ,./fZry?GX]Vc6bXds:?z9QdF4a-\ģb"#&'2Ү6LS,4r!+6bR,*Vj E)w3_F D5TDUUDPT 8`ݡ:tDQAffb@UP f$$MJ%!vD$( v;*Z91jY@4벡E)ՅE2Qc/1ӧDlS[TҺ#qwl ²JEjY*"(̳1ĝ+=\J eI`G6i11]t Nl+!@ :(nDi0xRWND.ibIш qD7c@yXLx*-َJ ҶDE)A:HV2H^GX@QUjSVM ӂvi:FXh":$+-Z6IT0[eG DIeU,I$Nds$'Jȯ]:yHݩNؐ򺦕1™ I43ŏQvcePIMUH %I24)N1rH+9E奐mi'ޒ6 k e% 6dSDDž'xU04/7Ŕa#aEɨ8byZ <騔DgYmmx*H2NV2>9H6g#kvGRTYK_U%?AѸI?cPKc\z!'*'*?assets/images-add-ons/learndash-restrict-content-pro_banner.jpgnuW+AJFIF  P6wp@wG 4@G.fO(p{ 3qٸsPg ;t݆rR;7j 8]]9)G77PZ e_H 84찃Ţ3J@QfAFwYwRR;7j 85K)C\qٸsPiѯS]᜔+N(>s WrR;7j 85LU=pH 84w>W᜔-w5 d}}=dxx% 9)_Ԡ 2;'mGR8gR "41 twf/,*Ԉ8'ी_Z}fl[TR OoK(> "4 MBY`VAƟA&0_VXAUqN:4+;P}~jDiz%aڑO _>䙖ܷr`ڀi@?. 8  69`70x}gyE,,,,,,%#mƕSĶ{zԉvflU\˘s.`_ 0/\˘s.`<7rxyu%R?xoP;,\!>X5X5X5X5X5X5X}wZd aaNxoP;,7VZg&?}mlg`8 *\t'J)_  tzz>W99qp1=(crQJGg]HPUwns\si5jNMsd ORR'cE1]3ěSB6#uQd1?*aq Lr,N](~#.NƋ(b*7 9g9ș~n bU(lƜ}/?NY+mF:E+ޡu"v4YCUns9Dtv-6ʾ$h&"29ҊW;=BDh"p#snq ŷх]RHyPQ'y>QJGg]HPUwns\s2>(f$xj$&1 "'J)_  tkr&_{QBؖ-+){Ws-d|LORR'cE1]3L7O#^%;2{ⴇKpE+O_N(b*7 9g9ș~nq^w*ɕDWJԓi^ +pFPC](~"DUeH{ Uwn8w=+|nA_g 9 a nfRũu|nt\"DZ *)Z}tUwn>QJMZͭ\&-K~/^` y/0_ ~/^` Iז@ ? VW !UX`1AQ'02 ?ޢ֍79Zl.KAJFTN ~o,}dK'ofjY;{5R٬?7ږNaԲvkX~o,}dK'ofjY;{5R٪VKWOX<(M1Ӣ?zgeܾx0 L>|HvgycR,i&Xi(b%S)6J#f^}a^}a^}a^}a^}a^}anWҐ.bӓTRμqE)9.€K{Fu}1}Օ=ՙB0bQH^(Ö R䊀axQ׻'pvO%G^KŽ<k{y- :d[u\(ݓoQ׻'pvO%G^KŽ<k{y-eȨr !^Vhfzi5HHRdܭd= {$kZ7sˋ6b8 ȧi' 7)RΉNs3p@ES\!0k/B\!0k/B\!0k/BY&lPSk0( "]i>O,v7Ca֍\sr ȢD|ETMTdL9A@v媰B\֮vU`'Qٜ?Ȁ D6GمEGhSg+pM(T~DD2~=d} {$kZ7sˋ)1[IEKF;]l%/[' ]25bXŃ@IoUs6Qm&GJY$ $*P!$ ݾMG{Fu}1}8m}ܸR O#?Xqr?}1xOb9Hy)(c)(91>].I3R^=d} {$kZ7sˋ)EOObxEvo _I?6U37 ht"EL)|Ŋiēc'3/gnrb]sc)R8t1"M"ôv&G^=d} {$kZ7sˋ)EO]l>FrhkȖ!Q*rgI^5 H* DXױ8BM1RYDUJSv1crMfa`{ɾ|HNo/ JS̊,4ɴU9M0!) g.NQnu$N?>aZꔫZr 贐AEQB")\"7bߖIʕ2*F4h5j$lٲ $A"$PE"HB ^=d} {$kZ7sˋ)EOjU6S0D=HcuinP6AH("ƛ:Hr`݅0PZ"T o×vBتk dU9TIT(5RP$Q5 %0/XXo!h;kJ7sˋ)EOCƠo0 Sb0Th ;6$drbp0ZDͰ0yȖ񌝄#Z6YܷZM-êzN1ȇ̎a18zo}z'0"=UWNNT+U?Ӫӟ줍FY5dM\E`!1JJaEQ"Ze3@\cftt$ae'pMd\"p$f(Z&'_w7/a`{ɾɵ{l{BA8b^,BPHpQ RԛT?u&3U.IKRns5RԛT?u&3U.IKRns5RԛT?u&3U.IKRns5RԛA݊&Pg RI˙{u ;b"T)SG/6U 3T`V5#0" ýw/5B !O/wz#/wz#/wz#/wz#/wz#/wz#/wz#/wz#/wz#/wz#/wz#/wz#/wz"ոJ &$)[Ʃ'G 8Fmsс{`vz0;ow=Fmsig&@W׋2-%Ljs_ WF}+#>J`Hϥ~$gҿX3_ WF}+#>ǹU Qy5!'PWLMƜ{ӏ`;qcN=|iǰ8e-LN',FTkŏCEN.D6)U)ʩzzݴWITel3s^#Tx5!' w_(A5s؟Q}(SoA?Y GA8[{J=KvWByUkڀ -2J:g*FTkŏCEN.D6b~R8U@',M b_'ArjOXd4]nCkK*, !|y.@rWDiSoA?Y GA8[R P['8(INq 'Z]֮kWqmj6wZ]֮kWpFԔR%$ tbQ&UKJ?TJzQn.]Equ-[Qn.]Equ EhE'9zF]j2h7BiRYqI#Ń1`LX;Ń13xFc1wɣ,;Ι*uX>fJHDS] JIs<#s1dojVA5EDThx䗬Olf I13xFc1wɣ,;΂Xq !4WLdg@-ER$h8-.&+۽ |Ha$mTJP {3NQ ]r !9kRm!R2R ^ѓG9CLZAbqO>i?x/SrR AE]~O>ièT4,VR>`L2JAQX> s>ɣvzM ABD i-Fbѻn-Fbѻn-Fbѻn--Ф*J ms@zW06U T`3V50!"# ýi:E\lBR[."%a~w<\AƊjK(ǴIFtq$:8Q{I(Ύ=gGJ3i%ǴIFtq$:8Pux)xA VsiZ H*1ك k5`0q}8ƾ`c_f01ك k5`0p3 )Ix{4p1lu{e %܍{r7wQFJ=G(,r|(,/L hb \r9NS4+oGV)f]HvʒbKx_=.6sűmZ?!EPJ>֝Y% |g_G]\j蝫e)'{`ԢL7CMxVruO讑(J*E#a~w<^ [vpu; `B0ܓYy4)OGRtk轲4W[v39mm\A‘ȤĿ0k-*^$@'-}=F^|q}'2VU~  T h ADxd~j;R"A@c]o/Jʸ M D̔TLj۞DĽ)'&bz 3jifG!@}c]o/Jʸ 9D-%*I":N5?hf}hFW{dh1讷gs%e\e":ܕJ>R^ qz+;YWG(PII%d{jPtu(NLi(O҄E}=F^|q}'2VUhfQ ^6$-zI#R'% $ähT{ZNJz/l8NḍGdGhOġ@nF.k* $N) H`jdc]o/Jʸ 9DxEOڂ4DZ<0ADA s轲lR M)3QEv4]ncEۘv4]ncEۘv4]ncEۘv46pдA*MN,JK6K\1?PKc\qs&s&5assets/images-add-ons/learndash-2checkout_256x256.jpgnuW+AJFIF   &pqI\j[QtB9nB*~Vy8(W<ʀ뱀yЀN$c@=HjMlW)UOy Q=@{P`Jj:wVˀkʧ4kΈ%F{9#.;7d?0ttI`?񷟲8<ձ!mpf{԰. :S@PiQ=- 0@ !TE *ܹ\"^qgʲ> |iZIS'$5ft8yKMeY;&ͨm~C>% s'!¡ЏH9LI횚0`)hM#q['0 'bQDlORl&7i)n`s|2I6m^oHC#1 Y&Iq/l-ٳAWN|ZZV,Cͮ*s*~݌՞iǽ%tbDD3g~Y%+b?{Y΋\| D 0&ɨV7}̶RҨ5W.sgC='*܈8QW?m7Y\q:CY$^lQ=dE!^ LY3*5)"k 2n䠉gןv/w'_Tb]B!|d1'CV Blf8/0~gK,žHxP'ME䩛 hf#II`eA@uZKtA?>OB bsZ,ܶ?ytMAG*|H/ln/g}S5bKd 5i(XO`{SSMFNzOT}~xM7J&5t/7p+5٭;R>8.h14 ]Gԏ&OM~zYDOkl0jf ]k*j-GuR2DMzѹ bqGwjēK)_zMm  8qXcl0'"'^SQǂaQi%STLb,i vd껈jʛRh"z]E5M쪢8ppC]HuZ]θ#!aʳ91l-_ aES*8}a.t⛞/*@s& iS5]eKPp|Q$ "'a`3bDs@w;1I Irj4X'!au EUUt.v_`&uwbОH[}Et~V@ZA;&-6?WW}Y0.GTGZ#l&]c#(itbDv 4r 7ahl%3of[W!8\L~U(c]赵1c'BDT4%aP%]P">닯YUe?2&b)qb; w#]6]MWvs1kF!kf%43)_x/dy7S$nqsǂ """"|u05ŴņAoƚG&dFk"2EUok h1\!B;y1#&T$+/Gjceܱ}bC1.3&˱JKcIJQ'+uk^//8M<_DVәz]PƎ}_soUeﰁl+-vJyهބwO3Kӗ[sN~FcI>3qɀLE2$#cO-heY] Qe5i<蚯O,EMV;d "kr$:H `MISH *jDD uD_Qz.A6lvztYmlWبa؝-G]ar]$Hl2}'fuͯ*C$Vu bċfIq5 YZ#b/^QLrLDNȇU!arD2cǎ+>(-6*DDi,hJv{*C?=,he8[ DvrxGkP++EAdEӉ9MQeYiUrCí/)p]P"YNNrָs[jt"U]$AU\UMHsNlt]~qҖBjKV"hTWR7$rcQ\XwOy=:ƥM5Ŋ\dZEΥlH*zukXYhSTU3T65&YMO]}Q$v9[k6y8 ! dsȵ8[! ?~-"{Dy8/rUGf w##g*l&D[=_q.eЦF蚛hzq K1)%hEA|>d<%;9VT̴H>2[OF!jbshmr:Y'mxSkm^cXU9m#o,jlElWkwM!Iȱwɇvpm[ A.';SZ0&ud{ Iz͸tywuHޔFxћi@ ''(¢+[{jMꛔq<^_ո+&˞3KE%[G]'_ru''X%f?Rۮ`U\}ak/=:ۭ8"mي(§R$IF#[…Uf}􄊭 a!O0WS%MWމD.QY̻8a ÄL0٨q1ȖѳiXᢡ9Woב}Ӣ'nET- s;e@4K]jpY9R 6ȅ~+l,^F"Ŏߙ/&ᒠ j(c:UZ{4P$hIG TZ%a(jt3E!=]u_Z ]8t7[|E\fGtܤU(&fʹ]3rI棫J^U Q4ޟWyxV Y!ի6Fb4 /fV#u}W@vkҊ#h *FuUڌ9-9myY0tsZ'# J&bqʣ]8M hU}t(J䌉Ɨ_ $z}mD/ԷMsfrqw8/󦼩 "!10@A Qaq? xIXPXldz?;y6rWڏ1$VGLրơ)R/5}Z$%m7>H1켉5˷d>"zojwB Cܩr:N@DŽq!8 uG~5*QFsx)~㽽 "eN;sAC{ ӻ7+ґl ib 1,@&⬖/?yaja/f7DZ|gӖ-j0l`'D<Zb))8 ։a<:~)R;\5WS8JʣW+6 Q\xL;bEI w Bk|V7.+ e`4V Nx۴ψ i- ) Ǣ≧C#~/a \Z=1XT3DtB 8}kP@^4@uAQlE("fxDx&fNW)J>kD S.}۷T `KQA4@C9 XtMU|AldQD*q:˩H ={ʉ{PJ4T`ݛQ>7?޾cO)JTE9.8 oبB'kuo y< /f3j p5 dd|4U{AɎW$cNK:qm DDӛ,q۳TJ;SFq+/Mʉ*%.RRfDq7P1& hR>X@lB;W^:_} /!d(1J)440rA0F 80Mn$g 355piLODBhRj#V@?0b 5yPlI'p{-/,u)t席䑀͢|!F@4*QHm/TQ3J['nqI&lu:ʂP#QغP|hJNilmVZxr(n\|jjRI7}MrMmE*4=E'Rji[9'R@QmF>MƔ"G额V\D2!hU@XJ[In& G6*hICV VښzօhQ;#h>ad5Q\ TzA\ITBw*pm ;0a 2uǘ`Lm J ,*=Ɲ^4_hCamQ P2ӹIw>3cCED=,劍Nl q A!-u846i`jBC+7Y\ҨH I8g,puQ AnN8 Vҕܠ;[iK p^AhHv $vSo䨼3VSoI&ݻ\Qy^+>PmN8 ii 8i,rS[VQG~>%Hdic1i.QXPGG0O7[4k'ڻX.EL9G$~g3k1Aa4kZH9"ӻ0K]$R=Tp%2 `C3F+ՂG^gpKI. 'N(SbwwyeK[I5=+ї9Uۈت_0{EI $+oANb? SM+tq?sw1.4xV\DKQ %(B@@`3 !1@A "02QRaBq#3S?$nեac78hM<2&EGQ!NH5YY$"]trvFW΁3<(s4 #"]|zqX_(gx4y=*`cPQ'aut;i2p5T/0c;3ީO]YuݠL3 MHu;^V+@ gA])TۣS $Tgx4y9+(^q]gx4y=uOXTK>Nz\p p!CII!kӊEt;/Sj'P<[SwdWv3<!gzi<{?#eu <@:P>#[|_|G/e\#[' )aXo{O-+i#һe~V[5Vvˎ z2FÎֻ?moWHc\^ߔT|$k|̏cJvqw[oWH_UtHbE-c- =p~ڵH;oWH[TtJnfD c-+i#һe~V[5XW7e W7F;_-ߩ9{ayz1Ӯ5 DV %0K@y<}~Oz(Ptכ`$zbčMڪz(Pt׶bt(qqM'z(Pt׺>Fz*v* P?9Ƴ/(:%Z5DTm,b+ z(Pt׶bt(qqM'z(Pt׷ZSdY,DߠP?9 s!?)(:۬J:Zh>!olz(Pt׶bt(qqM'z(PtׯLUjnOtP-@}3ы͟0~But#2Q ;-5786`Fã.9YY%i% ~nq63eXlJ_إU%bj& r3e<ʐ K(Tep}9ڹ^w _\` CÐ\_XlGt^ܰN出w,+S._INtX{r;է2z_3NsӴ/;{W+FSsCn$p:3bRTnش]nʟ"u5M tf tE | nmi*IYԂG3#H])6j/ ӝhrz>?9ο߄~7EsW`h |8]Nо\ C;CgO:0ãŮ8T[ևÓA$[Y]FtpCOrwQ2{3Xtpa[UѹuO,p}9ڹ^U{k@nx7P{W5/QyT_Fu@jJ%Y%|+h< GNy4w=;Bsr-@wg:Hf)1#J.}CÐI7(qXjm)/1=CTnl1C'beěZ_/ ӝhrz>?9ο߄~7EsW`h |8]Nо\ BoVSkC:p01lش]ͺ_n ܈u*:alalE0lS/U׿ JR(alalGV9˹]n4ЗӅ OWUHsq+֏Gtln:P6͑z=hi5S]tWN>xZ֔ŸmhkJaO50ZҘS iL)ֆkCZS })>֔ŸmhkJaO50Z%Ӧ A'H7dL2X,kJ"Ca &mɗF/?TAľ9Cޏtq3` l!Lq 6i} 5sa`,BPHLLc Rj)W>O |0""7tn5qa` \>j+@@B !|Ӵ'4cuޏtq J5;3deIdSUs 1\,A$^%0M7(/(0pnنn-0²gC46DZ"J_E5vm(a+,ΘYV*Nvʞg-H&*d%n4ԘK3lX3Ui1:GWCҵ;W%0R;zJa)W\ dh*j[l詩om7۶ 2n!C8I/O?{"{ hgd[r5f|E :*j[lʦ!;ޜ{sR7+Mݲ!H35KӔxb̳:rJfdTԷ6SR|gDDvSn|A.pGOtRUۦ;BqF=PzHwJKA9JD(ޑ, "- Foa: 'Tujfw-`ddSQ5(lvT6&IFɧ.k,QVb(#$ ` uGQN3} Fo`A p pFt4|9Ns?42'QŽ hm0JtfBn:`uGQN3} ^za"N @o+D' 6٦ xV}ay۷.{T&b"mvW؉sAjΡt/2 n)uth&F`*efV2<h!r[{HYm^b+^WlD9oeܜ3mϭYLyYv [?)m,z`[sB% Ԗ\\p1^5f[uy]n+"FlF5d/Ƙ9[mtVUollacϚv㦌{;pG}wˑ3؀|rh7@BH^ߩ=l}pvM?̷ĹmÐU%P':``5%2s)2F(yܮLl( [XO?yLz͓ >*-ĥr e2c"i,(B*H0Թ5 :MtFHfWf7jDQ7d[RÈyF+ X~qXO?~T ry &gm"!HEBu~e)c(05r4ٷn,UMQ9m%yV⢙WnPjD1^%1x$ 1)R )]L()7L|Ӵ'4cuޏtrg0(@^#BU D*lziEYScMj*ʛkQQϞ5X.`KmTEWLhr:pVNZ.w %MdLE iDC@EYScMj*ʛkQVTZ1L=  b6`劲fU6=4֢馵eMM5p+~+*`qǟ4 MAs:Q)L˞I3fi8j2"w%( I~;*bG/eZHYk1#㲭f$rvUĎ_ʵV9~;*bG/eZHYk1#㲭f$rvUĎ_ʵV9~;*b_,`Я[ظ+tSXQLeU]cAJG.:4- d꘼`\0tсGRgr: JtbJ2sJ2qJ2qJ2qJ2qJ2qJ2qJ2qJ2qJ2qJ2qJ2qJ2qJ2qJ2qJ2qJ2qK`SD₳>҈DipeTD"f&EdaO'!1A` Qa@q𠡱?FDB)߯XaaaaSڤm8t0폂#S{l`ª𺡊\}^zׯ^z׭@Ar9Zp\p(40J& 6i( aC zf&@*:R"#r'= ٱz yr("9A)9mхZ4lE/@!W( @2`,^w~̘&Lu1 F[/ DR[~~ĔecGO8E04,@KPTd./W jb Yݎ#u# 398V[8"T:OzY[ 6:~OA#L X")@ىz[`3$$HZ~ _)K547bD,Dέ~&!rHVD"2!*HbSk}@V]BĈ^iH܌!-< r UBl5YK2D80UnB8z(hx[~~Ĕe@Uc>-u@Bd(`NM3#8(0A^-f9 @e  䯝n~0ऋN,LZeN!b`1G (j&;G$IX3 68&ܒB0FBl)$?ۋVC(|yb8N76 h灀 9f P0.@\H;~{~~/УF4hѣF4hѹݦ qB 4V<6i0Cb*TRJ*TRHN |0<lݣEG+647`51äVOi;7d(nPݐ!CvB 7d(nPݐ!CvB ,pڷ9 vHRߦ&6mѣGF >4|4hhѣGF >4|4hhbWzL w1|K~o;ӊ֖ҷ] w|֔;@iZR[Ռa3U5Hr}6b4l)duK[C*0YLK$iHFFd ,ӴZ"p 5hوѳ$(Q8PVӖ5c?1|Lg[K㍴ M.>,`?Ⱥn `x[Ռa3$h 3y:TѾ#Q$I+yG8@XiV.x6OpPd)#u:7tO2<:{:<O }y[Әl?Dʼ+ °jb\"kbvl1<°><+aX[5uXV X|xVs;[bt+}y[Әl?xș|9 -ЎB:h∄ IjD'dDFuN *M1ɲuhGQD]u)rf`V/9#@lk\icŸ(;P1Ֆik[Ռa3$h pBe)0)5lFdGG=ߠS d(PJVPStJ )L& V`p[Ռa3$h o~M,g617c럿ظpP["뙸2ioV0O+ss͇I5O]!=o"S0!v7;}і"&Do7o 6^ ka)קKx̬,f5NaVX<_6Z+;;;23&6E^BG)ZVۭx|x|x|x|I)ʰ}y[Ӗ,G--stP1cq@⁍7 n(P1cq@⁍7 n(P0ᘡ?Y|Eϯ.4lXW踀qE . 4\@hqE . 4\@h۪@[kGI   !1QASU2T`aq"Bdc3#DERbt ?y-y(YM H':Ls̡(m<q2s̡(m<q2s̡(m<q2s̡(m<q2s̡ H'Ik4Q>bmJ/Bj=cF 8tҐҧ\`CL_ !jjj7Pj7Pj7Pj7Pj7Pj7Pj7Pj7Pj7Pj7Pj7Pj7Pj7Pj7Pj7Pj7Pj7Q98)hRAy1Qh02khE@%.P뺚vPi#!{_?|DuwU׳ߏ>wuKzڳ;GYHm)?}+yI">f90y,RB5bǝX󿕼72ܭR7RTMkGe3IVP-ܠ IRqǢcV,yE2q ]˴J|RJ !&xTt4+az(ujF$ackkms~Rݹrš8dSZEu0I JHRTS _ _/67Roi8a $&u=BfP'I鎩}CVoqy\>_?|DuwU׳ߏ>wuKzڳ;aGpigm).n+NKpayueM)@Mk쁇>`3Bkyj_ɪM=payuYܦ/޿sҗ=u_$>Ȳ2fJtO!U}Qpayu"RBBp֔>}CVoqs='*wSEaZW@,9:_xR|87*.^ե~tSP,e|? + Y5H pY/Ʒy.J5Թw[We|? + Y_479\Ӎ.ZqkuKzڳ;Gp6S^_\ṕ78_q_)~I|<'"[*zP ԏ+MkvG ;{L)ZvKUkJz™$Ec.S@]ԭ4=qw28N@ŶԇoV{#ϝ5R;9~3vC}_|<'#3x1Lg|q1;fwM%@i!TTtTk X%5n?, oq`K|k40 !)Hq$ `*ӀWUba֙E)KZazƸ%5Ş.Vsi %E @=CcsO֕(R"ذ%5Ł-,ZmkB%J$\5p@TW]lTk{A/c1wj)6BM@q XX aI䷳K{1aI䷳Do'B! !*I=88Ņ'XRy-Ņ'Xr`跳 $RK{1aI䷳K{1aI䷳ % P% % jPR;9~32nAM%5D +.ŤK1i;ZN仳.ŤK1i;ZN仳.ŤK1i;ZN仳.ŤK1i;ZN仳.ξ[PJKMA^Pcעy%92q FN5*y 5^5%A@&' Ʒ=h5G1OZ9n"zkq֎c[sD'Ʒ=h5G1OZ9n"zkq֎c[sD'Ʒ7>t>FAfQ8i$RjTLI$?-5687`FãA}sPi(c41J% f3ICPi(c41J% f3ICm2euJ2}C})kӥ8=}+'q8d2zG=#OH'q8d2zG=#OH'psm]R1*ӝFߕ4휷 VOFt\ç N618h돣VOYt |;\bqEoFRj%u='F9'b?urn\{\& ΎpaQ%Zˏ Džr?茣}.ڗ \xW.<+m\_b}U-4ˏ DžrѣEú;ytGlZF8A:Lc,N:/JzմnDpfXbtDR'M2_wA.L&#r4 Hͽ۝M$'ӝj cnpwGMp_Ιms# Ā~Dsr-V5g9kh 7^)7)7T&!㬨1T* u:ʃeAYPc1T* u:ʃeAYPc-LQ?STRq#_$t}Qc(1r9 e2CG!Qc(1r9 e2CG!ȕU4ˎ]D !1AQU"S`2Tadq#BEb ?Ҙ-cp $Q`lcw;8?nwqs۝p~w;8?nwqs۝p~w ,|!'@He I$B9RF]*A#90kSE'@q*p$$p /b%7-LعjfKS6.oZs͋l\ĵ3b%7-LعjfKS6.oZs͋l\ĵ3b)dRT: I;[q\OJA8ooo1SȂ[Ps=,{"YtC+ !$\K9Ȗs=,{"]OgYtDg={5s/5w1S9cWy~163?wo潎*y9 PSBykT/#O)~(eۚ^&aJ 7z#^VZaCcMqamIRHGe3uELEFV`Nf0q9,Xҝxŭ}FQϳ?튜 ʲ\*`Bh{FQS?wQTV$C.2V"؛H:63?wo潎*y!gBVP[p$b4l,ЊЊES&,At0llpmʒPH)i6*Ao AIZ7R9>R9>R9>R nx9"MEߊ'^8·A%V,WJrloxEJhEKhEKhnr|4>d: N$ ! iI\G;^s?鼈R6@a: 6W<2Rls)QM~SV#$6E9Lʼe VHBT{h!\cm"{r_2ve]iq*,m<`FINm[쌒ڷ|5|⒬Y孇UfS q@^>X/f:z#ױOo"pTEXhF JO7[*VXn U`R$-Ll_QLl_QLl_QLl_QLl_QLl_QLl_QLl_QLl_QLl_QLl_QLl_QLl_QLl_QLl_QLl_QLl_Q!IBz"蹰 HԄ$Y(@R'Y$GPKc\441assets/images-add-ons/learndash-stripe_banner.jpgnuW+AJFIF  h{@ M.ӎ==x] U{/nc|![Ye~ڨ6Yy8/MY X;O7.=9Z.f8 \J UuL+wF@uy_*c"`zmQCt,z}I-Za~[uZ5MkDP>Nʹ _J^RaKzi֣ X_-MˑEXZ[LU#2>pFlI&䷦j2 ^|+c9p 'z:Cn66VRsT?N` ΁g;lv᥀>py Wg=}\r`<1ĸC|\)6*||IϿ$v+5;jUj6 Iހc>?olN쇸@|s %hx>j5BN3 @fU}a|~VX f|@xxt $r`x;oj4(w@XB zRQz>~Xa<=9"ݝ_=%"بTu/[?|^Asd|XuZ;wBuz.RgKe@uz 78թ ~_ *^vŠT-r ke?=թ9/K/[F;mt|8<5#:9|2_\z+ӟνZրrQߺa@R!ti֌v,n701 8`75SV 69 щ d >[ )\*1Dg#5VOBpk@RN80o*wnln1J sx TAιD(gM :U =/>T\Ԥ^e mS$Iy&f}6pu[;Afp²(+:Oh}rfnt?R"N\IjF)4W[ C c9ÚǓSe Nv|NVEg4IY܆ 2.ɚas3 U, ISgk0#]DAMU堊$e`&¼я/@hFUL`J2SpXHG 2-ni5RqC'-P٫ hu^P+5ەMYUɧ >5S(R)jq5Ք/q!18}H!7T]%Wn%KP 7$>#C!A_@LhԢrLnj\zif0O !"6V86[2n6MhӫYR:HU F|M^%dnTj{{kRT G=;2jq,z ) ,YnJyY4ֿmH=qbpkuL@tDjvPiYKr*\}댿vˬҼA#$ws8re?q DD6MV}%"I00T t7*`-NV6[Tvl_U-Sآ,&ͫHTw%"a }[K]-&1il"|nk(VW]Z;anj4i:*)ܤ}댿v$UM .$4_GmW\cŷfed)e-;TIJkJ-zǎ|2%I êIВ9  afcCevH吴q~8(WoVW\AmT뭩տXq 5wʊ)a:/;+A^ljٶ$׫^`ߓj]W۪f}h5kɬ+S<믩H~uVA Ŋ-/7RW? ;hrNI ex{'7e `j4vPq߱kq?SJaы0\'$VM PV'jyZnjÏiӿu>TSH!~7a`d3kk;cU$Go6.?/ln77#ǻGNC 8rhy!sf㤴9 f,*LDNDzv@+"#i$cvDžK_E F33.Ȋ462Ov! ~3)/$- *ꅦG,,:u|z^ܗ>_PSY&GUh|g'qPXҖ#gIaFrٯMN( u|1cE!qڼ~)rW>R]ǬlF;^25X=KcBk 2{D7(@hߪUw.rڣcM,ȍukػVOi ¶Ia̎s`l/r$;sl83TG F&4X#ڍ@5DDdr6+7 &*9E"]K:}dkX 4zF2Eu=XV 3_5.EOP.Y1/FG!=}[.&L;>{Icj; Q=q[M*sQ% ynO OOzqS΀qVI4 QcDǚ (c,ΙW{ҭn/m>k)a\V;Dnvd4kwU-{ ͷ )^jc`ZZCusIM]^8]IZ馫&|BeděqlJ*el@2c#UwيZJlB݅m&^N]Ǭlfy*~`=+s" Hb9Bc4Gs_al32a$) *k,zϕ|zHˑwjzxUY )@8 =q5'\wж? |Ȫ\TNc^ēx"9ek 'cj<&"Dxgd5X˭j.lUO%^;i.9Vyl4ڂnwJjQZbWCk9쥹>HS/+3`YU<"r14iSV7'6(E^tu]97t*0CX=<ӯ#誌ŽvXwGo`78s[y715ĩ @E!1[(!E81ҽq$,_jyӌVVcƯ1T+VKCŴF/TR9FSr#>Tk"U-p(ʅCj‹wqYA| 4XN,̲TlTEb7j;+Ʀ"9nE OEH1y>x-g :3CQug)a ,m}ͷ)+1Tٹ% wA`ʠ" s#Aiow(prz#巼Qz'X6k:o_>4^_fkm8FƇTe 2lvLM}Зh$ 6®$Js%ϒʱ9U^`lu(~?wݙ[`U6@=#UjGzmN"N:'ܐ/N%Xd`i7vJxX}O'!1AQ`a 0qp?lct%6h~7[erL"R>6q f4嶥)>нթ~Uh3+1Xކeqv5k1"z!i#<BX@ "bNQʂ.xoAjblLQ$sYbDc=<,Ԫ =XU$k* FyuO_$- ]87X#V= ?`^IY `bCNK@"{gr/F9A(,BQZ:NPNƱ) 1d*7! GpCjq--K1sfQ+X#Q,Ę${=Cʫb 9 `DqDa2I 0E"3v|*tZ~h;}n& DCz,r0&"ksᣵ6/s~|N>ƣɉI4Vw}!P*Z"puECy,Wۙ%{ #p- e)o7\i0H2͆tI@9d;Ńc gaH; 9vf&骛SIiFP0Qq W)9UUWj]Y޼tP ߱rRku71b,[ ZaT6KU{r Jur$ƍmbհI1ΐ u<95l8B'IJs4I&8̈́W;f8Qc΁TuMUX6)]K^xqZro]caX|Yrk?k?j Yxc÷FbfVj* CۗvyS࿎5Fڋ.L"X\Z}-%^a_Lz,gsûEH̊4,""lEw " kY42$aDi[1 2{ Vq9=Vrc\ 8B' U)jH$fa$rx lTfR#Z"ᚺƩ&ȉgO>TH?&Y84cZ;h_& O&Y85*D;p5i"8dx[ȅF jX?Fk"Z)UXa[|6Ċ jAR/sهwN}3)u捺!ď̟6!1AQqa"2`Rbr  ?"U׺9cΡFÈ=:/.}CʣcNۉ_!KK:w_ԡF+gCZA|\\#!z '1i'yNB:2噟[xZ*ū^Ґ6xoP:VkyӒ"u4\zWxT rDN0G}_xZcջkv=j] I5++qup7VFQ(,ynGn}R.Qwdczw/Edwx928?D2kf m~9|>L:vsg֓LS%Nok5"nrPwFQ:Ewv;vC%WgH|[}(rKNI8>6ksGzdǣv;{ux}ѫYh{5OJ>?tkeYh/CFvz$Y7+Tʛn\W1{0#̵W^1r}1,[!OPd+_/q"^ %p\v>?4p24IRw&m_?J7s[r쯖Er4Lrl<8W9fUv7+FHn|qݿzF w2<= u&]X_Q%"¿(V8򽻿.5!`13"AQS %6 BI OU-kST?51_p[jaV €"Qlʞ_o+b져"w6--T U-3.."Hp=X3!|Ɽ2d&8V4 7,;b3D{0-W6{lb2 )ŬDUX&A)ރ}?sBP=Fat4Gde0rVŬ F'gha6 ?LݕŸzlnj٠`/#ĮQQ~kC=V` DMc;a9F5XE CdBhO|]1ɛqWg{KsΌ9qHe3+ سlxaC3-5mrZ- 5#ĻAbNj!cvFv5wɑ$v{ l̚y /'gW(uFJ|)@4gưOڊ_Q;R?JB~G`xk]瞟5,ߤ'{GCP"0~$_{jɓ Hp0;{a'n+S/E" ;omP:?X3cƃX|h&Jr{jl]w&Zɶ`dv|'2v&+UիGClU+w~#5"=vnD4JBG'gDu?#0zfO3>m[IqL/`ʣD~gj{8_mDk='>W{/HsW{/Hmֻ$xpGv,@ ]YT-]\<6~mĹ[Mw&a yܩ6%wK'Uiѭ?Ht]g햎e]#kR>Gimn]K> QDo,G|}!1_ 7ay5|-Sx4vlqZdk4j{.ֳG|}^޵9?#__xDna~^޿OlEpCnMj$֟PKc\pl:l:4assets/images-add-ons/learndash-propanel_256x256.jpgnuW+AJFIF   `hh G@@q\4Vz@q<::Bq((۶)WJb jZ]ɱyhR?MDyJ9%RXu t'r5IuH0èzT?/1{Rb8X| 8Z,#D`]S$*xl8<7'늕`7 "/2W";q#^ mU<~3 M-@9>Tdokl#$07B *^SU}X_p5ꜝV !k Nn+кu /T w+n Ƀ2rpU%pB`@?s v[T!ZHxzӧ)m,1SUGEiEhE>ֱM @NYRM}>) YzEM2N<.XFU~iߙa#̦=Ǹ4ʾ\*g5|ˇ"?׌FK \Yt#R"%u*(>[vwCtٗ8t^ۏ|Eg-_+/ .%G6y|cq)}{z >Qϑa_s=s0rHาY<#nn-^R)nrexeK {zSrW2_/[0ל7HfvuSM+`X̹Ǹv3=_s9^N%և3 v:}bѕ0Ut8jJ!i 6[@Ô^eNLo `z`#T>"!$uBD-<96PL t]oJ%U|H&灶Jt~!_R:sfm)`A#aƁ ]iyfMʋW19=^KY2K s#hoIŲVfq".$}uޔd8ͷszGʏC?g0ɏBIaX$Uo`v%qy7G'i6<*:C`fi Ɛ1H(q(,1M*+(H}aD%<]}WB|F2|M^7=DHӜ,!XUyB̋\vjw-{Yv9л9,3e:\'}l4Ds(]ՈiՇ 8a% QF$qƊ~ ?Ac*rlPWK;s'%[6@[I26!h-׻MZVZر;(y$v3&vAJ?E'bui-;'P B?uČM^< /Pc=ra@d)l6+؊x%yVʲn(AhyI>vNJʪ{\2 } ^{GZ`y+(-3đZ WBB^#jfQx&<#,3^Ys$9x[0hRjQW 28'> |NY|؁^ޢ+KK,{;j6n$.*nV;Pdk6x 7 : NBՓ)٫$.pFO= / JA#4N6r$GS20 :(N|T,<=]RZl7 qFs5Jn;xed"nf14l}xڦZN#Xg?wjq2b{9V~_vpp7*1> F8D:ۼ+hemҾϥ*P< +Al/I*"'*꤃vűEU_@wlh: hf-U6)4n^|v<;=IRXXͳJgkzbqϬ8|ԫ'/kH #pힴA2l2!IΚjHY= ]N2̱mu*W_ň ;PIê:0#V@KeEKvC'B/kvGdh*O xQ"GBy=U KY"D,~+xſճԞISD 4>%Z"V#?Bf3+tf[1tݾtN>)'hqѧ\<}9k &,&HȥEH,s1vW?jނQ/Z8J '.t!OC౩v?z~SyOMSV`q57C%dc ߤwTS[Uj>UOBf3OZXzET5~~\_VN8?QG:FVh_GC`e2P2x!]1R@yQ\})ajZ OOZTЩhz}ejcV#= .+/)"#J=MѠ$01C26qD^ "¯.+'lnH^ht>E ߹YJ{A^H_>\!*+)ѕ/i %iye#Y~K%}Y0#Pf JWDXn5XHE FJ:Au4Cl5{M K GEDE99md<ԵCb1I"'ч0xur}ƻV)C)ܝB8 X!J)F4MR/<̣{]CL933i\c6Zٚ4u)bC,R!(At/clkh) T6&moױ S&ěFk7=6R$Cdz={KiCeԴevvGc1m=~]bi9LWgjHƵsErC_(yԄUt71e:)*Ay<3.MF؀HVV)vHgY6[VYWOs'Gݯ!fh:p⊸ Kڲ޷3r܍&$ܾQ^O-Rˌӡ6]hrVG]瓄|<7'ЉV#^x{`@&d# ;j|p `@re,@bXp P@yapNV4=J# ?|$qtćT Z&a"BCGD` bCW0/:P4el= 3A7"\n(g/OD FB-UW +YGjs2> 4X 07P?kɘLawx8 X+(-)md*|F^ #N|U(m<b8m@e=bF5 \Twb?WRȃ Ta+EțUs:ʽܙIs~B*p_ L^uRa`!L'62*i` .U10d^/0 @!6#%17p2 .,ə QaTngݲ)iA(l#u2R U녥W#&j: 2Kx$uyUmR 2fmaIŕlvCc|]jƯC$-׽r3>]o'LpӭN@î9Ȕq*IZ}O&SrO^æ}r8GqL~G+CĵZLY&0y̝$Ut+y+I!fIyS=36K: @(![䴎舼!,ّD>|3 }iRŘ[tI׊6Z)v Q`xKf$1ݓ,uk0~`pe2׺ƣ mhjP  ',9|U*ۮ 5Q_6ه2SR_rb0"0`6f}'qg Lf#6 Gb+Hb3mv֍m ,vz+FQ#*0sS3R4AR+dKrWGJLevΧg-gʚsUm.|F=ug_[sӟ.ul=ygLͨ uՇV̾vj{YVQpkR5Ti_wڜІxYio-$b×rdDKxeph}L* ]¡u"\9} mW~UR8o)ַ`%U<&!Aw| lǣߴ*(+LI,As.ALw٨L{$\5dԶHKOWHL2QIZR+F5 0H' R4+XYfN)S-ϤujfcҔYdg2T Gs% ƵQϠdtw sF?d˝aiut=8Fʥ=v1ǙqCv` ]6FCk&[zMFf3,Ǝǟc*`7'ZqeԇZ5*& d >R{5 5vX}A-Dw4DN>ڐţx~7'{1/]^PPw#4gC`.jh fId{ ıV s gvܬeŮ.!ϴXT[VjqsmXld::%$aÈ>30Em%d㴈͹ ʤUQ584ava#=!1A "2Q0@aq#BRb3SrCp ?zJꈣ@šXr S$@UuyDXjY1+0 scMF`aVjC E$:,NP 7[D j%3wmOߎxZcK,ZIP; * ެE]2<a`w]h͘qz=Wn8V@Hu93>p)!1ǘg^̺́x%V]3(#¼AonAzF,ij3eIܒI'sײnI:!Y%PvY݆![g5YY7sQJ 6I'ˆݎʪ '#RLbw@hvHp6,Ԡ@H,Ϙa淦1ؑ31%3$I; c_32qƢٝ?NY43A_70մHxQY Xw!UE1;$dZ>aىqiNVU9V_ ̤1r׉yrg{}G/d: Y7=YV©Q^)*'vaG=M,q!w?o2v,yFDwUQUQ@c7FOu<S{YT>Dʲ DGWbh*zlZY 3g%I?JylXOYCC? ą"l2V +Pe$`zf$KCYrO2 NϰvfL*ģ>MzJ|=` Lrᇐu翡3e#?2Ga(Cf2}ΌNɔ#At+<7X,2|L[ۣL+Rm;t\@iBGH]?dYP7DsV9#}fu8S?y ه+05$r;%u6`r1nBY0}a&V̐77 Z@J)DX$`Ymdqم}=$JX#pAA N[4&?u,|q#!'L7b7Հ`@:e` L |hGYw! cTW$}4E;ČK<]$N)d|Ke.?X2dt!+ lhD fT$P#&n)MŘD5)`6§|cQ0N#P`Ettlcc6$k^HF* AG#Ҷ6cNm ;ԯ2D!ՅVGn@2q_@19Q]O7ߩ粛Πp\((avkh3uS$SG^i'X[%-: ,"Ge?b5 T {k(oyV?4B ~/ 0 @78p!#$% 5GeG 9ޮaI|EG -ԉzejK1 ,d2XAc fMx6AZ u \43jلK)dkak"uQ hZ0&>ꭑ1ԙ4#@6ٖh[QAp4C[[#?c?{jӌӰi`[NΔ[WiyXʓ7D!;oq~ۥ}3{Mݤ"$'6,g1o\~hHLVnM (zyQSki55\Q}ԷTSVŒGe.љze2r>vgu_>UE N;ħmi=CB95"mE>I jkvcPYDQDI)`& +Q;5&ѥɥ\2@Rq{0gܝDf%-'ͮkN%T2\N/@dV=E*o,S~~E(绚rkrn;?ǃ~ҵK>Pc1cr/#me+ұN=dlSGvnzOQkmvm\`9 n1T (]B%EqZkcC[U ̙$1,uwBZ̀;[ycN[@1OxWkCb@HkB(]G:9wҋ63O?g)J+kQ6iU C3\<$hg|蹌zuSA_cD'SQF[pt4mIW2}r ;+;b/MwG_L*d q'3@Mt:B˨)N7ؘmeDm| ]ji=ՌbCniKUv ;;`S%M$1JpgtVlBc!N7-qUVy)hٳrnuO 2⊐5623c;z"rׇ CaV`5hF7S{ u|(ybo岳=YjC3k @t\"m$I B6ivљ9yr蒊$ʜGH[1ͱŕ֗`έiW ¯k +-_߮elXEu.K{_^lŠ|uTSJia8/v}DceI$Y9hjj g[2L iG\!Ip8XLQ3<" i§Džo@11gkvbrIҋ@*IXA:#!ƐMRb9CB;}+̧"FT=؆M""EDDP*3L(ZYsJ$ $ qZ>& dJn| u官!K6LQFIDEf <(ճfܕgyK-X@MWFDeaL) (4ݟG9΀ ]~×NaVEIhѰD* jA$Ep7"\)ViXP@:!!aOz8cON2ǑwĂAzdN*^BV6E?Ugd(18(DXQVRC)DA 4.?)8$)">~XSs($G% L6臧 DFDd$T uljϙǛfT^V6@BLJ.,Q]X#jjw{2n۬Ӵ 022ZSrAӖrL|5˖XGq9Gԑ@ѯ,xujb-E7v$d5zbOiBӼ:-ڬ&Ɯ zx^8A݋OA/#)2x T}ଛj4jmYVAӹA9('ĥ=L*-<)/F|5 uQȀrDH׈4lmlXE;!X߉s#rƒŅ#T==z?a/Mw6|a^aXyf*>L?hj{)!}tLjBH!ARF&ǖ:~*NRnόնK43#¨wqĮٙfb|$}~򨘛##eLԄ" 蘀2(ee!+ H RG*d$QLvmJRHM2 (ĩXDLЖm6J5CX&c2'm7ܑ# -YXXe`A66x0A+(̊RP,sE@,25]?d?bwlIAVPdxƄZ_d& ɗ)3ce*e5y c`DƆJƌӕ$`) i,4n>*EPl1Šce P "f;Ї=3O=yXهFL0;sIp&e:^\AIR4zp9;5X a]kW8IYG3!4Vb'PKc\rε772assets/images-add-ons/learndash-default_banner.jpgnuW+AJFIF  |KP565D)ru|p4Q#x֧Tـ?.'׳}e2bK IsoL^LJݾtwmԞ;a{?AwKa^,Cǝigվ[h/C ETIfE7M}Φ^WPvwwM-HMo$)-4)--cT|>Nm(RD:>x<1yǝ8&}TEx ߀8s5ei:}O\Ue]zԄ$lB{p71֊w8ޖ*vkZsKS E&Kń1Ѕ}ِ @ۻW-]wDِ @MylD;f@(]go*l } .odkĮD)HߙG*ՙߏ C?  FuL-VD2e'ׂf _ j8+;]"Xںd}!p]Rt GN5ޞ~^}p Z&Ib{خ!l`5_QpD 2T\JQ 5_Xg33""3@j*HlJ=1D#383@jm:>%x(vPÀZ՛dp+T\@h ?.` 370!6@ (.}Rn*e7XdvL񫖊wjB몌~EaQʼn?ߜb!%#w}t`0CkRTJ7cH:`#2FigqmRjdwn@$Kesq&vۓhͶߴkSWP,شPX]QYhf?zTA@Odsd ]OCH"?.yeeX-URP2&<ɍ[`]R}޽3SN^covMM0kr%CFC&k'o{- GqV%N׭3i,ZjC*lX 8y\180}'Ч!IO]vlk3{%SD*Nse.wxBͳH5_Ev@ƣf: Fi[\C ˎ3nGtJjMd3B_s䨁G,8EzDo٦W >T4ыbVUUl45#=vG*_~葬Z2G:2*>9cd Khc8g3&GA9b/_~d_,Wf^ I"+ͣL-߳O옍hc2ZL&лc.}=Ne-75}G,pc"?GW;j#n#E=)T=i)Rw֗k J'9VS%.o<+`U =ns4sg_ZoY&Gwd;՗`uGtiӤ.O&IrR Eu 3.]}G!c#?Ϙ+Xs#H$T%1>N >!붻mv1 K('/Xsa aFF#zepv!igy^`dC$nrvD}{Ɵ@ɛ)Ns+x]&" `|eq@MvߤxCZ?\ֺC,̞8mM3ݼN5mSA7Wo.G>F# b5%i+ Dž:F=J1.;_>d1ψnşWP0c^ǂԬ;.ONQaϛ후]wDu6M,A;g / UMOݸLWW=X1Jmaְ9(B&k'xqg9ϻNuߘ`%r;3[7e'=9ZV%aH-l{bwgk#^ű^1? !1"AQ`q #2Ra$Bb0C34@cr ?1ܨ;)xQYX$_J H9tWъOVwF̪:u:68_bᵗh}ܹ rC|aCƺ)cF+ S TTa/'׏؞'l^F(ZYiwWMHOGuV{,>br8S-U#^H@ÈV,XF1 JHLjq&(={֪ehfk8E+US`"{-C E@8۰Y"{{M`'%bv5mA%+:j=mձ(UmC؎Sܲ:Mf'_͑0\./-XK2FdQ7'Pؘ\yjS|(*YԒx_ ҎK4R.mc 2ꧨaۉXa泆2VyW,Op^x'GjZ?roxM%lI/Rs꣩xmFonԪ1zNBR}Nf~VO4S+/I1crJį^ă8BFb êݞX5x\&F *BFXBO4R)ђX ~%Y9[:Qi^=͉i64BIox$zS"G u #C!Ϸv%\N@%L ]J5uٴ?M8[7.̐A*>g#s:(՘^!{o޵Dʵ(Vv%.(Yty_Jh.K&kҩn @Vx;vg([JʺyvʮOa2:Ĝb㙼ֱdo2A'HSbκK̯b&H`5QuTJdͷe*[IfS,/pٝXY䰌GM{hQ"-Cl5^w*ՠrn_?\XRT^;08aHxhmΕ C%zU N#;aBR TCW'Nh;{%:-fYZll?[l<(әLtbxBE_xj[u=\ߒJ@X{'#DH5@oM^:b?0!eXꔨ޲Xӳ$WVbc{2UC)#,eVT,Z _Ia)fP| zaARYBH^ĬjzlTY&LV۱C^oqq g0[&մ~cM/⯲-Bh%kIȧ*ïtÙYU/ƠG vk@MIx쯄#O e|X/v4l;}T_>X 9m[KjhhaZNP$RMo H }|#gx+ N]^mwk;u8vg|X]M4l[=u/rEcM/|#⨰ѦRx1O-C, :‡ فFN:I=SG",/ chGVlIE< Hi#(\MV7V25+p#1$;tE糍OË(WJxיj%h‰K4,QF07T #m)ǿRb&"]HBCմOoZI#-܉-{s  U2A}݂Y{*j:iw*vФ"W&ƿ͉\u3?^ws8Vߞ&n>ܧBݜGC$lIVR=I="ܞKVj6r~jv"%$'%jmE0oIȶOdgKxžWWۯxYFqi;CA&(d)" &'Py$np NWγӗև FZZmE s8XM3 &>3 €jrIRΌ #9QBpX晃\.aN~%`=M /VxUG-{Ĝ57L2ک]_D`)9ƥaXϊ])J)%PSIV̹fI`CnX7| A-BHj`#:`pd@(` ;h80]=X: 14%{aYf# 8zb+ 6>:;8pP*0ݱX0?qՖ%0 .9  ,W _R eEl_XKaPz|patOKur߼o^9JĶstdɤsPynۼ_`D0)z p;z3VdZr"ojL9 G" Hn<*A`"-+s P/ 'P6h_!+ \')ӛǑPr- dx%(2e969T(J؂S uxJUD qUN7jLC`l c"FUJӘӣM.\R2н{~4 ai1hR =Ee7o5jJ Ԩt m;(m$ma'*4 a5ꧯ6܃E 3Mh\te D5U#T MwQCSTE k=f)vY$\o$^**9s\q2Znn륫 ]bD{׵qx{ILS=/` 370!56@ ϰ:!r% V81 kӽJ5!ˉa+w~qS>n8c9G~ݺq sV١Iҕؽ2\|zpecx']$! ջRyv#ު%̹VS۱)Zϋn|;=F-V6r-e-&bJA.z=yhp)xcJ&5n7\ПpTs7Y O:5/N7VUsݒqqm:f+}>~h)hlI kdP[KrQOY6HBanA5))NT &2NٽI[Uރە 3diY\\Ô_[mp%P'sg\W[S'@Tc;.1v"! jB"Aᎎ:EkbjDyYR}hCGmm |[_5.m`G"{"a'dm)u4蜰z.WwwV5C%1'pHnZ՚aBfS,4Ylq0_{]xUssb C 7Q자DMK@̔,ŸBG2 63r1QvXŊ"ԻjO7maxl>꽐Yn\cyq[ڇYp)3x׭d 0Ɖ!jA=ARrfn%=j7\a Z.kl/g~LG>ֳY' Jץ k؊QW\{rv h\D!%HR q~%Vk:JR67eh`vW_ADx:~_Tmqw{k?q)X|Bag`r֚oh BGr^RC-;Fo橭C2r7}tfdLۯɖH]7`'B6Inir}WJM-A\]2Z.aNjK.·WnHLWz.r1$?t L)qoK\(X>*73jdW!O=z^dc#"L~>P'G;Xa]mS^OZyj6,aP)z&F6+1%J{2HO)~!n)(mR.^^BqךZZmPQ)r[OPM8\x33n2u%scכ6/BknI7sbXh5`@@M{[s׸`Շ;@ !1"AQa2`q #0BRrbc3@s ? !@C^s G#椏wҴP^O#*p( H:TQp,jx:jw˨ѭl#WʡD1R w&?bugv Ry$ l'W=U hM*D"9mQFM>W~oF;aYBDa"ǴʫfVDH]cu$ѡr#mR'q4ȪHAT5.H9"gwKF4y+^:b5:ۢ5˼<*H #r8 B0IS."=`gr -:)Eb:G )l~5U'ܮTmYUese[RB0}=JBF2Rꛀt eV #i[;7WY52 ~'W OZ\  \CQY"vFȩJ=W!c:" Gxg㣽IIff?2IӨ*C+Ы  {g]2—,m`7,x-YF .蹭M<z:Q]VOf ƥk3h@ Ēq/+\UVj]yLU=.4`:\  ""W*!O}ZkPlL8Jº:EFQ]8藑aw$B@2Ĝr'շɵA5б]0XֶzYa'2rT2D$eX-w/?-6DL"+ %޼\foUe'xՁCx6_K}̿1ʴzνsq8MrmkLs TPaAًtcW+>DhO,kPըnɌ;SIAn!"\p P :7Eؐ/ }/{?ty}!l8x0ɁZͺ,?gn6 ^L=88`Hg_ýx!(t.}#*98\Co 6)<hI *ql\LP.ww G.I &/I;nsE\>&ǫJAwRVb:90#-U꿢Zo2f)^ǚ@ؤ&$܆pȰX\TmIG2\#"}v~:ⵚyo}|AE,CFEwk8U*UՁY-A)GY' & Ak'1j}Ŝ柎a:GBA@l R <(_Q`ء}rCiW$l{O]vmt\~lW *tL9~Vn\/ͬXb/F&#h8_]C:<&ݢ]w_M:&hd~O ki/mp90$"[cپ1H4hy(䐅HF e;j鋕ٽl.@ܻdEG] dFnUbm.rޅ.Ϸί ^Ax=r#j?JHf\L+vOH9GJ$Ds-u/<*{QM5ݏc,%P:9RC819cW$:C%&*g1u}5I^:7z_${dMWSlFOB?w_±hE/Xx!bse›lGIEstyi]@Ѯ+h$i!QIAqذBH;.2n4IWC$oB{ER,t`emLwgl؏>dI;Mv_j&ܵeib"bE+RغU9Ld@b{RtKuab} yq".Mvk?gT/Ջf%'VW23nSAmR>wgqG*ŢJ+$knˡX@ !1"A2Q`aq #BRb0@CSr ?E,PI:ᅒWUdFF5`{Ygl}­CxA,jN2KT O+ny*#WNjXYGdx\ʦX7'֕wb!W~ݭ'K+Bm"#"eƙn@?`h#訊 3 '];;w/,jHq3wakIܙjT+ t3r+^Zovgh6K /CsDO r)hr ?,y_F] ޫ\o 2D}R;!Tf]ۛsuP`".HqB{"@G1<|SF4Swl&a\aPDR+ ĂX@I'̝/cBE*a`ں8X<M;gy1 6Y I$s6LܧCS-0Nı'O֚4]W"Ƿ{ӊ|uc4QcG9O#Lon>VLi(P>@iM4H{ܸUDQ]x5tu(ê y`,o-e.# omE#¹  !DhZmv"C,E2 X~+ s,%s褡oT(hԲ$.G1Lr)!”5Pø3%P@;GLE\R6Ew-2MeD2"ȄGh?ƉK<(fbse#4e ߖ2(f, %XZ{=V^4gs1{r\je $nUxTtѶD51e$QuLH,H4!wM\{Z{_2$|6Iq [(קzu*I#`E(I$׻p1ca6M26 $px`tZQA-1m+?"/Ovw[Or?2|#=/=Ǐ YriY*C+Ђ,|Ǣ2Fddst}e^QLM`"ɞuvO"5uO(#֌L|M"ס Y#wvEq= K##f(o8PKc\8'.assets/js/learndash-admin-overview-page.min.jsnuW+Avoid 0 === window.learndash && (window.learndash = {}), void 0 === window.learndash.admin && (window.learndash.admin = {}), window.learndash.admin.overview = { toggleAccordion: function (e) { if ("BUTTON" === e.target.tagName && e.target.classList.contains("ld-bootcamp__accordion--toggle") || "SPAN" === e.target.tagName && e.target.classList.contains("ld-bootcamp__accordion--toggle-indicator")) { e.preventDefault(); var t = e.target.closest(".ld-bootcamp__accordion--single"); if (!t) return; var a = t.querySelector(".ld-bootcamp__accordion--toggle"); if (!a) return; var o = "true" === a.getAttribute("aria-selected"), n = t.querySelector(".ld-bootcamp__accordion--content"); a.setAttribute("aria-selected", !o), a.setAttribute("aria-expanded", !o), n.setAttribute("aria-hidden", o), "true" === a.getAttribute("aria-selected") && this.maybeLoadVideos(t) } }, openFirstIncompleteAccordionPanel() { var e = document.querySelectorAll(".ld-bootcamp__accordion--single"), t = []; e.forEach(function (e) { if (e.classList.contains("-completed")) { var a = e.querySelector(".ld-bootcamp__mark-complete--toggle"); a && a.innerHTML !== LearnDashOverviewPageData.mark_incomplete && (a.innerHTML = LearnDashOverviewPageData.mark_incomplete) } else t.push(e) }); var a = t[0].querySelector(".ld-bootcamp__accordion--toggle"), o = t[0].querySelector(".ld-bootcamp__accordion--content"); a && o && (a.setAttribute("aria-selected", "true"), a.setAttribute("aria-expanded", "true"), o.setAttribute("aria-hidden", "false"), o.focus(), this.maybeLoadVideos(t[0])) }, maybeLoadVideos: function (e) { var t = e.querySelectorAll(".ld-bootcamp__embed iframe"); t && t.forEach(function (e) { e.dataset.src && e.setAttribute("src", e.dataset.src) }) }, toggleBootcamp: function (e) { if ("BUTTON" === e.target.tagName && e.target.classList.contains("ld-bootcamp--toggle")) { e.preventDefault(); var t = document.querySelector(".ld-bootcamp"), a = document.getElementById("ld-bootcamp--show"); t && a && ("ld-bootcamp--hide" === e.target.id && (t.style.display = "none", a.style.display = "block"), "ld-bootcamp--show" === e.target.id && (t.style.display = "block", a.style.display = "none"), this.saveToggleBootcampState(e, t), scroll(0, 0)) } }, saveToggleBootcampState: function (e, t) { if (t) { var a = "none" === t.style.display ? "hide" : "show", o = new XMLHttpRequest; o.open("POST", window.ajaxurl, !0), o.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"), o.onerror = function () { console.log("Ajax request failed.") }, o.send("action=save_bootcamp_toggle_state&nonce=" + e.target.dataset.nonce + "&state=" + a) } }, markComplete: function (e) { if ("BUTTON" === e.target.tagName && (e.target.classList.contains("ld-bootcamp__mark-complete--toggle") || e.target.classList.contains("ld-bootcamp__mark-complete--toggle-indicator"))) { e.preventDefault(); var t = e.target.closest(".ld-bootcamp__accordion--single"); t && (t.classList.contains("-completed") ? t.classList.remove("-completed") : t.classList.add("-completed")), markCompleteButton = t.querySelector(".ld-bootcamp__mark-complete--toggle"), LearnDashOverviewPageData.mark_complete === markCompleteButton.innerHTML ? markCompleteButton.innerHTML = LearnDashOverviewPageData.mark_incomplete : markCompleteButton.innerHTML = LearnDashOverviewPageData.mark_complete, this.saveMarkCompleteState(e.target, t.classList.contains("-completed")), t.classList.contains("-completed") && (this.collapseAccordion(e), this.openFirstIncompleteAccordionPanel()) } }, saveMarkCompleteState: function (e, t) { var a = new XMLHttpRequest; a.open("POST", window.ajaxurl, !0), a.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"), a.onerror = function () { console.log("Ajax request failed.") }, a.send("action=save_bootcamp_mark_complete_state&nonce=" + e.dataset.nonce + "&id=" + e.dataset.id + "&state=" + t) }, collapseAccordion: function (e) { var t = e.target.closest(".ld-bootcamp__accordion--single"); if (t) { var a = t.querySelector(".ld-bootcamp__accordion--toggle"); if (a && "false" !== a.getAttribute("aria-selected")) { var o = t.querySelector(".ld-bootcamp__accordion--content"); a.setAttribute("aria-selected", "false"), a.setAttribute("aria-expanded", "false"), o.setAttribute("aria-hidden", "true") } } }, maybeDisplayShowBootcampButton: function () { var e = document.getElementById("ld-bootcamp--show"), t = document.querySelector(".ld-bootcamp"); e && t && ("block" === t.style.display ? e.style.display = "none" : e.style.display = "block") }, searchSupportSite: function (e) { if ("FORM" === e.target.tagName && "ld-overview--search-documentation-form" === e.target.id) { e.preventDefault(); var t = document.getElementById("ld-overview--search-term"); t && t.value.length > 3 && window.open("https://www.learndash.com/support/docs/?s=" + t.value, "_blank") } }, eventListeners: function () { document.querySelector(".ld-bootcamp").addEventListener("click", learndash.admin.overview.toggleAccordion.bind(learndash.admin.overview)), document.querySelector("body").addEventListener("click", learndash.admin.overview.toggleBootcamp.bind(learndash.admin.overview)), document.querySelector("body").addEventListener("click", learndash.admin.overview.markComplete.bind(learndash.admin.overview)), document.querySelector("body").addEventListener("submit", learndash.admin.overview.searchSupportSite.bind(learndash.admin.overview)) } }, document.addEventListener("DOMContentLoaded", learndash.admin.overview.eventListeners), document.addEventListener("DOMContentLoaded", learndash.admin.overview.openFirstIncompleteAccordionPanel.bind(learndash.admin.overview)), document.addEventListener("DOMContentLoaded", learndash.admin.overview.maybeDisplayShowBootcampButton.bind(learndash.admin.overview));PKc\}bUf f %assets/js/builder/dist/builder.min.jsnuW+AparcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;cA.length&&A.push(e)}function U(e,t,o,u){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var f=!1;if(null===e)f=!0;else switch(l){case"string":case"number":f=!0;break;case"object":switch(e.$$typeof){case r:case n:f=!0}}if(f)return o(u,e,""===t?"."+F(e,0):t),1;if(f=0,t=""===t?".":t+":",Array.isArray(e))for(var c=0;c=t){r=e;break}e=e.next}while(e!==n);null===r?r=n:r===n&&(n=s,a()),(t=r.previous).next=r.previous=s,s.next=r,s.previous=t}}function f(){if(-1===r&&null!==n&&1===n.priorityLevel){l=!0;try{do{s()}while(null!==n&&1===n.priorityLevel)}finally{l=!1,null!==n?a():u=!1}}}function p(e){l=!0;var o=t;t=e;try{if(e)for(;null!==n;){var r=exports.unstable_now();if(!(n.expirationTime<=r))break;do{s()}while(null!==n&&n.expirationTime<=r)}else if(null!==n)do{s()}while(null!==n&&!T())}finally{l=!1,t=o,null!==n?a():u=!1,f()}}var c,v,x=Date,b="function"==typeof setTimeout?setTimeout:void 0,y="function"==typeof clearTimeout?clearTimeout:void 0,d="function"==typeof requestAnimationFrame?requestAnimationFrame:void 0,m="function"==typeof cancelAnimationFrame?cancelAnimationFrame:void 0;function w(e){c=d(function(n){y(v),e(n)}),v=b(function(){m(c),e(exports.unstable_now())},100)}if("object"==typeof performance&&"function"==typeof performance.now){var _=performance;exports.unstable_now=function(){return _.now()}}else exports.unstable_now=function(){return x.now()};var h,k,T,g=null;if("undefined"!=typeof window?g=window:void 0!==e&&(g=e),g&&g._schedMock){var M=g._schedMock;h=M[0],k=M[1],T=M[2],exports.unstable_now=M[3]}else if("undefined"==typeof window||"function"!=typeof MessageChannel){var P=null,C=function(e){if(null!==P)try{P(e)}finally{P=null}};h=function(e){null!==P?setTimeout(h,0,e):(P=e,setTimeout(C,0,!1))},k=function(){P=null},T=function(){return!1}}else{"undefined"!=typeof console&&("function"!=typeof d&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof m&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"));var F=null,L=!1,A=-1,j=!1,q=!1,E=0,I=33,N=33;T=function(){return E<=exports.unstable_now()};var B=new MessageChannel,D=B.port2;B.port1.onmessage=function(){L=!1;var e=F,n=A;F=null,A=-1;var t=exports.unstable_now(),o=!1;if(0>=E-t){if(!(-1!==n&&n<=t))return j||(j=!0,w(O)),F=e,void(A=n);o=!0}if(null!==e){q=!0;try{e(o)}finally{q=!1}}};var O=function(e){if(null!==F){w(O);var n=e-E+N;nn&&(n=8),N=nn?D.postMessage(void 0):j||(j=!0,w(O))},k=function(){F=null,L=!1,A=-1}}exports.unstable_ImmediatePriority=1,exports.unstable_UserBlockingPriority=2,exports.unstable_NormalPriority=3,exports.unstable_IdlePriority=5,exports.unstable_LowPriority=4,exports.unstable_runWithPriority=function(e,n){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var t=o,i=r;o=e,r=exports.unstable_now();try{return n()}finally{o=t,r=i,f()}},exports.unstable_next=function(e){switch(o){case 1:case 2:case 3:var n=3;break;default:n=o}var t=o,i=r;o=n,r=exports.unstable_now();try{return e()}finally{o=t,r=i,f()}},exports.unstable_scheduleCallback=function(e,t){var i=-1!==r?r:exports.unstable_now();if("object"==typeof t&&null!==t&&"number"==typeof t.timeout)t=i+t.timeout;else switch(o){case 1:t=i+-1;break;case 2:t=i+250;break;case 5:t=i+1073741823;break;case 4:t=i+1e4;break;default:t=i+5e3}if(e={callback:e,priorityLevel:o,expirationTime:t,next:null,previous:null},null===n)n=e.next=e.previous=e,a();else{i=null;var l=n;do{if(l.expirationTime>t){i=l;break}l=l.next}while(l!==n);null===i?i=n:i===n&&(n=e,a()),(t=i.previous).next=i.previous=e,e.next=i,e.previous=t}return e},exports.unstable_cancelCallback=function(e){var t=e.next;if(null!==t){if(t===e)n=null;else{e===n&&(n=t);var o=e.previous;o.next=t,t.previous=o}e.next=e.previous=null}},exports.unstable_wrapCallback=function(e){var n=o;return function(){var t=o,i=r;o=n,r=exports.unstable_now();try{return e.apply(this,arguments)}finally{o=t,r=i,f()}}},exports.unstable_getCurrentPriorityLevel=function(){return o},exports.unstable_shouldYield=function(){return!t&&(null!==n&&n.expirationTimethis.eventPool.length&&this.eventPool.push(e)}function fe(e){e.eventPool=[],e.getPooled=ce,e.release=se}t(ue.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=ie)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=ie)},persist:function(){this.isPersistent=ie},isPersistent:oe,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=oe,this._dispatchInstances=this._dispatchListeners=null}}),ue.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},ue.extend=function(e){function n(){}function r(){return l.apply(this,arguments)}var l=this;n.prototype=l.prototype;var a=new n;return t(a,r.prototype),r.prototype=a,r.prototype.constructor=r,r.Interface=t({},l.Interface,e),r.extend=l.extend,fe(r),r},fe(ue);var de=ue.extend({data:null}),pe=ue.extend({data:null}),me=[9,13,27,32],he=Q&&"CompositionEvent"in window,ve=null;Q&&"documentMode"in document&&(ve=document.documentMode);var ge=Q&&"TextEvent"in window&&!ve,ye=Q&&(!he||ve&&8=ve),be=String.fromCharCode(32),ke={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},xe=!1;function Te(e,t){switch(e){case"keyup":return-1!==me.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function we(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Se=!1;function Ee(e,t){switch(e){case"compositionend":return we(t);case"keypress":return 32!==t.which?null:(xe=!0,be);case"textInput":return(e=t.data)===be&&xe?null:e;default:return null}}function Ce(e,t){if(Se)return"compositionend"===e||!he&&Te(e,t)?(e=ae(),le=re=ne=null,Se=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1t}return!1}function bt(e,t,n,r,l){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t}var kt={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){kt[e]=new bt(e,0,!1,e,null)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];kt[t]=new bt(t,1,!1,e[1],null)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){kt[e]=new bt(e,2,!1,e.toLowerCase(),null)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){kt[e]=new bt(e,2,!1,e,null)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){kt[e]=new bt(e,3,!1,e.toLowerCase(),null)}),["checked","multiple","muted","selected"].forEach(function(e){kt[e]=new bt(e,3,!0,e,null)}),["capture","download"].forEach(function(e){kt[e]=new bt(e,4,!1,e,null)}),["cols","rows","size","span"].forEach(function(e){kt[e]=new bt(e,6,!1,e,null)}),["rowSpan","start"].forEach(function(e){kt[e]=new bt(e,5,!1,e.toLowerCase(),null)});var xt=/[\-:]([a-z])/g;function Tt(e){return e[1].toUpperCase()}function wt(e,t,n,r){var l=kt.hasOwnProperty(t)?kt[t]:null;(null!==l?0===l.type:!r&&(2Nn.length&&Nn.push(e)}}}var On={},Fn=0,Ln="_reactListenersID"+(""+Math.random()).slice(2);function An(e){return Object.prototype.hasOwnProperty.call(e,Ln)||(e[Ln]=Fn++,On[e[Ln]]={}),On[e[Ln]]}function Wn(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function Vn(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function jn(e,t){var n,r=Vn(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=Vn(r)}}function Bn(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?Bn(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function Hn(){for(var e=window,t=Wn();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=Wn((e=t.contentWindow).document)}return t}function Qn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function Kn(){var e=Hn();if(Qn(e)){if("selectionStart"in e)var t={start:e.selectionStart,end:e.selectionEnd};else e:{var n=(t=(t=e.ownerDocument)&&t.defaultView||window).getSelection&&t.getSelection();if(n&&0!==n.rangeCount){t=n.anchorNode;var r=n.anchorOffset,l=n.focusNode;n=n.focusOffset;try{t.nodeType,l.nodeType}catch(p){t=null;break e}var a=0,i=-1,o=-1,u=0,c=0,s=e,f=null;t:for(;;){for(var d;s!==t||0!==r&&3!==s.nodeType||(i=a+r),s!==l||0!==n&&3!==s.nodeType||(o=a+n),3===s.nodeType&&(a+=s.nodeValue.length),null!==(d=s.firstChild);)f=s,s=d;for(;;){if(s===e)break t;if(f===t&&++u===r&&(i=a),f===l&&++c===n&&(o=a),null!==(d=s.nextSibling))break;f=(s=f).parentNode}s=d}t=-1===i||-1===o?null:{start:i,end:o}}else t=null}t=t||{start:0,end:0}}else t=null;return{focusedElem:e,selectionRange:t}}function $n(e){var t=Hn(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Bn(n.ownerDocument.documentElement,n)){if(null!==r&&Qn(n))if(t=r.start,void 0===(e=r.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var l=n.textContent.length,a=Math.min(r.start,l);r=void 0===r.end?a:Math.min(r.end,l),!e.extend&&a>r&&(l=r,r=a,a=l),l=jn(n,a);var i=jn(n,r);l&&i&&(1!==e.rangeCount||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&((t=t.createRange()).setStart(l.node,l.offset),e.removeAllRanges(),a>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n=document.documentMode,Yn={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange".split(" ")}},Xn=null,Gn=null,Zn=null,Jn=!1;function er(e,t){var n=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;return Jn||null==Xn||Xn!==Wn(n)?null:("selectionStart"in(n=Xn)&&Qn(n)?n={start:n.selectionStart,end:n.selectionEnd}:n={anchorNode:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset},Zn&&on(Zn,n)?null:(Zn=n,(e=ue.getPooled(Yn.select,Gn,e,t)).type="select",e.target=Xn,H(e),e))}var tr={eventTypes:Yn,extractEvents:function(e,t,n,r){var l,a=r.window===r?r.document:9===r.nodeType?r:r.ownerDocument;if(!(l=!a)){e:{a=An(a),l=k.onSelect;for(var i=0;i=t.length||l("93"),t=t[0]),n=t),null==n&&(n="")),e._wrapperState={initialValue:St(n)}}function or(e,t){var n=St(t.value),r=St(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ur(e){var t=e.textContent;t===e._wrapperState.initialValue&&(e.value=t)}N.injectEventPluginOrder("ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin".split(" ")),x=L,T=O,w=F,N.injectEventPluginsByName({SimpleEventPlugin:_n,EnterLeaveEventPlugin:rn,ChangeEventPlugin:Qt,SelectEventPlugin:tr,BeforeInputEventPlugin:_e});var cr={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function sr(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function fr(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?sr(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var dr=void 0,pr=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,r,l){MSApp.execUnsafeLocalFunction(function(){return e(t,n)})}:e}(function(e,t){if(e.namespaceURI!==cr.svg||"innerHTML"in e)e.innerHTML=t;else{for((dr=dr||document.createElement("div")).innerHTML=""+t+"",t=dr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function mr(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var hr={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},vr=["Webkit","ms","Moz","O"];function gr(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||hr.hasOwnProperty(e)&&hr[e]?(""+t).trim():t+"px"}function yr(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),l=gr(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}Object.keys(hr).forEach(function(e){vr.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),hr[t]=hr[e]})});var br=t({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function kr(e,t){t&&(br[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML)&&l("137",e,""),null!=t.dangerouslySetInnerHTML&&(null!=t.children&&l("60"),"object"==typeof t.dangerouslySetInnerHTML&&"__html"in t.dangerouslySetInnerHTML||l("61")),null!=t.style&&"object"!=typeof t.style&&l("62",""))}function xr(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function Tr(e,t){var n=An(e=9===e.nodeType||11===e.nodeType?e:e.ownerDocument);t=k[t];for(var r=0;rOr||(e.current=Dr[Or],Dr[Or]=null,Or--)}function Lr(e,t){Dr[++Or]=e.current,e.current=t}var Ar={},Wr={current:Ar},Vr={current:!1},jr=Ar;function Br(e,t){var n=e.type.contextTypes;if(!n)return Ar;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l,a={};for(l in n)a[l]=t[l];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function Hr(e){return null!=(e=e.childContextTypes)}function Qr(e){Fr(Vr,e),Fr(Wr,e)}function Kr(e){Fr(Vr,e),Fr(Wr,e)}function $r(e,t,n){Wr.current!==Ar&&l("168"),Lr(Wr,t,e),Lr(Vr,n,e)}function qr(e,n,r){var a=e.stateNode;if(e=n.childContextTypes,"function"!=typeof a.getChildContext)return r;for(var i in a=a.getChildContext())i in e||l("108",st(n)||"Unknown",i);return t({},r,a)}function Yr(e){var t=e.stateNode;return t=t&&t.__reactInternalMemoizedMergedChildContext||Ar,jr=Wr.current,Lr(Wr,t,e),Lr(Vr,Vr.current,e),!0}function Xr(e,t,n){var r=e.stateNode;r||l("169"),n?(t=qr(e,t,jr),r.__reactInternalMemoizedMergedChildContext=t,Fr(Vr,e),Fr(Wr,e),Lr(Wr,t,e)):Fr(Vr,e),Lr(Vr,n,e)}var Gr=null,Zr=null;function Jr(e){return function(t){try{return e(t)}catch(n){}}}function el(e){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)return!0;try{var n=t.inject(e);Gr=Jr(function(e){return t.onCommitFiberRoot(n,e)}),Zr=Jr(function(e){return t.onCommitFiberUnmount(n,e)})}catch(r){}return!0}function tl(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.contextDependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function nl(e,t,n,r){return new tl(e,t,n,r)}function rl(e){return!(!(e=e.prototype)||!e.isReactComponent)}function ll(e){if("function"==typeof e)return rl(e)?1:0;if(null!=e){if((e=e.$$typeof)===lt)return 11;if(e===it)return 14}return 2}function al(e,t){var n=e.alternate;return null===n?((n=nl(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.effectTag=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childExpirationTime=e.childExpirationTime,n.expirationTime=e.expirationTime,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,n.contextDependencies=e.contextDependencies,n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function il(e,t,n,r,a,i){var o=2;if(r=e,"function"==typeof e)rl(e)&&(o=1);else if("string"==typeof e)o=5;else e:switch(e){case Ze:return ol(n.children,a,i,t);case rt:return ul(n,3|a,i,t);case Je:return ul(n,2|a,i,t);case et:return(e=nl(12,n,t,4|a)).elementType=et,e.type=et,e.expirationTime=i,e;case at:return(e=nl(13,n,t,a)).elementType=at,e.type=at,e.expirationTime=i,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case tt:o=10;break e;case nt:o=9;break e;case lt:o=11;break e;case it:o=14;break e;case ot:o=16,r=null;break e}l("130",null==e?e:typeof e,"")}return(t=nl(o,n,t,a)).elementType=e,t.type=r,t.expirationTime=i,t}function ol(e,t,n,r){return(e=nl(7,e,r,t)).expirationTime=n,e}function ul(e,t,n,r){return e=nl(8,e,r,t),t=0==(1&t)?Je:rt,e.elementType=t,e.type=t,e.expirationTime=n,e}function cl(e,t,n){return(e=nl(6,e,null,t)).expirationTime=n,e}function sl(e,t,n){return(t=nl(4,null!==e.children?e.children:[],e.key,t)).expirationTime=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function fl(e,t){e.didError=!1;var n=e.earliestPendingTime;0===n?e.earliestPendingTime=e.latestPendingTime=t:nt&&(e.latestPendingTime=t),hl(t,e)}function dl(e,t){if(e.didError=!1,0===t)e.earliestPendingTime=0,e.latestPendingTime=0,e.earliestSuspendedTime=0,e.latestSuspendedTime=0,e.latestPingedTime=0;else{tt?e.earliestPendingTime=e.latestPendingTime=0:e.earliestPendingTime>t&&(e.earliestPendingTime=e.latestPendingTime)),0===(n=e.earliestSuspendedTime)?fl(e,t):tn&&fl(e,t)}hl(0,e)}function pl(e,t){e.didError=!1,e.latestPingedTime>=t&&(e.latestPingedTime=0);var n=e.earliestPendingTime,r=e.latestPendingTime;n===t?e.earliestPendingTime=r===t?e.latestPendingTime=0:r:r===t&&(e.latestPendingTime=n),n=e.earliestSuspendedTime,r=e.latestSuspendedTime,0===n?e.earliestSuspendedTime=e.latestSuspendedTime=t:nt&&(e.latestSuspendedTime=t),hl(t,e)}function ml(e,t){var n=e.earliestPendingTime;return n>t&&(t=n),(e=e.earliestSuspendedTime)>t&&(t=e),t}function hl(e,t){var n=t.earliestSuspendedTime,r=t.latestSuspendedTime,l=t.earliestPendingTime,a=t.latestPingedTime;0===(l=0!==l?l:a)&&(0===e||re&&(e=n),t.nextExpirationTimeToWorkOn=l,t.expirationTime=e}function vl(e,n){if(e&&e.defaultProps)for(var r in n=t({},n),e=e.defaultProps)void 0===n[r]&&(n[r]=e[r]);return n}function gl(e){var t=e._result;switch(e._status){case 1:return t;case 2:case 0:throw t;default:switch(e._status=0,(t=(t=e._ctor)()).then(function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)},function(t){0===e._status&&(e._status=2,e._result=t)}),e._status){case 1:return e._result;case 2:throw e._result}throw e._result=t,t}}var yl=(new e.Component).refs;function bl(e,n,r,l){r=null==(r=r(l,n=e.memoizedState))?n:t({},n,r),e.memoizedState=r,null!==(l=e.updateQueue)&&0===e.expirationTime&&(l.baseState=r)}var kl={isMounted:function(e){return!!(e=e._reactInternalFiber)&&2===un(e)},enqueueSetState:function(e,t,n){e=e._reactInternalFiber;var r=Vo(),l=ci(r=so(r,e));l.payload=t,null!=n&&(l.callback=n),lo(),fi(e,l),ho(e,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternalFiber;var r=Vo(),l=ci(r=so(r,e));l.tag=ri,l.payload=t,null!=n&&(l.callback=n),lo(),fi(e,l),ho(e,r)},enqueueForceUpdate:function(e,t){e=e._reactInternalFiber;var n=Vo(),r=ci(n=so(n,e));r.tag=li,null!=t&&(r.callback=t),lo(),fi(e,r),ho(e,n)}};function xl(e,t,n,r,l,a,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,i):!t.prototype||!t.prototype.isPureReactComponent||(!on(n,r)||!on(l,a))}function Tl(e,t,n){var r=!1,l=Ar,a=t.contextType;return"object"==typeof a&&null!==a?a=ti(a):(l=Hr(t)?jr:Wr.current,a=(r=null!=(r=t.contextTypes))?Br(e,l):Ar),t=new t(n,a),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=kl,e.stateNode=t,t._reactInternalFiber=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=l,e.__reactInternalMemoizedMaskedChildContext=a),t}function wl(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&kl.enqueueReplaceState(t,t.state,null)}function Sl(e,t,n,r){var l=e.stateNode;l.props=n,l.state=e.memoizedState,l.refs=yl;var a=t.contextType;"object"==typeof a&&null!==a?l.context=ti(a):(a=Hr(t)?jr:Wr.current,l.context=Br(e,a)),null!==(a=e.updateQueue)&&(hi(e,a,n,l,r),l.state=e.memoizedState),"function"==typeof(a=t.getDerivedStateFromProps)&&(bl(e,t,a,n),l.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof l.getSnapshotBeforeUpdate||"function"!=typeof l.UNSAFE_componentWillMount&&"function"!=typeof l.componentWillMount||(t=l.state,"function"==typeof l.componentWillMount&&l.componentWillMount(),"function"==typeof l.UNSAFE_componentWillMount&&l.UNSAFE_componentWillMount(),t!==l.state&&kl.enqueueReplaceState(l,l.state,null),null!==(a=e.updateQueue)&&(hi(e,a,n,l,r),l.state=e.memoizedState)),"function"==typeof l.componentDidMount&&(e.effectTag|=4)}var El=Array.isArray;function Cl(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){n=n._owner;var r=void 0;n&&(1!==n.tag&&l("309"),r=n.stateNode),r||l("147",e);var a=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===a?t.ref:((t=function(e){var t=r.refs;t===yl&&(t=r.refs={}),null===e?delete t[a]:t[a]=e})._stringRef=a,t)}"string"!=typeof e&&l("284"),n._owner||l("290",e)}return e}function _l(e,t){"textarea"!==e.type&&l("31","[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t,"")}function Pl(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.effectTag=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t,n){return(e=al(e,t,n)).index=0,e.sibling=null,e}function i(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)h?(v=f,f=null):v=f.sibling;var g=p(l,f,o[h],u);if(null===g){null===f&&(f=v);break}e&&f&&null===g.alternate&&t(l,f),a=i(g,a,h),null===s?c=g:s.sibling=g,s=g,f=v}if(h===o.length)return n(l,f),c;if(null===f){for(;hv?(g=h,h=null):g=h.sibling;var b=p(a,h,y.value,c);if(null===b){h||(h=g);break}e&&h&&null===b.alternate&&t(a,h),o=i(b,o,v),null===f?s=b:f.sibling=b,f=b,h=g}if(y.done)return n(a,h),s;if(null===h){for(;!y.done;v++,y=u.next())null!==(y=d(a,y.value,c))&&(o=i(y,o,v),null===f?s=y:f.sibling=y,f=y);return s}for(h=r(a,h);!y.done;v++,y=u.next())null!==(y=m(h,a,v,y.value,c))&&(e&&null!==y.alternate&&h.delete(null===y.key?v:y.key),o=i(y,o,v),null===f?s=y:f.sibling=y,f=y);return e&&h.forEach(function(e){return t(a,e)}),s}return function(e,r,i,u){var c="object"==typeof i&&null!==i&&i.type===Ze&&null===i.key;c&&(i=i.props.children);var s="object"==typeof i&&null!==i;if(s)switch(i.$$typeof){case Xe:e:{for(s=i.key,c=r;null!==c;){if(c.key===s){if(7===c.tag?i.type===Ze:c.elementType===i.type){n(e,c.sibling),(r=a(c,i.type===Ze?i.props.children:i.props,u)).ref=Cl(e,c,i),r.return=e,e=r;break e}n(e,c);break}t(e,c),c=c.sibling}i.type===Ze?((r=ol(i.props.children,e.mode,u,i.key)).return=e,e=r):((u=il(i.type,i.key,i.props,null,e.mode,u)).ref=Cl(e,r,i),u.return=e,e=u)}return o(e);case Ge:e:{for(c=i.key;null!==r;){if(r.key===c){if(4===r.tag&&r.stateNode.containerInfo===i.containerInfo&&r.stateNode.implementation===i.implementation){n(e,r.sibling),(r=a(r,i.children||[],u)).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=sl(i,e.mode,u)).return=e,e=r}return o(e)}if("string"==typeof i||"number"==typeof i)return i=""+i,null!==r&&6===r.tag?(n(e,r.sibling),(r=a(r,i,u)).return=e,e=r):(n(e,r),(r=cl(i,e.mode,u)).return=e,e=r),o(e);if(El(i))return h(e,r,i,u);if(ct(i))return v(e,r,i,u);if(s&&_l(e,i),void 0===i&&!c)switch(e.tag){case 1:case 0:l("152",(u=e.type).displayName||u.name||"Component")}return n(e,r)}}var Nl=Pl(!0),zl=Pl(!1),Rl={},Ul={current:Rl},Il={current:Rl},Ml={current:Rl};function Dl(e){return e===Rl&&l("174"),e}function Ol(e,t){Lr(Ml,t,e),Lr(Il,e,e),Lr(Ul,Rl,e);var n=t.nodeType;switch(n){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:fr(null,"");break;default:t=fr(t=(n=8===n?t.parentNode:t).namespaceURI||null,n=n.tagName)}Fr(Ul,e),Lr(Ul,t,e)}function Fl(e){Fr(Ul,e),Fr(Il,e),Fr(Ml,e)}function Ll(e){Dl(Ml.current);var t=Dl(Ul.current),n=fr(t,e.type);t!==n&&(Lr(Il,e,e),Lr(Ul,n,e))}function Al(e){Il.current===e&&(Fr(Ul,e),Fr(Il,e))}var Wl=0,Vl=2,jl=4,Bl=8,Hl=16,Ql=32,Kl=64,$l=128,ql=$e.ReactCurrentDispatcher,Yl=0,Xl=null,Gl=null,Zl=null,Jl=null,ea=null,ta=null,na=0,ra=null,la=0,aa=!1,ia=null,oa=0;function ua(){l("321")}function ca(e,t){if(null===t)return!1;for(var n=0;nna&&(na=f)):i=c.eagerReducer===e?c.eagerState:e(i,c.action),o=c,c=c.next}while(null!==c&&c!==r);s||(u=o,a=i),ln(i,t.memoizedState)||(Da=!0),t.memoizedState=i,t.baseUpdate=u,t.baseState=a,n.lastRenderedState=i}return[t.memoizedState,n.dispatch]}function va(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===ra?(ra={lastEffect:null}).lastEffect=e.next=e:null===(t=ra.lastEffect)?ra.lastEffect=e.next=e:(n=t.next,t.next=e,e.next=n,ra.lastEffect=e),e}function ga(e,t,n,r){var l=da();la|=e,l.memoizedState=va(t,n,void 0,void 0===r?null:r)}function ya(e,t,n,r){var l=pa();r=void 0===r?null:r;var a=void 0;if(null!==Gl){var i=Gl.memoizedState;if(a=i.destroy,null!==r&&ca(r,i.deps))return void va(Wl,n,a,r)}la|=e,l.memoizedState=va(t,n,a,r)}function ba(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function ka(){}function xa(e,t,n){25>oa||l("301");var r=e.alternate;if(e===Xl||null!==r&&r===Xl)if(aa=!0,e={expirationTime:Yl,action:n,eagerReducer:null,eagerState:null,next:null},null===ia&&(ia=new Map),void 0===(n=ia.get(t)))ia.set(t,e);else{for(t=n;null!==t.next;)t=t.next;t.next=e}else{lo();var a=Vo(),i={expirationTime:a=so(a,e),action:n,eagerReducer:null,eagerState:null,next:null},o=t.last;if(null===o)i.next=i;else{var u=o.next;null!==u&&(i.next=u),o.next=i}if(t.last=i,0===e.expirationTime&&(null===r||0===r.expirationTime)&&null!==(r=t.lastRenderedReducer))try{var c=t.lastRenderedState,s=r(c,n);if(i.eagerReducer=r,i.eagerState=s,ln(s,c))return}catch(f){}ho(e,a)}}var Ta={readContext:ti,useCallback:ua,useContext:ua,useEffect:ua,useImperativeHandle:ua,useLayoutEffect:ua,useMemo:ua,useReducer:ua,useRef:ua,useState:ua,useDebugValue:ua},wa={readContext:ti,useCallback:function(e,t){return da().memoizedState=[e,void 0===t?null:t],e},useContext:ti,useEffect:function(e,t){return ga(516,$l|Kl,e,t)},useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,ga(4,jl|Ql,ba.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ga(4,jl|Ql,e,t)},useMemo:function(e,t){var n=da();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=da();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={last:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=xa.bind(null,Xl,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},da().memoizedState=e},useState:function(e){var t=da();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={last:null,dispatch:null,lastRenderedReducer:ma,lastRenderedState:e}).dispatch=xa.bind(null,Xl,e),[t.memoizedState,e]},useDebugValue:ka},Sa={readContext:ti,useCallback:function(e,t){var n=pa();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ca(t,r[1])?r[0]:(n.memoizedState=[e,t],e)},useContext:ti,useEffect:function(e,t){return ya(516,$l|Kl,e,t)},useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,ya(4,jl|Ql,ba.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ya(4,jl|Ql,e,t)},useMemo:function(e,t){var n=pa();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ca(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)},useReducer:ha,useRef:function(){return pa().memoizedState},useState:function(e){return ha(ma,e)},useDebugValue:ka},Ea=null,Ca=null,_a=!1;function Pa(e,t){var n=nl(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.effectTag=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Na(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);case 13:default:return!1}}function za(e){if(_a){var t=Ca;if(t){var n=t;if(!Na(e,t)){if(!(t=Ir(n))||!Na(e,t))return e.effectTag|=2,_a=!1,void(Ea=e);Pa(Ea,n)}Ea=e,Ca=Mr(t)}else e.effectTag|=2,_a=!1,Ea=e}}function Ra(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&18!==e.tag;)e=e.return;Ea=e}function Ua(e){if(e!==Ea)return!1;if(!_a)return Ra(e),_a=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!_r(t,e.memoizedProps))for(t=Ca;t;)Pa(e,t),t=Ir(t);return Ra(e),Ca=Ea?Ir(e.stateNode):null,!0}function Ia(){Ca=Ea=null,_a=!1}var Ma=$e.ReactCurrentOwner,Da=!1;function Oa(e,t,n,r){t.child=null===e?zl(t,null,n,r):Nl(t,e.child,n,r)}function Fa(e,t,n,r,l){n=n.render;var a=t.ref;return ei(t,l),r=sa(e,t,n,r,a,l),null===e||Da?(t.effectTag|=1,Oa(e,t,r,l),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=l&&(e.expirationTime=0),Ka(e,t,l))}function La(e,t,n,r,l,a){if(null===e){var i=n.type;return"function"!=typeof i||rl(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=il(n.type,null,r,null,t.mode,a)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,Aa(e,t,i,r,l,a))}return i=e.child,l=n?Qa(e,t,n):null!==(t=Ka(e,t,n))?t.sibling:null}return Ka(e,t,n)}}else Da=!1;switch(t.expirationTime=0,t.tag){case 2:r=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps;var a=Br(t,Wr.current);if(ei(t,n),a=sa(null,t,r,e,a,n),t.effectTag|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof){if(t.tag=1,fa(),Hr(r)){var i=!0;Yr(t)}else i=!1;t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null;var o=r.getDerivedStateFromProps;"function"==typeof o&&bl(t,r,o,e),a.updater=kl,t.stateNode=a,a._reactInternalFiber=t,Sl(t,r,e,n),t=Ba(null,t,r,!0,i,n)}else t.tag=0,Oa(null,t,a,n),t=t.child;return t;case 16:switch(a=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),i=t.pendingProps,e=gl(a),t.type=e,a=t.tag=ll(e),i=vl(e,i),o=void 0,a){case 0:o=Va(null,t,e,i,n);break;case 1:o=ja(null,t,e,i,n);break;case 11:o=Fa(null,t,e,i,n);break;case 14:o=La(null,t,e,vl(e.type,i),r,n);break;default:l("306",e,"")}return o;case 0:return r=t.type,a=t.pendingProps,Va(e,t,r,a=t.elementType===r?a:vl(r,a),n);case 1:return r=t.type,a=t.pendingProps,ja(e,t,r,a=t.elementType===r?a:vl(r,a),n);case 3:return Ha(t),null===(r=t.updateQueue)&&l("282"),a=null!==(a=t.memoizedState)?a.element:null,hi(t,r,t.pendingProps,null,n),(r=t.memoizedState.element)===a?(Ia(),t=Ka(e,t,n)):(a=t.stateNode,(a=(null===e||null===e.child)&&a.hydrate)&&(Ca=Mr(t.stateNode.containerInfo),Ea=t,a=_a=!0),a?(t.effectTag|=2,t.child=zl(t,null,r,n)):(Oa(e,t,r,n),Ia()),t=t.child),t;case 5:return Ll(t),null===e&&za(t),r=t.type,a=t.pendingProps,i=null!==e?e.memoizedProps:null,o=a.children,_r(r,a)?o=null:null!==i&&_r(r,i)&&(t.effectTag|=16),Wa(e,t),1!==n&&1&t.mode&&a.hidden?(t.expirationTime=t.childExpirationTime=1,t=null):(Oa(e,t,o,n),t=t.child),t;case 6:return null===e&&za(t),null;case 13:return Qa(e,t,n);case 4:return Ol(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Nl(t,null,r,n):Oa(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,Fa(e,t,r,a=t.elementType===r?a:vl(r,a),n);case 7:return Oa(e,t,t.pendingProps,n),t.child;case 8:case 12:return Oa(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,a=t.pendingProps,o=t.memoizedProps,Za(t,i=a.value),null!==o){var u=o.value;if(0===(i=ln(u,i)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(u,i):1073741823))){if(o.children===a.children&&!Vr.current){t=Ka(e,t,n);break e}}else for(null!==(u=t.child)&&(u.return=t);null!==u;){var c=u.contextDependencies;if(null!==c){o=u.child;for(var s=c.first;null!==s;){if(s.context===r&&0!=(s.observedBits&i)){1===u.tag&&((s=ci(n)).tag=li,fi(u,s)),u.expirationTime=t&&(Da=!0),e.contextDependencies=null}function ti(e,t){return Ga!==e&&!1!==t&&0!==t&&("number"==typeof t&&1073741823!==t||(Ga=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Xa?(null===Ya&&l("308"),Xa=t,Ya.contextDependencies={first:t,expirationTime:0}):Xa=Xa.next=t),e._currentValue}var ni=0,ri=1,li=2,ai=3,ii=!1;function oi(e){return{baseState:e,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function ui(e){return{baseState:e.baseState,firstUpdate:e.firstUpdate,lastUpdate:e.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function ci(e){return{expirationTime:e,tag:ni,payload:null,callback:null,next:null,nextEffect:null}}function si(e,t){null===e.lastUpdate?e.firstUpdate=e.lastUpdate=t:(e.lastUpdate.next=t,e.lastUpdate=t)}function fi(e,t){var n=e.alternate;if(null===n){var r=e.updateQueue,l=null;null===r&&(r=e.updateQueue=oi(e.memoizedState))}else r=e.updateQueue,l=n.updateQueue,null===r?null===l?(r=e.updateQueue=oi(e.memoizedState),l=n.updateQueue=oi(n.memoizedState)):r=e.updateQueue=ui(l):null===l&&(l=n.updateQueue=ui(r));null===l||r===l?si(r,t):null===r.lastUpdate||null===l.lastUpdate?(si(r,t),si(l,t)):(si(r,t),l.lastUpdate=t)}function di(e,t){var n=e.updateQueue;null===(n=null===n?e.updateQueue=oi(e.memoizedState):pi(e,n)).lastCapturedUpdate?n.firstCapturedUpdate=n.lastCapturedUpdate=t:(n.lastCapturedUpdate.next=t,n.lastCapturedUpdate=t)}function pi(e,t){var n=e.alternate;return null!==n&&t===n.updateQueue&&(t=e.updateQueue=ui(t)),t}function mi(e,n,r,l,a,i){switch(r.tag){case ri:return"function"==typeof(e=r.payload)?e.call(i,l,a):e;case ai:e.effectTag=-2049&e.effectTag|64;case ni:if(null==(a="function"==typeof(e=r.payload)?e.call(i,l,a):e))break;return t({},l,a);case li:ii=!0}return l}function hi(e,t,n,r,l){ii=!1;for(var a=(t=pi(e,t)).baseState,i=null,o=0,u=t.firstUpdate,c=a;null!==u;){var s=u.expirationTime;sa?i:a),Ai.current=null,a=void 0,1r?t:r)&&(Zi=null),Wo(e,t)}function io(e){for(;;){var n=e.alternate,r=e.return,a=e.sibling;if(0==(1024&e.effectTag)){ji=e;e:{var i=n,o=Hi,u=(n=e).pendingProps;switch(n.tag){case 2:case 16:break;case 15:case 0:break;case 1:Hr(n.type)&&Qr(n);break;case 3:Fl(n),Kr(n),(u=n.stateNode).pendingContext&&(u.context=u.pendingContext,u.pendingContext=null),null!==i&&null!==i.child||(Ua(n),n.effectTag&=-3),xi(n);break;case 5:Al(n);var c=Dl(Ml.current);if(o=n.type,null!==i&&null!=n.stateNode)Ti(i,n,o,u,c),i.ref!==n.ref&&(n.effectTag|=128);else if(u){var s=Dl(Ul.current);if(Ua(n)){i=(u=n).stateNode;var f=u.type,d=u.memoizedProps,p=c;switch(i[I]=u,i[M]=d,o=void 0,c=f){case"iframe":case"object":Un("load",i);break;case"video":case"audio":for(f=0;f<\/script>",f=i.removeChild(i.firstChild)):"string"==typeof i.is?f=f.createElement(p,{is:i.is}):(f=f.createElement(p),"select"===p&&(p=f,i.multiple?p.multiple=!0:i.size&&(p.size=i.size))):f=f.createElementNS(s,p),(i=f)[I]=d,i[M]=u,ki(i,n,!1,!1),p=i;var m=c,h=xr(f=o,d=u);switch(f){case"iframe":case"object":Un("load",p),c=d;break;case"video":case"audio":for(c=0;cu&&(u=i),(c=o.childExpirationTime)>u&&(u=c),o=o.sibling;n.childExpirationTime=u}if(null!==ji)return ji;null!==r&&0==(1024&r.effectTag)&&(null===r.firstEffect&&(r.firstEffect=e.firstEffect),null!==e.lastEffect&&(null!==r.lastEffect&&(r.lastEffect.nextEffect=e.firstEffect),r.lastEffect=e.lastEffect),1=h?p=0:(-1===p||h component higher in the tree to provide a loading indicator or placeholder to display."+ft(s))}Ki=!0,f=yi(f,s),u=c;do{switch(u.tag){case 3:u.effectTag|=2048,u.expirationTime=o,di(u,o=Di(u,f,o));break e;case 1:if(p=f,m=u.type,s=u.stateNode,0==(64&u.effectTag)&&("function"==typeof m.getDerivedStateFromError||null!==s&&"function"==typeof s.componentDidCatch&&(null===Zi||!Zi.has(s)))){u.effectTag|=2048,u.expirationTime=o,di(u,o=Oi(u,p,o));break e}}u=u.return}while(null!==u)}ji=io(i);continue}a=!0,Go(g)}}break}if(Vi=!1,Li.current=n,Ga=Xa=Ya=null,fa(),a)Bi=null,e.finishedWork=null;else if(null!==ji)e.finishedWork=null;else{if(null===(n=e.current.alternate)&&l("281"),Bi=null,Ki){if(a=e.latestPendingTime,i=e.latestSuspendedTime,o=e.latestPingedTime,0!==a&&at?0:t)):(e.pendingCommitExpirationTime=r,e.finishedWork=n)}}function co(e,t){for(var n=e.return;null!==n;){switch(n.tag){case 1:var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Zi||!Zi.has(r)))return fi(n,e=Oi(n,e=yi(t,e),1073741823)),void ho(n,1073741823);break;case 3:return fi(n,e=Di(n,e=yi(t,e),1073741823)),void ho(n,1073741823)}n=n.return}3===e.tag&&(fi(e,n=Di(e,n=yi(t,e),1073741823)),ho(e,1073741823))}function so(e,t){var r=n.unstable_getCurrentPriorityLevel(),a=void 0;if(0==(1&t.mode))a=1073741823;else if(Vi&&!qi)a=Hi;else{switch(r){case n.unstable_ImmediatePriority:a=1073741823;break;case n.unstable_UserBlockingPriority:a=1073741822-10*(1+((1073741822-e+15)/10|0));break;case n.unstable_NormalPriority:a=1073741822-25*(1+((1073741822-e+500)/25|0));break;case n.unstable_LowPriority:case n.unstable_IdlePriority:a=1;break;default:l("313")}null!==Bi&&a===Hi&&--a}return r===n.unstable_UserBlockingPriority&&(0===So||a=r&&(e.didError=!1,(0===(t=e.latestPingedTime)||t>n)&&(e.latestPingedTime=n),hl(n,e),0!==(n=e.expirationTime)&&jo(e,n)))}function po(e,t){var n=e.stateNode;null!==n&&n.delete(t),null!==(e=mo(e,t=so(t=Vo(),e)))&&(fl(e,t),0!==(t=e.expirationTime)&&jo(e,t))}function mo(e,t){e.expirationTimeHi&&Ji(),fl(e,t),Vi&&!qi&&Bi===e||jo(e,e.expirationTime),Mo>Io&&(Mo=0,l("185")))}function vo(e,t,r,l,a){return n.unstable_runWithPriority(n.unstable_ImmediatePriority,function(){return e(t,r,l,a)})}var go=null,yo=null,bo=0,ko=void 0,xo=!1,To=null,wo=0,So=0,Eo=!1,Co=null,_o=!1,Po=!1,No=null,zo=n.unstable_now(),Ro=1073741822-(zo/10|0),Uo=Ro,Io=50,Mo=0,Do=null;function Oo(){Ro=1073741822-((n.unstable_now()-zo)/10|0)}function Fo(e,t){if(0!==bo){if(te.expirationTime&&(e.expirationTime=t),xo||(_o?Po&&(To=e,wo=1073741823,Yo(e,1073741823,!1)):1073741823===t?$o(1073741823,!1):Fo(e,t))}function Bo(){var e=0,t=null;if(null!==yo)for(var n=yo,r=go;null!==r;){var a=r.expirationTime;if(0===a){if((null===n||null===yo)&&l("244"),r===r.nextScheduledRoot){go=yo=r.nextScheduledRoot=null;break}if(r===go)go=a=r.nextScheduledRoot,yo.nextScheduledRoot=a,r.nextScheduledRoot=null;else{if(r===yo){(yo=n).nextScheduledRoot=go,r.nextScheduledRoot=null;break}n.nextScheduledRoot=r.nextScheduledRoot,r.nextScheduledRoot=null}r=n.nextScheduledRoot}else{if(a>e&&(e=a,t=r),r===yo)break;if(1073741823===e)break;n=r,r=r.nextScheduledRoot}}To=t,wo=e}var Ho=!1;function Qo(){return!!Ho||!!n.unstable_shouldYield()&&(Ho=!0)}function Ko(){try{if(!Qo()&&null!==go){Oo();var e=go;do{var t=e.expirationTime;0!==t&&Ro<=t&&(e.nextExpirationTimeToWorkOn=Ro),e=e.nextScheduledRoot}while(e!==go)}$o(0,!0)}finally{Ho=!1}}function $o(e,t){if(Bo(),t)for(Oo(),Uo=Ro;null!==To&&0!==wo&&e<=wo&&!(Ho&&Ro>wo);)Yo(To,wo,Ro>wo),Bo(),Oo(),Uo=Ro;else for(;null!==To&&0!==wo&&e<=wo;)Yo(To,wo,!1),Bo();if(t&&(bo=0,ko=null),0!==wo&&Fo(To,wo),Mo=0,Do=null,null!==No)for(e=No,No=null,t=0;t=r&&(null===No?No=[l]:No.push(l),l._defer))return e.finishedWork=t,void(e.expirationTime=0);e.finishedWork=null,e===Do?Mo++:(Do=e,Mo=0),n.unstable_runWithPriority(n.unstable_ImmediatePriority,function(){ao(e,t)})}function Go(e){null===To&&l("246"),To.expirationTime=0,Eo||(Eo=!0,Co=e)}function Zo(e,t){var n=_o;_o=!0;try{return e(t)}finally{(_o=n)||xo||$o(1073741823,!1)}}function Jo(e,t){if(_o&&!Po){Po=!0;try{return e(t)}finally{Po=!1}}return e(t)}function eu(e,t,r){_o||xo||0===So||($o(So,!1),So=0);var l=_o;_o=!0;try{return n.unstable_runWithPriority(n.unstable_UserBlockingPriority,function(){return e(t,r)})}finally{(_o=l)||xo||$o(1073741823,!1)}}function tu(e,t,n,r,a){var i=t.current;e:if(n){t:{2===un(n=n._reactInternalFiber)&&1===n.tag||l("170");var o=n;do{switch(o.tag){case 3:o=o.stateNode.context;break t;case 1:if(Hr(o.type)){o=o.stateNode.__reactInternalMemoizedMergedChildContext;break t}}o=o.return}while(null!==o);l("171"),o=void 0}if(1===n.tag){var u=n.type;if(Hr(u)){n=qr(n,u,o);break e}}n=o}else n=Ar;return null===t.context?t.context=n:t.pendingContext=n,t=a,(a=ci(r)).payload={element:e},null!==(t=void 0===t?null:t)&&(a.callback=t),lo(),fi(i,a),ho(i,r),r}function nu(e,t,n,r){var l=t.current;return tu(e,t,n,l=so(Vo(),l),r)}function ru(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 5:default:return e.child.stateNode}}function lu(e,t,n){var r=3=Wi&&(t=Wi-1),this._expirationTime=Wi=t,this._root=e,this._callbacks=this._next=null,this._hasChildren=this._didComplete=!1,this._children=null,this._defer=!0}function iu(){this._callbacks=null,this._didCommit=!1,this._onCommit=this._onCommit.bind(this)}function ou(e,t,n){e={current:t=nl(3,null,null,t?3:0),containerInfo:e,pendingChildren:null,pingCache:null,earliestPendingTime:0,latestPendingTime:0,earliestSuspendedTime:0,latestSuspendedTime:0,latestPingedTime:0,didError:!1,pendingCommitExpirationTime:0,finishedWork:null,timeoutHandle:-1,context:null,pendingContext:null,hydrate:n,nextExpirationTimeToWorkOn:0,expirationTime:0,firstBatch:null,nextScheduledRoot:null},this._internalRoot=t.stateNode=e}function uu(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function cu(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new ou(e,!1,t)}function su(e,t,n,r,l){var a=n._reactRootContainer;if(a){if("function"==typeof l){var i=l;l=function(){var e=ru(a._internalRoot);i.call(e)}}null!=e?a.legacy_renderSubtreeIntoContainer(e,t,l):a.render(t,l)}else{if(a=n._reactRootContainer=cu(n,r),"function"==typeof l){var o=l;l=function(){var e=ru(a._internalRoot);o.call(e)}}Jo(function(){null!=e?a.legacy_renderSubtreeIntoContainer(e,t,l):a.render(t,l)})}return ru(a._internalRoot)}function fu(e,t){var n=2=t;)n=r,r=r._next;e._next=r,null!==n&&(n._next=e)}return e},Me=Zo,De=eu,Oe=function(){xo||0===So||($o(So,!1),So=0)};var du={createPortal:fu,findDOMNode:function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternalFiber;return void 0===t&&("function"==typeof e.render?l("188"):l("268",Object.keys(e))),e=null===(e=fn(t))?null:e.stateNode},hydrate:function(e,t,n){return uu(t)||l("200"),su(null,e,t,!0,n)},render:function(e,t,n){return uu(t)||l("200"),su(null,e,t,!1,n)},unstable_renderSubtreeIntoContainer:function(e,t,n,r){return uu(n)||l("200"),(null==e||void 0===e._reactInternalFiber)&&l("38"),su(e,t,n,!1,r)},unmountComponentAtNode:function(e){return uu(e)||l("40"),!!e._reactRootContainer&&(Jo(function(){su(null,null,e,!1,function(){e._reactRootContainer=null})}),!0)},unstable_createPortal:function(){return fu.apply(void 0,arguments)},unstable_batchedUpdates:Zo,unstable_interactiveUpdates:eu,flushSync:function(e,t){xo&&l("187");var n=_o;_o=!0;try{return vo(e,t)}finally{_o=n,$o(1073741823,!1)}},unstable_createRoot:pu,unstable_flushControlled:function(e){var t=_o;_o=!0;try{vo(e)}finally{(_o=t)||xo||$o(1073741823,!1)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[O,F,L,N.injectEventPluginsByName,y,H,function(e){C(e,B)},Ue,Ie,Dn,R]}};function pu(e,t){return uu(e)||l("299","unstable_createRoot"),new ou(e,!0,null!=t&&!0===t.hydrate)}!function(e){var n=e.findFiberByHostInstance;el(t({},e,{overrideProps:null,currentDispatcherRef:$e.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=fn(e))?null:e.stateNode},findFiberByHostInstance:function(e){return n?n(e):null}}))}({findFiberByHostInstance:D,bundleType:0,version:"16.8.6",rendererPackageName:"react-dom"});var mu={default:du},hu=mu&&du||mu;module.exports=hu.default||hu; },{"react":"HdMw","object-assign":"YOw+","scheduler":"IGIl"}],"X9zx":[function(require,module,exports) { "use strict";function _(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(_)}catch(O){console.error(O)}}}_(),module.exports=require("./cjs/react-dom.production.min.js"); },{"./cjs/react-dom.production.min.js":"jF7N"}],"9H59":[function(require,module,exports) { "use strict";function t(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=t; },{}],"kgel":[function(require,module,exports) { "use strict";var _="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";module.exports=_; },{}],"xON/":[function(require,module,exports) { "use strict";var e=require("./lib/ReactPropTypesSecret");function r(){}function t(){}t.resetWarningCache=r,module.exports=function(){function n(r,t,n,o,a,p){if(p!==e){var c=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}function o(){return n}n.isRequired=n;var a={array:n,bool:n,func:n,number:n,object:n,string:n,symbol:n,any:n,arrayOf:o,element:n,elementType:n,instanceOf:o,node:n,objectOf:o,oneOf:o,oneOfType:o,shape:o,exact:o,checkPropTypes:t,resetWarningCache:r};return a.PropTypes=a,a}; },{"./lib/ReactPropTypesSecret":"kgel"}],"Iix9":[function(require,module,exports) { var r,e;module.exports=require("./factoryWithThrowingShims")(); },{"./factoryWithThrowingShims":"xON/"}],"9hyO":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ReactReduxContext=void 0;var e=t(require("react"));function t(e){return e&&e.__esModule?e:{default:e}}var r=e.default.createContext(null);exports.ReactReduxContext=r;var u=r;exports.default=u; },{"react":"HdMw"}],"pwii":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var t=n(require("@babel/runtime/helpers/esm/inheritsLoose")),e=i(require("react")),r=n(require("prop-types")),s=require("./Context");function i(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)if(Object.prototype.hasOwnProperty.call(t,r)){var s=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(t,r):{};s.get||s.set?Object.defineProperty(e,r,s):e[r]=t[r]}return e.default=t,e}function n(t){return t&&t.__esModule?t:{default:t}}var u=function(r){function i(t){var e;e=r.call(this,t)||this;var s=t.store;return e.state={storeState:s.getState(),store:s},e}(0,t.default)(i,r);var n=i.prototype;return n.componentDidMount=function(){this._isMounted=!0,this.subscribe()},n.componentWillUnmount=function(){this.unsubscribe&&this.unsubscribe(),this._isMounted=!1},n.componentDidUpdate=function(t){this.props.store!==t.store&&(this.unsubscribe&&this.unsubscribe(),this.subscribe())},n.subscribe=function(){var t=this,e=this.props.store;this.unsubscribe=e.subscribe(function(){var r=e.getState();t._isMounted&&t.setState(function(t){return t.storeState===r?null:{storeState:r}})});var r=e.getState();r!==this.state.storeState&&this.setState({storeState:r})},n.render=function(){var t=this.props.context||s.ReactReduxContext;return e.default.createElement(t.Provider,{value:this.state},this.props.children)},i}(e.Component);u.propTypes={store:r.default.shape({subscribe:r.default.func.isRequired,dispatch:r.default.func.isRequired,getState:r.default.func.isRequired}),context:r.default.object,children:r.default.any};var o=u;exports.default=o; },{"@babel/runtime/helpers/esm/inheritsLoose":"9H59","react":"HdMw","prop-types":"Iix9","./Context":"9hyO"}],"Rs9H":[function(require,module,exports) { "use strict";function e(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=e; },{}],"yPWp":[function(require,module,exports) { "use strict";function e(){return exports.default=e=Object.assign||function(e){for(var t=1;t=0||(u[r]=e[r]);return u}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=e; },{}],"hJve":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e="function"==typeof Symbol&&Symbol.for,t=e?Symbol.for("react.element"):60103,r=e?Symbol.for("react.portal"):60106,o=e?Symbol.for("react.fragment"):60107,n=e?Symbol.for("react.strict_mode"):60108,s=e?Symbol.for("react.profiler"):60114,c=e?Symbol.for("react.provider"):60109,f=e?Symbol.for("react.context"):60110,p=e?Symbol.for("react.async_mode"):60111,u=e?Symbol.for("react.concurrent_mode"):60111,i=e?Symbol.for("react.forward_ref"):60112,a=e?Symbol.for("react.suspense"):60113,y=e?Symbol.for("react.memo"):60115,l=e?Symbol.for("react.lazy"):60116;function x(e){if("object"==typeof e&&null!==e){var x=e.$$typeof;switch(x){case t:switch(e=e.type){case p:case u:case o:case s:case n:case a:return e;default:switch(e=e&&e.$$typeof){case f:case i:case c:return e;default:return x}}case l:case y:case r:return x}}}function m(e){return x(e)===u}exports.typeOf=x,exports.AsyncMode=p,exports.ConcurrentMode=u,exports.ContextConsumer=f,exports.ContextProvider=c,exports.Element=t,exports.ForwardRef=i,exports.Fragment=o,exports.Lazy=l,exports.Memo=y,exports.Portal=r,exports.Profiler=s,exports.StrictMode=n,exports.Suspense=a,exports.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===u||e===s||e===n||e===a||"object"==typeof e&&null!==e&&(e.$$typeof===l||e.$$typeof===y||e.$$typeof===c||e.$$typeof===f||e.$$typeof===i)},exports.isAsyncMode=function(e){return m(e)||x(e)===p},exports.isConcurrentMode=m,exports.isContextConsumer=function(e){return x(e)===f},exports.isContextProvider=function(e){return x(e)===c},exports.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===t},exports.isForwardRef=function(e){return x(e)===i},exports.isFragment=function(e){return x(e)===o},exports.isLazy=function(e){return x(e)===l},exports.isMemo=function(e){return x(e)===y},exports.isPortal=function(e){return x(e)===r},exports.isProfiler=function(e){return x(e)===s},exports.isStrictMode=function(e){return x(e)===n},exports.isSuspense=function(e){return x(e)===a}; },{}],"H8ja":[function(require,module,exports) { "use strict";module.exports=require("./cjs/react-is.production.min.js"); },{"./cjs/react-is.production.min.js":"hJve"}],"Kvxq":[function(require,module,exports) { "use strict";var e=require("react-is"),t={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},r={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},o={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},p={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},a={};function y(r){return e.isMemo(r)?p:a[r.$$typeof]||t}a[e.ForwardRef]=o;var s=Object.defineProperty,n=Object.getOwnPropertyNames,c=Object.getOwnPropertySymbols,i=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,l=Object.prototype;function d(e,t,o){if("string"!=typeof t){if(l){var p=f(t);p&&p!==l&&d(e,p,o)}var a=n(t);c&&(a=a.concat(c(t)));for(var m=y(e),u=y(t),g=0;g, or pass a custom React context provider to and the corresponding React context consumer to '+u+" in connect options.");var t,r=e.storeState,o=e.store,i=this.props;N&&(i=this.props.wrapperProps,t=this.props.forwardedRef);var s=this.selectDerivedProps(r,i,o,c);return this.selectChildElement(n,s,t)},f.render=function(){var e=this.props.context&&this.props.context.Consumer&&(0,s.isContextConsumer)(i.default.createElement(this.props.context.Consumer,null))?this.props.context:D;return i.default.createElement(e.Consumer,null,this.indirectRenderWrappedComponent)},d}(m);if(v.WrappedComponent=n,v.displayName=u,N){var x=i.default.forwardRef(function(e,t){return i.default.createElement(v,{wrapperProps:e,forwardedRef:t})});return x.displayName=u,x.WrappedComponent=n,(0,o.default)(x,n)}return(0,o.default)(v,n)}} },{"@babel/runtime/helpers/esm/assertThisInitialized":"Rs9H","@babel/runtime/helpers/esm/inheritsLoose":"9H59","@babel/runtime/helpers/esm/extends":"yPWp","@babel/runtime/helpers/esm/objectWithoutPropertiesLoose":"EHE7","hoist-non-react-statics":"Kvxq","invariant":"/2PA","react":"HdMw","react-is":"H8ja","./Context":"9hyO"}],"FW8b":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=r;var e=Object.prototype.hasOwnProperty;function t(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function r(r,n){if(t(r,n))return!0;if("object"!=typeof r||null===r||"object"!=typeof n||null===n)return!1;var o=Object.keys(r),u=Object.keys(n);if(o.length!==u.length)return!1;for(var l=0;l0?"Unexpected "+(a.length>1?"keys":"key")+' "'+a.join('", "')+'" found in '+c+'. Expected to find one of the known reducer keys instead: "'+u.join('", "')+'". Unexpected keys will be ignored.':void 0}function s(e){Object.keys(e).forEach(function(t){var r=e[t];if(void 0===r(void 0,{type:n.INIT}))throw new Error('Reducer "'+t+"\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.");if(void 0===r(void 0,{type:n.PROBE_UNKNOWN_ACTION()}))throw new Error('Reducer "'+t+"\" returned undefined when probed with a random type. Don't try to handle "+n.INIT+' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.')})}function f(e){for(var t=Object.keys(e),r={},n=0;n=0;o--){var a=r[o](e);if(a)return a}return function(r,o){throw new Error("Invalid value of type "+typeof e+" for "+t+" argument when connecting component "+o.wrappedComponentName+".")}}function l(e,r){return e===r}function d(i){var d=void 0===i?{}:i,c=d.connectHOC,f=void 0===c?t.default:c,v=d.mapStateToPropsFactories,P=void 0===v?u.default:v,m=d.mapDispatchToPropsFactories,q=void 0===m?a.default:m,h=d.mergePropsFactories,E=void 0===h?n.default:h,g=d.selectorFactory,S=void 0===g?s.default:g;return function(t,a,u,n){void 0===n&&(n={});var s=n,i=s.pure,d=void 0===i||i,c=s.areStatesEqual,v=void 0===c?l:c,m=s.areOwnPropsEqual,h=void 0===m?o.default:m,g=s.areStatePropsEqual,w=void 0===g?o.default:g,M=s.areMergedPropsEqual,T=void 0===M?o.default:M,b=(0,r.default)(s,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),y=p(t,P,"mapStateToProps"),x=p(a,q,"mapDispatchToProps"),C=p(u,E,"mergeProps");return f(S,(0,e.default)({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(t),initMapStateToProps:y,initMapDispatchToProps:x,initMergeProps:C,pure:d,areStatesEqual:v,areOwnPropsEqual:h,areStatePropsEqual:w,areMergedPropsEqual:T},b))}}var c=d();exports.default=c; },{"@babel/runtime/helpers/esm/extends":"yPWp","@babel/runtime/helpers/esm/objectWithoutPropertiesLoose":"EHE7","../components/connectAdvanced":"OoNS","../utils/shallowEqual":"FW8b","./mapDispatchToProps":"fi0G","./mapStateToProps":"YYnM","./mergeProps":"6RBW","./selectorFactory":"9dnk"}],"sYSi":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Provider",{enumerable:!0,get:function(){return e.default}}),Object.defineProperty(exports,"connectAdvanced",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(exports,"ReactReduxContext",{enumerable:!0,get:function(){return n.ReactReduxContext}}),Object.defineProperty(exports,"connect",{enumerable:!0,get:function(){return r.default}});var e=o(require("./components/Provider")),t=o(require("./components/connectAdvanced")),n=require("./components/Context"),r=o(require("./connect/connect"));function o(e){return e&&e.__esModule?e:{default:e}} },{"./components/Provider":"pwii","./components/connectAdvanced":"OoNS","./components/Context":"9hyO","./connect/connect":"jDbg"}],"doeB":[function(require,module,exports) { var define; var e;!function(r,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof e&&e.amd?e("tree-node-utils",[],n):"object"==typeof exports?exports["tree-node-utils"]=n():r["tree-node-utils"]=n()}("undefined"!=typeof self?self:this,function(){return function(e){var r={};function n(t){if(r[t])return r[t].exports;var i=r[t]={i:t,l:!1,exports:{}};return e[t].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=r,n.d=function(e,r,t){n.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,"a",r),r},n.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},n.p="",n(n.s=0)}([function(e,r,n){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var t=n(1);Object.defineProperty(r,"default",{enumerable:!0,get:function(){return(e=t,e&&e.__esModule?e:{default:e}).default;var e}}),e.exports=r.default},function(e,r,n){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var t=Object.assign||function(e){for(var r=1;r0&&void 0!==arguments[0]?arguments[0]:{};!function(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")}(this,e),this.keyField=r.keyField||"key",this.childrenField=r.childrenField||"children"}return i(e,[{key:"hasChildren",value:function(e){var r=e&&e[this.childrenField];return r&&r.length>0}},{key:"isBranch",value:function(e){var r=e&&e[this.childrenField];return r&&r.length>=0}},{key:"getNodeByKey",value:function(e,r){var n=null,t=!0,i=!1,o=void 0;try{for(var l,u=e[Symbol.iterator]();!(t=(l=u.next()).done);t=!0){var a=l.value;if(a[this.keyField]===r?n=a:this.hasChildren(a)&&(n=this.getNodeByKey(a[this.childrenField],r)),n)break}}catch(c){i=!0,o=c}finally{try{!t&&u.return&&u.return()}finally{if(i)throw o}}return n}},{key:"findNodes",value:function(e,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],t=[],i=!0,o=!1,u=void 0;try{for(var a,c=e[Symbol.iterator]();!(i=(a=c.next()).done);i=!0){var d=a.value;if(r(d,n)&&(t=[].concat(l(t),[d])),this.hasChildren(d)){var f=this.findNodes(d[this.childrenField],r,[].concat(l(n),[d]));t=[].concat(l(t),l(f))}}}catch(h){o=!0,u=h}finally{try{!i&&c.return&&c.return()}finally{if(o)throw u}}return t}},{key:"filterNode",value:function(e,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],t=null,i=this,u=i.isBranch(e)?e[i.childrenField].map(function(t){return i.filterNode(t,r,[].concat(l(n),[e]))}).filter(function(e){return null!==e}):null,a=u&&u.length>0;if(r(e,n)||a){var c=u?o({},i.childrenField,u):{};t=Object.assign({},e,c)}return t}},{key:"filterNodes",value:function(e,r){var n=this,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return e.map(function(e){return n.filterNode(e,r,t)}).filter(function(e){return null!==e})}},{key:"sortNode",value:function(e,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],i=this;if(i.hasChildren(e)){var u=[].concat(l(e[i.childrenField])).sort(function(){for(var t=arguments.length,i=Array(t),o=0;o2&&void 0!==arguments[2]?arguments[2]:[];return e.sort(function(){for(var e=arguments.length,n=Array(e),i=0;i2&&void 0!==arguments[2]?arguments[2]:[],i=this,o=r(t({},e),n);if(i.hasChildren(e)){var u=e[i.childrenField].map(function(e){return i.mapNode(e,r,[].concat(l(n),[o]))});o[i.childrenField]=u}return o}},{key:"mapNodes",value:function(e,r){var n=this,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return e.map(function(e){return n.mapNode(e,r,t)})}},{key:"renameChildrenFieldForNode",value:function(e,r){var n=this,i=e[n.childrenField],o=t({},e);return n.hasChildren(e)&&(delete o[n.childrenField],o[r]=i.map(function(e){return n.renameChildrenFieldForNode(e,r)})),o}},{key:"renameChildrenFieldForNodes",value:function(e,r){var n=this;return e.map(function(e){return n.renameChildrenFieldForNode(e,r)})}}]),e}();r.default=u,e.exports=r.default}])}); },{}],"UODg":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.is=pt,exports.fromJS=Bn,exports.hash=yt,exports.isImmutable=A,exports.isCollection=d,exports.isKeyed=w,exports.isIndexed=S,exports.isAssociative=z,exports.isOrdered=k,exports.isValueObject=ht,exports.get=_r,exports.getIn=un,exports.has=pr,exports.hasIn=an,exports.merge=qr,exports.mergeDeep=Ar,exports.mergeWith=Dr,exports.mergeDeepWith=jr,exports.remove=vr,exports.removeIn=Sr,exports.set=yr,exports.setIn=wr,exports.update=Ir,exports.updateIn=dr,exports.Repeat=exports.Range=exports.Record=exports.OrderedSet=exports.Set=exports.Stack=exports.List=exports.OrderedMap=exports.Map=exports.Seq=exports.Iterable=exports.Collection=exports.version=exports.default=void 0;var t="delete",r=5,e=1<>>0;if(""+e!==r||4294967295===e)return NaN;r=e}return r<0?a(t)+r:r}function f(){return!0}function h(t,r,e){return(0===t&&!v(t)||void 0!==e&&t<=-e)&&(void 0===r||void 0!==e&&r>=e)}function p(t,r){return l(t,r,0)}function _(t,r){return l(t,r,r)}function l(t,r,e){return void 0===t?e:v(t)?r===1/0?r:0|Math.max(0,r+t):void 0===r||r===t?t:0|Math.min(r,t)}function v(t){return t<0||0===t&&1/t==-1/0}var y="@@__IMMUTABLE_ITERABLE__@@";function d(t){return Boolean(t&&t[y])}var g="@@__IMMUTABLE_KEYED__@@";function w(t){return Boolean(t&&t[g])}var m="@@__IMMUTABLE_INDEXED__@@";function S(t){return Boolean(t&&t[m])}function z(t){return w(t)||S(t)}var I=function(t){return d(t)?t:X(t)};exports.Collection=I;var b=function(t){function r(t){return w(t)?t:F(t)}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r}(I),x=function(t){function r(t){return S(t)?t:G(t)}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r}(I),O=function(t){function r(t){return d(t)&&!z(t)?t:Z(t)}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r}(I);I.Keyed=b,I.Indexed=x,I.Set=O;var E="@@__IMMUTABLE_SEQ__@@";function M(t){return Boolean(t&&t[E])}var q="@@__IMMUTABLE_RECORD__@@";function D(t){return Boolean(t&&t[q])}function A(t){return d(t)||D(t)}var j="@@__IMMUTABLE_ORDERED__@@";function k(t){return Boolean(t&&t[j])}var R=0,U=1,K=2,B="function"==typeof Symbol&&Symbol.iterator,T="@@iterator",L=B||T,C=function(t){this.next=t};function W(t,r,e,n){var i=0===t?r:1===t?e:[r,e];return n?n.value=i:n={value:i,done:!1},n}function N(){return{value:void 0,done:!0}}function P(t){return!!V(t)}function H(t){return t&&"function"==typeof t.next}function J(t){var r=V(t);return r&&r.call(t)}function V(t){var r=t&&(B&&t[B]||t[T]);if("function"==typeof r)return r}C.prototype.toString=function(){return"[Iterator]"},C.KEYS=R,C.VALUES=U,C.ENTRIES=K,C.prototype.inspect=C.prototype.toSource=function(){return this.toString()},C.prototype[L]=function(){return this};var Y=Object.prototype.hasOwnProperty;function Q(t){return!(!Array.isArray(t)&&"string"!=typeof t)||t&&"object"==typeof t&&Number.isInteger(t.length)&&t.length>=0&&(0===t.length?1===Object.keys(t).length:t.hasOwnProperty(t.length-1))}var X=function(t){function r(t){return null==t?nt():A(t)?t.toSeq():ut(t)}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.prototype.toSeq=function(){return this},r.prototype.toString=function(){return this.__toString("Seq {","}")},r.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},r.prototype.__iterate=function(t,r){var e=this._cache;if(e){for(var n=e.length,i=0;i!==n;){var o=e[r?n-++i:i++];if(!1===t(o[1],o[0],this))break}return i}return this.__iterateUncached(t,r)},r.prototype.__iterator=function(t,r){var e=this._cache;if(e){var n=e.length,i=0;return new C(function(){if(i===n)return N();var o=e[r?n-++i:i++];return W(t,o[0],o[1])})}return this.__iteratorUncached(t,r)},r}(I);exports.Seq=X;var F=function(t){function r(t){return null==t?nt().toKeyedSeq():d(t)?w(t)?t.toSeq():t.fromEntrySeq():D(t)?t.toSeq():it(t)}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.prototype.toKeyedSeq=function(){return this},r}(X),G=function(t){function r(t){return null==t?nt():d(t)?w(t)?t.entrySeq():t.toIndexedSeq():D(t)?t.toSeq().entrySeq():ot(t)}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.of=function(){return r(arguments)},r.prototype.toIndexedSeq=function(){return this},r.prototype.toString=function(){return this.__toString("Seq [","]")},r}(X),Z=function(t){function r(t){return(d(t)&&!z(t)?t:G(t)).toSetSeq()}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.of=function(){return r(arguments)},r.prototype.toSetSeq=function(){return this},r}(X);X.isSeq=M,X.Keyed=F,X.Set=Z,X.Indexed=G,X.prototype[E]=!0;var $=function(t){function r(t){this._array=t,this.size=t.length}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.prototype.get=function(t,r){return this.has(t)?this._array[c(this,t)]:r},r.prototype.__iterate=function(t,r){for(var e=this._array,n=e.length,i=0;i!==n;){var o=r?n-++i:i++;if(!1===t(e[o],o,this))break}return i},r.prototype.__iterator=function(t,r){var e=this._array,n=e.length,i=0;return new C(function(){if(i===n)return N();var o=r?n-++i:i++;return W(t,o,e[o])})},r}(G),tt=function(t){function r(t){var r=Object.keys(t);this._object=t,this._keys=r,this.size=r.length}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.prototype.get=function(t,r){return void 0===r||this.has(t)?this._object[t]:r},r.prototype.has=function(t){return Y.call(this._object,t)},r.prototype.__iterate=function(t,r){for(var e=this._object,n=this._keys,i=n.length,o=0;o!==i;){var u=n[r?i-++o:o++];if(!1===t(e[u],u,this))break}return o},r.prototype.__iterator=function(t,r){var e=this._object,n=this._keys,i=n.length,o=0;return new C(function(){if(o===i)return N();var u=n[r?i-++o:o++];return W(t,u,e[u])})},r}(F);tt.prototype[j]=!0;var rt,et=function(t){function r(t){this._collection=t,this.size=t.length||t.size}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.prototype.__iterateUncached=function(t,r){if(r)return this.cacheResult().__iterate(t,r);var e=J(this._collection),n=0;if(H(e))for(var i;!(i=e.next()).done&&!1!==t(i.value,n++,this););return n},r.prototype.__iteratorUncached=function(t,r){if(r)return this.cacheResult().__iterator(t,r);var e=J(this._collection);if(!H(e))return new C(N);var n=0;return new C(function(){var r=e.next();return r.done?r:W(t,n++,r.value)})},r}(G);function nt(){return rt||(rt=new $([]))}function it(t){var r=Array.isArray(t)?new $(t):P(t)?new et(t):void 0;if(r)return r.fromEntrySeq();if("object"==typeof t)return new tt(t);throw new TypeError("Expected Array or collection object of [k, v] entries, or keyed object: "+t)}function ot(t){var r=st(t);if(r)return r;throw new TypeError("Expected Array or collection object of values: "+t)}function ut(t){var r=st(t);if(r)return r;if("object"==typeof t)return new tt(t);throw new TypeError("Expected Array or collection object of values, or keyed object: "+t)}function st(t){return Q(t)?new $(t):P(t)?new et(t):void 0}var at="@@__IMMUTABLE_MAP__@@";function ct(t){return Boolean(t&&t[at])}function ft(t){return ct(t)&&k(t)}function ht(t){return Boolean(t&&"function"==typeof t.equals&&"function"==typeof t.hashCode)}function pt(t,r){if(t===r||t!=t&&r!=r)return!0;if(!t||!r)return!1;if("function"==typeof t.valueOf&&"function"==typeof r.valueOf){if((t=t.valueOf())===(r=r.valueOf())||t!=t&&r!=r)return!0;if(!t||!r)return!1}return!!(ht(t)&&ht(r)&&t.equals(r))}var _t="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function(t,r){var e=65535&(t|=0),n=65535&(r|=0);return e*n+((t>>>16)*n+e*(r>>>16)<<16>>>0)|0};function lt(t){return t>>>1&1073741824|3221225471&t}var vt=Object.prototype.valueOf;function yt(t){switch(typeof t){case"boolean":return t?1108378657:1108378656;case"number":return dt(t);case"string":return t.length>Mt?gt(t):wt(t);case"object":case"function":return null===t?1108378658:"function"==typeof t.hashCode?lt(t.hashCode(t)):(t.valueOf!==vt&&"function"==typeof t.valueOf&&(t=t.valueOf(t)),mt(t));case"undefined":return 1108378659;default:if("function"==typeof t.toString)return wt(t.toString());throw new Error("Value type "+typeof t+" cannot be hashed.")}}function dt(t){if(t!=t||t===1/0)return 0;var r=0|t;for(r!==t&&(r^=4294967295*t);t>4294967295;)r^=t/=4294967295;return lt(r)}function gt(t){var r=At[t];return void 0===r&&(r=wt(t),Dt===qt&&(Dt=0,At={}),Dt++,At[t]=r),r}function wt(t){for(var r=0,e=0;e0)switch(t.nodeType){case 1:return t.uniqueID;case 9:return t.documentElement&&t.documentElement.uniqueID}}var bt,xt="function"==typeof WeakMap;xt&&(bt=new WeakMap);var Ot=0,Et="__immutablehash__";"function"==typeof Symbol&&(Et=Symbol(Et));var Mt=16,qt=255,Dt=0,At={},jt=function(t){function r(t,r){this._iter=t,this._useKeys=r,this.size=t.size}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.prototype.get=function(t,r){return this._iter.get(t,r)},r.prototype.has=function(t){return this._iter.has(t)},r.prototype.valueSeq=function(){return this._iter.valueSeq()},r.prototype.reverse=function(){var t=this,r=Tt(this,!0);return this._useKeys||(r.valueSeq=function(){return t._iter.toSeq().reverse()}),r},r.prototype.map=function(t,r){var e=this,n=Bt(this,t,r);return this._useKeys||(n.valueSeq=function(){return e._iter.toSeq().map(t,r)}),n},r.prototype.__iterate=function(t,r){var e=this;return this._iter.__iterate(function(r,n){return t(r,n,e)},r)},r.prototype.__iterator=function(t,r){return this._iter.__iterator(t,r)},r}(F);jt.prototype[j]=!0;var kt=function(t){function r(t){this._iter=t,this.size=t.size}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.prototype.includes=function(t){return this._iter.includes(t)},r.prototype.__iterate=function(t,r){var e=this,n=0;return r&&a(this),this._iter.__iterate(function(i){return t(i,r?e.size-++n:n++,e)},r)},r.prototype.__iterator=function(t,r){var e=this,n=this._iter.__iterator(U,r),i=0;return r&&a(this),new C(function(){var o=n.next();return o.done?o:W(t,r?e.size-++i:i++,o.value,o)})},r}(G),Rt=function(t){function r(t){this._iter=t,this.size=t.size}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.prototype.has=function(t){return this._iter.includes(t)},r.prototype.__iterate=function(t,r){var e=this;return this._iter.__iterate(function(r){return t(r,r,e)},r)},r.prototype.__iterator=function(t,r){var e=this._iter.__iterator(U,r);return new C(function(){var r=e.next();return r.done?r:W(t,r.value,r.value,r)})},r}(Z),Ut=function(t){function r(t){this._iter=t,this.size=t.size}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.prototype.entrySeq=function(){return this._iter.toSeq()},r.prototype.__iterate=function(t,r){var e=this;return this._iter.__iterate(function(r){if(r){tr(r);var n=d(r);return t(n?r.get(1):r[1],n?r.get(0):r[0],e)}},r)},r.prototype.__iterator=function(t,r){var e=this._iter.__iterator(U,r);return new C(function(){for(;;){var r=e.next();if(r.done)return r;var n=r.value;if(n){tr(n);var i=d(n);return W(t,i?n.get(0):n[0],i?n.get(1):n[1],r)}}})},r}(F);function Kt(t){var r=er(t);return r._iter=t,r.size=t.size,r.flip=function(){return t},r.reverse=function(){var r=t.reverse.apply(this);return r.flip=function(){return t.reverse()},r},r.has=function(r){return t.includes(r)},r.includes=function(r){return t.has(r)},r.cacheResult=nr,r.__iterateUncached=function(r,e){var n=this;return t.__iterate(function(t,e){return!1!==r(e,t,n)},e)},r.__iteratorUncached=function(r,e){if(r===K){var n=t.__iterator(r,e);return new C(function(){var t=n.next();if(!t.done){var r=t.value[0];t.value[0]=t.value[1],t.value[1]=r}return t})}return t.__iterator(r===U?R:U,e)},r}function Bt(t,r,e){var n=er(t);return n.size=t.size,n.has=function(r){return t.has(r)},n.get=function(n,o){var u=t.get(n,i);return u===i?o:r.call(e,u,n,t)},n.__iterateUncached=function(n,i){var o=this;return t.__iterate(function(t,i,u){return!1!==n(r.call(e,t,i,u),i,o)},i)},n.__iteratorUncached=function(n,i){var o=t.__iterator(K,i);return new C(function(){var i=o.next();if(i.done)return i;var u=i.value,s=u[0];return W(n,s,r.call(e,u[1],s,t),i)})},n}function Tt(t,r){var e=this,n=er(t);return n._iter=t,n.size=t.size,n.reverse=function(){return t},t.flip&&(n.flip=function(){var r=Kt(t);return r.reverse=function(){return t.flip()},r}),n.get=function(e,n){return t.get(r?e:-1-e,n)},n.has=function(e){return t.has(r?e:-1-e)},n.includes=function(r){return t.includes(r)},n.cacheResult=nr,n.__iterate=function(e,n){var i=this,o=0;return n&&a(t),t.__iterate(function(t,u){return e(t,r?u:n?i.size-++o:o++,i)},!n)},n.__iterator=function(n,i){var o=0;i&&a(t);var u=t.__iterator(K,!i);return new C(function(){var t=u.next();if(t.done)return t;var s=t.value;return W(n,r?s[0]:i?e.size-++o:o++,s[1],t)})},n}function Lt(t,r,e,n){var o=er(t);return n&&(o.has=function(n){var o=t.get(n,i);return o!==i&&!!r.call(e,o,n,t)},o.get=function(n,o){var u=t.get(n,i);return u!==i&&r.call(e,u,n,t)?u:o}),o.__iterateUncached=function(i,o){var u=this,s=0;return t.__iterate(function(t,o,a){if(r.call(e,t,o,a))return s++,i(t,n?o:s-1,u)},o),s},o.__iteratorUncached=function(i,o){var u=t.__iterator(K,o),s=0;return new C(function(){for(;;){var o=u.next();if(o.done)return o;var a=o.value,c=a[0],f=a[1];if(r.call(e,f,c,t))return W(i,n?c:s++,f,o)}})},o}function Ct(t,r,e){var n=Hr().asMutable();return t.__iterate(function(i,o){n.update(r.call(e,i,o,t),0,function(t){return t+1})}),n.asImmutable()}function Wt(t,r,e){var n=w(t),i=(k(t)?Re():Hr()).asMutable();t.__iterate(function(o,u){i.update(r.call(e,o,u,t),function(t){return(t=t||[]).push(n?[u,o]:o),t})});var o=rr(t);return i.map(function(r){return $t(t,o(r))}).asImmutable()}function Nt(t,r,e,n){var i=t.size;if(h(r,e,i))return t;var o=p(r,i),u=_(e,i);if(o!=o||u!=u)return Nt(t.toSeq().cacheResult(),r,e,n);var s,a=u-o;a==a&&(s=a<0?0:a);var f=er(t);return f.size=0===s?s:t.size&&s||void 0,!n&&M(t)&&s>=0&&(f.get=function(r,e){return(r=c(this,r))>=0&&rs)return N();var t=i.next();return n||r===U||t.done?t:W(r,a-1,r===R?void 0:t.value[1],t)})},f}function Pt(t,r,e){var n=er(t);return n.__iterateUncached=function(n,i){var o=this;if(i)return this.cacheResult().__iterate(n,i);var u=0;return t.__iterate(function(t,i,s){return r.call(e,t,i,s)&&++u&&n(t,i,o)}),u},n.__iteratorUncached=function(n,i){var o=this;if(i)return this.cacheResult().__iterator(n,i);var u=t.__iterator(K,i),s=!0;return new C(function(){if(!s)return N();var t=u.next();if(t.done)return t;var i=t.value,a=i[0],c=i[1];return r.call(e,c,a,o)?n===K?t:W(n,a,c,t):(s=!1,N())})},n}function Ht(t,r,e,n){var i=er(t);return i.__iterateUncached=function(i,o){var u=this;if(o)return this.cacheResult().__iterate(i,o);var s=!0,a=0;return t.__iterate(function(t,o,c){if(!s||!(s=r.call(e,t,o,c)))return a++,i(t,n?o:a-1,u)}),a},i.__iteratorUncached=function(i,o){var u=this;if(o)return this.cacheResult().__iterator(i,o);var s=t.__iterator(K,o),a=!0,c=0;return new C(function(){var t,o,f;do{if((t=s.next()).done)return n||i===U?t:W(i,c++,i===R?void 0:t.value[1],t);var h=t.value;o=h[0],f=h[1],a&&(a=r.call(e,f,o,u))}while(a);return i===K?t:W(i,o,f,t)})},i}function Jt(t,r){var e=w(t),n=[t].concat(r).map(function(t){return d(t)?e&&(t=b(t)):t=e?it(t):ot(Array.isArray(t)?t:[t]),t}).filter(function(t){return 0!==t.size});if(0===n.length)return t;if(1===n.length){var i=n[0];if(i===t||e&&w(i)||S(t)&&S(i))return i}var o=new $(n);return e?o=o.toKeyedSeq():S(t)||(o=o.toSetSeq()),(o=o.flatten(!0)).size=n.reduce(function(t,r){if(void 0!==t){var e=r.size;if(void 0!==e)return t+e}},0),o}function Vt(t,r,e){var n=er(t);return n.__iterateUncached=function(i,o){if(o)return this.cacheResult().__iterate(i,o);var u=0,s=!1;return function t(a,c){a.__iterate(function(o,a){return(!r||c0}function Zt(t,r,e,n){var i=er(t),o=new $(e).map(function(t){return t.size});return i.size=n?o.max():o.min(),i.__iterate=function(t,r){for(var e,n=this.__iterator(U,r),i=0;!(e=n.next()).done&&!1!==t(e.value,i++,this););return i},i.__iteratorUncached=function(t,i){var o=e.map(function(t){return t=I(t),J(i?t.reverse():t)}),u=0,s=!1;return new C(function(){var e;return s||(e=o.map(function(t){return t.next()}),s=n?e.every(function(t){return t.done}):e.some(function(t){return t.done})),s?N():W(t,u++,r.apply(null,e.map(function(t){return t.value})))})},i}function $t(t,r){return t===r?t:M(t)?r:t.constructor(r)}function tr(t){if(t!==Object(t))throw new TypeError("Expected [K, V] tuple: "+t)}function rr(t){return w(t)?b:S(t)?x:O}function er(t){return Object.create((w(t)?F:S(t)?G:Z).prototype)}function nr(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):X.prototype.cacheResult.call(this)}function ir(t,r){return void 0===t&&void 0===r?0:void 0===t?1:void 0===r?-1:t>r?1:t0;)r[e]=arguments[e+1];if("function"!=typeof t)throw new TypeError("Invalid merger function: "+t);return Mr(this,r,t)}function Mr(t,r,e){for(var n=[],o=0;o0;)r[e]=arguments[e+1];return Rr(t,r)}function Dr(t,r){for(var e=[],n=arguments.length-2;n-- >0;)e[n]=arguments[n+2];return Rr(r,e,t)}function Ar(t){for(var r=[],e=arguments.length-1;e-- >0;)r[e]=arguments[e+1];return kr(t,r)}function jr(t,r){for(var e=[],n=arguments.length-2;n-- >0;)e[n]=arguments[n+2];return kr(r,e,t)}function kr(t,r,e){return Rr(t,r,Ur(e))}function Rr(t,r,e){if(!fr(t))throw new TypeError("Cannot merge into non-data-structure value: "+t);if(A(t))return"function"==typeof e&&t.mergeWith?t.mergeWith.apply(t,[e].concat(r)):t.merge?t.merge.apply(t,r):t.concat.apply(t,r);for(var n=Array.isArray(t),i=t,o=n?x:b,u=n?function(r){i===t&&(i=lr(i)),i.push(r)}:function(r,n){var o=Y.call(i,n),u=o&&e?e(i[n],r,n):r;o&&u===i[n]||(i===t&&(i=lr(i)),i[n]=u)},s=0;s0;)r[e]=arguments[e+1];return kr(this,r,t)}function Tr(t){for(var r=[],e=arguments.length-1;e-- >0;)r[e]=arguments[e+1];return dr(this,t,ee(),function(t){return Rr(t,r)})}function Lr(t){for(var r=[],e=arguments.length-1;e-- >0;)r[e]=arguments[e+1];return dr(this,t,ee(),function(t){return kr(t,r)})}function Cr(t){var r=this.asMutable();return t(r),r.wasAltered()?r.__ensureOwner(this.__ownerID):this}function Wr(){return this.__ownerID?this:this.__ensureOwner(new s)}function Nr(){return this.__ensureOwner()}function Pr(){return this.__altered}kt.prototype.cacheResult=jt.prototype.cacheResult=Rt.prototype.cacheResult=Ut.prototype.cacheResult=nr;var Hr=function(t){function r(r){return null==r?ee():ct(r)&&!k(r)?r:ee().withMutations(function(e){var n=t(r);sr(n.size),n.forEach(function(t,r){return e.set(r,t)})})}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.of=function(){for(var t=[],r=arguments.length;r--;)t[r]=arguments[r];return ee().withMutations(function(r){for(var e=0;e=t.length)throw new Error("Missing value for key: "+t[e]);r.set(t[e],t[e+1])}})},r.prototype.toString=function(){return this.__toString("Map {","}")},r.prototype.get=function(t,r){return this._root?this._root.get(0,void 0,t,r):r},r.prototype.set=function(t,r){return ne(this,t,r)},r.prototype.remove=function(t){return ne(this,t,i)},r.prototype.deleteAll=function(t){var r=I(t);return 0===r.size?this:this.withMutations(function(t){r.forEach(function(r){return t.remove(r)})})},r.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):ee()},r.prototype.sort=function(t){return Re(Xt(this,t))},r.prototype.sortBy=function(t,r){return Re(Xt(this,r,t))},r.prototype.map=function(t,r){return this.withMutations(function(e){e.forEach(function(n,i){e.set(i,t.call(r,n,i,e))})})},r.prototype.__iterator=function(t,r){return new Zr(this,t,r)},r.prototype.__iterate=function(t,r){var e=this,n=0;return this._root&&this._root.iterate(function(r){return n++,t(r[1],r[0],e)},r),n},r.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?re(this.size,this._root,t,this.__hash):0===this.size?ee():(this.__ownerID=t,this.__altered=!1,this)},r}(b);exports.Map=Hr,Hr.isMap=ct;var Jr=Hr.prototype;Jr[at]=!0,Jr[t]=Jr.remove,Jr.removeAll=Jr.deleteAll,Jr.setIn=mr,Jr.removeIn=Jr.deleteIn=zr,Jr.update=br,Jr.updateIn=xr,Jr.merge=Jr.concat=Or,Jr.mergeWith=Er,Jr.mergeDeep=Kr,Jr.mergeDeepWith=Br,Jr.mergeIn=Tr,Jr.mergeDeepIn=Lr,Jr.withMutations=Cr,Jr.wasAltered=Pr,Jr.asImmutable=Nr,Jr["@@transducer/init"]=Jr.asMutable=Wr,Jr["@@transducer/step"]=function(t,r){return t.set(r[0],r[1])},Jr["@@transducer/result"]=function(t){return t.asImmutable()};var Vr=function(t,r){this.ownerID=t,this.entries=r};Vr.prototype.get=function(t,r,e,n){for(var i=this.entries,o=0,u=i.length;o=le)return se(t,f,n,o);var l=t&&t===this.ownerID,v=l?f:or(f);return _?c?h===p-1?v.pop():v[h]=v.pop():v[h]=[n,o]:v.push([n,o]),l?(this.entries=v,this):new Vr(t,v)}};var Yr=function(t,r,e){this.ownerID=t,this.bitmap=r,this.nodes=e};Yr.prototype.get=function(t,e,i,o){void 0===e&&(e=yt(i));var u=1<<((0===t?e:e>>>t)&n),s=this.bitmap;return 0==(s&u)?o:this.nodes[fe(s&u-1)].get(t+r,e,i,o)},Yr.prototype.update=function(t,e,o,u,s,a,c){void 0===o&&(o=yt(u));var f=(0===e?o:o>>>e)&n,h=1<=ve)return ce(t,v,p,f,d);if(_&&!d&&2===v.length&&oe(v[1^l]))return v[1^l];if(_&&d&&1===v.length&&oe(d))return d;var g=t&&t===this.ownerID,w=_?d?p:p^h:p|h,m=_?d?he(v,l,d,g):_e(v,l,g):pe(v,l,d,g);return g?(this.bitmap=w,this.nodes=m,this):new Yr(t,w,m)};var Qr=function(t,r,e){this.ownerID=t,this.count=r,this.nodes=e};Qr.prototype.get=function(t,e,i,o){void 0===e&&(e=yt(i));var u=(0===t?e:e>>>t)&n,s=this.nodes[u];return s?s.get(t+r,e,i,o):o},Qr.prototype.update=function(t,e,o,u,s,a,c){void 0===o&&(o=yt(u));var f=(0===e?o:o>>>e)&n,h=s===i,p=this.nodes,_=p[f];if(h&&!_)return this;var l=ie(_,t,e+r,o,u,s,a,c);if(l===_)return this;var v=this.count;if(_){if(!l&&--v>>i)&n,c=(0===i?o:o>>>i)&n,f=a===c?[ue(t,e,i+r,o,u)]:(s=new Fr(e,o,u),a>>=1)s[a]=1&n?r[u++]:void 0;return s[i]=o,new Qr(t,u+1,s)}function fe(t){return t=(t=(858993459&(t-=t>>1&1431655765))+(t>>2&858993459))+(t>>4)&252645135,t+=t>>8,127&(t+=t>>16)}function he(t,r,e,n){var i=n?t:or(t);return i[r]=e,i}function pe(t,r,e,n){var i=t.length+1;if(n&&r+1===i)return t[r]=e,t;for(var o=new Array(i),u=0,s=0;s0&&u=0&&t>>e&n;if(o>=this.array.length)return new Se([],t);var u,s=0===o;if(e>0){var a=this.array[o];if((u=a&&a.removeBefore(t,e-r,i))===a&&s)return this}if(s&&!u)return this;var c=qe(this,t);if(!s)for(var f=0;f>>e&n;if(u>=this.array.length)return this;if(e>0){var s=this.array[u];if((o=s&&s.removeAfter(t,e-r,i))===s&&u===this.array.length-1)return this}var a=qe(this,t);return a.array.splice(u+1),o&&(a.array[u]=o),a};var ze,Ie={};function be(t,n){var i=t._origin,o=t._capacity,u=je(o),s=t._tail;return a(t._root,t._level,0);function a(t,c,f){return 0===c?function(t,r){var a=r===u?s&&s.array:t&&t.array,c=r>i?0:i-r,f=o-r;f>e&&(f=e);return function(){if(c===f)return Ie;var t=n?--f:c++;return a&&a[t]}}(t,f):function(t,u,s){var c,f=t&&t.array,h=s>i?0:i-s>>u,p=1+(o-s>>u);p>e&&(p=e);return function(){for(;;){if(c){var t=c();if(t!==Ie)return t;c=null}if(h===p)return Ie;var e=n?--p:h++;c=a(f&&f[e],u-r,s+(e<=t.size||r<0)return t.withMutations(function(t){r<0?Ae(t,r).set(0,e):Ae(t,0,r+1).set(r,e)});r+=t._origin;var n=t._tail,i=t._root,u=o();return r>=je(t._capacity)?n=Me(n,t.__ownerID,0,r,e,u):i=Me(i,t.__ownerID,t._level,r,e,u),u.value?t.__ownerID?(t._root=i,t._tail=n,t.__hash=void 0,t.__altered=!0,t):xe(t._origin,t._capacity,t._level,i,n):t}function Me(t,e,i,o,s,a){var c,f=o>>>i&n,h=t&&f0){var p=t&&t.array[f],_=Me(p,e,i-r,o,s,a);return _===p?t:((c=qe(t,e)).array[f]=_,c)}return h&&t.array[f]===s?t:(a&&u(a),c=qe(t,e),void 0===s&&f===c.array.length-1?c.array.pop():c.array[f]=s,c)}function qe(t,r){return r&&t&&r===t.ownerID?t:new Se(t?t.array.slice():[],r)}function De(t,e){if(e>=je(t._capacity))return t._tail;if(e<1<0;)i=i.array[e>>>o&n],o-=r;return i}}function Ae(t,e,i){void 0!==e&&(e|=0),void 0!==i&&(i|=0);var o=t.__ownerID||new s,u=t._origin,a=t._capacity,c=u+e,f=void 0===i?a:i<0?a+i:u+i;if(c===u&&f===a)return t;if(c>=f)return t.clear();for(var h=t._level,p=t._root,_=0;c+_<0;)p=new Se(p&&p.array.length?[void 0,p]:[],o),_+=1<<(h+=r);_&&(c+=_,u+=_,f+=_,a+=_);for(var l=je(a),v=je(f);v>=1<l?new Se([],o):y;if(y&&v>l&&cr;w-=r){var m=l>>>w&n;g=g.array[m]=qe(g.array[m],o)}g.array[l>>>r&n]=y}if(f=v)c-=v,f-=v,h=r,p=null,d=d&&d.removeBefore(o,0,c);else if(c>u||v>>h&n;if(S!==v>>>h&n)break;S&&(_+=(1<u&&(p=p.removeBefore(o,h,c-_)),p&&v>>r<=e&&a.size>=2*s.size?(o=(u=a.filter(function(t,r){return void 0!==t&&c!==r})).toKeyedSeq().map(function(t){return t[0]}).flip().toMap(),t.__ownerID&&(o.__ownerID=u.__ownerID=t.__ownerID)):(o=s.remove(r),u=c===a.size-1?a.pop():a.set(c,void 0))}else if(f){if(n===a.get(c)[1])return t;o=s,u=a.set(c,[r,n])}else o=s.set(r,a.size),u=a.set(a.size,[r,n]);return t.__ownerID?(t.size=o.size,t._map=o,t._list=u,t.__hash=void 0,t):Ue(o,u)}exports.OrderedMap=Re,Re.isOrderedMap=ft,Re.prototype[j]=!0,Re.prototype[t]=Re.prototype.remove;var Te="@@__IMMUTABLE_STACK__@@";function Le(t){return Boolean(t&&t[Te])}var Ce=function(t){function r(t){return null==t?He():Le(t)?t:He().pushAll(t)}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.of=function(){return this(arguments)},r.prototype.toString=function(){return this.__toString("Stack [","]")},r.prototype.get=function(t,r){var e=this._head;for(t=c(this,t);e&&t--;)e=e.next;return e?e.value:r},r.prototype.peek=function(){return this._head&&this._head.value},r.prototype.push=function(){var t=arguments;if(0===arguments.length)return this;for(var r=this.size+arguments.length,e=this._head,n=arguments.length-1;n>=0;n--)e={value:t[n],next:e};return this.__ownerID?(this.size=r,this._head=e,this.__hash=void 0,this.__altered=!0,this):Pe(r,e)},r.prototype.pushAll=function(r){if(0===(r=t(r)).size)return this;if(0===this.size&&Le(r))return r;sr(r.size);var e=this.size,n=this._head;return r.__iterate(function(t){e++,n={value:t,next:n}},!0),this.__ownerID?(this.size=e,this._head=n,this.__hash=void 0,this.__altered=!0,this):Pe(e,n)},r.prototype.pop=function(){return this.slice(1)},r.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):He()},r.prototype.slice=function(r,e){if(h(r,e,this.size))return this;var n=p(r,this.size);if(_(e,this.size)!==this.size)return t.prototype.slice.call(this,r,e);for(var i=this.size-n,o=this._head;n--;)o=o.next;return this.__ownerID?(this.size=i,this._head=o,this.__hash=void 0,this.__altered=!0,this):Pe(i,o)},r.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?Pe(this.size,this._head,t,this.__hash):0===this.size?He():(this.__ownerID=t,this.__altered=!1,this)},r.prototype.__iterate=function(t,r){var e=this;if(r)return new $(this.toArray()).__iterate(function(r,n){return t(r,n,e)},r);for(var n=0,i=this._head;i&&!1!==t(i.value,n++,this);)i=i.next;return n},r.prototype.__iterator=function(t,r){if(r)return new $(this.toArray()).__iterator(t,r);var e=0,n=this._head;return new C(function(){if(n){var r=n.value;return n=n.next,W(t,e++,r)}return N()})},r}(x);exports.Stack=Ce,Ce.isStack=Le;var We,Ne=Ce.prototype;function Pe(t,r,e,n){var i=Object.create(Ne);return i.size=t,i._head=r,i.__ownerID=e,i.__hash=n,i.__altered=!1,i}function He(){return We||(We=Pe(0))}Ne[Te]=!0,Ne.shift=Ne.pop,Ne.unshift=Ne.push,Ne.unshiftAll=Ne.pushAll,Ne.withMutations=Cr,Ne.wasAltered=Pr,Ne.asImmutable=Nr,Ne["@@transducer/init"]=Ne.asMutable=Wr,Ne["@@transducer/step"]=function(t,r){return t.unshift(r)},Ne["@@transducer/result"]=function(t){return t.asImmutable()};var Je="@@__IMMUTABLE_SET__@@";function Ve(t){return Boolean(t&&t[Je])}function Ye(t){return Ve(t)&&k(t)}function Qe(t,r){if(t===r)return!0;if(!d(r)||void 0!==t.size&&void 0!==r.size&&t.size!==r.size||void 0!==t.__hash&&void 0!==r.__hash&&t.__hash!==r.__hash||w(t)!==w(r)||S(t)!==S(r)||k(t)!==k(r))return!1;if(0===t.size&&0===r.size)return!0;var e=!z(t);if(k(t)){var n=t.entries();return r.every(function(t,r){var i=n.next().value;return i&&pt(i[1],t)&&(e||pt(i[0],r))})&&n.next().done}var o=!1;if(void 0===t.size)if(void 0===r.size)"function"==typeof t.cacheResult&&t.cacheResult();else{o=!0;var u=t;t=r,r=u}var s=!0,a=r.__iterate(function(r,n){if(e?!t.has(r):o?!pt(r,t.get(n,i)):!pt(t.get(n,i),r))return s=!1,!1});return s&&t.size===a}function Xe(t,r){var e=function(e){t.prototype[e]=r[e]};return Object.keys(r).forEach(e),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(r).forEach(e),t}function Fe(t){if(!t||"object"!=typeof t)return t;if(!d(t)){if(!fr(t))return t;t=X(t)}if(w(t)){var r={};return t.__iterate(function(t,e){r[e]=Fe(t)}),r}var e=[];return t.__iterate(function(t){e.push(Fe(t))}),e}var Ge=function(t){function r(r){return null==r?en():Ve(r)&&!k(r)?r:en().withMutations(function(e){var n=t(r);sr(n.size),n.forEach(function(t){return e.add(t)})})}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.of=function(){return this(arguments)},r.fromKeys=function(t){return this(b(t).keySeq())},r.intersect=function(t){return(t=I(t).toArray()).length?$e.intersect.apply(r(t.pop()),t):en()},r.union=function(t){return(t=I(t).toArray()).length?$e.union.apply(r(t.pop()),t):en()},r.prototype.toString=function(){return this.__toString("Set {","}")},r.prototype.has=function(t){return this._map.has(t)},r.prototype.add=function(t){return tn(this,this._map.set(t,t))},r.prototype.remove=function(t){return tn(this,this._map.remove(t))},r.prototype.clear=function(){return tn(this,this._map.clear())},r.prototype.map=function(t,r){var e=this,n=[],i=[];return this.forEach(function(o){var u=t.call(r,o,o,e);u!==o&&(n.push(o),i.push(u))}),this.withMutations(function(t){n.forEach(function(r){return t.remove(r)}),i.forEach(function(r){return t.add(r)})})},r.prototype.union=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return 0===(r=r.filter(function(t){return 0!==t.size})).length?this:0!==this.size||this.__ownerID||1!==r.length?this.withMutations(function(e){for(var n=0;n=0&&r=0&&ethis.size?r:this.find(function(r,e){return e===t},void 0,r)},has:function(t){return(t=c(this,t))>=0&&(void 0!==this.size?this.size===1/0||tr?-1:0}function Sn(t){if(t.size===1/0)return 0;var r=k(t),e=w(t),n=r?1:0;return zn(t.__iterate(e?r?function(t,r){n=31*n+In(yt(t),yt(r))|0}:function(t,r){n=n+In(yt(t),yt(r))|0}:r?function(t){n=31*n+yt(t)|0}:function(t){n=n+yt(t)|0}),n)}function zn(t,r){return r=_t(r,3432918353),r=_t(r<<15|r>>>-15,461845907),r=_t(r<<13|r>>>-13,5),r=_t((r=(r+3864292196|0)^t)^r>>>16,2246822507),r=lt((r=_t(r^r>>>13,3266489909))^r>>>16)}function In(t,r){return t^r+2654435769+(t<<6)+(t>>2)|0}_n[m]=!0,_n[j]=!0,Xe(O,{get:function(t,r){return this.has(t)?t:r},includes:function(t){return this.has(t)},keySeq:function(){return this.valueSeq()}}),O.prototype.has=hn.includes,O.prototype.contains=O.prototype.includes,Xe(F,b.prototype),Xe(G,x.prototype),Xe(Z,O.prototype);var bn=function(t){function r(t){return null==t?Mn():Ye(t)?t:Mn().withMutations(function(r){var e=O(t);sr(e.size),e.forEach(function(t){return r.add(t)})})}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.of=function(){return this(arguments)},r.fromKeys=function(t){return this(b(t).keySeq())},r.prototype.toString=function(){return this.__toString("OrderedSet {","}")},r}(Ge);exports.OrderedSet=bn,bn.isOrderedSet=Ye;var xn,On=bn.prototype;function En(t,r){var e=Object.create(On);return e.size=t?t.size:0,e._map=t,e.__ownerID=r,e}function Mn(){return xn||(xn=En(Ke()))}On[j]=!0,On.zip=_n.zip,On.zipWith=_n.zipWith,On.__empty=Mn,On.__make=En;var qn=function(t,r){var e,n=function(o){var u=this;if(o instanceof n)return o;if(!(this instanceof n))return new n(o);if(!e){e=!0;var s=Object.keys(t),a=i._indices={};i._name=r,i._keys=s,i._defaultValues=t;for(var c=0;c2?[]:void 0,{"":t})}function Tn(t,r,e,n,i,o){var u=Array.isArray(e)?G:cr(e)?F:null;if(u){if(~t.indexOf(e))throw new TypeError("Cannot convert circular structure to Immutable");t.push(e),i&&""!==n&&i.push(n);var s=r.call(o,n,u(e).map(function(n,o){return Tn(t,r,n,o,i,e)}),i&&i.slice());return t.pop(),i&&i.pop(),s}return e}function Ln(t,r){return w(r)?r.toMap():r.toList()}exports.Repeat=Kn;var Cn="4.0.0-rc.11";exports.version=Cn;var Wn={version:Cn,Collection:I,Iterable:I,Seq:X,Map:Hr,OrderedMap:Re,List:we,Stack:Ce,Set:Ge,OrderedSet:bn,Record:qn,Range:on,Repeat:Kn,is:pt,fromJS:Bn,hash:yt,isImmutable:A,isCollection:d,isKeyed:w,isIndexed:S,isAssociative:z,isOrdered:k,isValueObject:ht,isSeq:M,isList:ge,isMap:ct,isOrderedMap:ft,isStack:Le,isSet:Ve,isOrderedSet:Ye,isRecord:D,get:_r,getIn:un,has:pr,hasIn:an,merge:qr,mergeDeep:Ar,mergeWith:Dr,mergeDeepWith:jr,remove:vr,removeIn:Sr,set:yr,setIn:wr,update:Ir,updateIn:dr},Nn=I;exports.Iterable=Nn;var Pn=Wn;exports.default=Pn; },{}],"FRly":[function(require,module,exports) { "use strict";exports.byteLength=u,exports.toByteArray=i,exports.fromByteArray=d;for(var r=[],t=[],e="undefined"!=typeof Uint8Array?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,a=n.length;o0)throw new Error("Invalid string. Length must be a multiple of 4");var e=r.indexOf("=");return-1===e&&(e=t),[e,e===t?0:4-e%4]}function u(r){var t=h(r),e=t[0],n=t[1];return 3*(e+n)/4-n}function c(r,t,e){return 3*(t+e)/4-e}function i(r){for(var n,o=h(r),a=o[0],u=o[1],i=new e(c(r,a,u)),f=0,A=u>0?a-4:a,d=0;d>16&255,i[f++]=n>>8&255,i[f++]=255&n;return 2===u&&(n=t[r.charCodeAt(d)]<<2|t[r.charCodeAt(d+1)]>>4,i[f++]=255&n),1===u&&(n=t[r.charCodeAt(d)]<<10|t[r.charCodeAt(d+1)]<<4|t[r.charCodeAt(d+2)]>>2,i[f++]=n>>8&255,i[f++]=255&n),i}function f(t){return r[t>>18&63]+r[t>>12&63]+r[t>>6&63]+r[63&t]}function A(r,t,e){for(var n,o=[],a=t;au?u:h+16383));return 1===o?(e=t[n-1],a.push(r[e>>2]+r[e<<4&63]+"==")):2===o&&(e=(t[n-2]<<8)+t[n-1],a.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"=")),a.join("")}t["-".charCodeAt(0)]=62,t["_".charCodeAt(0)]=63; },{}],"Quj6":[function(require,module,exports) { exports.read=function(a,o,t,r,h){var M,p,w=8*h-r-1,f=(1<>1,i=-7,N=t?h-1:0,n=t?-1:1,s=a[o+N];for(N+=n,M=s&(1<<-i)-1,s>>=-i,i+=w;i>0;M=256*M+a[o+N],N+=n,i-=8);for(p=M&(1<<-i)-1,M>>=-i,i+=r;i>0;p=256*p+a[o+N],N+=n,i-=8);if(0===M)M=1-e;else{if(M===f)return p?NaN:1/0*(s?-1:1);p+=Math.pow(2,r),M-=e}return(s?-1:1)*p*Math.pow(2,M-r)},exports.write=function(a,o,t,r,h,M){var p,w,f,e=8*M-h-1,i=(1<>1,n=23===h?Math.pow(2,-24)-Math.pow(2,-77):0,s=r?0:M-1,u=r?1:-1,l=o<0||0===o&&1/o<0?1:0;for(o=Math.abs(o),isNaN(o)||o===1/0?(w=isNaN(o)?1:0,p=i):(p=Math.floor(Math.log(o)/Math.LN2),o*(f=Math.pow(2,-p))<1&&(p--,f*=2),(o+=p+N>=1?n/f:n*Math.pow(2,1-N))*f>=2&&(p++,f/=2),p+N>=i?(w=0,p=i):p+N>=1?(w=(o*f-1)*Math.pow(2,h),p+=N):(w=o*Math.pow(2,N-1)*Math.pow(2,h),p=0));h>=8;a[t+s]=255&w,s+=u,w/=256,h-=8);for(p=p<0;a[t+s]=255&p,s+=u,p/=256,e-=8);a[t+s-u]|=128*l}; },{}],"aq/z":[function(require,module,exports) { var r={}.toString;module.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}; },{}],"aMB2":[function(require,module,exports) { var global = arguments[3]; var t=arguments[3],r=require("base64-js"),e=require("ieee754"),n=require("isarray");function i(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(r){return!1}}function o(){return f.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function u(t,r){if(o()=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|t}function d(t){return+t!=t&&(t=0),f.alloc(+t)}function v(t,r){if(f.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var e=t.length;if(0===e)return 0;for(var n=!1;;)switch(r){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":case void 0:return $(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return K(t).length;default:if(n)return $(t).length;r=(""+r).toLowerCase(),n=!0}}function E(t,r,e){var n=!1;if((void 0===r||r<0)&&(r=0),r>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(r>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return x(this,r,e);case"utf8":case"utf-8":return Y(this,r,e);case"ascii":return L(this,r,e);case"latin1":case"binary":return D(this,r,e);case"base64":return S(this,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,r,e);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function b(t,r,e){var n=t[r];t[r]=t[e],t[e]=n}function R(t,r,e,n,i){if(0===t.length)return-1;if("string"==typeof e?(n=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),e=+e,isNaN(e)&&(e=i?0:t.length-1),e<0&&(e=t.length+e),e>=t.length){if(i)return-1;e=t.length-1}else if(e<0){if(!i)return-1;e=0}if("string"==typeof r&&(r=f.from(r,n)),f.isBuffer(r))return 0===r.length?-1:_(t,r,e,n,i);if("number"==typeof r)return r&=255,f.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,r,e):Uint8Array.prototype.lastIndexOf.call(t,r,e):_(t,[r],e,n,i);throw new TypeError("val must be string, number or Buffer")}function _(t,r,e,n,i){var o,u=1,f=t.length,s=r.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||r.length<2)return-1;u=2,f/=2,s/=2,e/=2}function h(t,r){return 1===u?t[r]:t.readUInt16BE(r*u)}if(i){var a=-1;for(o=e;of&&(e=f-s),o=e;o>=0;o--){for(var c=!0,l=0;li&&(n=i):n=i;var o=r.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var u=0;u239?4:h>223?3:h>191?2:1;if(i+c<=e)switch(c){case 1:h<128&&(a=h);break;case 2:128==(192&(o=t[i+1]))&&(s=(31&h)<<6|63&o)>127&&(a=s);break;case 3:o=t[i+1],u=t[i+2],128==(192&o)&&128==(192&u)&&(s=(15&h)<<12|(63&o)<<6|63&u)>2047&&(s<55296||s>57343)&&(a=s);break;case 4:o=t[i+1],u=t[i+2],f=t[i+3],128==(192&o)&&128==(192&u)&&128==(192&f)&&(s=(15&h)<<18|(63&o)<<12|(63&u)<<6|63&f)>65535&&s<1114112&&(a=s)}null===a?(a=65533,c=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=c}return O(n)}exports.Buffer=f,exports.SlowBuffer=d,exports.INSPECT_MAX_BYTES=50,f.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:i(),exports.kMaxLength=o(),f.poolSize=8192,f._augment=function(t){return t.__proto__=f.prototype,t},f.from=function(t,r,e){return s(null,t,r,e)},f.TYPED_ARRAY_SUPPORT&&(f.prototype.__proto__=Uint8Array.prototype,f.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&f[Symbol.species]===f&&Object.defineProperty(f,Symbol.species,{value:null,configurable:!0})),f.alloc=function(t,r,e){return a(null,t,r,e)},f.allocUnsafe=function(t){return c(null,t)},f.allocUnsafeSlow=function(t){return c(null,t)},f.isBuffer=function(t){return!(null==t||!t._isBuffer)},f.compare=function(t,r){if(!f.isBuffer(t)||!f.isBuffer(r))throw new TypeError("Arguments must be Buffers");if(t===r)return 0;for(var e=t.length,n=r.length,i=0,o=Math.min(e,n);i0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},f.prototype.compare=function(t,r,e,n,i){if(!f.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===r&&(r=0),void 0===e&&(e=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),r<0||e>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&r>=e)return 0;if(n>=i)return-1;if(r>=e)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),u=(e>>>=0)-(r>>>=0),s=Math.min(o,u),h=this.slice(n,i),a=t.slice(r,e),c=0;ci)&&(e=i),t.length>0&&(e<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return A(this,t,r,e);case"utf8":case"utf-8":return m(this,t,r,e);case"ascii":return P(this,t,r,e);case"latin1":case"binary":return T(this,t,r,e);case"base64":return B(this,t,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return U(this,t,r,e);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},f.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var I=4096;function O(t){var r=t.length;if(r<=I)return String.fromCharCode.apply(String,t);for(var e="",n=0;nn)&&(e=n);for(var i="",o=r;oe)throw new RangeError("Trying to access beyond buffer length")}function k(t,r,e,n,i,o){if(!f.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(r>i||rt.length)throw new RangeError("Index out of range")}function N(t,r,e,n){r<0&&(r=65535+r+1);for(var i=0,o=Math.min(t.length-e,2);i>>8*(n?i:1-i)}function z(t,r,e,n){r<0&&(r=4294967295+r+1);for(var i=0,o=Math.min(t.length-e,4);i>>8*(n?i:3-i)&255}function F(t,r,e,n,i,o){if(e+n>t.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function j(t,r,n,i,o){return o||F(t,r,n,4,3.4028234663852886e38,-3.4028234663852886e38),e.write(t,r,n,i,23,4),n+4}function q(t,r,n,i,o){return o||F(t,r,n,8,1.7976931348623157e308,-1.7976931348623157e308),e.write(t,r,n,i,52,8),n+8}f.prototype.slice=function(t,r){var e,n=this.length;if((t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(r=void 0===r?n:~~r)<0?(r+=n)<0&&(r=0):r>n&&(r=n),r0&&(i*=256);)n+=this[t+--r]*i;return n},f.prototype.readUInt8=function(t,r){return r||M(t,1,this.length),this[t]},f.prototype.readUInt16LE=function(t,r){return r||M(t,2,this.length),this[t]|this[t+1]<<8},f.prototype.readUInt16BE=function(t,r){return r||M(t,2,this.length),this[t]<<8|this[t+1]},f.prototype.readUInt32LE=function(t,r){return r||M(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},f.prototype.readUInt32BE=function(t,r){return r||M(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},f.prototype.readIntLE=function(t,r,e){t|=0,r|=0,e||M(t,r,this.length);for(var n=this[t],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*r)),n},f.prototype.readIntBE=function(t,r,e){t|=0,r|=0,e||M(t,r,this.length);for(var n=r,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*r)),o},f.prototype.readInt8=function(t,r){return r||M(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},f.prototype.readInt16LE=function(t,r){r||M(t,2,this.length);var e=this[t]|this[t+1]<<8;return 32768&e?4294901760|e:e},f.prototype.readInt16BE=function(t,r){r||M(t,2,this.length);var e=this[t+1]|this[t]<<8;return 32768&e?4294901760|e:e},f.prototype.readInt32LE=function(t,r){return r||M(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},f.prototype.readInt32BE=function(t,r){return r||M(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},f.prototype.readFloatLE=function(t,r){return r||M(t,4,this.length),e.read(this,t,!0,23,4)},f.prototype.readFloatBE=function(t,r){return r||M(t,4,this.length),e.read(this,t,!1,23,4)},f.prototype.readDoubleLE=function(t,r){return r||M(t,8,this.length),e.read(this,t,!0,52,8)},f.prototype.readDoubleBE=function(t,r){return r||M(t,8,this.length),e.read(this,t,!1,52,8)},f.prototype.writeUIntLE=function(t,r,e,n){(t=+t,r|=0,e|=0,n)||k(this,t,r,e,Math.pow(2,8*e)-1,0);var i=1,o=0;for(this[r]=255&t;++o=0&&(o*=256);)this[r+i]=t/o&255;return r+e},f.prototype.writeUInt8=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,1,255,0),f.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[r]=255&t,r+1},f.prototype.writeUInt16LE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8):N(this,t,r,!0),r+2},f.prototype.writeUInt16BE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=255&t):N(this,t,r,!1),r+2},f.prototype.writeUInt32LE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=255&t):z(this,t,r,!0),r+4},f.prototype.writeUInt32BE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t):z(this,t,r,!1),r+4},f.prototype.writeIntLE=function(t,r,e,n){if(t=+t,r|=0,!n){var i=Math.pow(2,8*e-1);k(this,t,r,e,i-1,-i)}var o=0,u=1,f=0;for(this[r]=255&t;++o>0)-f&255;return r+e},f.prototype.writeIntBE=function(t,r,e,n){if(t=+t,r|=0,!n){var i=Math.pow(2,8*e-1);k(this,t,r,e,i-1,-i)}var o=e-1,u=1,f=0;for(this[r+o]=255&t;--o>=0&&(u*=256);)t<0&&0===f&&0!==this[r+o+1]&&(f=1),this[r+o]=(t/u>>0)-f&255;return r+e},f.prototype.writeInt8=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,1,127,-128),f.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[r]=255&t,r+1},f.prototype.writeInt16LE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8):N(this,t,r,!0),r+2},f.prototype.writeInt16BE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=255&t):N(this,t,r,!1),r+2},f.prototype.writeInt32LE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,4,2147483647,-2147483648),f.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24):z(this,t,r,!0),r+4},f.prototype.writeInt32BE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),f.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t):z(this,t,r,!1),r+4},f.prototype.writeFloatLE=function(t,r,e){return j(this,t,r,!0,e)},f.prototype.writeFloatBE=function(t,r,e){return j(this,t,r,!1,e)},f.prototype.writeDoubleLE=function(t,r,e){return q(this,t,r,!0,e)},f.prototype.writeDoubleBE=function(t,r,e){return q(this,t,r,!1,e)},f.prototype.copy=function(t,r,e,n){if(e||(e=0),n||0===n||(n=this.length),r>=t.length&&(r=t.length),r||(r=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-r=0;--i)t[i+r]=this[i+e];else if(o<1e3||!f.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,e=void 0===e?this.length:e>>>0,t||(t=0),"number"==typeof t)for(o=r;o55295&&e<57344){if(!i){if(e>56319){(r-=3)>-1&&o.push(239,191,189);continue}if(u+1===n){(r-=3)>-1&&o.push(239,191,189);continue}i=e;continue}if(e<56320){(r-=3)>-1&&o.push(239,191,189),i=e;continue}e=65536+(i-55296<<10|e-56320)}else i&&(r-=3)>-1&&o.push(239,191,189);if(i=null,e<128){if((r-=1)<0)break;o.push(e)}else if(e<2048){if((r-=2)<0)break;o.push(e>>6|192,63&e|128)}else if(e<65536){if((r-=3)<0)break;o.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((r-=4)<0)break;o.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return o}function G(t){for(var r=[],e=0;e>8,i=e%256,o.push(i),o.push(n);return o}function K(t){return r.toByteArray(X(t))}function Q(t,r,e,n){for(var i=0;i=r.length||i>=t.length);++i)r[i+e]=t[i];return i}function W(t){return t!=t} },{"base64-js":"FRly","ieee754":"Quj6","isarray":"aq/z","buffer":"aMB2"}],"4HJa":[function(require,module,exports) { var global = arguments[3]; var Buffer = require("buffer").Buffer; var define; var n,t=arguments[3],r=require("buffer").Buffer;(function(){var r,e=200,u="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",i="Expected a function",o="__lodash_hash_undefined__",f=500,a="__lodash_placeholder__",c=1,l=2,s=4,h=1,p=2,v=1,_=2,g=4,y=8,d=16,b=32,w=64,m=128,x=256,j=512,A=30,k="...",O=800,I=16,R=1,E=2,z=1/0,S=9007199254740991,L=1.7976931348623157e308,W=NaN,C=4294967295,B=C-1,U=C>>>1,T=[["ary",m],["bind",v],["bindKey",_],["curry",y],["curryRight",d],["flip",j],["partial",b],["partialRight",w],["rearg",x]],$="[object Arguments]",D="[object Array]",M="[object AsyncFunction]",F="[object Boolean]",N="[object Date]",P="[object DOMException]",q="[object Error]",Z="[object Function]",K="[object GeneratorFunction]",V="[object Map]",G="[object Number]",H="[object Null]",J="[object Object]",Y="[object Proxy]",Q="[object RegExp]",X="[object Set]",nn="[object String]",tn="[object Symbol]",rn="[object Undefined]",en="[object WeakMap]",un="[object WeakSet]",on="[object ArrayBuffer]",fn="[object DataView]",an="[object Float32Array]",cn="[object Float64Array]",ln="[object Int8Array]",sn="[object Int16Array]",hn="[object Int32Array]",pn="[object Uint8Array]",vn="[object Uint8ClampedArray]",_n="[object Uint16Array]",gn="[object Uint32Array]",yn=/\b__p \+= '';/g,dn=/\b(__p \+=) '' \+/g,bn=/(__e\(.*?\)|\b__t\)) \+\n'';/g,wn=/&(?:amp|lt|gt|quot|#39);/g,mn=/[&<>"']/g,xn=RegExp(wn.source),jn=RegExp(mn.source),An=/<%-([\s\S]+?)%>/g,kn=/<%([\s\S]+?)%>/g,On=/<%=([\s\S]+?)%>/g,In=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Rn=/^\w*$/,En=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,zn=/[\\^$.*+?()[\]{}|]/g,Sn=RegExp(zn.source),Ln=/^\s+|\s+$/g,Wn=/^\s+/,Cn=/\s+$/,Bn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Un=/\{\n\/\* \[wrapped with (.+)\] \*/,Tn=/,? & /,$n=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Dn=/\\(\\)?/g,Mn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Fn=/\w*$/,Nn=/^[-+]0x[0-9a-f]+$/i,Pn=/^0b[01]+$/i,qn=/^\[object .+?Constructor\]$/,Zn=/^0o[0-7]+$/i,Kn=/^(?:0|[1-9]\d*)$/,Vn=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Gn=/($^)/,Hn=/['\n\r\u2028\u2029\\]/g,Jn="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Yn="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Qn="[\\ud800-\\udfff]",Xn="["+Yn+"]",nt="["+Jn+"]",tt="\\d+",rt="[\\u2700-\\u27bf]",et="[a-z\\xdf-\\xf6\\xf8-\\xff]",ut="[^\\ud800-\\udfff"+Yn+tt+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",it="\\ud83c[\\udffb-\\udfff]",ot="[^\\ud800-\\udfff]",ft="(?:\\ud83c[\\udde6-\\uddff]){2}",at="[\\ud800-\\udbff][\\udc00-\\udfff]",ct="[A-Z\\xc0-\\xd6\\xd8-\\xde]",lt="(?:"+et+"|"+ut+")",st="(?:"+ct+"|"+ut+")",ht="(?:"+nt+"|"+it+")"+"?",pt="[\\ufe0e\\ufe0f]?"+ht+("(?:\\u200d(?:"+[ot,ft,at].join("|")+")[\\ufe0e\\ufe0f]?"+ht+")*"),vt="(?:"+[rt,ft,at].join("|")+")"+pt,_t="(?:"+[ot+nt+"?",nt,ft,at,Qn].join("|")+")",gt=RegExp("['’]","g"),yt=RegExp(nt,"g"),dt=RegExp(it+"(?="+it+")|"+_t+pt,"g"),bt=RegExp([ct+"?"+et+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[Xn,ct,"$"].join("|")+")",st+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[Xn,ct+lt,"$"].join("|")+")",ct+"?"+lt+"+(?:['’](?:d|ll|m|re|s|t|ve))?",ct+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",tt,vt].join("|"),"g"),wt=RegExp("[\\u200d\\ud800-\\udfff"+Jn+"\\ufe0e\\ufe0f]"),mt=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,xt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],jt=-1,At={};At[an]=At[cn]=At[ln]=At[sn]=At[hn]=At[pn]=At[vn]=At[_n]=At[gn]=!0,At[$]=At[D]=At[on]=At[F]=At[fn]=At[N]=At[q]=At[Z]=At[V]=At[G]=At[J]=At[Q]=At[X]=At[nn]=At[en]=!1;var kt={};kt[$]=kt[D]=kt[on]=kt[fn]=kt[F]=kt[N]=kt[an]=kt[cn]=kt[ln]=kt[sn]=kt[hn]=kt[V]=kt[G]=kt[J]=kt[Q]=kt[X]=kt[nn]=kt[tn]=kt[pn]=kt[vn]=kt[_n]=kt[gn]=!0,kt[q]=kt[Z]=kt[en]=!1;var Ot={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},It=parseFloat,Rt=parseInt,Et="object"==typeof t&&t&&t.Object===Object&&t,zt="object"==typeof self&&self&&self.Object===Object&&self,St=Et||zt||Function("return this")(),Lt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Wt=Lt&&"object"==typeof module&&module&&!module.nodeType&&module,Ct=Wt&&Wt.exports===Lt,Bt=Ct&&Et.process,Ut=function(){try{var n=Wt&&Wt.require&&Wt.require("util").types;return n||Bt&&Bt.binding&&Bt.binding("util")}catch(t){}}(),Tt=Ut&&Ut.isArrayBuffer,$t=Ut&&Ut.isDate,Dt=Ut&&Ut.isMap,Mt=Ut&&Ut.isRegExp,Ft=Ut&&Ut.isSet,Nt=Ut&&Ut.isTypedArray;function Pt(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function qt(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u-1}function Jt(n,t,r){for(var e=-1,u=null==n?0:n.length;++e-1;);return r}function dr(n,t){for(var r=n.length;r--&&ir(t,n[r],0)>-1;);return r}var br=lr({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),wr=lr({"&":"&","<":"<",">":">",'"':""","'":"'"});function mr(n){return"\\"+Ot[n]}function xr(n){return wt.test(n)}function jr(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n]}),r}function Ar(n,t){return function(r){return n(t(r))}}function kr(n,t){for(var r=-1,e=n.length,u=0,i=[];++r",""":'"',"'":"'"});var Sr=function n(t){var Jn,Yn=(t=null==t?St:Sr.defaults(St.Object(),t,Sr.pick(St,xt))).Array,Qn=t.Date,Xn=t.Error,nt=t.Function,tt=t.Math,rt=t.Object,et=t.RegExp,ut=t.String,it=t.TypeError,ot=Yn.prototype,ft=nt.prototype,at=rt.prototype,ct=t["__core-js_shared__"],lt=ft.toString,st=at.hasOwnProperty,ht=0,pt=(Jn=/[^.]+$/.exec(ct&&ct.keys&&ct.keys.IE_PROTO||""))?"Symbol(src)_1."+Jn:"",vt=at.toString,_t=lt.call(rt),dt=St._,wt=et("^"+lt.call(st).replace(zn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ot=Ct?t.Buffer:r,Et=t.Symbol,zt=t.Uint8Array,Lt=Ot?Ot.allocUnsafe:r,Wt=Ar(rt.getPrototypeOf,rt),Bt=rt.create,Ut=at.propertyIsEnumerable,rr=ot.splice,lr=Et?Et.isConcatSpreadable:r,Lr=Et?Et.iterator:r,Wr=Et?Et.toStringTag:r,Cr=function(){try{var n=$i(rt,"defineProperty");return n({},"",{}),n}catch(t){}}(),Br=t.clearTimeout!==St.clearTimeout&&t.clearTimeout,Ur=Qn&&Qn.now!==St.Date.now&&Qn.now,Tr=t.setTimeout!==St.setTimeout&&t.setTimeout,$r=tt.ceil,Dr=tt.floor,Mr=rt.getOwnPropertySymbols,Fr=Ot?Ot.isBuffer:r,Nr=t.isFinite,Pr=ot.join,qr=Ar(rt.keys,rt),Zr=tt.max,Kr=tt.min,Vr=Qn.now,Gr=t.parseInt,Hr=tt.random,Jr=ot.reverse,Yr=$i(t,"DataView"),Qr=$i(t,"Map"),Xr=$i(t,"Promise"),ne=$i(t,"Set"),te=$i(t,"WeakMap"),re=$i(rt,"create"),ee=te&&new te,ue={},ie=lo(Yr),oe=lo(Qr),fe=lo(Xr),ae=lo(ne),ce=lo(te),le=Et?Et.prototype:r,se=le?le.valueOf:r,he=le?le.toString:r;function pe(n){if(Ef(n)&&!df(n)&&!(n instanceof ye)){if(n instanceof ge)return n;if(st.call(n,"__wrapped__"))return so(n)}return new ge(n)}var ve=function(){function n(){}return function(t){if(!Rf(t))return{};if(Bt)return Bt(t);n.prototype=t;var e=new n;return n.prototype=r,e}}();function _e(){}function ge(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=r}function ye(n){this.__wrapped__=n,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=C,this.__views__=[]}function de(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t=t?n:t)),n}function Be(n,t,e,u,i,o){var f,a=t&c,h=t&l,p=t&s;if(e&&(f=i?e(n,u,i,o):e(n)),f!==r)return f;if(!Rf(n))return n;var v=df(n);if(v){if(f=function(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&&st.call(n,"index")&&(r.index=n.index,r.input=n.input),r}(n),!a)return ri(n,f)}else{var _=Fi(n),g=_==Z||_==K;if(xf(n))return Ju(n,a);if(_==J||_==$||g&&!i){if(f=h||g?{}:Pi(n),!a)return h?function(n,t){return ei(n,Mi(n),t)}(n,function(n,t){return n&&ei(t,oa(t),n)}(f,n)):function(n,t){return ei(n,Di(n),t)}(n,Se(f,n))}else{if(!kt[_])return i?n:{};f=function(n,t,r){var e,u,i,o=n.constructor;switch(t){case on:return Yu(n);case F:case N:return new o(+n);case fn:return function(n,t){var r=t?Yu(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.byteLength)}(n,r);case an:case cn:case ln:case sn:case hn:case pn:case vn:case _n:case gn:return Qu(n,r);case V:return new o;case G:case nn:return new o(n);case Q:return(i=new(u=n).constructor(u.source,Fn.exec(u))).lastIndex=u.lastIndex,i;case X:return new o;case tn:return e=n,se?rt(se.call(e)):{}}}(n,_,a)}}o||(o=new xe);var y=o.get(n);if(y)return y;o.set(n,f),Cf(n)?n.forEach(function(r){f.add(Be(r,t,e,r,n,o))}):zf(n)&&n.forEach(function(r,u){f.set(u,Be(r,t,e,u,n,o))});var d=v?r:(p?h?Si:zi:h?oa:ia)(n);return Zt(d||n,function(r,u){d&&(r=n[u=r]),Re(f,u,Be(r,t,e,u,n,o))}),f}function Ue(n,t,e){var u=e.length;if(null==n)return!u;for(n=rt(n);u--;){var i=e[u],o=t[i],f=n[i];if(f===r&&!(i in n)||!o(f))return!1}return!0}function Te(n,t,e){if("function"!=typeof n)throw new it(i);return eo(function(){n.apply(r,e)},t)}function $e(n,t,r,u){var i=-1,o=Ht,f=!0,a=n.length,c=[],l=t.length;if(!a)return c;r&&(t=Yt(t,vr(r))),u?(o=Jt,f=!1):t.length>=e&&(o=gr,f=!1,t=new me(t));n:for(;++i-1},be.prototype.set=function(n,t){var r=this.__data__,e=Ee(r,n);return e<0?(++this.size,r.push([n,t])):r[e][1]=t,this},we.prototype.clear=function(){this.size=0,this.__data__={hash:new de,map:new(Qr||be),string:new de}},we.prototype.delete=function(n){var t=Ui(this,n).delete(n);return this.size-=t?1:0,t},we.prototype.get=function(n){return Ui(this,n).get(n)},we.prototype.has=function(n){return Ui(this,n).has(n)},we.prototype.set=function(n,t){var r=Ui(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this},me.prototype.add=me.prototype.push=function(n){return this.__data__.set(n,o),this},me.prototype.has=function(n){return this.__data__.has(n)},xe.prototype.clear=function(){this.__data__=new be,this.size=0},xe.prototype.delete=function(n){var t=this.__data__,r=t.delete(n);return this.size=t.size,r},xe.prototype.get=function(n){return this.__data__.get(n)},xe.prototype.has=function(n){return this.__data__.has(n)},xe.prototype.set=function(n,t){var r=this.__data__;if(r instanceof be){var u=r.__data__;if(!Qr||u.length0&&r(f)?t>1?qe(f,t-1,r,e,u):Qt(u,f):e||(u[u.length]=f)}return u}var Ze=fi(),Ke=fi(!0);function Ve(n,t){return n&&Ze(n,t,ia)}function Ge(n,t){return n&&Ke(n,t,ia)}function He(n,t){return Gt(t,function(t){return kf(n[t])})}function Je(n,t){for(var e=0,u=(t=Ku(t,n)).length;null!=n&&et}function nu(n,t){return null!=n&&st.call(n,t)}function tu(n,t){return null!=n&&t in rt(n)}function ru(n,t,e){for(var u=e?Jt:Ht,i=n[0].length,o=n.length,f=o,a=Yn(o),c=1/0,l=[];f--;){var s=n[f];f&&t&&(s=Yt(s,vr(t))),c=Kr(s.length,c),a[f]=!e&&(t||i>=120&&s.length>=120)?new me(f&&s):r}s=n[0];var h=-1,p=a[0];n:for(;++h=f)return a;var c=r[e];return a*("desc"==c?-1:1)}}return n.index-t.index}(n,t,r)})}function du(n,t,r){for(var e=-1,u=t.length,i={};++e-1;)f!==n&&rr.call(f,a,1),rr.call(n,a,1);return n}function wu(n,t){for(var r=n?t.length:0,e=r-1;r--;){var u=t[r];if(r==e||u!==i){var i=u;Zi(u)?rr.call(n,u,1):$u(n,u)}}return n}function mu(n,t){return n+Dr(Hr()*(t-n+1))}function xu(n,t){var r="";if(!n||t<1||t>S)return r;do{t%2&&(r+=n),(t=Dr(t/2))&&(n+=n)}while(t);return r}function ju(n,t){return uo(Xi(n,t,Sa),n+"")}function Au(n){return Ae(va(n))}function ku(n,t){var r=va(n);return fo(r,Ce(t,0,r.length))}function Ou(n,t,e,u){if(!Rf(n))return n;for(var i=-1,o=(t=Ku(t,n)).length,f=o-1,a=n;null!=a&&++iu?0:u+t),(r=r>u?u:r)<0&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0;for(var i=Yn(u);++e>>1,o=n[i];null!==o&&!Uf(o)&&(r?o<=t:o=e){var l=t?null:xi(n);if(l)return Or(l);f=!1,i=gr,c=new me}else c=t?[]:a;n:for(;++u=u?n:zu(n,t,e)}var Hu=Br||function(n){return St.clearTimeout(n)};function Ju(n,t){if(t)return n.slice();var r=n.length,e=Lt?Lt(r):new n.constructor(r);return n.copy(e),e}function Yu(n){var t=new n.constructor(n.byteLength);return new zt(t).set(new zt(n)),t}function Qu(n,t){var r=t?Yu(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.length)}function Xu(n,t){if(n!==t){var e=n!==r,u=null===n,i=n==n,o=Uf(n),f=t!==r,a=null===t,c=t==t,l=Uf(t);if(!a&&!l&&!o&&n>t||o&&f&&c&&!a&&!l||u&&f&&c||!e&&c||!i)return 1;if(!u&&!o&&!l&&n1?e[i-1]:r,f=i>2?e[2]:r;for(o=n.length>3&&"function"==typeof o?(i--,o):r,f&&Ki(e[0],e[1],f)&&(o=i<3?r:o,i=1),t=rt(t);++u-1?i[o?t[f]:f]:r}}function hi(n){return Ei(function(t){var e=t.length,u=e,o=ge.prototype.thru;for(n&&t.reverse();u--;){var f=t[u];if("function"!=typeof f)throw new it(i);if(o&&!a&&"wrapper"==Wi(f))var a=new ge([],!0)}for(u=a?u:e;++u1&&y.reverse(),s&&c<_&&(y.length=c),this&&this!==St&&this instanceof v&&(k=w||li(k)),k.apply(A,y)}}function vi(n,t){return function(r,e){return function(n,t,r,e){return Ve(n,function(n,u,i){t(e,r(n),u,i)}),e}(r,n,t(e),{})}}function _i(n,t){return function(e,u){var i;if(e===r&&u===r)return t;if(e!==r&&(i=e),u!==r){if(i===r)return u;"string"==typeof e||"string"==typeof u?(e=Uu(e),u=Uu(u)):(e=Bu(e),u=Bu(u)),i=n(e,u)}return i}}function gi(n){return Ei(function(t){return t=Yt(t,vr(Bi())),ju(function(r){var e=this;return n(t,function(n){return Pt(n,e,r)})})})}function yi(n,t){var e=(t=t===r?" ":Uu(t)).length;if(e<2)return e?xu(t,n):t;var u=xu(t,$r(n/Rr(t)));return xr(t)?Gu(Er(u),0,n).join(""):u.slice(0,n)}function di(n){return function(t,e,u){return u&&"number"!=typeof u&&Ki(t,e,u)&&(e=u=r),t=Ff(t),e===r?(e=t,t=0):e=Ff(e),function(n,t,r,e){for(var u=-1,i=Zr($r((t-n)/(r||1)),0),o=Yn(i);i--;)o[e?i:++u]=n,n+=r;return o}(t,e,u=u===r?ta))return!1;var l=o.get(n);if(l&&o.get(t))return l==t;var s=-1,v=!0,_=e&p?new me:r;for(o.set(n,t),o.set(t,n);++s-1&&n%1==0&&n1?"& ":"")+t[e],t=t.join(r>2?", ":" "),n.replace(Bn,"{\n/* [wrapped with "+t+"] */\n")}(e,function(n,t){return Zt(T,function(r){var e="_."+r[0];t&r[1]&&!Ht(n,e)&&n.push(e)}),n.sort()}(function(n){var t=n.match(Un);return t?t[1].split(Tn):[]}(e),r)))}function oo(n){var t=0,e=0;return function(){var u=Vr(),i=I-(u-e);if(e=u,i>0){if(++t>=O)return arguments[0]}else t=0;return n.apply(r,arguments)}}function fo(n,t){var e=-1,u=n.length,i=u-1;for(t=t===r?u:t;++e1?n[t-1]:r;return e="function"==typeof e?(n.pop(),e):r,Lo(n,e)});function Do(n){var t=pe(n);return t.__chain__=!0,t}function Mo(n,t){return t(n)}var Fo=Ei(function(n){var t=n.length,e=t?n[0]:0,u=this.__wrapped__,i=function(t){return We(t,n)};return!(t>1||this.__actions__.length)&&u instanceof ye&&Zi(e)?((u=u.slice(e,+e+(t?1:0))).__actions__.push({func:Mo,args:[i],thisArg:r}),new ge(u,this.__chain__).thru(function(n){return t&&!n.length&&n.push(r),n})):this.thru(i)});var No=ui(function(n,t,r){st.call(n,r)?++n[r]:Le(n,r,1)});var Po=si(_o),qo=si(go);function Zo(n,t){return(df(n)?Zt:De)(n,Bi(t,3))}function Ko(n,t){return(df(n)?Kt:Me)(n,Bi(t,3))}var Vo=ui(function(n,t,r){st.call(n,r)?n[r].push(t):Le(n,r,[t])});var Go=ju(function(n,t,r){var e=-1,u="function"==typeof t,i=wf(n)?Yn(n.length):[];return De(n,function(n){i[++e]=u?Pt(t,n,r):eu(n,t,r)}),i}),Ho=ui(function(n,t,r){Le(n,r,t)});function Jo(n,t){return(df(n)?Yt:hu)(n,Bi(t,3))}var Yo=ui(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]});var Qo=ju(function(n,t){if(null==n)return[];var r=t.length;return r>1&&Ki(n,t[0],t[1])?t=[]:r>2&&Ki(t[0],t[1],t[2])&&(t=[t[0]]),yu(n,qe(t,1),[])}),Xo=Ur||function(){return St.Date.now()};function nf(n,t,e){return t=e?r:t,t=n&&null==t?n.length:t,Ai(n,m,r,r,r,r,t)}function tf(n,t){var e;if("function"!=typeof t)throw new it(i);return n=Nf(n),function(){return--n>0&&(e=t.apply(this,arguments)),n<=1&&(t=r),e}}var rf=ju(function(n,t,r){var e=v;if(r.length){var u=kr(r,Ci(rf));e|=b}return Ai(n,e,t,r,u)}),ef=ju(function(n,t,r){var e=v|_;if(r.length){var u=kr(r,Ci(ef));e|=b}return Ai(t,e,n,r,u)});function uf(n,t,e){var u,o,f,a,c,l,s=0,h=!1,p=!1,v=!0;if("function"!=typeof n)throw new it(i);function _(t){var e=u,i=o;return u=o=r,s=t,a=n.apply(i,e)}function g(n){var e=n-l;return l===r||e>=t||e<0||p&&n-s>=f}function y(){var n=Xo();if(g(n))return d(n);c=eo(y,function(n){var r=t-(n-l);return p?Kr(r,f-(n-s)):r}(n))}function d(n){return c=r,v&&u?_(n):(u=o=r,a)}function b(){var n=Xo(),e=g(n);if(u=arguments,o=this,l=n,e){if(c===r)return function(n){return s=n,c=eo(y,t),h?_(n):a}(l);if(p)return Hu(c),c=eo(y,t),_(l)}return c===r&&(c=eo(y,t)),a}return t=qf(t)||0,Rf(e)&&(h=!!e.leading,f=(p="maxWait"in e)?Zr(qf(e.maxWait)||0,t):f,v="trailing"in e?!!e.trailing:v),b.cancel=function(){c!==r&&Hu(c),s=0,u=l=o=c=r},b.flush=function(){return c===r?a:d(Xo())},b}var of=ju(function(n,t){return Te(n,1,t)}),ff=ju(function(n,t,r){return Te(n,qf(t)||0,r)});function af(n,t){if("function"!=typeof n||null!=t&&"function"!=typeof t)throw new it(i);var r=function(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;if(i.has(u))return i.get(u);var o=n.apply(this,e);return r.cache=i.set(u,o)||i,o};return r.cache=new(af.Cache||we),r}function cf(n){if("function"!=typeof n)throw new it(i);return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}af.Cache=we;var lf=Vu(function(n,t){var r=(t=1==t.length&&df(t[0])?Yt(t[0],vr(Bi())):Yt(qe(t,1),vr(Bi()))).length;return ju(function(e){for(var u=-1,i=Kr(e.length,r);++u=t}),yf=uu(function(){return arguments}())?uu:function(n){return Ef(n)&&st.call(n,"callee")&&!Ut.call(n,"callee")},df=Yn.isArray,bf=Tt?vr(Tt):function(n){return Ef(n)&&Qe(n)==on};function wf(n){return null!=n&&If(n.length)&&!kf(n)}function mf(n){return Ef(n)&&wf(n)}var xf=Fr||qa,jf=$t?vr($t):function(n){return Ef(n)&&Qe(n)==N};function Af(n){if(!Ef(n))return!1;var t=Qe(n);return t==q||t==P||"string"==typeof n.message&&"string"==typeof n.name&&!Lf(n)}function kf(n){if(!Rf(n))return!1;var t=Qe(n);return t==Z||t==K||t==M||t==Y}function Of(n){return"number"==typeof n&&n==Nf(n)}function If(n){return"number"==typeof n&&n>-1&&n%1==0&&n<=S}function Rf(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function Ef(n){return null!=n&&"object"==typeof n}var zf=Dt?vr(Dt):function(n){return Ef(n)&&Fi(n)==V};function Sf(n){return"number"==typeof n||Ef(n)&&Qe(n)==G}function Lf(n){if(!Ef(n)||Qe(n)!=J)return!1;var t=Wt(n);if(null===t)return!0;var r=st.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&<.call(r)==_t}var Wf=Mt?vr(Mt):function(n){return Ef(n)&&Qe(n)==Q};var Cf=Ft?vr(Ft):function(n){return Ef(n)&&Fi(n)==X};function Bf(n){return"string"==typeof n||!df(n)&&Ef(n)&&Qe(n)==nn}function Uf(n){return"symbol"==typeof n||Ef(n)&&Qe(n)==tn}var Tf=Nt?vr(Nt):function(n){return Ef(n)&&If(n.length)&&!!At[Qe(n)]};var $f=bi(su),Df=bi(function(n,t){return n<=t});function Mf(n){if(!n)return[];if(wf(n))return Bf(n)?Er(n):ri(n);if(Lr&&n[Lr])return function(n){for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}(n[Lr]());var t=Fi(n);return(t==V?jr:t==X?Or:va)(n)}function Ff(n){return n?(n=qf(n))===z||n===-z?(n<0?-1:1)*L:n==n?n:0:0===n?n:0}function Nf(n){var t=Ff(n),r=t%1;return t==t?r?t-r:t:0}function Pf(n){return n?Ce(Nf(n),0,C):0}function qf(n){if("number"==typeof n)return n;if(Uf(n))return W;if(Rf(n)){var t="function"==typeof n.valueOf?n.valueOf():n;n=Rf(t)?t+"":t}if("string"!=typeof n)return 0===n?n:+n;n=n.replace(Ln,"");var r=Pn.test(n);return r||Zn.test(n)?Rt(n.slice(2),r?2:8):Nn.test(n)?W:+n}function Zf(n){return ei(n,oa(n))}function Kf(n){return null==n?"":Uu(n)}var Vf=ii(function(n,t){if(Ji(t)||wf(t))ei(t,ia(t),n);else for(var r in t)st.call(t,r)&&Re(n,r,t[r])}),Gf=ii(function(n,t){ei(t,oa(t),n)}),Hf=ii(function(n,t,r,e){ei(t,oa(t),n,e)}),Jf=ii(function(n,t,r,e){ei(t,ia(t),n,e)}),Yf=Ei(We);var Qf=ju(function(n,t){n=rt(n);var e=-1,u=t.length,i=u>2?t[2]:r;for(i&&Ki(t[0],t[1],i)&&(u=1);++e1),t}),ei(n,Si(n),r),e&&(r=Be(r,c|l|s,Ii));for(var u=t.length;u--;)$u(r,t[u]);return r});var la=Ei(function(n,t){return null==n?{}:function(n,t){return du(n,t,function(t,r){return ta(n,r)})}(n,t)});function sa(n,t){if(null==n)return{};var r=Yt(Si(n),function(n){return[n]});return t=Bi(t),du(n,r,function(n,r){return t(n,r[0])})}var ha=ji(ia),pa=ji(oa);function va(n){return null==n?[]:_r(n,ia(n))}var _a=ci(function(n,t,r){return t=t.toLowerCase(),n+(r?ga(t):t)});function ga(n){return Aa(Kf(n).toLowerCase())}function ya(n){return(n=Kf(n))&&n.replace(Vn,br).replace(yt,"")}var da=ci(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),ba=ci(function(n,t,r){return n+(r?" ":"")+t.toLowerCase()}),wa=ai("toLowerCase");var ma=ci(function(n,t,r){return n+(r?"_":"")+t.toLowerCase()});var xa=ci(function(n,t,r){return n+(r?" ":"")+Aa(t)});var ja=ci(function(n,t,r){return n+(r?" ":"")+t.toUpperCase()}),Aa=ai("toUpperCase");function ka(n,t,e){return n=Kf(n),(t=e?r:t)===r?function(n){return mt.test(n)}(n)?function(n){return n.match(bt)||[]}(n):function(n){return n.match($n)||[]}(n):n.match(t)||[]}var Oa=ju(function(n,t){try{return Pt(n,r,t)}catch(e){return Af(e)?e:new Xn(e)}}),Ia=Ei(function(n,t){return Zt(t,function(t){t=co(t),Le(n,t,rf(n[t],n))}),n});function Ra(n){return function(){return n}}var Ea=hi(),za=hi(!0);function Sa(n){return n}function La(n){return au("function"==typeof n?n:Be(n,c))}var Wa=ju(function(n,t){return function(r){return eu(r,n,t)}}),Ca=ju(function(n,t){return function(r){return eu(n,r,t)}});function Ba(n,t,r){var e=ia(t),u=He(t,e);null!=r||Rf(t)&&(u.length||!e.length)||(r=t,t=n,n=this,u=He(t,ia(t)));var i=!(Rf(r)&&"chain"in r&&!r.chain),o=kf(n);return Zt(u,function(r){var e=t[r];n[r]=e,o&&(n.prototype[r]=function(){var t=this.__chain__;if(i||t){var r=n(this.__wrapped__);return(r.__actions__=ri(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,Qt([this.value()],arguments))})}),n}function Ua(){}var Ta=gi(Yt),$a=gi(Vt),Da=gi(tr);function Ma(n){return Vi(n)?cr(co(n)):function(n){return function(t){return Je(t,n)}}(n)}var Fa=di(),Na=di(!0);function Pa(){return[]}function qa(){return!1}var Za=_i(function(n,t){return n+t},0),Ka=mi("ceil"),Va=_i(function(n,t){return n/t},1),Ga=mi("floor");var Ha,Ja=_i(function(n,t){return n*t},1),Ya=mi("round"),Qa=_i(function(n,t){return n-t},0);return pe.after=function(n,t){if("function"!=typeof t)throw new it(i);return n=Nf(n),function(){if(--n<1)return t.apply(this,arguments)}},pe.ary=nf,pe.assign=Vf,pe.assignIn=Gf,pe.assignInWith=Hf,pe.assignWith=Jf,pe.at=Yf,pe.before=tf,pe.bind=rf,pe.bindAll=Ia,pe.bindKey=ef,pe.castArray=function(){if(!arguments.length)return[];var n=arguments[0];return df(n)?n:[n]},pe.chain=Do,pe.chunk=function(n,t,e){t=(e?Ki(n,t,e):t===r)?1:Zr(Nf(t),0);var u=null==n?0:n.length;if(!u||t<1)return[];for(var i=0,o=0,f=Yn($r(u/t));ii?0:i+e),(u=u===r||u>i?i:Nf(u))<0&&(u+=i),u=e>u?0:Pf(u);e>>0)?(n=Kf(n))&&("string"==typeof t||null!=t&&!Wf(t))&&!(t=Uu(t))&&xr(n)?Gu(Er(n),0,e):n.split(t,e):[]},pe.spread=function(n,t){if("function"!=typeof n)throw new it(i);return t=null==t?0:Zr(Nf(t),0),ju(function(r){var e=r[t],u=Gu(r,0,t);return e&&Qt(u,e),Pt(n,this,u)})},pe.tail=function(n){var t=null==n?0:n.length;return t?zu(n,1,t):[]},pe.take=function(n,t,e){return n&&n.length?zu(n,0,(t=e||t===r?1:Nf(t))<0?0:t):[]},pe.takeRight=function(n,t,e){var u=null==n?0:n.length;return u?zu(n,(t=u-(t=e||t===r?1:Nf(t)))<0?0:t,u):[]},pe.takeRightWhile=function(n,t){return n&&n.length?Mu(n,Bi(t,3),!1,!0):[]},pe.takeWhile=function(n,t){return n&&n.length?Mu(n,Bi(t,3)):[]},pe.tap=function(n,t){return t(n),n},pe.throttle=function(n,t,r){var e=!0,u=!0;if("function"!=typeof n)throw new it(i);return Rf(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),uf(n,t,{leading:e,maxWait:t,trailing:u})},pe.thru=Mo,pe.toArray=Mf,pe.toPairs=ha,pe.toPairsIn=pa,pe.toPath=function(n){return df(n)?Yt(n,co):Uf(n)?[n]:ri(ao(Kf(n)))},pe.toPlainObject=Zf,pe.transform=function(n,t,r){var e=df(n),u=e||xf(n)||Tf(n);if(t=Bi(t,4),null==r){var i=n&&n.constructor;r=u?e?new i:[]:Rf(n)&&kf(i)?ve(Wt(n)):{}}return(u?Zt:Ve)(n,function(n,e,u){return t(r,n,e,u)}),r},pe.unary=function(n){return nf(n,1)},pe.union=Ro,pe.unionBy=Eo,pe.unionWith=zo,pe.uniq=function(n){return n&&n.length?Tu(n):[]},pe.uniqBy=function(n,t){return n&&n.length?Tu(n,Bi(t,2)):[]},pe.uniqWith=function(n,t){return t="function"==typeof t?t:r,n&&n.length?Tu(n,r,t):[]},pe.unset=function(n,t){return null==n||$u(n,t)},pe.unzip=So,pe.unzipWith=Lo,pe.update=function(n,t,r){return null==n?n:Du(n,t,Zu(r))},pe.updateWith=function(n,t,e,u){return u="function"==typeof u?u:r,null==n?n:Du(n,t,Zu(e),u)},pe.values=va,pe.valuesIn=function(n){return null==n?[]:_r(n,oa(n))},pe.without=Wo,pe.words=ka,pe.wrap=function(n,t){return sf(Zu(t),n)},pe.xor=Co,pe.xorBy=Bo,pe.xorWith=Uo,pe.zip=To,pe.zipObject=function(n,t){return Pu(n||[],t||[],Re)},pe.zipObjectDeep=function(n,t){return Pu(n||[],t||[],Ou)},pe.zipWith=$o,pe.entries=ha,pe.entriesIn=pa,pe.extend=Gf,pe.extendWith=Hf,Ba(pe,pe),pe.add=Za,pe.attempt=Oa,pe.camelCase=_a,pe.capitalize=ga,pe.ceil=Ka,pe.clamp=function(n,t,e){return e===r&&(e=t,t=r),e!==r&&(e=(e=qf(e))==e?e:0),t!==r&&(t=(t=qf(t))==t?t:0),Ce(qf(n),t,e)},pe.clone=function(n){return Be(n,s)},pe.cloneDeep=function(n){return Be(n,c|s)},pe.cloneDeepWith=function(n,t){return Be(n,c|s,t="function"==typeof t?t:r)},pe.cloneWith=function(n,t){return Be(n,s,t="function"==typeof t?t:r)},pe.conformsTo=function(n,t){return null==t||Ue(n,t,ia(t))},pe.deburr=ya,pe.defaultTo=function(n,t){return null==n||n!=n?t:n},pe.divide=Va,pe.endsWith=function(n,t,e){n=Kf(n),t=Uu(t);var u=n.length,i=e=e===r?u:Ce(Nf(e),0,u);return(e-=t.length)>=0&&n.slice(e,i)==t},pe.eq=vf,pe.escape=function(n){return(n=Kf(n))&&jn.test(n)?n.replace(mn,wr):n},pe.escapeRegExp=function(n){return(n=Kf(n))&&Sn.test(n)?n.replace(zn,"\\$&"):n},pe.every=function(n,t,e){var u=df(n)?Vt:Fe;return e&&Ki(n,t,e)&&(t=r),u(n,Bi(t,3))},pe.find=Po,pe.findIndex=_o,pe.findKey=function(n,t){return er(n,Bi(t,3),Ve)},pe.findLast=qo,pe.findLastIndex=go,pe.findLastKey=function(n,t){return er(n,Bi(t,3),Ge)},pe.floor=Ga,pe.forEach=Zo,pe.forEachRight=Ko,pe.forIn=function(n,t){return null==n?n:Ze(n,Bi(t,3),oa)},pe.forInRight=function(n,t){return null==n?n:Ke(n,Bi(t,3),oa)},pe.forOwn=function(n,t){return n&&Ve(n,Bi(t,3))},pe.forOwnRight=function(n,t){return n&&Ge(n,Bi(t,3))},pe.get=na,pe.gt=_f,pe.gte=gf,pe.has=function(n,t){return null!=n&&Ni(n,t,nu)},pe.hasIn=ta,pe.head=bo,pe.identity=Sa,pe.includes=function(n,t,r,e){n=wf(n)?n:va(n),r=r&&!e?Nf(r):0;var u=n.length;return r<0&&(r=Zr(u+r,0)),Bf(n)?r<=u&&n.indexOf(t,r)>-1:!!u&&ir(n,t,r)>-1},pe.indexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=null==r?0:Nf(r);return u<0&&(u=Zr(e+u,0)),ir(n,t,u)},pe.inRange=function(n,t,e){return t=Ff(t),e===r?(e=t,t=0):e=Ff(e),function(n,t,r){return n>=Kr(t,r)&&n=-S&&n<=S},pe.isSet=Cf,pe.isString=Bf,pe.isSymbol=Uf,pe.isTypedArray=Tf,pe.isUndefined=function(n){return n===r},pe.isWeakMap=function(n){return Ef(n)&&Fi(n)==en},pe.isWeakSet=function(n){return Ef(n)&&Qe(n)==un},pe.join=function(n,t){return null==n?"":Pr.call(n,t)},pe.kebabCase=da,pe.last=jo,pe.lastIndexOf=function(n,t,e){var u=null==n?0:n.length;if(!u)return-1;var i=u;return e!==r&&(i=(i=Nf(e))<0?Zr(u+i,0):Kr(i,u-1)),t==t?function(n,t,r){for(var e=r+1;e--;)if(n[e]===t)return e;return e}(n,t,i):ur(n,fr,i,!0)},pe.lowerCase=ba,pe.lowerFirst=wa,pe.lt=$f,pe.lte=Df,pe.max=function(n){return n&&n.length?Ne(n,Sa,Xe):r},pe.maxBy=function(n,t){return n&&n.length?Ne(n,Bi(t,2),Xe):r},pe.mean=function(n){return ar(n,Sa)},pe.meanBy=function(n,t){return ar(n,Bi(t,2))},pe.min=function(n){return n&&n.length?Ne(n,Sa,su):r},pe.minBy=function(n,t){return n&&n.length?Ne(n,Bi(t,2),su):r},pe.stubArray=Pa,pe.stubFalse=qa,pe.stubObject=function(){return{}},pe.stubString=function(){return""},pe.stubTrue=function(){return!0},pe.multiply=Ja,pe.nth=function(n,t){return n&&n.length?gu(n,Nf(t)):r},pe.noConflict=function(){return St._===this&&(St._=dt),this},pe.noop=Ua,pe.now=Xo,pe.pad=function(n,t,r){n=Kf(n);var e=(t=Nf(t))?Rr(n):0;if(!t||e>=t)return n;var u=(t-e)/2;return yi(Dr(u),r)+n+yi($r(u),r)},pe.padEnd=function(n,t,r){n=Kf(n);var e=(t=Nf(t))?Rr(n):0;return t&&et){var u=n;n=t,t=u}if(e||n%1||t%1){var i=Hr();return Kr(n+i*(t-n+It("1e-"+((i+"").length-1))),t)}return mu(n,t)},pe.reduce=function(n,t,r){var e=df(n)?Xt:sr,u=arguments.length<3;return e(n,Bi(t,4),r,u,De)},pe.reduceRight=function(n,t,r){var e=df(n)?nr:sr,u=arguments.length<3;return e(n,Bi(t,4),r,u,Me)},pe.repeat=function(n,t,e){return t=(e?Ki(n,t,e):t===r)?1:Nf(t),xu(Kf(n),t)},pe.replace=function(){var n=arguments,t=Kf(n[0]);return n.length<3?t:t.replace(n[1],n[2])},pe.result=function(n,t,e){var u=-1,i=(t=Ku(t,n)).length;for(i||(i=1,n=r);++uS)return[];var r=C,e=Kr(n,C);t=Bi(t),n-=C;for(var u=pr(e,t);++r=o)return n;var a=e-Rr(u);if(a<1)return u;var c=f?Gu(f,0,a).join(""):n.slice(0,a);if(i===r)return c+u;if(f&&(a+=c.length-a),Wf(i)){if(n.slice(a).search(i)){var l,s=c;for(i.global||(i=et(i.source,Kf(Fn.exec(i))+"g")),i.lastIndex=0;l=i.exec(s);)var h=l.index;c=c.slice(0,h===r?a:h)}}else if(n.indexOf(Uu(i),a)!=a){var p=c.lastIndexOf(i);p>-1&&(c=c.slice(0,p))}return c+u},pe.unescape=function(n){return(n=Kf(n))&&xn.test(n)?n.replace(wn,zr):n},pe.uniqueId=function(n){var t=++ht;return Kf(n)+t},pe.upperCase=ja,pe.upperFirst=Aa,pe.each=Zo,pe.eachRight=Ko,pe.first=bo,Ba(pe,(Ha={},Ve(pe,function(n,t){st.call(pe.prototype,t)||(Ha[t]=n)}),Ha),{chain:!1}),pe.VERSION="4.17.15",Zt(["bind","bindKey","curry","curryRight","partial","partialRight"],function(n){pe[n].placeholder=pe}),Zt(["drop","take"],function(n,t){ye.prototype[n]=function(e){e=e===r?1:Zr(Nf(e),0);var u=this.__filtered__&&!t?new ye(this):this.clone();return u.__filtered__?u.__takeCount__=Kr(e,u.__takeCount__):u.__views__.push({size:Kr(e,C),type:n+(u.__dir__<0?"Right":"")}),u},ye.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}}),Zt(["filter","map","takeWhile"],function(n,t){var r=t+1,e=r==R||3==r;ye.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:Bi(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),Zt(["head","last"],function(n,t){var r="take"+(t?"Right":"");ye.prototype[n]=function(){return this[r](1).value()[0]}}),Zt(["initial","tail"],function(n,t){var r="drop"+(t?"":"Right");ye.prototype[n]=function(){return this.__filtered__?new ye(this):this[r](1)}}),ye.prototype.compact=function(){return this.filter(Sa)},ye.prototype.find=function(n){return this.filter(n).head()},ye.prototype.findLast=function(n){return this.reverse().find(n)},ye.prototype.invokeMap=ju(function(n,t){return"function"==typeof n?new ye(this):this.map(function(r){return eu(r,n,t)})}),ye.prototype.reject=function(n){return this.filter(cf(Bi(n)))},ye.prototype.slice=function(n,t){n=Nf(n);var e=this;return e.__filtered__&&(n>0||t<0)?new ye(e):(n<0?e=e.takeRight(-n):n&&(e=e.drop(n)),t!==r&&(e=(t=Nf(t))<0?e.dropRight(-t):e.take(t-n)),e)},ye.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},ye.prototype.toArray=function(){return this.take(C)},Ve(ye.prototype,function(n,t){var e=/^(?:filter|find|map|reject)|While$/.test(t),u=/^(?:head|last)$/.test(t),i=pe[u?"take"+("last"==t?"Right":""):t],o=u||/^find/.test(t);i&&(pe.prototype[t]=function(){var t=this.__wrapped__,f=u?[1]:arguments,a=t instanceof ye,c=f[0],l=a||df(t),s=function(n){var t=i.apply(pe,Qt([n],f));return u&&h?t[0]:t};l&&e&&"function"==typeof c&&1!=c.length&&(a=l=!1);var h=this.__chain__,p=!!this.__actions__.length,v=o&&!h,_=a&&!p;if(!o&&l){t=_?t:new ye(this);var g=n.apply(t,f);return g.__actions__.push({func:Mo,args:[s],thisArg:r}),new ge(g,h)}return v&&_?n.apply(this,f):(g=this.thru(s),v?u?g.value()[0]:g.value():g)})}),Zt(["pop","push","shift","sort","splice","unshift"],function(n){var t=ot[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);pe.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(df(u)?u:[],n)}return this[r](function(r){return t.apply(df(r)?r:[],n)})}}),Ve(ye.prototype,function(n,t){var r=pe[t];if(r){var e=r.name+"";st.call(ue,e)||(ue[e]=[]),ue[e].push({name:t,func:r})}}),ue[pi(r,_).name]=[{name:"wrapper",func:r}],ye.prototype.clone=function(){var n=new ye(this.__wrapped__);return n.__actions__=ri(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=ri(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=ri(this.__views__),n},ye.prototype.reverse=function(){if(this.__filtered__){var n=new ye(this);n.__dir__=-1,n.__filtered__=!0}else(n=this.clone()).__dir__*=-1;return n},ye.prototype.value=function(){var n=this.__wrapped__.value(),t=this.__dir__,r=df(n),e=t<0,u=r?n.length:0,i=function(n,t,r){for(var e=-1,u=r.length;++e=this.__values__.length;return{done:n,value:n?r:this.__values__[this.__index__++]}},pe.prototype.plant=function(n){for(var t,e=this;e instanceof _e;){var u=so(e);u.__index__=0,u.__values__=r,t?i.__wrapped__=u:t=u;var i=u;e=e.__wrapped__}return i.__wrapped__=n,t},pe.prototype.reverse=function(){var n=this.__wrapped__;if(n instanceof ye){var t=n;return this.__actions__.length&&(t=new ye(this)),(t=t.reverse()).__actions__.push({func:Mo,args:[Io],thisArg:r}),new ge(t,this.__chain__)}return this.thru(Io)},pe.prototype.toJSON=pe.prototype.valueOf=pe.prototype.value=function(){return Fu(this.__wrapped__,this.__actions__)},pe.prototype.first=pe.prototype.head,Lr&&(pe.prototype[Lr]=function(){return this}),pe}();"function"==typeof n&&"object"==typeof n.amd&&n.amd?(St._=Sr,n(function(){return Sr})):Wt?((Wt.exports=Sr)._=Sr,Lt._=Sr):St._=Sr}).call(this); },{"buffer":"aMB2"}],"WLd9":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getNodePath=exports.mergeUniqueItems=exports.treeNodeUtils=exports.treeConfig=exports.calculatePoints=exports.formattedAnswersForAPI=void 0;var e=n(require("tree-node-utils")),t=require("immutable"),r=require("lodash");function n(e){return e&&e.__esModule?e:{default:e}}function o(e){return s(e)||a(e)||i()}function i(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function a(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}function s(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t2&&void 0!==arguments[2]&&arguments[2],o=(0,t.fromJS)(e),i=o.findIndex(function(e){return e.get("ID")===r}),a=-1;return-1===i?o.forEach(function(e,t){var n=e.get("tree");if(n.size){var o=n.findIndex(function(e){return e.get("ID")===r});-1!==o?a=[t,"tree",o]:e.get("tree").forEach(function(e,n){var o=e.get("tree");if(o&&o.size){var i=o.findIndex(function(e){return e.get("ID")===r});-1!==i&&(a=[t,"tree",n,"tree",i])}})}}):a=[i],-1!==a&&n&&a.push("tree"),a};exports.getNodePath=p; },{"tree-node-utils":"doeB","immutable":"UODg","lodash":"4HJa"}],"mevM":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=Object.assign||function(t){for(var e=1;e=o;return void 0===u?{past:[],present:r,future:[]}:{past:[].concat(e(i.slice(s?1:0)),[u]),present:r,future:[]}}function c(t){n("undo",{history:t});var r=t.past,o=t.present,i=t.future;return r.length<=0?t:{past:r.slice(0,r.length-1),present:r[r.length-1],future:[o].concat(e(i))}}function f(t){n("redo",{history:t});var r=t.past,o=t.present,i=t.future;return i.length<=0?t:{future:i.slice(1,i.length),present:i[0],past:[].concat(e(r),[o])}}function l(t,e){if(0===e)return f(t);var r=t.past,n=t.present,o=t.future;return{future:o.slice(e+1),present:o[e],past:r.concat([n]).concat(o.slice(0,e))}}function d(t,e){if(e===t.past.length-1)return c(t);var r=t.past,n=t.present,o=t.future;return{future:r.slice(e+1).concat([n]).concat(o),present:r[e],past:r.slice(0,e)}}function y(e){return t({},e,{history:e})}function T(e,r){return y(t({},e,r))}function v(t){return{past:[],present:t,future:[]}}function g(t){var e=arguments.length<=1||void 0===arguments[1]?[]:arguments[1];return Array.isArray(t)?t:"string"==typeof t?[t]:e}function h(e){var s=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];r=s.debug;var h={initialState:s.initialState,initTypes:g(s.initTypes,["@@redux/INIT","@@INIT"]),limit:s.limit,filter:s.filter||function(){return!0},undoType:s.undoType||u.UNDO,redoType:s.redoType||u.REDO,jumpToPastType:s.jumpToPastType||u.JUMP_TO_PAST,jumpToFutureType:s.jumpToFutureType||u.JUMP_TO_FUTURE};return h.history=s.initialHistory||v(h.initialState),0===h.initTypes.length&&console.warn("redux-undo: supply at least one action type in initTypes to ensure initial state"),function(r,u){o(u,r);var s=void 0;switch(u.type){case h.undoType:return n("after undo",s=c(r)),i(),s?T(r,s):r;case h.redoType:return n("after redo",s=f(r)),i(),s?T(r,s):r;case h.jumpToPastType:return n("after jumpToPast",s=d(r,u.index)),i(),s?T(r,s):r;case h.jumpToFutureType:return n("after jumpToFuture",s=l(r,u.index)),i(),s?T(r,s):r;default:if(s=e(r&&r.present,u),h.initTypes.some(function(t){return t===u.type}))return n("reset history due to init action"),i(),y(t({},r,v(s)));if(h.filter&&"function"==typeof h.filter&&!h.filter(u,s,r&&r.present))return n("filter prevented action, not storing it"),i(),y(t({},r,{present:s}));var g=p(r&&void 0!==r.present?r:h.history,s,h.limit);return n("after insert",{history:g,free:h.limit-a(g)}),i(),y(t({},r,g))}}}function x(){return function(t,e,r){return e!==r}}function O(t){var e=g(t);return function(t){return e.indexOf(t.type)>=0}}function P(t){return console.error("Deprecation Warning: Please change `ifAction` to `includeAction`"),O(t)}function U(){var t=g(arguments.length<=0||void 0===arguments[0]?[]:arguments[0]);return function(e){return t.indexOf(e.type)<0}} },{}],"vBUq":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.UPDATE_QUESTION_ANSWERS=exports.UPDATE_QUESTION_TYPE=exports.REMOVE_EXISTING_ENTITY=exports.MOVE_ENTITY=exports.REMOVE_SECTION_HEADING_ENTITY=exports.REMOVE_ENTITY=exports.SORT_FINAL_QUIZZES_OUTLINE=exports.ADD_FINAL_QUIZ_ENTITY=exports.TOGGLE_EXPAND_ENTITY=exports.TOGGLE_EXPAND_ALL=exports.UPDATE_NODE_TITLE=exports.UPDATE_WORKSPACE_NODE_TITLE=exports.ADD_QUESTION=exports.ADD_QUIZ=exports.ADD_TOPIC=exports.ADD_LESSON=exports.REMOVE_ANSWER_ENTITY=exports.ADD_ANSWER_ENTITY=exports.ADD_QUESTION_ENTITY=exports.UPDATE_QUESTIONS=exports.ADD_QUIZ_ENTITY=exports.SET_IS_DROP_DISABLED_LESSON=exports.SET_DRAGGABLE_ENTITY=exports.ADD_TOPIC_ENTITY=exports.SET_ACTIVE_LESSON=exports.UPDATE_SECTION_HEADINGS=exports.UPDATE_LESSONS=exports.ADD_SECTION_HEADING_ENTITY=exports.ADD_LESSON_ENTITY=exports.UPDATE_COURSE_OUTLINE=exports.INIT_DATA=void 0;var E="INIT_DATA";exports.INIT_DATA=E;var T="UPDATE_COURSE_OUTLINE";exports.UPDATE_COURSE_OUTLINE=T;var _="ADD_LESSON_ENTITY";exports.ADD_LESSON_ENTITY=_;var I="ADD_SECTION_HEADING_ENTITY";exports.ADD_SECTION_HEADING_ENTITY=I;var N="UPDATE_LESSONS";exports.UPDATE_LESSONS=N;var D="UPDATE_SECTION_HEADINGS";exports.UPDATE_SECTION_HEADINGS=D;var A="SET_ACTIVE_LESSON";exports.SET_ACTIVE_LESSON=A;var S="ADD_TOPIC_ENTITY";exports.ADD_TOPIC_ENTITY=S;var r="SET_DRAGGABLE_ENTITY";exports.SET_DRAGGABLE_ENTITY=r;var O="SET_IS_DROP_DISABLED_LESSON";exports.SET_IS_DROP_DISABLED_LESSON=O;var e="ADD_QUIZ_ENTITY";exports.ADD_QUIZ_ENTITY=e;var t="UPDATE_QUESTIONS";exports.UPDATE_QUESTIONS=t;var o="ADD_QUESTION_ENTITY";exports.ADD_QUESTION_ENTITY=o;var s="ADD_ANSWER_ENTITY";exports.ADD_ANSWER_ENTITY=s;var p="REMOVE_ANSWER_ENTITY";exports.REMOVE_ANSWER_ENTITY=p;var x="ADD_LESSON";exports.ADD_LESSON=x;var U="ADD_TOPIC";exports.ADD_TOPIC=U;var L="ADD_QUIZ";exports.ADD_QUIZ=L;var P="ADD_QUESTION";exports.ADD_QUESTION=P;var Y="UPDATE_WORKSPACE_NODE_TITLE";exports.UPDATE_WORKSPACE_NODE_TITLE=Y;var R="UPDATE_NODE_TITLE";exports.UPDATE_NODE_TITLE=R;var v="TOGGLE_EXPAND_ALL";exports.TOGGLE_EXPAND_ALL=v;var a="TOGGLE_EXPAND_ENTITY";exports.TOGGLE_EXPAND_ENTITY=a;var G="ADD_FINAL_QUIZ_ENTITY";exports.ADD_FINAL_QUIZ_ENTITY=G;var Q="SORT_FINAL_QUIZZES_OUTLINE";exports.SORT_FINAL_QUIZZES_OUTLINE=Q;var C="REMOVE_ENTITY";exports.REMOVE_ENTITY=C;var V="REMOVE_SECTION_HEADING_ENTITY";exports.REMOVE_SECTION_HEADING_ENTITY=V;var M="MOVE_ENTITY";exports.MOVE_ENTITY=M;var Z="REMOVE_EXISTING_ENTITY";exports.REMOVE_EXISTING_ENTITY=Z;var W="UPDATE_QUESTION_TYPE";exports.UPDATE_QUESTION_TYPE=W;var H="UPDATE_QUESTION_ANSWERS";exports.UPDATE_QUESTION_ANSWERS=H; },{}],"da9y":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.workspace=void 0;var e=require("../../util"),t=require("immutable"),a=r(require("redux-undo")),n=require("../../constants"),s=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:p,r=arguments.length>1?arguments[1]:void 0,i=(0,t.fromJS)(a.lessons),l=(0,t.fromJS)(a.quizzes),d=(0,t.fromJS)(a.questions),D=a.sections?(0,t.fromJS)(a.sections):(0,t.fromJS)([]);switch(r.type){case n.UPDATE_LESSONS:return s({},a,{lessons:r.payload});case n.UPDATE_SECTION_HEADINGS:return s({},a,{sections:r.payload});case n.ADD_LESSON_ENTITY:var y=r.payload.index;(void 0===y||isNaN(y))&&(y=a.lessons.length);var _=i.insert(y,{ID:r.payload.ID,post_title:r.payload.post_title,url:r.payload.url,edit_link:r.payload.edit_link,tree:[],expanded:!1,type:"sfwd-lessons"}).toJS(),c=r.payload.ID;return s({},a,{lessons:_,activeLesson:c,refresh:"lesson"});case n.ADD_SECTION_HEADING_ENTITY:var I=r.payload.index,f=0;(void 0===I||isNaN(I))&&(I=a.lessons.length),f=a.activeLesson?i.findIndex(function(e){return e.get("ID")===a.activeLesson}):I;var E=i.insert(parseInt(f+1,10),{order:r.payload.order,ID:r.payload.ID,post_title:r.payload.post_title,url:r.payload.url,edit_link:r.payload.edit_link,tree:[],expanded:!1,type:"section-heading"}).toJS(),v=D.insert(I,{order:r.payload.order,ID:r.payload.ID,post_title:r.payload.post_title,url:r.payload.url,edit_link:r.payload.edit_link,tree:[],expanded:!1,type:"section-heading"}).toJS();return s({},a,{lessons:E,sections:v,refresh:"lesson"});case n.SET_ACTIVE_LESSON:return s({},a,{activeLesson:parseInt(r.payload.activeLesson)});case n.ADD_TOPIC_ENTITY:var q=0,T=null,L=a.activeLesson;if(r.parent){if(-1!==(T=i.findIndex(function(e){return e.get("ID")===r.parent}))){var h=i.get(T).get("tree");if(q=r.destinationIndex,L=r.parent,00&&void 0!==arguments[0]?arguments[0]:r,o=arguments.length>1?arguments[1]:void 0;switch(o.type){case e.INIT_DATA:return s({},n,t({},o.payload.field,o.payload.data));case e.ADD_LESSON:var i=Object.values(n.lessons);return i.unshift(o.payload),s({},n,{lessons:i});case e.ADD_TOPIC:var u=Object.values(n.topics);return u.unshift(o.payload),s({},n,{topics:u});case e.ADD_QUIZ:var l=Object.values(n.quizzes);return l.unshift(o.payload),s({},n,{quizzes:l});case e.ADD_QUESTION:case e.ADD_QUESTION_ENTITY:var D=Object.values(n.questions);return D.unshift(o.payload),s({},n,{questions:D});case e.UPDATE_NODE_TITLE:if(o.payload.ID&&o.payload.post_title){var p=Object.values(n[{lesson:"lessons","sfwd-lessons":"lessons",topic:"topics","sfwd-topic":"topics",quiz:"quizzes","sfwd-quiz":"quizzes",question:"questions","sfwd-question":"questions"}[o.payload.type]]),c=a.treeNodeUtils.getNodeByKey(p,o.payload.ID);if(c&&(c.post_title=o.payload.post_title),"lesson"===o.payload.type)return s({},n,{lessons:p});if("topic"===o.payload.type)return s({},n,{topics:p});if("quiz"===o.payload.type)return s({},n,{quizzes:p});if("question"===o.payload.type)return s({},n,{questions:p})}return n;default:return n}};exports.data=n; },{"../../util":"WLd9","../../constants":"vBUq"}],"NHVh":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("redux"),r=require("./workspace"),a=require("./data"),t=(0,e.combineReducers)({data:a.data,workspace:r.workspace});exports.default=t; },{"redux":"9WZ3","./workspace":"da9y","./data":"B24d"}],"jlSc":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.store=void 0;var e=require("redux"),r=t(require("./reducers"));function t(e){return e&&e.__esModule?e:{default:e}}var u=(0,e.createStore)(r.default);exports.store=u; },{"redux":"9WZ3","./reducers":"NHVh"}],"XFIe":[function(require,module,exports) { var e=module.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e); },{}],"dqAF":[function(require,module,exports) { var e=module.exports={version:"2.6.9"};"number"==typeof __e&&(__e=e); },{}],"5nCe":[function(require,module,exports) { module.exports=function(o){if("function"!=typeof o)throw TypeError(o+" is not a function!");return o}; },{}],"jFcs":[function(require,module,exports) { var r=require("./_a-function");module.exports=function(n,t,u){if(r(n),void 0===t)return n;switch(u){case 1:return function(r){return n.call(t,r)};case 2:return function(r,u){return n.call(t,r,u)};case 3:return function(r,u,e){return n.call(t,r,u,e)}}return function(){return n.apply(t,arguments)}}; },{"./_a-function":"5nCe"}],"jj57":[function(require,module,exports) { module.exports=function(o){return"object"==typeof o?null!==o:"function"==typeof o}; },{}],"w4mz":[function(require,module,exports) { var r=require("./_is-object");module.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}; },{"./_is-object":"jj57"}],"h+XT":[function(require,module,exports) { module.exports=function(r){try{return!!r()}catch(t){return!0}}; },{}],"hd3X":[function(require,module,exports) { module.exports=!require("./_fails")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}); },{"./_fails":"h+XT"}],"ItUS":[function(require,module,exports) { var e=require("./_is-object"),r=require("./_global").document,t=e(r)&&e(r.createElement);module.exports=function(e){return t?r.createElement(e):{}}; },{"./_is-object":"jj57","./_global":"XFIe"}],"H2dS":[function(require,module,exports) { module.exports=!require("./_descriptors")&&!require("./_fails")(function(){return 7!=Object.defineProperty(require("./_dom-create")("div"),"a",{get:function(){return 7}}).a}); },{"./_descriptors":"hd3X","./_fails":"h+XT","./_dom-create":"ItUS"}],"eM+t":[function(require,module,exports) { var t=require("./_is-object");module.exports=function(r,e){if(!t(r))return r;var o,n;if(e&&"function"==typeof(o=r.toString)&&!t(n=o.call(r)))return n;if("function"==typeof(o=r.valueOf)&&!t(n=o.call(r)))return n;if(!e&&"function"==typeof(o=r.toString)&&!t(n=o.call(r)))return n;throw TypeError("Can't convert object to primitive value")}; },{"./_is-object":"jj57"}],"YAFO":[function(require,module,exports) { var e=require("./_an-object"),r=require("./_ie8-dom-define"),t=require("./_to-primitive"),i=Object.defineProperty;exports.f=require("./_descriptors")?Object.defineProperty:function(o,n,u){if(e(o),n=t(n,!0),e(u),r)try{return i(o,n,u)}catch(c){}if("get"in u||"set"in u)throw TypeError("Accessors not supported!");return"value"in u&&(o[n]=u.value),o}; },{"./_an-object":"w4mz","./_ie8-dom-define":"H2dS","./_to-primitive":"eM+t","./_descriptors":"hd3X"}],"Irt8":[function(require,module,exports) { module.exports=function(e,r){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:r}}; },{}],"/L7a":[function(require,module,exports) { var r=require("./_object-dp"),e=require("./_property-desc");module.exports=require("./_descriptors")?function(t,u,o){return r.f(t,u,e(1,o))}:function(r,e,t){return r[e]=t,r}; },{"./_object-dp":"YAFO","./_property-desc":"Irt8","./_descriptors":"hd3X"}],"SAz4":[function(require,module,exports) { var r={}.hasOwnProperty;module.exports=function(e,n){return r.call(e,n)}; },{}],"qJpY":[function(require,module,exports) { var e=require("./_global"),r=require("./_core"),n=require("./_ctx"),t=require("./_hide"),i=require("./_has"),u="prototype",o=function(c,a,f){var l,s,p,h=c&o.F,v=c&o.G,q=c&o.S,w=c&o.P,_=c&o.B,y=c&o.W,d=v?r:r[a]||(r[a]={}),F=d[u],g=v?e:q?e[a]:(e[a]||{})[u];for(l in v&&(f=a),f)(s=!h&&g&&void 0!==g[l])&&i(d,l)||(p=s?g[l]:f[l],d[l]=v&&"function"!=typeof g[l]?f[l]:_&&s?n(p,e):y&&g[l]==p?function(e){var r=function(r,n,t){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(r);case 2:return new e(r,n)}return new e(r,n,t)}return e.apply(this,arguments)};return r[u]=e[u],r}(p):w&&"function"==typeof p?n(Function.call,p):p,w&&((d.virtual||(d.virtual={}))[l]=p,c&o.R&&F&&!F[l]&&t(F,l,p)))};o.F=1,o.G=2,o.S=4,o.P=8,o.B=16,o.W=32,o.U=64,o.R=128,module.exports=o; },{"./_global":"XFIe","./_core":"dqAF","./_ctx":"jFcs","./_hide":"/L7a","./_has":"SAz4"}],"XKlW":[function(require,module,exports) { var r={}.toString;module.exports=function(t){return r.call(t).slice(8,-1)}; },{}],"Gl4i":[function(require,module,exports) { var e=require("./_cof");module.exports=Object("z").propertyIsEnumerable(0)?Object:function(r){return"String"==e(r)?r.split(""):Object(r)}; },{"./_cof":"XKlW"}],"5XCH":[function(require,module,exports) { module.exports=function(o){if(null==o)throw TypeError("Can't call method on "+o);return o}; },{}],"CDBu":[function(require,module,exports) { var e=require("./_iobject"),r=require("./_defined");module.exports=function(i){return e(r(i))}; },{"./_iobject":"Gl4i","./_defined":"5XCH"}],"uc15":[function(require,module,exports) { var o=Math.ceil,r=Math.floor;module.exports=function(t){return isNaN(t=+t)?0:(t>0?r:o)(t)}; },{}],"Rwlq":[function(require,module,exports) { var e=require("./_to-integer"),r=Math.min;module.exports=function(t){return t>0?r(e(t),9007199254740991):0}; },{"./_to-integer":"uc15"}],"m+aK":[function(require,module,exports) { var e=require("./_to-integer"),r=Math.max,t=Math.min;module.exports=function(n,a){return(n=e(n))<0?r(n+a,0):t(n,a)}; },{"./_to-integer":"uc15"}],"f1XA":[function(require,module,exports) { var e=require("./_to-iobject"),r=require("./_to-length"),t=require("./_to-absolute-index");module.exports=function(n){return function(i,o,u){var f,l=e(i),a=r(l.length),c=t(u,a);if(n&&o!=o){for(;a>c;)if((f=l[c++])!=f)return!0}else for(;a>c;c++)if((n||c in l)&&l[c]===o)return n||c||0;return!n&&-1}}; },{"./_to-iobject":"CDBu","./_to-length":"Rwlq","./_to-absolute-index":"m+aK"}],"bdh6":[function(require,module,exports) { module.exports=!0; },{}],"P3jJ":[function(require,module,exports) { var r=require("./_core"),e=require("./_global"),o="__core-js_shared__",i=e[o]||(e[o]={});(module.exports=function(r,e){return i[r]||(i[r]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:require("./_library")?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"}); },{"./_core":"dqAF","./_global":"XFIe","./_library":"bdh6"}],"3j2j":[function(require,module,exports) { var o=0,t=Math.random();module.exports=function(n){return"Symbol(".concat(void 0===n?"":n,")_",(++o+t).toString(36))}; },{}],"HCCw":[function(require,module,exports) { var e=require("./_shared")("keys"),r=require("./_uid");module.exports=function(u){return e[u]||(e[u]=r(u))}; },{"./_shared":"P3jJ","./_uid":"3j2j"}],"77jj":[function(require,module,exports) { var r=require("./_has"),e=require("./_to-iobject"),u=require("./_array-includes")(!1),i=require("./_shared-key")("IE_PROTO");module.exports=function(o,a){var n,s=e(o),t=0,h=[];for(n in s)n!=i&&r(s,n)&&h.push(n);for(;a.length>t;)r(s,n=a[t++])&&(~u(h,n)||h.push(n));return h}; },{"./_has":"SAz4","./_to-iobject":"CDBu","./_array-includes":"f1XA","./_shared-key":"HCCw"}],"Nz1j":[function(require,module,exports) { module.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(","); },{}],"aZdp":[function(require,module,exports) { var e=require("./_object-keys-internal"),r=require("./_enum-bug-keys");module.exports=Object.keys||function(u){return e(u,r)}; },{"./_object-keys-internal":"77jj","./_enum-bug-keys":"Nz1j"}],"0/jF":[function(require,module,exports) { exports.f=Object.getOwnPropertySymbols; },{}],"mGVa":[function(require,module,exports) { exports.f={}.propertyIsEnumerable; },{}],"CaiI":[function(require,module,exports) { var e=require("./_defined");module.exports=function(r){return Object(e(r))}; },{"./_defined":"5XCH"}],"vj1m":[function(require,module,exports) { "use strict";var e=require("./_descriptors"),r=require("./_object-keys"),t=require("./_object-gops"),o=require("./_object-pie"),i=require("./_to-object"),c=require("./_iobject"),n=Object.assign;module.exports=!n||require("./_fails")(function(){var e={},r={},t=Symbol(),o="abcdefghijklmnopqrst";return e[t]=7,o.split("").forEach(function(e){r[e]=e}),7!=n({},e)[t]||Object.keys(n({},r)).join("")!=o})?function(n,u){for(var s=i(n),a=arguments.length,f=1,b=t.f,j=o.f;a>f;)for(var l,q=c(arguments[f++]),_=b?r(q).concat(b(q)):r(q),p=_.length,g=0;p>g;)l=_[g++],e&&!j.call(q,l)||(s[l]=q[l]);return s}:n; },{"./_descriptors":"hd3X","./_object-keys":"aZdp","./_object-gops":"0/jF","./_object-pie":"mGVa","./_to-object":"CaiI","./_iobject":"Gl4i","./_fails":"h+XT"}],"aFH4":[function(require,module,exports) { var e=require("./_export");e(e.S+e.F,"Object",{assign:require("./_object-assign")}); },{"./_export":"qJpY","./_object-assign":"vj1m"}],"2z+I":[function(require,module,exports) { require("../../modules/es6.object.assign"),module.exports=require("../../modules/_core").Object.assign; },{"../../modules/es6.object.assign":"aFH4","../../modules/_core":"dqAF"}],"KMZK":[function(require,module,exports) { module.exports=require("core-js/library/fn/object/assign"); },{"core-js/library/fn/object/assign":"2z+I"}],"Kn8L":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=t;var e=r(require("../../core-js/object/assign"));function r(e){return e&&e.__esModule?e:{default:e}}function t(){return exports.default=t=e.default||function(e){for(var r=1;rs;)e.f(o,u=c[s++],i[u]);return o}; },{"./_object-dp":"YAFO","./_an-object":"w4mz","./_object-keys":"aZdp","./_descriptors":"hd3X"}],"441S":[function(require,module,exports) { var e=require("./_global").document;module.exports=e&&e.documentElement; },{"./_global":"XFIe"}],"1GJS":[function(require,module,exports) { var e=require("./_an-object"),r=require("./_object-dps"),t=require("./_enum-bug-keys"),n=require("./_shared-key")("IE_PROTO"),o=function(){},i="prototype",u=function(){var e,r=require("./_dom-create")("iframe"),n=t.length;for(r.style.display="none",require("./_html").appendChild(r),r.src="javascript:",(e=r.contentWindow.document).open(),e.write(" $course_navigation_widget_pager, 'pager_context' => 'course_navigation_widget' ) ); } if ( isset( $course_navigation_widget_pager ) ) { if ( $course_navigation_widget_pager['paged'] == $course_navigation_widget_pager['total_pages'] ) { $show_course_quizzes = true; } else { $show_course_quizzes = false; } } else { $show_course_quizzes = true; } if ( $show_course_quizzes == true ) { if ( ( isset( $widget_instance['show_course_quizzes'] ) ) && ( $widget_instance['show_course_quizzes'] == true ) ) { $course_quiz_list = learndash_get_course_quiz_list( $course_id, get_current_user_id() ); if ( !empty( $course_quiz_list ) ) { ?>

      json_encode( $data ) ); wp_localize_script( 'learndash_template_script_js', 'sfwd_data', $data ); } } LD_QuizPro::showModalWindow(); ?>
      |
      user_email, 96 ); ?>
      user_lastname) ) || ( ! empty( $current_user->user_firstname ) ) ): ?>
      : user_firstname . ' ' . $current_user->user_lastname; ?>
      : user_login; ?>
      : user_email; ?>
      ID .'" context="ld_profile"]'); ?>
      $user_id, 'course_id' => $course_id, 'array' => true ) ); $status = ( $progress['percentage'] == 100 ) ? 'completed' : 'notcompleted'; ?>
      ID ); ?>'>

      ID, $user_id ); if ( !empty( $certificateLink ) ) { ?>
      -

      $profile_pager, 'pager_context' => 'profile' ) ); ?> =1)var d=setInterval(function(){t-=1;var e=t.toString().toHHMMSS();r.html(e),t<=0&&(clearInterval(d),s.attr("disabled",!1),r.html(""),jQuery.cookie(o,0),s.trigger("learndash-time-finished")),jQuery.cookie(o,t)},1e3);else s.attr("disabled",!1),r.html(""),jQuery.cookie(o,0)}}})}),jQuery(document).ready(function(){function e(e){e.preventDefault();var a=jQuery(this).data("ref_id"),r=jQuery(this).data("quiz_id"),t=jQuery(this).data("user_id"),i=jQuery(this).data("statistic_nonce"),s={action:"wp_pro_quiz_admin_ajax",func:"statisticLoadUser",data:{quizId:r,userId:t,refId:a,statistic_nonce:i,avg:0}};jQuery("#wpProQuiz_user_overlay, #wpProQuiz_loadUserData").show();var l=jQuery("#wpProQuiz_user_content").hide();jQuery.ajax({type:"POST",url:sfwd_data.ajaxurl,dataType:"json",cache:!1,data:s,error:function(e,a,r){},success:function(e){void 0!==e.html&&(l.html(e.html),jQuery("a.wpProQuiz_update",l).remove(),jQuery("a#wpProQuiz_resetUserStatistic",l).remove(),jQuery("body").trigger("learndash-statistics-contentchanged"),jQuery("#wpProQuiz_user_content").show(),jQuery("#wpProQuiz_loadUserData").hide(),l.find(".statistic_data").click(function(){return jQuery(this).parents("tr").next().toggle("fast"),!1}))}}),jQuery("#wpProQuiz_overlay_close").click(function(){jQuery("#wpProQuiz_user_overlay").hide()})}"undefined"!=typeof sfwd_data&&void 0!==sfwd_data.json&&(sfwd_data=sfwd_data.json.replace(/"/g,'"'),sfwd_data=jQuery.parseJSON(sfwd_data)),jQuery("#ld_course_info").on("click","a.user_statistic",e),jQuery("#learndash_profile").on("click","a.user_statistic",e)});PKc\'onn:themes/legacy/templates/quiz_navigation_switcher_admin.phpnuW+Apost_type, array( 'sfwd-question' ) ) ) ) { $cb_quizzes = learndash_get_quizzes_for_question( $post->ID ); $count_primary = 0; $count_secondary = 0; if ( isset( $cb_quizzes['primary'] ) ) { $count_primary = count( $cb_quizzes['primary'] ); } if ( isset( $cb_quizzes['secondary'] ) ) { $count_secondary = count( $cb_quizzes['secondary'] ); } if ( ( $count_primary > 0 ) || ( $count_secondary > 0 ) ) { $default_quiz_id = learndash_get_quiz_id( $post->ID, true ); if ( ( 1 === $count_primary ) && ( empty( $count_secondary ) ) ) { if ( isset( $cb_quizzes['primary'][ $default_quiz_id ] ) ) { return; } } $use_select_opt_groups = false; if ( ( $count_primary > 0 ) && ( $count_secondary > 0 ) ) { $use_select_opt_groups = true; } $quiz_post_id = 0; if ( isset( $_GET['quiz_id'] ) ) { $quiz_post_id = intval( $_GET['quiz_id'] ); } ?>


      ID ); ?>

      post_type == 'sfwd-quiz') { echo sprintf( esc_html_x( 'Please go back and complete the previous %s.', 'placeholders: quiz URL', 'learndash' ), ''. learndash_get_custom_label_lower('quiz') .'' ); } else if ( $previous_item->post_type == 'sfwd-topic') { echo sprintf( esc_html_x( 'Please go back and complete the previous %s.', 'placeholders: topic URL, topic label', 'learndash' ), ''. learndash_get_custom_label_lower('topic') .'' ); } else { echo sprintf( esc_html_x( 'Please go back and complete the previous %s.', 'placeholders: lesson URL, lesson label', 'learndash' ), ''. learndash_get_custom_label_lower('lesson') .'' ); } } else { echo sprintf( esc_html_x( 'Please go back and complete the previous %s.', 'placeholder lesson', 'learndash' ), learndash_get_custom_label_lower('lesson') ); } ?>

        $topic ) : ?> completed ) ? 'topic-notcompleted' : 'topic-completed'; ?>
      • post_title; ?>
      ID ]['pager'] ) ) { echo SFWD_LMS::get_template( 'learndash_pager.php', array( 'pager_results' => $course_pager_results[ $post->ID ]['pager'], 'pager_context' => 'course_topics', 'href_query_arg' => 'ld-topic-page', 'href_val_prefix' => $post->ID . '-' ) ); } ?>
      ID ); ?>' class=''>

      ' href=''>post_title; ?>

      $post, 'user_id' => $user_id ) ); echo $ret; ?>
      array( 'id' => 'sfwd-mark-complete', ), 'button' => array( 'id' => 'learndash_mark_complete_button', ), 'timer' => array( 'id' => 'learndash_timer', ), ) ); ?>
      $course_id, 'course_step_post' => $post, 'user_id' => $user_id, 'course_settings' => isset( $course_settings ) ? $course_settings : array() ) ); echo $ret; PKc\HVVBthemes/legacy/templates/learndash_course_prerequisites_message.phpnuW+A
      '; $post_links = ''; if ( !empty( $prerequisite_posts_all ) ) { foreach( $prerequisite_posts_all as $pre_post_id => $pre_status ) { if ( $pre_status === false ) { if ( !empty( $post_links ) ) $post_links .= ', '; $post_links .= ''. get_the_title( $pre_post_id ) .''; } } } if ( !empty( $post_links ) ) echo $post_links; ?>
      PKc\ U*U*8themes/legacy/templates/learndash_quiz_front.min-rtl.cssnuW+A.wpProQuiz_content .wpProQuiz_answerCorrect{background:#6db46d;font-weight:700}.wpProQuiz_content .wpProQuiz_answerCorrect label{font-weight:700}.wpProQuiz_content .wpProQuiz_answerIncorrect{background:#ff9191;font-weight:700}.wpProQuiz_content .wpProQuiz_answerCorrectIncomplete{border:1px solid #6db46d!important;font-weight:700}.wpProQuiz_content{margin-top:10px;margin-bottom:10px}.wpProQuiz_content h2{margin-bottom:10px}.wpProQuiz_content .wpProQuiz_question_page{margin-bottom:10px}.wpProQuiz_content .wpProQuiz_question_page span{font-weight:700}.wpProQuiz_content .wpProQuiz_questionListItem:last-child,.wpProQuiz_content .wpProQuiz_questionListItemLastChildIE{padding:3px;margin-bottom:0;overflow:auto}.wpProQuiz_content .wpProQuiz_questionListItem{padding:3px;margin-bottom:5px;background-image:none;margin-right:0;list-style:none;border:0}.wpProQuiz_content .wpProQuiz_questionListItem>table{border-collapse:collapse;margin:0;padding:0;width:100%}.wpProQuiz_content .wpProQuiz_catOverview ol,.wpProQuiz_content .wpProQuiz_list,.wpProQuiz_content .wpProQuiz_listItem,.wpProQuiz_content .wpProQuiz_maxtrixSortCriterion,.wpProQuiz_content .wpProQuiz_questionList,.wpProQuiz_content .wpProQuiz_resultsList,.wpProQuiz_content .wpProQuiz_sortStringList{list-style:none;padding:0;margin:0}.wpProQuiz_content .wpProQuiz_list{border:0}.wpProQuiz_content .wpProQuiz_questionList{margin-bottom:10px;background:#f8faf5;border:1px solid #c3d1a3;padding:5px;list-style:none;overflow:auto}.wpProQuiz_content .wpProQuiz_listItem{position:relative;border:0;background-image:none}.wpProQuiz_content .wpProQuiz_response{background:#f8faf5;border:1px solid #c4c4c4;padding:5px;margin-bottom:15px;box-shadow:-1px 1px 2px #aaa}.wpProQuiz_content .wpProQuiz_response span{font-weight:700}.wpProQuiz_content .wpProQuiz_sort{width:25px}.wpProQuiz_content .wpProQuiz_results h3{margin-bottom:10px}.wpProQuiz_content .wpProQuiz_sort_correct_answer{font-weight:700;margin-left:5px;display:none}.wpProQuiz_content .wpProQuiz_sortable,.wpProQuiz_sortStringItem{padding:5px;border:1px solid #d3d3d3;box-shadow:-2px 2px 1px #eee;background-color:#f8faf5;cursor:move}.wpProQuiz_content .wpProQuiz_time_limit .time{font-weight:700;margin-top:5px;margin-bottom:5px}.wpProQuiz_content .wpProQuiz_time_limit .wpProQuiz_progress{height:10px;background-color:#00f;margin-bottom:5px}.wpProQuiz_content .wpProQuiz_time_limit_expired{font-weight:700;font-size:15px;text-align:center}.wpProQuiz_content .wpProQuiz_question_text{margin-bottom:10px}.wpProQuiz_content .wpProQuiz_tipp>div{padding:10px;background-color:#ddecff;border:1px dotted #363636;border-radius:10px;position:absolute;bottom:5px;right:5px;left:5px;box-shadow:-2px 2px 5px 0 #313131;z-index:99999}.wpProQuiz_content .wpProQuiz_matrixSortString,.wpProQuiz_content .wpProQuiz_matrixSortString>h3{margin-bottom:10px;margin-top:0}.wpProQuiz_content .wpProQuiz_matrixSortString{background:#f8faf5;border:1px solid #c3d1a3;padding:5px;overflow:auto}.wpProQuiz_content ul.wpProQuiz_sortStringList{padding:10px;height:100%;width:100%;min-height:20px}.wpProQuiz_content ul.wpProQuiz_sortStringList:empty{border:2px dashed #bbb!important}.wpProQuiz_content ul.wpProQuiz_sortStringList>li{float:right;margin-right:5px;margin-left:5px;margin-bottom:5px}.wpProQuiz_content .wpProQuiz_sortStringItem{margin:0;background-image:none;list-style:none}.wpProQuiz_content ul.wpProQuiz_maxtrixSortCriterion{padding:5px;margin:0;overflow:auto;height:100%}.wpProQuiz_content .wpProQuiz_placehold{background-color:#ffffc2;list-style:none;background-image:none;padding:0;height:100%;width:100%;min-width:50px;margin:0;border:2px solid red dashed!important}.wpProQuiz_content .wpProQuiz_maxtrixSortText{padding:5px}.wpProQuiz_content .wpProQuiz_mextrixTr>td{border:1px solid #d1d1d1;padding:5px;vertical-align:middle}.wpProQuiz_content .wpProQuiz_earned_points,.wpProQuiz_content .wpProQuiz_graded_points,.wpProQuiz_content .wpProQuiz_points{font-weight:700;text-align:center;margin-bottom:20px}.wpProQuiz_content .wpProQuiz_cloze input[type=text]{background:100% 0;border:0;border-bottom:1px solid;height:1em;margin:0;padding:0 4px 0 4px;color:#000;border-radius:0;box-shadow:0 0}.wpProQuiz_content .wpProQuiz_cloze input:focus{outline:0}.wpProQuiz_content .wpProQuiz_cloze input.wpProQuiz_answerCorrect{background-color:#b0dab0}.wpProQuiz_content .wpProQuiz_cloze input.wpProQuiz_answerIncorrect{background-color:#ffbaba}.wpProQuiz_content .wpProQuiz_questionListItem input,.wpProQuiz_questionListItem label{margin:0;font-weight:400;display:inline}.wpProQuiz_content .wpProQuiz_questionListItem input{float:none;display:inline}.wpProQuiz_content .wpProQuiz_resultsList{border:0}.wpProQuiz_content .wpProQuiz_resultsList>li{background-image:none;padding:0;margin:0;list-style-type:none;border:0}.wpProQuiz_content .wpProQuiz_lock,.wpProQuiz_loadQuiz,.wpProQuiz_prerequisite,.wpProQuiz_startOnlyRegisteredUser{border:1px dotted #ffc3c3;background-color:#fff7f7}.wpProQuiz_content .wpProQuiz_lock p,.wpProQuiz_loadQuiz p,.wpProQuiz_prerequisite p,.wpProQuiz_startOnlyRegisteredUser p{margin:20px;font-weight:700}.wpProQuiz_toplistTable{width:100%;border:1px solid #c3d1a3;border-collapse:collapse;margin:0}.wpProQuiz_toplistTable caption{caption-side:top;text-align:left;padding-bottom:2px;color:gray;margin:0;font-size:11px}.wpProQuiz_toplistTable thead tr{background:#9bbb59;padding:5px;color:#fff;font-weight:700}.wpProQuiz_toplistTable tbody td:FIRST-CHILD{font-weight:700}.wpProQuiz_toplistTable td,.wpProQuiz_toplistTable th{padding:5px;text-align:center;border:0}.wpProQuiz_toplistTable th{background:#9bbb59}.wpProQuiz_toplistTable th.col-pos{width:10%}.wpProQuiz_toplistTable th.col-name{text-align:right}.wpProQuiz_toplistTable th.col-date{width:25%}.wpProQuiz_toplistTable th.col-points{width:13%}.wpProQuiz_toplistTable th.col-results{width:15%}.wpProQuiz_toplistTable td{text-align:center;font-size:.75em}.wpProQuiz_toplistTable td.col-name{text-align:right}.wpProQuiz_toplistTable td.col-date{font-size:.8em}.wpProQuiz_toplistTrOdd{background-color:#ebf1de}.wpProQuiz_content .wpProQuiz_addToplist{margin-top:10px;background-color:#f5faea;padding:10px;border:1px solid #c3d1a3}.wpProQuiz_content .wpProQuiz_addToplistMessage{border:1px solid #a0a0a0;background-color:#fcffb3;margin-bottom:5px;border-radius:5px;padding:5px;font-weight:700;color:#696969}.wpProQuiz_content .wpProQuiz_resultTable{margin:15px auto;width:85%;border:1px solid #c4c4c4;padding:15px;font-weight:700}.wpProQuiz_content .wpProQuiz_resultTable table{width:100%;border-collapse:collapse;margin:0;border:0}.wpProQuiz_content .wpProQuiz_resultName{width:35%;min-width:100px;border-left:1px solid #868686;padding:10px 0;border-bottom:0;border-top:0;border-right:0}.wpProQuiz_content .wpProQuiz_resultTable .wpProQuiz_resultValue{padding:0;border:0}.wpProQuiz_content .wpProQuiz_resultTable .wpProQuiz_resultValue .progress-number{font-size:.8em}.wpProQuiz_content .wpProQuiz_resultTable .wpProQuiz_resultValue_AvgScore .progress-meter{background-color:#6ca54c}.wpProQuiz_content .wpProQuiz_resultTable .wpProQuiz_resultValue_YourScore .progress-meter{background-color:#f79646}.wpProQuiz_content .wpProQuiz_resultValue div{color:#000;text-align:left;box-shadow:-1px 1px 3px 1px #c4c4c4;display:inline-block;height:18px;zoom:1;margin-left:3px;vertical-align:middle}.wpProQuiz_content .wpProQuiz_addBox label{display:inline}.wpProQuiz_content .wpProQuiz_addBox input[type=text]{margin:0}.wpProQuiz_content .wpProQuiz_reviewQuestion{max-height:100px;overflow-y:scroll;border:1px solid #c3d1a3;background-color:#f8faf5;position:relative;-webkit-overflow-scrolling:touch}.wpProQuiz_content .wpProQuiz_box{border:1px solid #c3d1a3;background-color:#f8faf5}.wpProQuiz_content .wpProQuiz_checkPage h3{margin:10px 0 10px 0}.wpProQuiz_checkPage ol,.wpProQuiz_content .wpProQuiz_reviewQuestion ol{list-style-type:none;margin:0;padding:5px 5px 0 12px;zoom:1;position:relative;border:0}.wpProQuiz_checkPage li,.wpProQuiz_content .wpProQuiz_reviewQuestion li{float:right;margin:0 0 5px 5px;border:1px solid #cfcfcf;padding:5px 0 5px 0;width:30px;text-align:center;background-color:#fff;cursor:pointer;list-style-type:none;background-image:none}.wpProQuiz_content .wpProQuiz_reviewLegend{padding:5px;margin-bottom:8px}.wpProQuiz_content .wpProQuiz_reviewLegend ol{list-style-type:none;padding:0;margin:0;border:0}.wpProQuiz_content .wpProQuiz_reviewLegend li{float:right;padding-left:5px;list-style-type:none;margin:0;border:0;background-image:none}.wpProQuiz_content .wpProQuiz_reviewColor{height:15px;width:15px;display:inline-block;margin-left:2px}.wpProQuiz_content .wpProQuiz_reviewLegend span.wpProQuiz_AnweredColor{background-color:#6ca54c}.wpProQuiz_content .wpProQuiz_reviewLegend span.wpProQuiz_reviewColor_Review{background-color:#ffb800}.wpProQuiz_content .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionTarget{font-weight:700;border-color:#7db1d3;box-shadow:0 0 2px 1px #c4c4c4}.wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionSolved,.wpProQuiz_content .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionSolved{background-color:#6ca54c}.wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionReview,.wpProQuiz_content .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionReview{background-color:#ffb800}.wpProQuiz_content .wpProQuiz_button2{border:1px solid #dadada;background:#f5f5f5;color:#303030;border-radius:4px;padding:3px 5px;box-shadow:-1px 1px 1px #a7a7a7;text-shadow:none;filter:none;margin:0;font-weight:400}.wpProQuiz_content .wpProQuiz_button2:hover{background:#ebebeb}.wpProQuiz_content .wpProQuiz_reviewDiv{margin:20px 0 20px 0}.wpProQuiz_content .wpProQuiz_header{margin:0}.wpProQuiz_content .wpProQuiz_catOverview{margin-top:10px;margin-bottom:20px}.wpProQuiz_content .wpProQuiz_catOverview li{list-style:none;padding:0;clear:right;border-bottom:1px dashed #aaa;height:1.05em;margin:10px 0 0 0;position:relative}.wpProQuiz_content .wpProQuiz_catOverview span{background:#fff;padding:0 0 0 3px;float:right;position:absolute;text-decoration:none}.wpProQuiz_content span.wpProQuiz_catPercent{font-weight:700;padding-right:5px;color:#000;left:0}.wpProQuiz_content .wpProQuiz_forms{margin:20px 0 20px 0}.wpProQuiz_content .wpProQuiz_required{color:red;font-weight:700}.wpProQuiz_content .wpProQuiz_invalidate{border:1px solid #ffcfcf;background:#ffebe8;padding:4px;margin:4px 0 4px 0;display:none}.wpProQuiz_content .wpProQuiz_forms table{width:auto;border-collapse:separate;border-spacing:2px}.wpProQuiz_content .wpProQuiz_forms td{vertical-align:top;padding:0 0 8px 0;margin:0;border:0;background:100% 0}.wpProQuiz_content .wpProQuiz_forms input,.wpProQuiz_forms label,.wpProQuiz_forms select,.wpProQuiz_forms textarea{margin:0;float:none;display:inline}.wpProQuiz_content .wpProQuiz_forms select{width:auto}PKc\8׳=themes/legacy/templates/learndash_course_steps_navigation.phpnuW+Apost_type == 'sfwd-topic' ) { $current_complete = learndash_is_topic_complete( $user_id, $course_step_post->ID ); } else if ( $course_step_post->post_type == 'sfwd-lessons' ) { $current_complete = learndash_is_lesson_complete( $user_id, $course_step_post->ID ); } if ( ( $current_complete !== true) && ( learndash_is_admin_user( $user_id ) ) ) { $bypass_course_limits_admin_users = LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_General_Admin_User', 'bypass_course_limits_admin_users' ); if ( $bypass_course_limits_admin_users == 'yes' ) $current_complete = true; } } if ( apply_filters( 'learndash_show_next_link', $current_complete, $user_id, $course_step_post->ID ) ) { $learndash_next_nav = learndash_next_post_link(); } if ( ( !empty( $learndash_previous_nav ) ) || ( !empty( $learndash_next_nav ) ) ) { ?>'. sprintf( esc_html_x( 'Earned %s Points:', 'placeholders: Course Label, course points', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ) . ' '. $user_course_points; // The figure out how to display it if ( $shortcode_atts['context'] == 'ld_profile' ) { ?>

      '>
      PKc\2G(NDD3themes/legacy/templates/course_navigation_admin.phpnuW+A true, 'current_lesson_id' => 0, 'current_step_id' => 0, ); } // Not sure why this is here. //if ( !isset( $course_progress ) ) // $course_progress = array(); $widget['nonce'] = wp_create_nonce( 'ld_course_navigation_admin_pager_nonce_'. $course_id .'_'. get_current_user_id() ); $widget_json = htmlspecialchars( json_encode( $widget ) ); if ( ( isset( $widget['show_widget_wrapper'] ) ) && ( $widget['show_widget_wrapper'] == 'true' ) ) { ?>
      $course_lesson ) { $lesson_meta = get_post_meta( $course_lesson['post']->ID, '_sfwd-lessons', true ); $current_topic_ids = ''; $lesson_topics_list = learndash_topic_dots( $course_lesson['post']->ID, false, 'array', $user_id, $course_id ); /* if ( ! empty( $lesson_topics_list ) ) { $topic_pager_args = array( 'course_id' => $course_id, 'lesson_id' => $course_lesson['post']->ID ); $lesson_topics_list = learndash_process_lesson_topics_pager( $lesson_topics_list, $topic_pager_args ); } */ $load_lesson_quizzes = true; /* if ( isset( $course_pager_results[ $course_lesson['post']->ID ]['pager'] ) ) { if ( $course_pager_results[ $course_lesson['post']->ID ]['pager']['paged'] < $course_pager_results[ $course_lesson['post']->ID ]['pager']['total_pages'] ) { $load_lesson_quizzes = false; } } */ if ( true === $load_lesson_quizzes ) { $lesson_quizzes_list = learndash_get_lesson_quiz_list( $course_lesson['post']->ID, $user_id, $course_id ); } else { $lesson_quizzes_list = array(); } $is_current_lesson = ( $widget['current_lesson_id'] == $course_lesson['post']->ID ); $lesson_list_class = ( $is_current_lesson ) ? 'active' : 'inactive'; $lesson_lesson_completed = 'lesson_incomplete'; $list_arrow_class = ( $is_current_lesson && ! empty( $lesson_topics_list ) ) ? 'expand' : 'collapse'; if ( ! empty( $lesson_topics_list ) ) { $list_arrow_class .= ' flippable'; } ?>
      ID; ?>'>
      ID; ?>);' >
      ID; if ( $course_lesson['status'] == 'completed' ) { $user_lesson_progress['checked'] = true; } else { $user_lesson_progress['checked'] = false; } $unchecked_children_message = ''; if ( ( ! empty( $lesson_topics_list ) ) || ( ! empty( $lesson_quizzes_list ) ) ) { $unchecked_children_message = ' data-title-unchecked-children="' . htmlspecialchars( esc_html__( 'Set all children steps as incomplete?', 'learndash' ), ENT_QUOTES ) . '" '; } ?> class="learndash-mark-lesson-complete" data-name="" /> ID ); if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $edit_url = add_query_arg( 'course_id', $course_id, $edit_url ); } ?> ID .') '; ?>post_title; ?>
      ID; ?>' class="flip learndash_topic_widget_list" style=''>
        $topic ) { $odd_class = empty( $odd_class ) ? 'nth-of-type-odd' : ''; $completed_class = 'topic-notcompleted'; $topic_quiz_list = learndash_get_lesson_quiz_list( $topic->ID, $user_id, $course_id ); $unchecked_children_message = ''; if ( ! empty( $topic_quiz_list ) ) { $unchecked_children_message = ' data-title-unchecked-children="' . htmlspecialchars( esc_html__( 'Set all children steps as incomplete?', 'learndash' ), ENT_QUOTES ) . '" '; } ?>
      • ID; $user_topic_progress['topic_id'] = $topic->ID; if ( ( isset( $course_progress[ $course_id ]['topics'][ $course_lesson['post']->ID ][ $topic->ID ] ) ) && ( $course_progress[ $course_id ]['topics'][ $course_lesson['post']->ID ][ $topic->ID ] == true ) ) { $topic_checked = ' checked="checked" '; $user_topic_progress['checked'] = true; } else { $topic_checked = ''; $user_topic_progress['checked'] = false; } ?> id="learndash-mark-topic-complete--ID; ?>" class="learndash-mark-topic-complete" data-name="" /> ID ); if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $edit_url = add_query_arg( 'course_id', $course_id, $edit_url ); } ?> ID .') '; ?>post_title; ?> ID, $user_id, $course_id ); if ( ! empty( $topic_quiz_list ) ) { ?>
        • ID; $user_quiz_progress['topic_id'] = $topic->ID; $user_quiz_progress['quiz_id'] = $quiz['post']->ID; if ( $quiz['status'] == 'completed' ) { $quiz_checked = ' checked="checked" '; $user_quiz_progress['checked'] = true; } else { $quiz_checked = ''; $user_quiz_progress['checked'] = false; } $unchecked_message = ' data-title-unchecked="' . htmlspecialchars( esc_html__( 'Set all parent steps as incomplete?', 'learndash' ), ENT_QUOTES ) . '" '; ?> class="learndash-mark-topic-quiz-complete learndash-mark-quiz-complete" data-name="" /> ID ); if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $edit_url = add_query_arg( 'course_id', $course_id, $edit_url ); } ?> post_title; ?>'>ID .') ' ?>post_title; ?>
      • ID; $user_quiz_progress['quiz_id'] = $quiz['post']->ID; if ( $quiz['status'] == 'completed' ) { $quiz_checked = ' checked="checked" '; $user_quiz_progress['checked'] = true; } else { $quiz_checked = ''; $user_quiz_progress['checked'] = false; } ?> class="learndash-mark-lesson-quiz-complete learndash-mark-quiz-complete" data-name="" /> ID ); if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $edit_url = add_query_arg( 'course_id', $course_id, $edit_url ); } ?> post_title; ?>'>ID .') '; ?>post_title; ?>
      ID ]['pager'] ) ) { echo SFWD_LMS::get_template( 'learndash_pager.php', array( 'pager_results' => $course_pager_results[ $course_lesson['post']->ID ]['pager'], 'pager_context' => 'course_topics', 'href_query_arg' => 'ld-topic-page', 'href_val_prefix' => $course_lesson['post']->ID . '-' ) ); } */ ?>
      ID; if ( $quiz['status'] == 'completed' ) { $quiz_checked = ' checked="checked" '; $user_quiz_progress['checked'] = true; } else { $quiz_checked = ''; $user_quiz_progress['checked'] = false; } ?> class="learndash-mark-quiz-complete learndash-mark-course-quiz-complete" data-name="" /> ID ) ); ?>' title='post_title; ?>'>ID .') '; ?>post_title; ?>
      $course_navigation_admin_pager, 'pager_context' => 'course_navigation_admin', ) ); } ?> ID ) ) { ?>

      post_title; ?>

      ', '' ); ?>
      PKc\S440themes/legacy/templates/learndash_quiz_front.cssnuW+A.wpProQuiz_content .wpProQuiz_answerCorrect { background: #6DB46D ; font-weight: bold ; } .wpProQuiz_content .wpProQuiz_answerCorrect label { font-weight: bold ; } .wpProQuiz_content .wpProQuiz_answerIncorrect { background: #FF9191 ; font-weight: bold ; } .wpProQuiz_content .wpProQuiz_answerCorrectIncomplete { border: 1px solid #6DB46D !important; font-weight: bold ; } .wpProQuiz_content { margin-top: 10px ; margin-bottom: 10px ; } .wpProQuiz_content h2 { margin-bottom: 10px ; } /*.wpProQuiz_button, .wpProQuiz_button:hover { background: #13455B ; border-radius: 11px ; color: white ; font-weight: bold ; border: 1px solid #13455B ; }*/ .wpProQuiz_content .wpProQuiz_question_page { margin-bottom: 10px ; } .wpProQuiz_content .wpProQuiz_question_page span { font-weight: bold ; } .wpProQuiz_content .wpProQuiz_questionListItem:last-child, .wpProQuiz_content .wpProQuiz_questionListItemLastChildIE { padding: 3px ; margin-bottom: 0 ; overflow: auto; } .wpProQuiz_content .wpProQuiz_questionListItem { padding: 3px ; margin-bottom: 5px ; background-image: none ; margin-left: 0 ; list-style: none ; border: 0 ; } .wpProQuiz_content .wpProQuiz_questionListItem > table { border-collapse: collapse ; margin: 0 ; padding: 0 ; width: 100%; } .wpProQuiz_content .wpProQuiz_list, .wpProQuiz_content .wpProQuiz_listItem, .wpProQuiz_content .wpProQuiz_questionList, .wpProQuiz_content .wpProQuiz_sortStringList, .wpProQuiz_content .wpProQuiz_sortStringList, .wpProQuiz_content .wpProQuiz_maxtrixSortCriterion, .wpProQuiz_content .wpProQuiz_resultsList, .wpProQuiz_content .wpProQuiz_catOverview ol { list-style: none ; padding: 0 ; margin: 0 ; } .wpProQuiz_content .wpProQuiz_list { border: 0 ; } .wpProQuiz_content .wpProQuiz_questionList { margin-bottom: 10px ; background: #F8FAF5 ; border: 1px solid #C3D1A3 ; padding: 5px ; list-style: none ; /* overflow: visible; */ overflow: auto; } .wpProQuiz_content .wpProQuiz_listItem { position: relative ; border: 0 ; background-image: none ; } .wpProQuiz_content .wpProQuiz_response { background: #F8FAF5 ; border: 1px solid #C4C4C4 ; padding: 5px ; margin-bottom: 15px ; box-shadow: 1px 1px 2px #AAA ; } .wpProQuiz_content .wpProQuiz_response span { font-weight: bold ; } .wpProQuiz_content .wpProQuiz_sort { width: 25px ; } .wpProQuiz_content .wpProQuiz_results h3 { margin-bottom: 10px ; } .wpProQuiz_content .wpProQuiz_sort_correct_answer { font-weight: bold ; margin-right: 5px ; display: none ; } .wpProQuiz_content .wpProQuiz_sortable, .wpProQuiz_sortStringItem { padding: 5px ; border: 1px solid lightGrey ; box-shadow: 2px 2px 1px #EEE; background-color: #F8FAF5 ; cursor: move; } .wpProQuiz_content .wpProQuiz_time_limit .time { font-weight: bold ; margin-top: 5px ; margin-bottom: 5px ; } .wpProQuiz_content .wpProQuiz_time_limit .wpProQuiz_progress { height: 10px ; background-color: blue ; margin-bottom: 5px ; } .wpProQuiz_content .wpProQuiz_time_limit_expired { font-weight: bold ; font-size: 15px ; text-align: center ; } .wpProQuiz_content .wpProQuiz_question_text { margin-bottom: 10px ; } .wpProQuiz_content .wpProQuiz_tipp > div { padding: 10px ; background-color: #DDECFF ; border: 1px dotted #363636 ; border-radius: 10px ; position: absolute ; bottom: 5px ; left: 5px ; right: 5px ; box-shadow: 2px 2px 5px 0px #313131 ; z-index: 99999 ; } .wpProQuiz_content .wpProQuiz_matrixSortString, .wpProQuiz_content .wpProQuiz_matrixSortString > h3 { margin-bottom: 10px ; margin-top: 0 ; } .wpProQuiz_content .wpProQuiz_matrixSortString { background: #F8FAF5 ; border: 1px solid #C3D1A3 ; padding: 5px ; /* overflow: visible; */ overflow: auto; } .wpProQuiz_content ul.wpProQuiz_sortStringList { padding: 10px ; height: 100%; width: 100%; min-height: 20px; } .wpProQuiz_content ul.wpProQuiz_sortStringList:empty { border: 2px dashed #bbb !important; } .wpProQuiz_content ul.wpProQuiz_sortStringList > li { float: left ; margin-left: 5px ; margin-right: 5px ; margin-bottom: 5px ; } .wpProQuiz_content .wpProQuiz_sortStringItem { margin: 0 ; background-image: none ; list-style: none ; } .wpProQuiz_content ul.wpProQuiz_maxtrixSortCriterion { padding: 5px ; margin: 0; overflow: auto; height: 100% } .wpProQuiz_content .wpProQuiz_placehold { background-color: #FFFFC2 ; list-style: none ; background-image: none ; padding: 0px ; height: 100% ; width: 100%; min-width: 50px ; margin: 0 ; border: 2px solid red dashed !important; } .wpProQuiz_content .wpProQuiz_maxtrixSortText { padding: 5px ; } .wpProQuiz_content .wpProQuiz_mextrixTr > td { border: 1px solid #D1D1D1 ; padding: 5px ; vertical-align: middle ; } .wpProQuiz_content .wpProQuiz_points, .wpProQuiz_content .wpProQuiz_earned_points, .wpProQuiz_content .wpProQuiz_graded_points { font-weight: bold ; text-align: center ; margin-bottom: 20px ; } .wpProQuiz_content .wpProQuiz_cloze input[type="text"] { background: transparent; border: 0 ; border-bottom: 1px solid ; height: 1em ; margin: 0 ; padding: 0 4px 0 4px ; color: black ; border-radius: 0 ; box-shadow: 0 0 ; } .wpProQuiz_content .wpProQuiz_cloze input:focus { outline: none ; } .wpProQuiz_content .wpProQuiz_cloze input.wpProQuiz_answerCorrect { background-color: #B0DAB0; } .wpProQuiz_content .wpProQuiz_cloze input.wpProQuiz_answerIncorrect { background-color: #FFBABA; } .wpProQuiz_content .wpProQuiz_questionListItem input, .wpProQuiz_questionListItem label { margin: 0 ; font-weight: normal; display: inline; } .wpProQuiz_content .wpProQuiz_questionListItem input { float: none ; display: inline ; } .wpProQuiz_content .wpProQuiz_resultsList { border: 0 ; } .wpProQuiz_content .wpProQuiz_resultsList > li { background-image: none ; padding: 0 ; margin: 0 ; list-style-type: none ; border: 0 ; } .wpProQuiz_content .wpProQuiz_lock, .wpProQuiz_prerequisite, .wpProQuiz_startOnlyRegisteredUser, .wpProQuiz_loadQuiz { border: 1px dotted #FFC3C3 ; background-color: #FFF7F7 ; } .wpProQuiz_content .wpProQuiz_lock p, .wpProQuiz_prerequisite p, .wpProQuiz_startOnlyRegisteredUser p, .wpProQuiz_loadQuiz p { margin: 20px ; font-weight: bold ; } .wpProQuiz_toplistTable { width: 100% ; border: 1px solid #C3D1A3 ; border-collapse: collapse ; margin: 0 ; } .wpProQuiz_toplistTable caption { caption-side:top ; text-align: right ; padding-bottom: 2px ; color: gray ; margin: 0 ; font-size: 11px ; } .wpProQuiz_toplistTable thead tr { background: rgb(155,187,89) ; padding: 5px ; color: white ; font-weight: bold ; } .wpProQuiz_toplistTable tbody td:FIRST-CHILD{ font-weight: bold ; } .wpProQuiz_toplistTable td, .wpProQuiz_toplistTable th { padding: 5px ; text-align: center ; border: 0 ; } .wpProQuiz_toplistTable th { background: #9BBB59 ; } .wpProQuiz_toplistTable th.col-pos { width: 10%; } .wpProQuiz_toplistTable th.col-name { text-align: left; } .wpProQuiz_toplistTable th.col-date { width: 25%; } .wpProQuiz_toplistTable th.col-points { width: 13%; } .wpProQuiz_toplistTable th.col-results { width: 15%; } .wpProQuiz_toplistTable td { text-align: center; font-size: 0.75em; } .wpProQuiz_toplistTable td.col-name { text-align: left; } .wpProQuiz_toplistTable td.col-date { font-size: 0.8em; } .wpProQuiz_toplistTrOdd { background-color: #EBF1DE ; } .wpProQuiz_content .wpProQuiz_addToplist { margin-top: 10px ; background-color: #F5FAEA ; padding: 10px ; border: 1px solid #C3D1A3 ; } .wpProQuiz_content .wpProQuiz_addToplistMessage { border: 1px solid rgb(160, 160, 160) ; background-color: #FCFFB3 ; margin-bottom: 5px ; border-radius: 5px ; padding: 5px ; font-weight: bold ; color: dimGray ; } .wpProQuiz_content .wpProQuiz_resultTable { margin: 15px auto ; width: 85%; border: 1px solid #C4C4C4 ; padding: 15px ; font-weight: bold ; } .wpProQuiz_content .wpProQuiz_resultTable table { width: 100% ; border-collapse: collapse ; margin: 0 ; border: 0 ; } .wpProQuiz_content .wpProQuiz_resultName { width: 35% ; min-width: 100px; border-right: 1px solid rgb(134, 134, 134) ; padding: 10px 0px ; border-bottom: 0 ; border-top: 0 ; border-left: 0 ; } .wpProQuiz_content .wpProQuiz_resultTable .wpProQuiz_resultValue { padding: 0 ; border: 0 ; } .wpProQuiz_content .wpProQuiz_resultTable .wpProQuiz_resultValue .progress-number { font-size: 0.8em; } .wpProQuiz_content .wpProQuiz_resultTable .wpProQuiz_resultValue_AvgScore .progress-meter { background-color: #6CA54C; } .wpProQuiz_content .wpProQuiz_resultTable .wpProQuiz_resultValue_YourScore .progress-meter { background-color: #F79646; } .wpProQuiz_content .wpProQuiz_resultValue div { color: black ; text-align: right ; box-shadow: 1px 1px 3px 1px #C4C4C4 ; display: inline-block ; height: 18px ; zoom: 1 ; *display: inline ; margin-right: 3px ; vertical-align: middle ; } .wpProQuiz_content .wpProQuiz_addBox label { display: inline ; } .wpProQuiz_content .wpProQuiz_addBox input[type="text"] { margin: 0 ; } .wpProQuiz_content .wpProQuiz_reviewQuestion { max-height: 100px; overflow-y: scroll; border: 1px solid #C3D1A3; background-color: #F8FAF5; position: relative; -webkit-overflow-scrolling: touch; } .wpProQuiz_content .wpProQuiz_box { border: 1px solid #C3D1A3; background-color: #F8FAF5; } .wpProQuiz_content .wpProQuiz_checkPage h3 { margin: 10px 0 10px 0; } .wpProQuiz_content .wpProQuiz_reviewQuestion ol, .wpProQuiz_checkPage ol { list-style-type: none ; margin: 0 ; padding: 5px 12px 0 5px ; zoom: 1 ; position: relative ; border: 0 ; } /* .wpProQuiz_content .wpProQuiz_reviewQuestion ol:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } */ .wpProQuiz_content .wpProQuiz_reviewQuestion li, .wpProQuiz_checkPage li { float: left ; margin: 0 5px 5px 0 ; border: 1px solid #CFCFCF; padding: 5px 0 5px 0 ; width: 30px ; text-align: center ; background-color: white; cursor: pointer ; list-style-type: none ; background-image: none ; } /* .wpProQuiz_content .wpProQuiz_reviewQuestion div { position: absolute; right: 0; background-color: #B8B8B8; top: 0; height: 20px; width: 10px; border: 0; border-radius: 10px; cursor: move; } */ .wpProQuiz_content .wpProQuiz_reviewLegend { padding: 5px ; margin-bottom: 8px ; } .wpProQuiz_content .wpProQuiz_reviewLegend ol { list-style-type: none ; padding: 0 ; margin: 0 ; border: 0 ; } .wpProQuiz_content .wpProQuiz_reviewLegend li { float: left ; padding-right: 5px ; list-style-type: none ; margin: 0 ; border: 0 ; background-image: none ; } .wpProQuiz_content .wpProQuiz_reviewColor { height: 15px ; width: 15px ; display: inline-block ; margin-right: 2px ; } .wpProQuiz_content .wpProQuiz_reviewLegend span.wpProQuiz_AnweredColor { background-color: #6CA54C; } .wpProQuiz_content .wpProQuiz_reviewLegend span.wpProQuiz_reviewColor_Review { background-color: #FFB800; } .wpProQuiz_content .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionTarget { font-weight: bold; border-color: #7DB1D3 ; box-shadow: 0px 0px 2px 1px #C4C4C4; } .wpProQuiz_content .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionSolved, .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionSolved { background-color: #6CA54C; } .wpProQuiz_content .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionReview, .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionReview { background-color: #FFB800; } .wpProQuiz_content .wpProQuiz_button2 { border: 1px solid #DADADA ; background: whiteSmoke ; color: #303030 ; border-radius: 4px ; padding: 3px 5px ; box-shadow: 1px 1px 1px #A7A7A7 ; text-shadow: none ; filter: none ; margin: 0 ; font-weight: normal ; } .wpProQuiz_content .wpProQuiz_button2:hover { background: #EBEBEB ; } .wpProQuiz_content .wpProQuiz_reviewDiv { margin: 20px 0 20px 0 ; } .wpProQuiz_content .wpProQuiz_header { margin: 0px ; } .wpProQuiz_content .wpProQuiz_catOverview { margin-top: 10px; margin-bottom: 20px; } .wpProQuiz_content .wpProQuiz_catOverview li { list-style: none ; padding: 0 ; clear: left ; border-bottom: 1px dashed #aaa; height: 1.05em ; margin: 10px 0 0 0 ; position: relative ; } .wpProQuiz_content .wpProQuiz_catOverview span { background:#fff ; padding:0 3px 0 0 ; float:left ; position:absolute ; text-decoration:none ; } .wpProQuiz_content span.wpProQuiz_catPercent { font-weight: bold ; padding-left: 5px ; color: #000 ; right: 0 ; } .wpProQuiz_content .wpProQuiz_forms { margin: 20px 0 20px 0 ; } .wpProQuiz_content .wpProQuiz_required { color: #F00 ; font-weight: bold ; } .wpProQuiz_content .wpProQuiz_invalidate { border: 1px solid #FFCFCF ; background: #FFEBE8 ; padding: 4px ; margin: 4px 0 4px 0 ; display: none; } .wpProQuiz_content .wpProQuiz_forms table { width: auto ; border-collapse: separate ; border-spacing: 2px ; } .wpProQuiz_content .wpProQuiz_forms td { vertical-align: top ; padding: 0 0 8px 0 ; margin: 0 ; border: 0 ; background: none ; } .wpProQuiz_content .wpProQuiz_forms input, .wpProQuiz_forms textarea, .wpProQuiz_forms label, .wpProQuiz_forms select { margin: 0 ; float: none ; display: inline ; } .wpProQuiz_content .wpProQuiz_forms select { width: auto ; }PKc\+&KK<themes/legacy/templates/learndash_template_style.min-rtl.cssnuW+A.ld-error{color:red}.delete_url_upload_assignments{text-decoration:none}input#uploadfiles{font-size:.75em;padding:10px}.clear_both{clear:both}.learndash_checkout_buttons{overflow:hidden;position:relative;margin:20px 0}.learndash_checkout_buttons .learndash_checkout_button br{display:none}.learndash_checkout_buttons .learndash_checkout_button{float:right;max-width:200px;margin-left:20px}.learndash_topic_dots ul,.learndash_topic_dots ul li{list-style-type:none;list-style:none;margin:0}.learndash_topic_dots b,.learndash_topic_dots strong{margin-left:10px}.learndash .learndash_topic_dots.type-dots{padding-bottom:10px}.learndash .topic-completed span{background:url(images/completed_t.png) no-repeat scroll 100% 5px transparent;display:inline-block;min-height:28px;line-height:25px;vertical-align:middle;padding-right:20px}.learndash_navigation_lesson_topics_list .topic-completed span{background:url(images/completed_t_navigation.png) no-repeat scroll 100% 8px transparent;display:inline-block;min-height:26px;line-height:25px;vertical-align:middle;padding-right:20px}.learndash .topic-notcompleted span{background:url(images/notcompleted_t.png) no-repeat scroll 100% 5px transparent;display:inline-block;min-height:28px;line-height:25px;padding-right:20px;vertical-align:middle}.learndash_navigation_lesson_topics_list .topic-notcompleted span{background:url(images/notcompleted_t_navigation.png) no-repeat scroll 100% 8px transparent;display:inline-block;min-height:26px;line-height:25px;padding-right:20px;vertical-align:middle}.learndash_topic_dots ul .topic-completed span,.learndash_topic_dots ul .topic-notcompleted span{text-decoration:underline;padding-right:30px;margin:10px 0}.rtl .learndash .topic-completed span,.rtl .learndash .topic-notcompleted span{padding-right:0;padding-left:35px;background-position:left 5px}.rtl .learndash_navigation_lesson_topics_list .topic-completed span,.rtl .learndash_navigation_lesson_topics_list .topic-notcompleted span{padding-left:20px;padding-right:0;background-position:left 8px}.course_navigation .learndash_topic_widget_list a>span{overflow:hidden;margin:0 5px 0 0}.course_navigation .learndash_topic_widget_list>ul{margin:0}.course_navigation .learndash-current-menu-item a{font-weight:700}.learndash .learndash_topic_dots.type-list a>span{min-width:80%}#learndash_course_content .learndash_topic_dots ul{padding:0;margin:0}#learndash_course_content .learndash_topic_dots ul>li{width:100%;display:block;background:#fff}#learndash_course_content .learndash_topic_dots ul>li a{padding:0 10px 0 10px}#learndash_course_content .learndash_topic_dots ul>li:nth-of-type(odd){background:#f3f3f3}.list_arrow.expand{background:url(images/gray_arrow_expand.png) no-repeat scroll 100% 50% transparent;padding:5px}.active .list_arrow.expand{background:url(images/green_arrow_expand.png) no-repeat scroll 100% 50% transparent;padding:5px}.active .list_arrow.collapse{background:url(images/green_arrow_collapse.png) no-repeat scroll 100% 50% transparent;padding:5px}.list_arrow.collapse{background:url(images/gray_arrow_collapse.png) no-repeat scroll 100% 50% transparent;padding:5px}.list_arrow.collapse.lesson_completed{background:url(images/green_arrow_collapse.png) no-repeat scroll 100% 50% transparent;padding:5px}.lesson_incomplete.list_arrow.collapse{background:url(images/gray_arrow_collapse.png) no-repeat scroll 100% 50% transparent;padding:5px}.list_arrow.expand.lesson_completed{background:url(images/green_arrow_expand.png) no-repeat scroll 100% 50% transparent;padding:5px}.lesson_incomplete.list_arrow.expand{background:url(images/gray_arrow_expand.png) no-repeat scroll 100% 50% transparent;padding:5px}.rtl .active .list_arrow.collapse,.rtl .list_arrow.collapse.lesson_completed{background-image:url(images/green_arrow_collapse_rtl.png)}.rtl .lesson_incomplete.list_arrow.collapse,.rtl .list_arrow.collapse{background-image:url(images/gray_arrow_collapse_rtl.png)}.certificate_icon{background:url(images/certificate-icon-small.png) no-repeat scroll 100% 0 transparent;width:23px;height:23px;margin:auto;background-size:23px}.certificate_icon_large{background:url(images/certificate-icon-large.png) no-repeat scroll 100% 0 transparent;width:53px;height:53px;margin:auto;background-size:40px}.statistic_icon{background:url(images/statistics-icon-small.png) no-repeat scroll 100% 0 transparent;width:23px;height:23px;margin:auto;background-size:23px}.learndash_profile_quizzes .certificate{vertical-align:middle}.learndash_profile_quizzes .statistics{vertical-align:middle}.learndash_profile_quizzes .scores{vertical-align:middle}.learndash_profile_quizzes .learndash_profile_quiz_heading .certificate{vertical-align:middle}.learndash_profile_quizzes .certificate,.learndash_profile_quizzes .quiz_date,.learndash_profile_quizzes .scores,.learndash_profile_quizzes .statistics{text-align:center}.learndash_profile_quizzes .passed .scores{color:green}.learndash_profile_quizzes .passed_icon{background:url(images/check.png) no-repeat right bottom;display:inline-block;width:13px;height:13px;margin-right:3%;margin-left:3%}.learndash_profile_quizzes .failed_icon{background:url(images/cross.png) no-repeat right bottom;display:inline-block;width:13px;height:13px;margin-right:3%;margin-left:3%}.learndash_profile_quizzes .pending_icon{background:url(images/pending.png) no-repeat right bottom;display:inline-block;width:13px;height:13px;margin-right:3%;margin-left:3%}.rtl .learndash_profile_quizzes .failed_icon,.rtl .learndash_profile_quizzes .passed_icon,.rtl .learndash_profile_quizzes .pending_icon{background-position:left bottom}#learndash_profile .profile_info{padding:15px;overflow:hidden}#learndash_profile .profile_info .profile_avatar{border:0;float:right;margin-left:15px;width:108px}.rtl #learndash_profile .profile_info .profile_avatar{float:left}#learndash_profile .profile_info .profile_avatar img{border:6px solid #f3f3f3;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box}#learndash_profile .learndash_profile_details{float:right}#learndash_profile .learndash_profile_details>div{margin-top:9px}.rtl #learndash_profile .learndash_profile_details{float:left;margin-left:10px}.learndash_navigation_lesson_topics_list .list_arrow.expand{background-position:50% 10px}.learndash_navigation_lesson_topics_list .list_arrow.collapse{background-position:50% 5px}#learndash_profile .list_arrow.expand{background-position:50% 30px}#learndash_profile .list_arrow.collapse{background-position:50% 27px}#learndash_lesson_topics_list ul>li:nth-of-type(odd){background:#f9f9f9}#learndash_course_content .learndash_topic_dots .nth-of-type-odd,.learndash_navigation_lesson_topics_list .nth-of-type-odd{background:#f3f3f3}#learndash_lesson_topics_list ul>li.nth-of-type-odd{background:#f9f9f9}#learndash_course_content .learndash_topic_dots ul>li:hover{background:#ddd}#learndash_course_content #learndash_lessons .learndash_topic_dots{display:none}#learndash_lesson_topics_list span a,#learndash_lessons a,#learndash_profile a,#learndash_profile a span,#learndash_quizzes a,.expand_collapse a,.learndash_topic_dots a,.learndash_topic_dots a>span{color:#5980bb;text-decoration:none;font-weight:100;font-size:12px;font-family:Verdana,Geneva,sans-serif}#learndash_profile .completed,.learndash .completed{background:url(images/completed.png) no-repeat;display:block;line-height:53px;background-position:2.0999999999999943% center;padding-right:2%;padding-left:2%}#learndash_profile .notcompleted,.learndash .notcompleted{background:url(images/notcompleted.png) no-repeat;display:block;line-height:53px;background-position:2.0999999999999943% center;padding-right:2%;padding-left:2%}#learndash_profile .notavailable,.learndash .notavailable{background:url(images/notavailable.png) no-repeat;display:block;line-height:53px;background-position:2.0999999999999943% center;padding-right:2%;padding-left:2%}.rtl #learndash_profile .completed,.rtl #learndash_profile .notavailable,.rtl #learndash_profile .notcompleted,.rtl .learndash .completed,.rtl .learndash .notavailable,.rtl .learndash .notcompleted{background-position:97.9% center}.notavailable{color:gray;text-decoration:none;cursor:default}h4 small#notavailable_message{display:none}.learndash h4 small#notavailable_message{font-weight:100;display:block}.course_navigation a{text-decoration:none}small.notavailable_message{padding-right:35px}#learndash_back_to_lesson{margin-bottom:15px}.widget_sfwd-lessons-widget .completed{font-style:italic;text-decoration:line-through}.ld-entry-content .attachment-post-thumbnail{float:right;margin:15px}.ld-course-info-my-courses h2{display:inline}.ld-course-info-my-courses img{display:inline;margin-left:5%;max-width:30%;vertical-align:middle}#learndash_lessons .right,#learndash_profile .learndash_profile_heading .ld_profile_status,#learndash_quizzes .right{float:left;text-align:center;width:53px}#learndash_profile .learndash_profile_heading .ld_profile_certificate{float:left;text-align:center;margin-left:20px}#learndash_profile .learndash-course-link{width:70%;float:right}#learndash_profile .learndash-course-link a{display:block;line-height:53px;padding:10px 2%;text-decoration:none;box-shadow:none}#learndash_profile .learndash-course-status{width:53px;float:left;margin:0 15px}#learndash_profile .learndash-course-status a{text-indent:-999em;line-height:53px;padding:10px 2%;text-decoration:none;box-shadow:none}#learndash_profile .learndash-course-certificate{width:48px;float:left;text-align:center;margin:0 15px}#learndash_profile .learndash-course-certificate a{display:block;line-height:53px;padding:18px 2% 0 2%;text-decoration:none;box-shadow:none}.rtl #learndash_lessons .right,.rtl #learndash_profile .right,.rtl #learndash_quizzes .right{float:right}#learndash_lesson_topics_list>div,#learndash_lessons,#learndash_profile,#learndash_quizzes{background-color:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.05);margin-bottom:20px;clear:both}#learndash_profile{margin-top:15px}#learndash_lesson_topics_list div>strong,#learndash_lessons #lesson_heading,#learndash_profile .learndash_profile_heading,#learndash_quizzes #quiz_heading{background-color:#f3f3f3;color:#333;border-top-right-radius:3px;border-top-left-radius:3px;padding:1% 2%;font-weight:400;margin:0;display:block}.learndash_profile_quiz_heading{background-color:#f3f3f3;padding:1% 2%}#learndash_lesson_topics_list div>strong{border-bottom:1px solid #ddd}.widget_sfwd-lessons-widget ul li a{font-size:12px;line-height:12px}.widget_sfwd-lessons-widget ul{padding:10px}.widget_sfwd-lessons-widget ul>li>h4{margin:0;padding:0}#learndash_lessons>div>div,#learndash_quizzes>div>div{border:1px solid #ddd}#learndash_lesson_topics_list ul>li>span.topic_item:hover,#learndash_lessons h4>a:hover,#learndash_quizzes h4>a:hover{background-color:#ddd}#learndash_lesson_topics_list span a,#learndash_lessons a,#learndash_quizzes a,.expand_collapse a,.learndash_topic_dots a,.learndash_topic_dots a>span{text-decoration:none;font-weight:100;font-size:12px}#learndash_lesson_topics_list div ul>li .sn,#learndash_lesson_topics_list div>strong,#learndash_lessons,#learndash_profile a,#learndash_profile div,#learndash_quizzes,.expand_collapse,.learndash_profile_heading,.notavailable_message{font-size:12px;font-weight:400}#learndash_profile .course_progress{width:74%;float:right;margin:2%}#learndash_profile #course_list .right{padding:2%;text-align:center;line-height:20px}.learndash_profile_quizzes>div>div{padding:5px 0}.expand_collapse{width:100%;line-height:0;text-align:left;position:relative;top:-10px;float:left}.rtl .expand_collapse{text-align:right}#learndash_profile .expand_collapse a,.expand_collapse a{color:#000;font-size:10px}#course_list,#learndash_lesson_topics_list ul,#lessons_list,#quiz_list,.learndash_navigation_lesson_topics_list,.learndash_profile_quizzes{display:table;width:100%;margin-bottom:0}#learndash_lesson_topics_list ul{padding:0;margin-right:0}#course_list>div,#learndash_lesson_topics_list ul>li,#lessons_list>div,#quiz_list>div,.learndash_navigation_lesson_topics_list>div,.learndash_profile_quizzes>div{display:table-row}.learndash_topic_dots .sn{display:none}#course_list>div>div,#lessons_list>div>div,#quiz_list>div>div,.single-sfwd-lessons #learndash_lesson_topics_list ul>li>span.sn,.singular-sfwd-lessons #learndash_lesson_topics_list ul>li>span.sn{display:table-cell;width:5%;text-align:center;border-left:1px solid #ddd;border-top:1px solid #ddd}.learndash_navigation_lesson_topics_list>div>div.list_arrow{display:table-cell;width:16px;text-align:center;padding:0}.learndash_profile_quizzes>div>div{display:table-cell}#learndash_profile .profile_edit_profile{text-align:center;line-height:1em}#learndash_profile .profile_edit_profile a{font-size:10px}.rtl #course_list>div>div,.rtl #lessons_list>div>div,.rtl #quiz_list>div>div,.rtl .single-sfwd-lessons #learndash_lesson_topics_list ul>li>span.sn,.rtl .singular-sfwd-lessons #learndash_lesson_topics_list ul>li>span.sn{border-right:1px solid #ddd;border-left:0}.learndash_navigation_lesson_topics_list .learndash_topic_dots.type-list a>span{padding:0 25px 0 0}.course_navigation .learndash_navigation_lesson_topics_list .lesson{margin:5px}.course_navigation .learndash_navigation_lesson_topics_list ul li{margin-right:0;list-style:none;background:100% 0}.course_navigation .learndash_navigation_lesson_topics_list .learndash_topic_dots.type-list ul>li{padding-right:10px}.widget ul.learndash-topic-quiz-list{margin-right:15px}.course_navigation .learndash-current-menu-item ul li a{font-weight:400}#course_list>div h4,#learndash_lesson_topics_list ul>li>span.topic_item,#lessons_list>div h4,#quiz_list>div h4{display:table-cell;width:95%;border-top:1px solid #ddd;padding:0}.course_navigation .widget_course_return a,.widget_course_return{font-size:12px}.widget_course_return{border-top:1px solid #ddd;margin-top:10px;padding-top:10px}#learndash_lesson_topics_list ul>li>span.topic_item,.single-sfwd-lessons #learndash_lesson_topics_list ul>li>span.sn,.singular-sfwd-lessons #learndash_lesson_topics_list ul>li>span.sn{border-top:0}#course_list>div h4>a,#lessons_list>div h4>a,#quiz_list>div h4>a{padding-top:10px;padding-bottom:10px;padding-right:2%;display:block;padding-left:75px}.rtl #course_list>div h4>a,.rtl #lessons_list>div h4>a,.rtl #quiz_list>div h4>a{padding-right:75px;padding-left:2%}.single-sfwd-lessons #learndash_lesson_topics_list ul>li>span a,.singular-sfwd-lessons #learndash_lesson_topics_list ul>li>span a{padding-right:2%;display:block}.rtl.single-sfwd-lessons #learndash_lesson_topics_list ul>li>span a,.rtl.singular-sfwd-lessons #learndash_lesson_topics_list ul>li>span a{padding-left:2%}.learndash_topic_dots.type-list a{display:block}.list-count,.widget .list-count{display:none}#lessons_list .list-count,#quiz_list .list-count{display:table-cell}#btn-join,.btn-join,.learndash_checkout_buttons input.btn-join[type=button],a#quiz_continue_link{border:none;font-weight:400;background:#5cb85c;-webkit-font-smoothing:subpixel-antialiased;-webkit-transition:border .25s linear,color .25s linear,background-color .25s linear,background .25s linear;transition:border .25s linear,color .25s linear,background-color .25s linear,background .25s linear;color:#fff;background-color:#5cb85c;padding:10px 19px;font-size:17px;line-height:1.471;border-radius:6px;white-space:normal;text-decoration:none;height:auto;cursor:pointer}#btn-join:focus,#btn-join:hover,.btn-join.active,.btn-join:active,.btn-join:focus,.btn-join:hover,.btn-join:visited,.learndash_checkout_buttons input.btn-join[type=button]:hover,a#quiz_continue_link:focus,a#quiz_continue_link:hover{color:#fff;background-color:#58d68d;border-color:#58d68d}#btn-join.active,#btn-join:active,.btn-join.active,.btn-join:active,a#quiz_continue_link:active{background-color:#27ad60;border-color:#27ad60}.btn-blue,.learndash_checkout_button input[type=submit]{border:none;font-weight:400;-webkit-font-smoothing:subpixel-antialiased;-webkit-transition:border .25s linear,color .25s linear,background-color .25s linear,background .25s linear;transition:border .25s linear,color .25s linear,background-color .25s linear,background .25s linear;color:#fff;background-color:#3498db;background:#3498db;padding:10px 19px;font-size:17px;line-height:1.471;border-radius:6px;white-space:normal;text-decoration:none}.btn-blue:active,.btn-blue:focus,.btn-blue:hover,.btn-blue:visited,.learndash_checkout_button input[type=submit]:active,.learndash_checkout_button input[type=submit]:focus,.learndash_checkout_button input[type=submit]:hover,.learndash_checkout_button input[type=submit]:visited,a.btn-blue:active,a.btn-blue:focus,a.btn-blue:hover,a.btn-blue:visited{color:#fff;background-color:#5dade2;border-color:#5dade2}.quiz_continue_link,.slickQuizWrapper .quizReturn{margin:20px 0}dd.course_progress{display:block;margin:10px auto;padding:0;position:relative;width:90%;background-color:#f5f5f5;border:medium none;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.1) inset;height:20px;overflow:hidden}dd.course_progress div.course_progress_blue{display:block;position:relative;text-align:left;width:75%;background-color:#5cb85c;box-shadow:0 -1px 0 rgba(0,0,0,.15) inset;color:#fff;float:right;font-size:12px;height:100%;transition:width .6s ease 0s}#learndash_course_content_title{margin-bottom:5px}#course_progress_details>strong{line-height:1.6}.no_radius{border-radius:0}.quiz_title{width:55%;line-height:25px;padding-right:12px}.certificate{width:15%}.scores{width:10%}.quiz_date{width:20%}#learndash_next_prev_link{margin-top:10px}#learndash_next_prev_link a.prev-link{float:right}#learndash_next_prev_link a.next-link{float:left}#ld_categorydropdown{margin:20px 0}#ld_categorydropdown form{display:inline-block}#ld_categorydropdown select{margin-right:10px}#ld_categorydropdown span{font-weight:700}#learndash_course_certificate{margin:10px 0}.wpProQuiz_content{position:relative}.wpProQuiz_spinner{position:absolute;right:-2%;top:-2%;width:104%;height:104%;background:#fff;z-index:10000;opacity:.9}.wpProQuiz_spinner>div{background-image:url(images/spinner.gif);position:relative;margin:auto;width:128px;height:128px;top:30%}.wpProQuiz_questionList .graded-disclaimer{font-size:.8rem}.wpProQuiz_questionList .graded-disclaimer{font-size:.8rem}.wpProQuiz_upload_essay{padding:11px;font-size:.75em}.jq-dropdown .jq-dropdown-menu{overflow:hidden}.jq-dropdown .jq-dropdown-menu li{list-style:none;list-style-type:none;margin:0;padding:0;overflow:hidden}.course_navigation ul.learndash-course-quiz-list{margin-right:0;list-style:none}.course_navigation ul.learndash-course-quiz-list li{margin-right:0;list-style:none}form.sfwd-mark-complete input.learndash_mark_complete_button[disabled]{color:#aaa}form.sfwd-mark-complete p.ld-video-delay-message span.time-countdown{background-color:#ccc;padding:0 2px}.learndash-user-groups .learndash-user-groups-section{clear:both}.learndash-user-groups .learndash-user-groups-section .learndash-user-groups-header,.learndash-user-groups .learndash-user-groups-section .learndash-user-groups-item-title{clear:both;font-weight:700}.learndash-user-groups .learndash-user-groups-section ul.learndash-user-groups-items{list-style:none;margin-right:15px}PKc\Ps=? 1themes/legacy/templates/quiz_navigation_admin.phpnuW+A true, 'current_question_id' => 0, ); } $widget_json = htmlspecialchars( json_encode( $widget ) ); if ( ( isset( $widget['show_widget_wrapper'] ) ) && ( $widget['show_widget_wrapper'] == 'true' ) ) { ?>
      1 ) ) { $question_label_idx = ( absint( $quiz_navigation_admin_pager['paged'] ) - 1 ) * $quiz_navigation_admin_pager['per_page'] + 1; } } ?>
        $q_pro_id ) { if ( absint( $q_post_id ) === absint( $widget['current_question_id'] ) ) { $selected_class = 'ld-question-overview-widget-item-current'; } else { $selected_class = ''; } $question_edit_link = get_edit_post_link( $q_post_id ); $question_edit_link = add_query_arg('quiz_id', $quiz_id, $question_edit_link ); ?>
      $quiz_navigation_admin_pager, 'pager_context' => 'quiz_navigation_admin' ) ); } ?>



      |
      ID ); ?> '>

      ' href='ID, $course_id ) ); ?>'>post_title; ?> $user_id, 'course_id' => learndash_get_course_id( $lesson['post']->ID ), 'lesson_id' => $lesson['post']->ID, 'lesson_access_from_int' => $lesson['lesson_access_from'], 'lesson_access_from_date' => learndash_adjust_date_time_display( $lesson['lesson_access_from'] ), 'context' => 'course', ), true ); ?> ID ]; ?>
      ID ); ?>' class="learndash_topic_dots type-list" ID ) { echo ' style="display:block;"'; } ?>>
        $topic ) : ?> completed ) ? 'topic-notcompleted' : 'topic-completed'; ?>
      • post_title; ?>
      ID ]['pager'] ) ) { echo SFWD_LMS::get_template( 'learndash_pager.php', array( 'pager_results' => $course_pager_results[ $lesson['post']->ID ]['pager'], 'pager_context' => 'course_topics', 'href_query_arg' => 'ld-topic-page', 'href_val_prefix' => $lesson['post']->ID . '-' ) ); } ?>

      $course_pager_results['pager'], 'pager_context' => 'course_lessons' ) ); } ?>
      PKc\= 1 ) { var learndash_timer_var = setInterval( function() { timer_seconds = timer_seconds - 1; var time_display = timer_seconds.toString().toHHMMSS(); timer_el.html(time_display); if ( timer_seconds <= 0 ) { clearInterval( learndash_timer_var ); timer_button_el.attr('disabled', false); timer_el.html(''); jQuery.cookie(cookie_name, 0); //jQuery.removeCookie( cookie_name ); timer_button_el.trigger('learndash-time-finished'); } // Store the timer state (value) into a cookie. This is done if the page reloads the student can resume // the time instead of restarting. jQuery.cookie(cookie_name, timer_seconds); },1000); } else { timer_button_el.attr('disabled', false); timer_el.html(''); jQuery.cookie(cookie_name, 0); //jQuery.removeCookie( cookie_name ); } } } }); } }); jQuery(document).ready(function(){ if (typeof sfwd_data !== 'undefined') { if ( typeof sfwd_data.json !== 'undefined' ) { sfwd_data = sfwd_data.json.replace(/"/g, '"'); sfwd_data = jQuery.parseJSON( sfwd_data ); } } jQuery('#ld_course_info').on('click', 'a.user_statistic', learndash_show_user_statistic ); jQuery( '#learndash_profile' ).on( 'click', 'a.user_statistic', learndash_show_user_statistic ); function learndash_show_user_statistic( e ) { e.preventDefault(); var refId = jQuery(this).data('ref_id'); var quizId = jQuery(this).data('quiz_id'); var userId = jQuery(this).data('user_id'); var statistic_nonce = jQuery(this).data('statistic_nonce'); var post_data = { 'action': 'wp_pro_quiz_admin_ajax', 'func': 'statisticLoadUser', 'data': { 'quizId': quizId, 'userId': userId, 'refId': refId, 'statistic_nonce': statistic_nonce, 'avg': 0 } } jQuery('#wpProQuiz_user_overlay, #wpProQuiz_loadUserData').show(); var content = jQuery('#wpProQuiz_user_content').hide(); jQuery.ajax({ type: "POST", url: sfwd_data.ajaxurl, dataType: "json", cache: false, data: post_data, error: function(jqXHR, textStatus, errorThrown ) { }, success: function(reply_data) { if ( typeof reply_data.html !== 'undefined' ) { content.html(reply_data.html); jQuery('a.wpProQuiz_update', content).remove(); jQuery('a#wpProQuiz_resetUserStatistic', content).remove(); jQuery('body').trigger('learndash-statistics-contentchanged'); jQuery('#wpProQuiz_user_content').show(); jQuery('#wpProQuiz_loadUserData').hide(); content.find('.statistic_data').click(function() { jQuery(this).parents('tr').next().toggle('fast'); return false; }); } } }); jQuery('#wpProQuiz_overlay_close').click(function() { jQuery('#wpProQuiz_user_overlay').hide(); }); } }); PKc\#0$4$44themes/legacy/templates/learndash_quiz_front-rtl.cssnuW+A.wpProQuiz_content .wpProQuiz_answerCorrect { background: #6DB46D ; font-weight: bold ; } .wpProQuiz_content .wpProQuiz_answerCorrect label { font-weight: bold ; } .wpProQuiz_content .wpProQuiz_answerIncorrect { background: #FF9191 ; font-weight: bold ; } .wpProQuiz_content .wpProQuiz_answerCorrectIncomplete { border: 1px solid #6DB46D !important; font-weight: bold ; } .wpProQuiz_content { margin-top: 10px ; margin-bottom: 10px ; } .wpProQuiz_content h2 { margin-bottom: 10px ; } /*.wpProQuiz_button, .wpProQuiz_button:hover { background: #13455B ; border-radius: 11px ; color: white ; font-weight: bold ; border: 1px solid #13455B ; }*/ .wpProQuiz_content .wpProQuiz_question_page { margin-bottom: 10px ; } .wpProQuiz_content .wpProQuiz_question_page span { font-weight: bold ; } .wpProQuiz_content .wpProQuiz_questionListItem:last-child, .wpProQuiz_content .wpProQuiz_questionListItemLastChildIE { padding: 3px ; margin-bottom: 0 ; overflow: auto; } .wpProQuiz_content .wpProQuiz_questionListItem { padding: 3px ; margin-bottom: 5px ; background-image: none ; margin-right: 0 ; list-style: none ; border: 0 ; } .wpProQuiz_content .wpProQuiz_questionListItem > table { border-collapse: collapse ; margin: 0 ; padding: 0 ; width: 100%; } .wpProQuiz_content .wpProQuiz_list, .wpProQuiz_content .wpProQuiz_listItem, .wpProQuiz_content .wpProQuiz_questionList, .wpProQuiz_content .wpProQuiz_sortStringList, .wpProQuiz_content .wpProQuiz_sortStringList, .wpProQuiz_content .wpProQuiz_maxtrixSortCriterion, .wpProQuiz_content .wpProQuiz_resultsList, .wpProQuiz_content .wpProQuiz_catOverview ol { list-style: none ; padding: 0 ; margin: 0 ; } .wpProQuiz_content .wpProQuiz_list { border: 0 ; } .wpProQuiz_content .wpProQuiz_questionList { margin-bottom: 10px ; background: #F8FAF5 ; border: 1px solid #C3D1A3 ; padding: 5px ; list-style: none ; /* overflow: visible; */ overflow: auto; } .wpProQuiz_content .wpProQuiz_listItem { position: relative ; border: 0 ; background-image: none ; } .wpProQuiz_content .wpProQuiz_response { background: #F8FAF5 ; border: 1px solid #C4C4C4 ; padding: 5px ; margin-bottom: 15px ; box-shadow: -1px 1px 2px #AAA ; } .wpProQuiz_content .wpProQuiz_response span { font-weight: bold ; } .wpProQuiz_content .wpProQuiz_sort { width: 25px ; } .wpProQuiz_content .wpProQuiz_results h3 { margin-bottom: 10px ; } .wpProQuiz_content .wpProQuiz_sort_correct_answer { font-weight: bold ; margin-left: 5px ; display: none ; } .wpProQuiz_content .wpProQuiz_sortable, .wpProQuiz_sortStringItem { padding: 5px ; border: 1px solid lightGrey ; box-shadow: -2px 2px 1px #EEE; background-color: #F8FAF5 ; cursor: move; } .wpProQuiz_content .wpProQuiz_time_limit .time { font-weight: bold ; margin-top: 5px ; margin-bottom: 5px ; } .wpProQuiz_content .wpProQuiz_time_limit .wpProQuiz_progress { height: 10px ; background-color: blue ; margin-bottom: 5px ; } .wpProQuiz_content .wpProQuiz_time_limit_expired { font-weight: bold ; font-size: 15px ; text-align: center ; } .wpProQuiz_content .wpProQuiz_question_text { margin-bottom: 10px ; } .wpProQuiz_content .wpProQuiz_tipp > div { padding: 10px ; background-color: #DDECFF ; border: 1px dotted #363636 ; border-radius: 10px ; position: absolute ; bottom: 5px ; right: 5px ; left: 5px ; box-shadow: -2px 2px 5px 0px #313131 ; z-index: 99999 ; } .wpProQuiz_content .wpProQuiz_matrixSortString, .wpProQuiz_content .wpProQuiz_matrixSortString > h3 { margin-bottom: 10px ; margin-top: 0 ; } .wpProQuiz_content .wpProQuiz_matrixSortString { background: #F8FAF5 ; border: 1px solid #C3D1A3 ; padding: 5px ; /* overflow: visible; */ overflow: auto; } .wpProQuiz_content ul.wpProQuiz_sortStringList { padding: 10px ; height: 100%; width: 100%; min-height: 20px; } .wpProQuiz_content ul.wpProQuiz_sortStringList:empty { border: 2px dashed #bbb !important; } .wpProQuiz_content ul.wpProQuiz_sortStringList > li { float: right ; margin-right: 5px ; margin-left: 5px ; margin-bottom: 5px ; } .wpProQuiz_content .wpProQuiz_sortStringItem { margin: 0 ; background-image: none ; list-style: none ; } .wpProQuiz_content ul.wpProQuiz_maxtrixSortCriterion { padding: 5px ; margin: 0; overflow: auto; height: 100% } .wpProQuiz_content .wpProQuiz_placehold { background-color: #FFFFC2 ; list-style: none ; background-image: none ; padding: 0px ; height: 100% ; width: 100%; min-width: 50px ; margin: 0 ; border: 2px solid red dashed !important; } .wpProQuiz_content .wpProQuiz_maxtrixSortText { padding: 5px ; } .wpProQuiz_content .wpProQuiz_mextrixTr > td { border: 1px solid #D1D1D1 ; padding: 5px ; vertical-align: middle ; } .wpProQuiz_content .wpProQuiz_points, .wpProQuiz_content .wpProQuiz_earned_points, .wpProQuiz_content .wpProQuiz_graded_points { font-weight: bold ; text-align: center ; margin-bottom: 20px ; } .wpProQuiz_content .wpProQuiz_cloze input[type="text"] { background: transparent; border: 0 ; border-bottom: 1px solid ; height: 1em ; margin: 0 ; padding: 0 4px 0 4px ; color: black ; border-radius: 0 ; box-shadow: 0 0 ; } .wpProQuiz_content .wpProQuiz_cloze input:focus { outline: none ; } .wpProQuiz_content .wpProQuiz_cloze input.wpProQuiz_answerCorrect { background-color: #B0DAB0; } .wpProQuiz_content .wpProQuiz_cloze input.wpProQuiz_answerIncorrect { background-color: #FFBABA; } .wpProQuiz_content .wpProQuiz_questionListItem input, .wpProQuiz_questionListItem label { margin: 0 ; font-weight: normal; display: inline; } .wpProQuiz_content .wpProQuiz_questionListItem input { float: none ; display: inline ; } .wpProQuiz_content .wpProQuiz_resultsList { border: 0 ; } .wpProQuiz_content .wpProQuiz_resultsList > li { background-image: none ; padding: 0 ; margin: 0 ; list-style-type: none ; border: 0 ; } .wpProQuiz_content .wpProQuiz_lock, .wpProQuiz_prerequisite, .wpProQuiz_startOnlyRegisteredUser, .wpProQuiz_loadQuiz { border: 1px dotted #FFC3C3 ; background-color: #FFF7F7 ; } .wpProQuiz_content .wpProQuiz_lock p, .wpProQuiz_prerequisite p, .wpProQuiz_startOnlyRegisteredUser p, .wpProQuiz_loadQuiz p { margin: 20px ; font-weight: bold ; } .wpProQuiz_toplistTable { width: 100% ; border: 1px solid #C3D1A3 ; border-collapse: collapse ; margin: 0 ; } .wpProQuiz_toplistTable caption { caption-side:top ; text-align: left ; padding-bottom: 2px ; color: gray ; margin: 0 ; font-size: 11px ; } .wpProQuiz_toplistTable thead tr { background: rgb(155,187,89) ; padding: 5px ; color: white ; font-weight: bold ; } .wpProQuiz_toplistTable tbody td:FIRST-CHILD{ font-weight: bold ; } .wpProQuiz_toplistTable td, .wpProQuiz_toplistTable th { padding: 5px ; text-align: center ; border: 0 ; } .wpProQuiz_toplistTable th { background: #9BBB59 ; } .wpProQuiz_toplistTable th.col-pos { width: 10%; } .wpProQuiz_toplistTable th.col-name { text-align: right; } .wpProQuiz_toplistTable th.col-date { width: 25%; } .wpProQuiz_toplistTable th.col-points { width: 13%; } .wpProQuiz_toplistTable th.col-results { width: 15%; } .wpProQuiz_toplistTable td { text-align: center; font-size: 0.75em; } .wpProQuiz_toplistTable td.col-name { text-align: right; } .wpProQuiz_toplistTable td.col-date { font-size: 0.8em; } .wpProQuiz_toplistTrOdd { background-color: #EBF1DE ; } .wpProQuiz_content .wpProQuiz_addToplist { margin-top: 10px ; background-color: #F5FAEA ; padding: 10px ; border: 1px solid #C3D1A3 ; } .wpProQuiz_content .wpProQuiz_addToplistMessage { border: 1px solid rgb(160, 160, 160) ; background-color: #FCFFB3 ; margin-bottom: 5px ; border-radius: 5px ; padding: 5px ; font-weight: bold ; color: dimGray ; } .wpProQuiz_content .wpProQuiz_resultTable { margin: 15px auto ; width: 85%; border: 1px solid #C4C4C4 ; padding: 15px ; font-weight: bold ; } .wpProQuiz_content .wpProQuiz_resultTable table { width: 100% ; border-collapse: collapse ; margin: 0 ; border: 0 ; } .wpProQuiz_content .wpProQuiz_resultName { width: 35% ; min-width: 100px; border-left: 1px solid rgb(134, 134, 134) ; padding: 10px 0px ; border-bottom: 0 ; border-top: 0 ; border-right: 0 ; } .wpProQuiz_content .wpProQuiz_resultTable .wpProQuiz_resultValue { padding: 0 ; border: 0 ; } .wpProQuiz_content .wpProQuiz_resultTable .wpProQuiz_resultValue .progress-number { font-size: 0.8em; } .wpProQuiz_content .wpProQuiz_resultTable .wpProQuiz_resultValue_AvgScore .progress-meter { background-color: #6CA54C; } .wpProQuiz_content .wpProQuiz_resultTable .wpProQuiz_resultValue_YourScore .progress-meter { background-color: #F79646; } .wpProQuiz_content .wpProQuiz_resultValue div { color: black ; text-align: left ; box-shadow: -1px 1px 3px 1px #C4C4C4 ; display: inline-block ; height: 18px ; zoom: 1 ; *display: inline ; margin-left: 3px ; vertical-align: middle ; } .wpProQuiz_content .wpProQuiz_addBox label { display: inline ; } .wpProQuiz_content .wpProQuiz_addBox input[type="text"] { margin: 0 ; } .wpProQuiz_content .wpProQuiz_reviewQuestion { max-height: 100px; overflow-y: scroll; border: 1px solid #C3D1A3; background-color: #F8FAF5; position: relative; -webkit-overflow-scrolling: touch; } .wpProQuiz_content .wpProQuiz_box { border: 1px solid #C3D1A3; background-color: #F8FAF5; } .wpProQuiz_content .wpProQuiz_checkPage h3 { margin: 10px 0 10px 0; } .wpProQuiz_content .wpProQuiz_reviewQuestion ol, .wpProQuiz_checkPage ol { list-style-type: none ; margin: 0 ; padding: 5px 5px 0 12px ; zoom: 1 ; position: relative ; border: 0 ; } /* .wpProQuiz_content .wpProQuiz_reviewQuestion ol:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } */ .wpProQuiz_content .wpProQuiz_reviewQuestion li, .wpProQuiz_checkPage li { float: right ; margin: 0 0 5px 5px ; border: 1px solid #CFCFCF; padding: 5px 0 5px 0 ; width: 30px ; text-align: center ; background-color: white; cursor: pointer ; list-style-type: none ; background-image: none ; } /* .wpProQuiz_content .wpProQuiz_reviewQuestion div { position: absolute; right: 0; background-color: #B8B8B8; top: 0; height: 20px; width: 10px; border: 0; border-radius: 10px; cursor: move; } */ .wpProQuiz_content .wpProQuiz_reviewLegend { padding: 5px ; margin-bottom: 8px ; } .wpProQuiz_content .wpProQuiz_reviewLegend ol { list-style-type: none ; padding: 0 ; margin: 0 ; border: 0 ; } .wpProQuiz_content .wpProQuiz_reviewLegend li { float: right ; padding-left: 5px ; list-style-type: none ; margin: 0 ; border: 0 ; background-image: none ; } .wpProQuiz_content .wpProQuiz_reviewColor { height: 15px ; width: 15px ; display: inline-block ; margin-left: 2px ; } .wpProQuiz_content .wpProQuiz_reviewLegend span.wpProQuiz_AnweredColor { background-color: #6CA54C; } .wpProQuiz_content .wpProQuiz_reviewLegend span.wpProQuiz_reviewColor_Review { background-color: #FFB800; } .wpProQuiz_content .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionTarget { font-weight: bold; border-color: #7DB1D3 ; box-shadow: 0px 0px 2px 1px #C4C4C4; } .wpProQuiz_content .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionSolved, .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionSolved { background-color: #6CA54C; } .wpProQuiz_content .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionReview, .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionReview { background-color: #FFB800; } .wpProQuiz_content .wpProQuiz_button2 { border: 1px solid #DADADA ; background: whiteSmoke ; color: #303030 ; border-radius: 4px ; padding: 3px 5px ; box-shadow: -1px 1px 1px #A7A7A7 ; text-shadow: none ; filter: none ; margin: 0 ; font-weight: normal ; } .wpProQuiz_content .wpProQuiz_button2:hover { background: #EBEBEB ; } .wpProQuiz_content .wpProQuiz_reviewDiv { margin: 20px 0 20px 0 ; } .wpProQuiz_content .wpProQuiz_header { margin: 0px ; } .wpProQuiz_content .wpProQuiz_catOverview { margin-top: 10px; margin-bottom: 20px; } .wpProQuiz_content .wpProQuiz_catOverview li { list-style: none ; padding: 0 ; clear: right ; border-bottom: 1px dashed #aaa; height: 1.05em ; margin: 10px 0 0 0 ; position: relative ; } .wpProQuiz_content .wpProQuiz_catOverview span { background:#fff ; padding:0 0 0 3px ; float:right ; position:absolute ; text-decoration:none ; } .wpProQuiz_content span.wpProQuiz_catPercent { font-weight: bold ; padding-right: 5px ; color: #000 ; left: 0 ; } .wpProQuiz_content .wpProQuiz_forms { margin: 20px 0 20px 0 ; } .wpProQuiz_content .wpProQuiz_required { color: #F00 ; font-weight: bold ; } .wpProQuiz_content .wpProQuiz_invalidate { border: 1px solid #FFCFCF ; background: #FFEBE8 ; padding: 4px ; margin: 4px 0 4px 0 ; display: none; } .wpProQuiz_content .wpProQuiz_forms table { width: auto ; border-collapse: separate ; border-spacing: 2px ; } .wpProQuiz_content .wpProQuiz_forms td { vertical-align: top ; padding: 0 0 8px 0 ; margin: 0 ; border: 0 ; background: none ; } .wpProQuiz_content .wpProQuiz_forms input, .wpProQuiz_forms textarea, .wpProQuiz_forms label, .wpProQuiz_forms select { margin: 0 ; float: none ; display: inline ; } .wpProQuiz_content .wpProQuiz_forms select { width: auto ; }PKc\ƏXRR6themes/legacy/templates/learndash_lesson_video-rtl.cssnuW+Abody.learndash-cpt.learndash-embed-responsive .ld-video { position: relative; padding-bottom: 56.25%; /* padding-top: 30px; */ height: 0; overflow: hidden; } body.learndash-cpt.learndash-embed-responsive .ld-video iframe, body.learndash-cpt.learndash-embed-responsive .ld-video object, body.learndash-cpt.learndash-embed-responsive .ld-video embed, body.learndash-cpt.learndash-embed-responsive .ld-video video, body.learndash-cpt.learndash-embed-responsive .ld-video div.wp-video { top: 0; right: 0; width: 100% !important; height: 100%; } body.learndash-cpt.learndash-embed-responsive .ld-video iframe { position: absolute; } body.learndash-cpt.learndash-embed-responsive .ld-video[data-video-provider="vooplayer"] iframe { position: unset; } body.learndash-cpt.learndash-embed-responsive .wp-video, body.learndash-cpt.learndash-embed-responsive video.wp-video-shortcode, body.learndash-cpt.learndash-embed-responsive .mejs-container.mejs-video, body.learndash-cpt.learndash-embed-responsive .mejs-overlay.mejs-video.load { width: 100% !important; height: 100% !important; } body.learndash-cpt.learndash-embed-responsive .mejs-container.mejs-video { padding-top: 56.25%; } body.learndash-cpt.learndash-embed-responsive .wp-video, body.learndash-cpt.learndash-embed-responsive video.wp-video-shortcode { max-width: 100% !important; } body.learndash-cpt.learndash-embed-responsive video.wp-video-shortcode { position: relative; } body.learndash-cpt.learndash-embed-responsive .mejs-container.mejs-video .mejs-mediaelement { position: absolute; top: 0; left: 0; bottom: 0; right: 0; } body.learndash-cpt.learndash-embed-responsive .mejs-container.mejs-video .mejs-overlay-play { top: 0; left: 0; bottom: 0; right: 0; width: auto !important; height: auto !important; } PKc\d7?0themes/legacy/templates/course_details_admin.phpnuW+A
      ' . esc_html__( 'Month', 'learndash' ) . ''; $day_field = '' . esc_html__( 'Day', 'learndash' ) . ''; $year_field = '' . esc_html__( 'Year', 'learndash' ) . ''; $hour_field = '' . esc_html__( 'Hour', 'learndash' ) . ''; $minute_field = '' . esc_html__( 'Minute', 'learndash' ) . ''; $field_buf = sprintf( // translators: placeholders: Month Name, Day number, Year number, Hour number, Minute number. esc_html__( '%1$s %2$s, %3$s @ %4$s:%5$s' ), $month_field, $day_field, $year_field, $hour_field, $minute_field ); echo $field_buf; /* ?>
      $course_id, 'widget_instance' => $widget_instance ); $widget_data_json = htmlspecialchars( json_encode( $widget_data ) ); if ( $widget_instance['show_widget_wrapper'] != false ) { ?>
      ID ) ) { ?>
      span { overflow: hidden; margin: 0 0 0 5px; } .course_navigation .learndash_topic_widget_list > ul { margin: 0; } .course_navigation .learndash-current-menu-item a { font-weight: bold; } .learndash .learndash_topic_dots.type-list a > span { min-width: 80%; } #learndash_course_content .learndash_topic_dots ul{ padding: 0 ; margin: 0 ; } #learndash_course_content .learndash_topic_dots ul > li { width: 100%; display: block; background: white; } #learndash_course_content .learndash_topic_dots ul > li a { padding: 0 10px 0 10px; } #learndash_course_content .learndash_topic_dots ul > li:nth-of-type(odd) { background: #f3f3f3; } .list_arrow.expand { background: url("images/gray_arrow_expand.png") no-repeat scroll 0 50% transparent; padding: 5px; } .active .list_arrow.expand { background: url("images/green_arrow_expand.png") no-repeat scroll 0 50% transparent; padding: 5px; } .active .list_arrow.collapse { background: url("images/green_arrow_collapse.png") no-repeat scroll 0 50% transparent; padding: 5px; } .list_arrow.collapse { background: url("images/gray_arrow_collapse.png") no-repeat scroll 0 50% transparent; padding: 5px; } .list_arrow.collapse.lesson_completed { background: url("images/green_arrow_collapse.png") no-repeat scroll 0 50% transparent; padding: 5px; } .lesson_incomplete.list_arrow.collapse { background: url("images/gray_arrow_collapse.png") no-repeat scroll 0 50% transparent; padding: 5px; } .list_arrow.expand.lesson_completed { background: url("images/green_arrow_expand.png") no-repeat scroll 0 50% transparent; padding: 5px; } .lesson_incomplete.list_arrow.expand { background: url("images/gray_arrow_expand.png") no-repeat scroll 0 50% transparent; padding: 5px; } .rtl .active .list_arrow.collapse, .rtl .list_arrow.collapse.lesson_completed { background-image: url("images/green_arrow_collapse_rtl.png"); } .rtl .list_arrow.collapse, .rtl .lesson_incomplete.list_arrow.collapse { background-image: url("images/gray_arrow_collapse_rtl.png"); } .certificate_icon { background: url("images/certificate-icon-small.png") no-repeat scroll 0 0 transparent; width: 23px; height: 23px; margin: auto; background-size: 23px; } .certificate_icon_large { background: url("images/certificate-icon-large.png") no-repeat scroll 0 0 transparent; width: 53px; height: 53px; margin: auto; background-size: 40px; } .statistic_icon { background: url("images/statistics-icon-small.png") no-repeat scroll 0 0 transparent; width: 23px; height: 23px; margin: auto; background-size: 23px; } .learndash_profile_quizzes .certificate { vertical-align: middle; } .learndash_profile_quizzes .statistics { vertical-align: middle; } .learndash_profile_quizzes .scores { vertical-align: middle; } .learndash_profile_quizzes .learndash_profile_quiz_heading .certificate { vertical-align: middle; } .learndash_profile_quizzes .scores, .learndash_profile_quizzes .quiz_date, .learndash_profile_quizzes .certificate, .learndash_profile_quizzes .statistics { text-align: center; } .learndash_profile_quizzes .passed .scores { color: green; } /*.learndash_profile_quizzes .passed .quiz_title { background: url("images/check.png") no-repeat scroll 4% 50% transparent; padding-left: 6% } .learndash_profile_quizzes .failed .quiz_title { background: url("images/cross.png") no-repeat scroll 4% 60% transparent; padding-left: 6% }*/ .learndash_profile_quizzes .passed_icon { background: url("images/check.png") no-repeat left bottom; display: inline-block; width: 13px; height: 13px; margin-left: 3%; margin-right: 3%; } .learndash_profile_quizzes .failed_icon { background: url("images/cross.png") no-repeat left bottom; display: inline-block; width: 13px; height: 13px; margin-left: 3%; margin-right: 3%; } .learndash_profile_quizzes .pending_icon { background: url("images/pending.png") no-repeat left bottom; display: inline-block; width: 13px; height: 13px; margin-left: 3%; margin-right: 3%; } /*.rtl .learndash_profile_quizzes .passed .quiz_title, .rtl .learndash_profile_quizzes .failed .quiz_title { padding-left: 0; padding-right: 6%; background-position: 96% 60%; }*/ .rtl .learndash_profile_quizzes .passed_icon , .rtl .learndash_profile_quizzes .failed_icon, .rtl .learndash_profile_quizzes .pending_icon { background-position: right bottom; } #learndash_profile .profile_info { padding: 15px; overflow: hidden; } #learndash_profile .profile_info .profile_avatar { border: 0;float:left; margin-right: 15px; width: 108px; } .rtl #learndash_profile .profile_info .profile_avatar { float: right; } #learndash_profile .profile_info .profile_avatar img { border: 6px solid #f3f3f3; box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box; } #learndash_profile .learndash_profile_details { float:left; } #learndash_profile .learndash_profile_details > div { margin-top: 9px; } .rtl #learndash_profile .learndash_profile_details { float: right; margin-right: 10px; } .learndash_navigation_lesson_topics_list .list_arrow.expand { background-position: 50% 10px; } .learndash_navigation_lesson_topics_list .list_arrow.collapse { background-position: 50% 5px; } #learndash_profile .list_arrow.expand { background-position: 50% 30px; } #learndash_profile .list_arrow.collapse { background-position: 50% 27px; } #learndash_lesson_topics_list ul > li:nth-of-type(odd) { background: #f9f9f9; } #learndash_course_content .learndash_topic_dots .nth-of-type-odd, .learndash_navigation_lesson_topics_list .nth-of-type-odd{ background: #f3f3f3; } #learndash_lesson_topics_list ul > li.nth-of-type-odd { background: #f9f9f9; } #learndash_course_content .learndash_topic_dots ul > li:hover { background: #ddd; } #learndash_course_content #learndash_lessons .learndash_topic_dots { display:none; } #learndash_lessons a, #learndash_quizzes a, .expand_collapse a, .learndash_topic_dots a, .learndash_topic_dots a > span, #learndash_lesson_topics_list span a, #learndash_profile a, #learndash_profile a span { color: #5980bb; text-decoration: none ; font-weight: 100; font-size: 12px; font-family: 'Verdana', 'Geneva', sans-serif; } .learndash .completed, #learndash_profile .completed { background: url(images/completed.png) no-repeat; display: block; line-height: 53px; background-position: 97.9% center; padding-left: 2%; padding-right: 2%; } .learndash .notcompleted, #learndash_profile .notcompleted { background: url(images/notcompleted.png) no-repeat; display: block; line-height: 53px; background-position: 97.9% center; padding-left: 2%; padding-right: 2%; } .learndash .notavailable, #learndash_profile .notavailable { background: url(images/notavailable.png) no-repeat; display: block; line-height: 53px; background-position: 97.9% center; padding-left: 2%; padding-right: 2%; } .rtl .learndash .completed, .rtl #learndash_profile .completed, .rtl .learndash .notcompleted, .rtl #learndash_profile .notcompleted, .rtl .learndash .notavailable, .rtl #learndash_profile .notavailable { background-position: 2.1% center; } .notavailable { color: gray; text-decoration: none; cursor: default; } h4 small#notavailable_message { display:none; } .learndash h4 small#notavailable_message { font-weight: 100; display: block; } /*a#course_navigation_course_link { background-position: right; font-size: 14px; font-weight: bold; width: 300px; vertical-align: middle; }*/ /*.course_title{ background: url("images/home_icon.png") no-repeat scroll 0 50% transparent; background-position: 95% 50%; background-color : #ddd; padding: 10px; }*/ .course_navigation a { text-decoration: none; } small.notavailable_message { padding-left: 35px; } #learndash_back_to_lesson { margin-bottom: 15px; } .widget_sfwd-lessons-widget .completed { font-style: italic; text-decoration: line-through; } .ld-entry-content .attachment-post-thumbnail { float:left; margin: 15px; } .ld-course-info-my-courses h2 { display: inline; } .ld-course-info-my-courses img { display: inline; margin-right: 5%; max-width: 30%; vertical-align: middle; } #learndash_lessons .right, #learndash_quizzes .right, #learndash_profile .learndash_profile_heading .ld_profile_status { float: right; text-align: center; width: 53px; } #learndash_profile .learndash_profile_heading .ld_profile_certificate { float: right; text-align: center; margin-right: 20px; } #learndash_profile .learndash-course-link { width: 70%; float: left; } #learndash_profile .learndash-course-link a { display: block; line-height: 53px; padding: 10px 2%; text-decoration: none ; box-shadow: none; } #learndash_profile .learndash-course-status { width: 53px; float: right; margin: 0 15px; } #learndash_profile .learndash-course-status a { text-indent: -999em; line-height: 53px; padding: 10px 2%; text-decoration: none ; box-shadow: none; } #learndash_profile .learndash-course-certificate { width: 48px; float: right; text-align: center; margin: 0 15px; } #learndash_profile .learndash-course-certificate a { display: block; line-height: 53px; padding: 18px 2% 0 2%; text-decoration: none ; box-shadow: none; } .rtl #learndash_lessons .right, .rtl #learndash_quizzes .right, .rtl #learndash_profile .right { float: left; } #learndash_lessons, #learndash_quizzes, #learndash_profile, #learndash_lesson_topics_list > div { background-color: #FFFFFF; border: 1px solid #DDDDDD; border-radius: 4px; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); margin-bottom: 20px; clear: both; } #learndash_profile { margin-top: 15px; } /*.course_navigation { background-color: #FFFFFF; border: 1px solid #DDDDDD; border-radius: 4px; margin-bottom: 20px; }*/ #learndash_lessons #lesson_heading, #learndash_profile .learndash_profile_heading, #learndash_quizzes #quiz_heading , #learndash_lesson_topics_list div > strong { background-color: #f3f3f3; color: #333333; border-top-left-radius: 3px; border-top-right-radius: 3px; padding: 1% 2%; padding: 1% 3%\9; /* IE8 and below */ font-weight: normal; margin: 0; display: block; } .learndash_profile_quiz_heading { background-color: #f3f3f3; padding: 1% 2%; padding: 1% 3%\9; /* IE8 and below */ } #learndash_lesson_topics_list div > strong { border-bottom: 1px solid #ddd; } .widget_sfwd-lessons-widget ul li a {font-size: 12px ; line-height: 12px ; } .widget_sfwd-lessons-widget ul {padding: 10px ;} .widget_sfwd-lessons-widget ul > li > h4 {margin: 0; padding: 0;} #learndash_lessons > div > div, #learndash_quizzes > div > div { border: 1px solid #ddd; } #learndash_lessons h4 > a:hover, #learndash_quizzes h4 > a:hover, #learndash_lesson_topics_list ul > li > span.topic_item:hover { background-color: #ddd; } #learndash_lessons a, #learndash_quizzes a, .expand_collapse a, .learndash_topic_dots a, .learndash_topic_dots a > span, #learndash_lesson_topics_list span a { text-decoration: none ; font-weight: 100; font-size: 12px; } #learndash_lessons, #learndash_quizzes, .expand_collapse, .notavailable_message, #learndash_lesson_topics_list div > strong, #learndash_lesson_topics_list div ul > li .sn, .learndash_profile_heading, #learndash_profile a, #learndash_profile div { font-size: 12px; font-weight: normal; } #learndash_profile .course_progress { width: 74%; float: left; margin: 2%; } #learndash_profile #course_list .right { /* width: 20% ;*/ padding: 2%; text-align: center; line-height: 20px; } .learndash_profile_quizzes > div > div { padding: 5px 0; } .expand_collapse { width: 100%; line-height: 0; text-align: right; position: relative; top: -10px; float: right; } .rtl .expand_collapse { text-align: left; } .expand_collapse a, #learndash_profile .expand_collapse a { color: black; font-size: 10px; } #lessons_list, #course_list, #quiz_list,.learndash_profile_quizzes, #learndash_lesson_topics_list ul, .learndash_navigation_lesson_topics_list { display: table; width: 100%; margin-bottom: 0; } #learndash_lesson_topics_list ul { padding: 0; margin-left: 0; } #lessons_list > div,#course_list > div, #quiz_list > div, .learndash_profile_quizzes > div, #learndash_lesson_topics_list ul > li, .learndash_navigation_lesson_topics_list > div { display: table-row; } .learndash_topic_dots .sn {display: none;} #lessons_list > div > div, #course_list > div > div, #quiz_list > div > div, .single-sfwd-lessons #learndash_lesson_topics_list ul > li > span.sn , .singular-sfwd-lessons #learndash_lesson_topics_list ul > li > span.sn { display: table-cell; width: 5%; text-align: center; border-right: 1px solid #ddd; border-top: 1px solid #ddd; } .learndash_navigation_lesson_topics_list > div > div.list_arrow { display: table-cell; width: 16px; text-align: center; padding: 0 ; } .learndash_profile_quizzes > div > div { display: table-cell; } #learndash_profile .profile_edit_profile { text-align: center; line-height: 1em; } #learndash_profile .profile_edit_profile a { font-size: 10px; } .rtl #lessons_list > div > div,.rtl #course_list > div > div,.rtl #quiz_list > div > div, .rtl .single-sfwd-lessons #learndash_lesson_topics_list ul > li > span.sn , .rtl .singular-sfwd-lessons #learndash_lesson_topics_list ul > li > span.sn { border-left: 1px solid #ddd; border-right: 0; } .learndash_navigation_lesson_topics_list .learndash_topic_dots.type-list a > span { padding: 0 0 0 25px; } .course_navigation .learndash_navigation_lesson_topics_list .lesson { margin: 5px; } .course_navigation .learndash_navigation_lesson_topics_list ul li { margin-left: 0; list-style: none; background: none; } .course_navigation .learndash_navigation_lesson_topics_list .learndash_topic_dots.type-list ul > li { padding-left: 10px; } .widget ul.learndash-topic-quiz-list { margin-left: 15px; } .course_navigation .learndash-current-menu-item ul li a { font-weight: normal; } #lessons_list > div h4, #course_list > div h4, #quiz_list > div h4, #learndash_lesson_topics_list ul > li > span.topic_item { display: table-cell; width: 95%; border-top: 1px solid #ddd; padding: 0; } .widget_course_return, .course_navigation .widget_course_return a{ font-size: 12px; } .widget_course_return { border-top: 1px solid #ddd; margin-top: 10px; padding-top: 10px; } #learndash_lesson_topics_list ul > li > span.topic_item, .single-sfwd-lessons #learndash_lesson_topics_list ul > li > span.sn, .singular-sfwd-lessons #learndash_lesson_topics_list ul > li > span.sn { border-top: 0px; } #lessons_list > div h4 > a, #course_list > div h4 > a, #quiz_list > div h4 > a { padding-top: 10px; padding-bottom: 10px; padding-left: 2%; display: block; padding-right: 75px; /*line-height: 2em; min-height: 75px;*/ } .rtl #lessons_list > div h4 > a,.rtl #course_list > div h4 > a,.rtl #quiz_list > div h4 > a { padding-left: 75px; padding-right: 2%; } .single-sfwd-lessons #learndash_lesson_topics_list ul > li > span a, .singular-sfwd-lessons #learndash_lesson_topics_list ul > li > span a { padding-left: 2%; display: block; } .rtl.single-sfwd-lessons #learndash_lesson_topics_list ul > li > span a, .rtl.singular-sfwd-lessons #learndash_lesson_topics_list ul > li > span a { padding-right: 2%; } .learndash_topic_dots.type-list a{display: block;} .list-count, .widget .list-count {display: none;} #lessons_list .list-count, #quiz_list .list-count{display: table-cell;} .btn-join, #btn-join, .learndash_checkout_buttons input.btn-join[type="button"], a#quiz_continue_link { border: none; font-weight: normal; background: #5CB85C; -webkit-font-smoothing: subpixel-antialiased; -webkit-transition: border .25s linear, color .25s linear, background-color .25s linear, background .25s linear ; transition: border .25s linear, color .25s linear, background-color .25s linear, background .25s linear ; color: #ffffff ; background-color: #5CB85C; padding: 10px 19px; font-size: 17px; line-height: 1.471; border-radius: 6px; white-space: normal; text-decoration: none ; height: auto ; cursor: pointer; } .btn-join:hover, .btn-join:focus, .btn-join:active, .btn-join:visited, .btn-join.active, #btn-join:hover, #btn-join:focus, a#quiz_continue_link:hover, .learndash_checkout_buttons input.btn-join[type="button"]:hover, a#quiz_continue_link:focus { color: #ffffff; background-color: #58d68d; border-color: #58d68d; } .btn-join:active, .btn-join.active, #btn-join:active, #btn-join.active, a#quiz_continue_link:active { background-color: #27ad60; border-color: #27ad60; } .btn-blue, .learndash_checkout_button input[type="submit"] { border: none; font-weight: normal; -webkit-font-smoothing: subpixel-antialiased; -webkit-transition: border .25s linear, color .25s linear, background-color .25s linear, background .25s linear ; transition: border .25s linear, color .25s linear, background-color .25s linear, background .25s linear ; color: #ffffff ; background-color: #3498DB; background: #3498DB; padding: 10px 19px; font-size: 17px; line-height: 1.471; border-radius: 6px; white-space: normal; text-decoration: none ; } a.btn-blue:hover, .btn-blue:hover, .learndash_checkout_button input[type="submit"]:hover, a.btn-blue:focus, .btn-blue:focus, .learndash_checkout_button input[type="submit"]:focus, a.btn-blue:active, .btn-blue:active, .learndash_checkout_button input[type="submit"]:active, a.btn-blue:visited, .btn-blue:visited, .learndash_checkout_button input[type="submit"]:visited { color: #ffffff; background-color: #5dade2; border-color: #5dade2; } .quiz_continue_link, .slickQuizWrapper .quizReturn{ margin: 20px 0 ; } dd.course_progress { display: block; margin: 10px auto; padding: 0; position: relative; width: 90%; background-color: #F5F5F5; border: medium none; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset; height: 20px; overflow: hidden; } dd.course_progress div.course_progress_blue { display: block; position: relative; text-align: right; width: 75%; background-color: #5CB85C ; box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.15) inset; color: #FFFFFF; float: left; font-size: 12px; height: 100% ; transition: width 0.6s ease 0s; } #learndash_course_content_title {margin-bottom: 5px ;} #course_progress_details > strong {line-height: 1.6;} .no_radius { border-radius: 0 ; } .quiz_title { width: 55%; line-height: 25px; padding-left: 12px ; } .certificate { width: 15%; } .scores { width: 10%; } .quiz_date { width: 20%; } #learndash_next_prev_link {margin-top: 10px;} #learndash_next_prev_link a.prev-link { float: left;} #learndash_next_prev_link a.next-link { float: right;} #ld_categorydropdown { margin: 20px 0; } #ld_categorydropdown form { display: inline-block; } #ld_categorydropdown select { margin-left: 10px; } #ld_categorydropdown span { font-weight: bold; } #learndash_course_certificate { margin: 10px 0; } .wpProQuiz_content { position: relative; } .wpProQuiz_spinner { position: absolute; left: -2%; top: -2%; width: 104%; height: 104%; background: white; z-index: 10000; opacity: 0.9; filter: alpha(opacity=40); /* For IE8 and earlier */ } .wpProQuiz_spinner > div { background-image: url(images/spinner.gif); position: relative; margin: auto; width: 128px; height: 128px; top: 30%; } .wpProQuiz_questionList .graded-disclaimer { font-size: .8rem; } .wpProQuiz_questionList .graded-disclaimer { font-size: .8rem; } .wpProQuiz_upload_essay { padding: 11px; font-size: .75em; } .jq-dropdown .jq-dropdown-menu { overflow: hidden ; } .jq-dropdown .jq-dropdown-menu li { list-style: none ; list-style-type: none ; margin: 0 ; padding: 0 ; overflow: hidden ; } .course_navigation ul.learndash-course-quiz-list { margin-left: 0; list-style: none; } .course_navigation ul.learndash-course-quiz-list li { margin-left: 0; list-style: none; } form.sfwd-mark-complete input.learndash_mark_complete_button[disabled] { color: #aaa; } form.sfwd-mark-complete p.ld-video-delay-message { } form.sfwd-mark-complete p.ld-video-delay-message span.time-countdown { background-color: #CCC; padding: 0 2px; } /* [user_groups] shortcode styles. See template/user_group_shortcode.php for details. */ .learndash-user-groups { } .learndash-user-groups .learndash-user-groups-section { clear: both; } .learndash-user-groups .learndash-user-groups-section .learndash-user-groups-header, .learndash-user-groups .learndash-user-groups-section .learndash-user-groups-item-title { clear: both; font-weight: bold; } .learndash-user-groups .learndash-user-groups-section ul.learndash-user-groups-items { list-style: none; margin-left: 15px; }PKc\vSgg/themes/legacy/templates/learndash_pager.min.cssnuW+A.learndash-pager{clear:both;position:relative;margin:5px 0;padding-bottom:10px;width:100%;min-height:25px}.learndash-pager a{text-decoration:none!important;padding:0 6px;box-shadow:none!important;background-color:#f7f7f7;cursor:pointer;display:inline!important}.learndash-pager a.disabled{opacity:.5}.learndash-pager span.pager-left{display:inline;float:left;margin-right:5px}.learndash-pager .pager-legend{display:inline;position:relative;float:left}.learndash-pager .pager-legend .pagedisplay{display:inline;position:relative;float:left;margin-left:5px}.learndash-pager span.pager-right{display:inline;float:left}PKc\pdii<themes/legacy/templates/learndash_course_student_message.phpnuW+A

      |
      ID; ?>' class=''>

      ' href='ID, $course_id ); ?>'>post_title; ?> $user_id, 'course_id' => learndash_get_course_id( $lesson['post']->ID ), 'lesson_id' => $lesson['post']->ID, 'lesson_access_from_int' => $lesson['lesson_access_from'], 'lesson_access_from_date' => learndash_adjust_date_time_display( $lesson['lesson_access_from'] ), 'context' => 'course_content_shortcode', ), true ); ?> ID ]; ?>
      ID; ?>' class='learndash_topic_dots type-list'>
        $topic ) : ?> completed ) ? 'topic-notcompleted' : 'topic-completed'; ?>
      • post_title; ?>

      $course_pager_results['pager'], 'pager_context' => 'course_content' ) ); } ?>
      PKc\=#uu@themes/legacy/templates/learndash_course_not_started_message.phpnuW+A
      li { padding: 3px; margin-bottom: 5px; background-image: none; margin-right: 0; list-style: none; } #wpProQuiz_user_content .wpProQuiz_answerCorrect { background: #6DB46D; font-weight: bold; } #wpProQuiz_user_content .wpProQuiz_answerIncorrect { background: #FF9191; font-weight: bold; } #wpProQuiz_user_content .wpProQuiz_sortable { padding: 5px; border: 1px solid lightGrey; background-color: #F8FAF5; } #wpProQuiz_user_content .wpProQuiz_questionList table { border-collapse: collapse; margin: 0; padding: 0; width: 100%; } #wpProQuiz_user_content .wpProQuiz_questionList table { border-collapse: collapse; } #wpProQuiz_user_content .wpProQuiz_mextrixTr > td { border: 1px solid #D1D1D1; padding: 5px; vertical-align: middle; } #wpProQuiz_user_content .wpProQuiz_maxtrixSortCriterion { padding: 5px; } #wpProQuiz_user_content .wpProQuiz_sortStringItem { margin: 0; background-image: none; list-style: none; padding: 5px; border: 1px solid lightGrey; background-color: #F8FAF5; } #wpProQuiz_user_content .wpProQuiz_cloze { padding: 0 4px 2px 4px; border-bottom: 1px solid #000; } #wpProQuiz_user_content .alignleft { display: inline; float: right; margin-left: 1.5em; } #wpProQuiz_user_content .alignright { display: inline; float: left; margin-right: 1.5em; } #wpProQuiz_user_content .aligncenter { clear: both; display: block; margin-right: auto; margin-left: auto; } #wpProQuiz_user_content .wpProQuiz_response { background: #f8faf5 none repeat scroll 100% 0; border: 1px solid #c4c4c4; box-shadow: -1px 1px 2px #aaa; margin-bottom: 15px; padding: 5px; } #wpProQuiz_user_content .wpProQuiz_response:empty { display:none; }PKc\ ʩ Cthemes/legacy/templates/learndash_lesson_assignment_upload_form.phpnuW+A 0 ) { $assignments = learndash_get_user_assignments( $course_step_post->ID, $user_id ); if ( ( !empty( $assignments ) ) && ( count( $assignments ) >= $assignment_upload_limit_count ) ) { return; } } } $ret = ''; $ret .= '
      ' . esc_html__( 'Upload Assignment', 'learndash' ) . '
      '. $upload_message .'
      '; echo $ret; }PKc\RAthemes/legacy/templates/learndash_course_lesson_not_available.phpnuW+AAvailable on: %s', 'learndash' ) ), learndash_adjust_date_time_display( $lesson_access_from_int ) ); $wrap_start = ''; $wrap_end = ''; // The figure out how to display it if ( $context == 'lesson' ) { // On the lesson single we display additional information. $message .= '

      '. sprintf( esc_html_x( 'Return to %s Overview', 'Return to Course Overview Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ) . ''; $wrap_start = '
      '; $wrap_end = '
      '; } else if ( $context == 'course' ) { // No changes for course } else { // Default no changes } echo $wrap_start . apply_filters( 'learndash_lesson_available_from_text', $message, get_post( $lesson_id ), $lesson_access_from_int ) . $wrap_end; PKc\$P2themes/legacy/templates/course_registered_rows.phpnuW+A

      • post_title; ?> post_content ) ) { SFWD_LMS::content_filter_control( false ); $group_content = apply_filters('the_content', $group->post_content); $group_content = str_replace(']]>', ']]>', $group_content ); echo $group_content; SFWD_LMS::content_filter_control( true ); } ?>
      • post_title; ?> post_content ) ) { $group_content = apply_filters('the_excerpt', $group->post_content); $group_content = str_replace(']]>', ']]>', $group_content ); echo $group_content; } ?>
      PKc\CC+themes/legacy/templates/learndash_pager.phpnuW+AArray * ( * [paged] => 1 * [total_items] => 30 * [total_pages] => 2 * ) */ ?> '; $wrapper_after = ''; if ( $pager_results['total_pages'] > 1 ) { if ( ( ! isset( $href_query_arg ) ) || ( empty( $href_query_arg ) ) ) { switch( $pager_context ) { case 'course_lessons': $href_query_arg = 'ld-lesson-page'; break; case 'course_lesson_topics': $href_query_arg = 'ld-topic-page'; break; case 'profile': $href_query_arg = 'ld-profile-page'; break; case 'course_content': $href_query_arg = 'ld-courseinfo-lesson-page'; break; // These are just here to show the existing different context items. case 'course_info_registered': case 'course_info_courses': case 'course_info_quizzes': case 'course_navigation_widget': case 'course_navigation_admin': case 'course_list': default: break; } } $pager_left_disabled = ''; $pager_left_class = ''; if ( $pager_results['paged'] == 1 ) { $pager_left_disabled = ' disabled="disabled" '; $pager_left_class = 'disabled'; } $prev_page_number = ( $pager_results['paged'] > 1 ) ? $pager_results['paged'] - 1 : 1; $pager_right_disabled = ''; $pager_right_class = ''; if ( $pager_results['paged'] == $pager_results['total_pages'] ) { $pager_right_disabled = ' disabled="disabled" '; $pager_right_class = 'disabled'; } $next_page_number = ( $pager_results['paged'] < $pager_results['total_pages'] ) ? $pager_results['paged'] + 1 : $pager_results['total_pages']; echo $wrapper_before; ?> href="" data-paged="1" class="" title="">« href="" data-paged="" class="" title="">‹ href="" data-paged="" class="" title="">› href="" data-paged="" class="" title="">» / span { overflow: hidden; margin: 0 5px 0 0; } .course_navigation .learndash_topic_widget_list > ul { margin: 0; } .course_navigation .learndash-current-menu-item a { font-weight: bold; } .learndash .learndash_topic_dots.type-list a > span { min-width: 80%; } #learndash_course_content .learndash_topic_dots ul{ padding: 0 ; margin: 0 ; } #learndash_course_content .learndash_topic_dots ul > li { width: 100%; display: block; background: white; } #learndash_course_content .learndash_topic_dots ul > li a { padding: 0 10px 0 10px; } #learndash_course_content .learndash_topic_dots ul > li:nth-of-type(odd) { background: #f3f3f3; } .list_arrow.expand { background: url("images/gray_arrow_expand.png") no-repeat scroll 100% 50% transparent; padding: 5px; } .active .list_arrow.expand { background: url("images/green_arrow_expand.png") no-repeat scroll 100% 50% transparent; padding: 5px; } .active .list_arrow.collapse { background: url("images/green_arrow_collapse.png") no-repeat scroll 100% 50% transparent; padding: 5px; } .list_arrow.collapse { background: url("images/gray_arrow_collapse.png") no-repeat scroll 100% 50% transparent; padding: 5px; } .list_arrow.collapse.lesson_completed { background: url("images/green_arrow_collapse.png") no-repeat scroll 100% 50% transparent; padding: 5px; } .lesson_incomplete.list_arrow.collapse { background: url("images/gray_arrow_collapse.png") no-repeat scroll 100% 50% transparent; padding: 5px; } .list_arrow.expand.lesson_completed { background: url("images/green_arrow_expand.png") no-repeat scroll 100% 50% transparent; padding: 5px; } .lesson_incomplete.list_arrow.expand { background: url("images/gray_arrow_expand.png") no-repeat scroll 100% 50% transparent; padding: 5px; } .rtl .active .list_arrow.collapse, .rtl .list_arrow.collapse.lesson_completed { background-image: url("images/green_arrow_collapse_rtl.png"); } .rtl .list_arrow.collapse, .rtl .lesson_incomplete.list_arrow.collapse { background-image: url("images/gray_arrow_collapse_rtl.png"); } .certificate_icon { background: url("images/certificate-icon-small.png") no-repeat scroll 100% 0 transparent; width: 23px; height: 23px; margin: auto; background-size: 23px; } .certificate_icon_large { background: url("images/certificate-icon-large.png") no-repeat scroll 100% 0 transparent; width: 53px; height: 53px; margin: auto; background-size: 40px; } .statistic_icon { background: url("images/statistics-icon-small.png") no-repeat scroll 100% 0 transparent; width: 23px; height: 23px; margin: auto; background-size: 23px; } .learndash_profile_quizzes .certificate { vertical-align: middle; } .learndash_profile_quizzes .statistics { vertical-align: middle; } .learndash_profile_quizzes .scores { vertical-align: middle; } .learndash_profile_quizzes .learndash_profile_quiz_heading .certificate { vertical-align: middle; } .learndash_profile_quizzes .scores, .learndash_profile_quizzes .quiz_date, .learndash_profile_quizzes .certificate, .learndash_profile_quizzes .statistics { text-align: center; } .learndash_profile_quizzes .passed .scores { color: green; } /*.learndash_profile_quizzes .passed .quiz_title { background: url("images/check.png") no-repeat scroll 4% 50% transparent; padding-left: 6% } .learndash_profile_quizzes .failed .quiz_title { background: url("images/cross.png") no-repeat scroll 4% 60% transparent; padding-left: 6% }*/ .learndash_profile_quizzes .passed_icon { background: url("images/check.png") no-repeat right bottom; display: inline-block; width: 13px; height: 13px; margin-right: 3%; margin-left: 3%; } .learndash_profile_quizzes .failed_icon { background: url("images/cross.png") no-repeat right bottom; display: inline-block; width: 13px; height: 13px; margin-right: 3%; margin-left: 3%; } .learndash_profile_quizzes .pending_icon { background: url("images/pending.png") no-repeat right bottom; display: inline-block; width: 13px; height: 13px; margin-right: 3%; margin-left: 3%; } /*.rtl .learndash_profile_quizzes .passed .quiz_title, .rtl .learndash_profile_quizzes .failed .quiz_title { padding-left: 0; padding-right: 6%; background-position: 96% 60%; }*/ .rtl .learndash_profile_quizzes .passed_icon , .rtl .learndash_profile_quizzes .failed_icon, .rtl .learndash_profile_quizzes .pending_icon { background-position: left bottom; } #learndash_profile .profile_info { padding: 15px; overflow: hidden; } #learndash_profile .profile_info .profile_avatar { border: 0;float:right; margin-left: 15px; width: 108px; } .rtl #learndash_profile .profile_info .profile_avatar { float: left; } #learndash_profile .profile_info .profile_avatar img { border: 6px solid #f3f3f3; box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box; } #learndash_profile .learndash_profile_details { float:right; } #learndash_profile .learndash_profile_details > div { margin-top: 9px; } .rtl #learndash_profile .learndash_profile_details { float: left; margin-left: 10px; } .learndash_navigation_lesson_topics_list .list_arrow.expand { background-position: 50% 10px; } .learndash_navigation_lesson_topics_list .list_arrow.collapse { background-position: 50% 5px; } #learndash_profile .list_arrow.expand { background-position: 50% 30px; } #learndash_profile .list_arrow.collapse { background-position: 50% 27px; } #learndash_lesson_topics_list ul > li:nth-of-type(odd) { background: #f9f9f9; } #learndash_course_content .learndash_topic_dots .nth-of-type-odd, .learndash_navigation_lesson_topics_list .nth-of-type-odd{ background: #f3f3f3; } #learndash_lesson_topics_list ul > li.nth-of-type-odd { background: #f9f9f9; } #learndash_course_content .learndash_topic_dots ul > li:hover { background: #ddd; } #learndash_course_content #learndash_lessons .learndash_topic_dots { display:none; } #learndash_lessons a, #learndash_quizzes a, .expand_collapse a, .learndash_topic_dots a, .learndash_topic_dots a > span, #learndash_lesson_topics_list span a, #learndash_profile a, #learndash_profile a span { color: #5980bb; text-decoration: none ; font-weight: 100; font-size: 12px; font-family: 'Verdana', 'Geneva', sans-serif; } .learndash .completed, #learndash_profile .completed { background: url(images/completed.png) no-repeat; display: block; line-height: 53px; background-position: 2.0999999999999943% center; padding-right: 2%; padding-left: 2%; } .learndash .notcompleted, #learndash_profile .notcompleted { background: url(images/notcompleted.png) no-repeat; display: block; line-height: 53px; background-position: 2.0999999999999943% center; padding-right: 2%; padding-left: 2%; } .learndash .notavailable, #learndash_profile .notavailable { background: url(images/notavailable.png) no-repeat; display: block; line-height: 53px; background-position: 2.0999999999999943% center; padding-right: 2%; padding-left: 2%; } .rtl .learndash .completed, .rtl #learndash_profile .completed, .rtl .learndash .notcompleted, .rtl #learndash_profile .notcompleted, .rtl .learndash .notavailable, .rtl #learndash_profile .notavailable { background-position: 97.9% center; } .notavailable { color: gray; text-decoration: none; cursor: default; } h4 small#notavailable_message { display:none; } .learndash h4 small#notavailable_message { font-weight: 100; display: block; } /*a#course_navigation_course_link { background-position: right; font-size: 14px; font-weight: bold; width: 300px; vertical-align: middle; }*/ /*.course_title{ background: url("images/home_icon.png") no-repeat scroll 0 50% transparent; background-position: 95% 50%; background-color : #ddd; padding: 10px; }*/ .course_navigation a { text-decoration: none; } small.notavailable_message { padding-right: 35px; } #learndash_back_to_lesson { margin-bottom: 15px; } .widget_sfwd-lessons-widget .completed { font-style: italic; text-decoration: line-through; } .ld-entry-content .attachment-post-thumbnail { float:right; margin: 15px; } .ld-course-info-my-courses h2 { display: inline; } .ld-course-info-my-courses img { display: inline; margin-left: 5%; max-width: 30%; vertical-align: middle; } #learndash_lessons .right, #learndash_quizzes .right, #learndash_profile .learndash_profile_heading .ld_profile_status { float: left; text-align: center; width: 53px; } #learndash_profile .learndash_profile_heading .ld_profile_certificate { float: left; text-align: center; margin-left: 20px; } #learndash_profile .learndash-course-link { width: 70%; float: right; } #learndash_profile .learndash-course-link a { display: block; line-height: 53px; padding: 10px 2%; text-decoration: none ; box-shadow: none; } #learndash_profile .learndash-course-status { width: 53px; float: left; margin: 0 15px; } #learndash_profile .learndash-course-status a { text-indent: -999em; line-height: 53px; padding: 10px 2%; text-decoration: none ; box-shadow: none; } #learndash_profile .learndash-course-certificate { width: 48px; float: left; text-align: center; margin: 0 15px; } #learndash_profile .learndash-course-certificate a { display: block; line-height: 53px; padding: 18px 2% 0 2%; text-decoration: none ; box-shadow: none; } .rtl #learndash_lessons .right, .rtl #learndash_quizzes .right, .rtl #learndash_profile .right { float: right; } #learndash_lessons, #learndash_quizzes, #learndash_profile, #learndash_lesson_topics_list > div { background-color: #FFFFFF; border: 1px solid #DDDDDD; border-radius: 4px; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); margin-bottom: 20px; clear: both; } #learndash_profile { margin-top: 15px; } /*.course_navigation { background-color: #FFFFFF; border: 1px solid #DDDDDD; border-radius: 4px; margin-bottom: 20px; }*/ #learndash_lessons #lesson_heading, #learndash_profile .learndash_profile_heading, #learndash_quizzes #quiz_heading , #learndash_lesson_topics_list div > strong { background-color: #f3f3f3; color: #333333; border-top-right-radius: 3px; border-top-left-radius: 3px; padding: 1% 2%; padding: 1% 3%\9; /* IE8 and below */ font-weight: normal; margin: 0; display: block; } .learndash_profile_quiz_heading { background-color: #f3f3f3; padding: 1% 2%; padding: 1% 3%\9; /* IE8 and below */ } #learndash_lesson_topics_list div > strong { border-bottom: 1px solid #ddd; } .widget_sfwd-lessons-widget ul li a {font-size: 12px ; line-height: 12px ; } .widget_sfwd-lessons-widget ul {padding: 10px ;} .widget_sfwd-lessons-widget ul > li > h4 {margin: 0; padding: 0;} #learndash_lessons > div > div, #learndash_quizzes > div > div { border: 1px solid #ddd; } #learndash_lessons h4 > a:hover, #learndash_quizzes h4 > a:hover, #learndash_lesson_topics_list ul > li > span.topic_item:hover { background-color: #ddd; } #learndash_lessons a, #learndash_quizzes a, .expand_collapse a, .learndash_topic_dots a, .learndash_topic_dots a > span, #learndash_lesson_topics_list span a { text-decoration: none ; font-weight: 100; font-size: 12px; } #learndash_lessons, #learndash_quizzes, .expand_collapse, .notavailable_message, #learndash_lesson_topics_list div > strong, #learndash_lesson_topics_list div ul > li .sn, .learndash_profile_heading, #learndash_profile a, #learndash_profile div { font-size: 12px; font-weight: normal; } #learndash_profile .course_progress { width: 74%; float: right; margin: 2%; } #learndash_profile #course_list .right { /* width: 20% ;*/ padding: 2%; text-align: center; line-height: 20px; } .learndash_profile_quizzes > div > div { padding: 5px 0; } .expand_collapse { width: 100%; line-height: 0; text-align: left; position: relative; top: -10px; float: left; } .rtl .expand_collapse { text-align: right; } .expand_collapse a, #learndash_profile .expand_collapse a { color: black; font-size: 10px; } #lessons_list, #course_list, #quiz_list,.learndash_profile_quizzes, #learndash_lesson_topics_list ul, .learndash_navigation_lesson_topics_list { display: table; width: 100%; margin-bottom: 0; } #learndash_lesson_topics_list ul { padding: 0; margin-right: 0; } #lessons_list > div,#course_list > div, #quiz_list > div, .learndash_profile_quizzes > div, #learndash_lesson_topics_list ul > li, .learndash_navigation_lesson_topics_list > div { display: table-row; } .learndash_topic_dots .sn {display: none;} #lessons_list > div > div, #course_list > div > div, #quiz_list > div > div, .single-sfwd-lessons #learndash_lesson_topics_list ul > li > span.sn , .singular-sfwd-lessons #learndash_lesson_topics_list ul > li > span.sn { display: table-cell; width: 5%; text-align: center; border-left: 1px solid #ddd; border-top: 1px solid #ddd; } .learndash_navigation_lesson_topics_list > div > div.list_arrow { display: table-cell; width: 16px; text-align: center; padding: 0 ; } .learndash_profile_quizzes > div > div { display: table-cell; } #learndash_profile .profile_edit_profile { text-align: center; line-height: 1em; } #learndash_profile .profile_edit_profile a { font-size: 10px; } .rtl #lessons_list > div > div,.rtl #course_list > div > div,.rtl #quiz_list > div > div, .rtl .single-sfwd-lessons #learndash_lesson_topics_list ul > li > span.sn , .rtl .singular-sfwd-lessons #learndash_lesson_topics_list ul > li > span.sn { border-right: 1px solid #ddd; border-left: 0; } .learndash_navigation_lesson_topics_list .learndash_topic_dots.type-list a > span { padding: 0 25px 0 0; } .course_navigation .learndash_navigation_lesson_topics_list .lesson { margin: 5px; } .course_navigation .learndash_navigation_lesson_topics_list ul li { margin-right: 0; list-style: none; background: none; } .course_navigation .learndash_navigation_lesson_topics_list .learndash_topic_dots.type-list ul > li { padding-right: 10px; } .widget ul.learndash-topic-quiz-list { margin-right: 15px; } .course_navigation .learndash-current-menu-item ul li a { font-weight: normal; } #lessons_list > div h4, #course_list > div h4, #quiz_list > div h4, #learndash_lesson_topics_list ul > li > span.topic_item { display: table-cell; width: 95%; border-top: 1px solid #ddd; padding: 0; } .widget_course_return, .course_navigation .widget_course_return a{ font-size: 12px; } .widget_course_return { border-top: 1px solid #ddd; margin-top: 10px; padding-top: 10px; } #learndash_lesson_topics_list ul > li > span.topic_item, .single-sfwd-lessons #learndash_lesson_topics_list ul > li > span.sn, .singular-sfwd-lessons #learndash_lesson_topics_list ul > li > span.sn { border-top: 0px; } #lessons_list > div h4 > a, #course_list > div h4 > a, #quiz_list > div h4 > a { padding-top: 10px; padding-bottom: 10px; padding-right: 2%; display: block; padding-left: 75px; /*line-height: 2em; min-height: 75px;*/ } .rtl #lessons_list > div h4 > a,.rtl #course_list > div h4 > a,.rtl #quiz_list > div h4 > a { padding-right: 75px; padding-left: 2%; } .single-sfwd-lessons #learndash_lesson_topics_list ul > li > span a, .singular-sfwd-lessons #learndash_lesson_topics_list ul > li > span a { padding-right: 2%; display: block; } .rtl.single-sfwd-lessons #learndash_lesson_topics_list ul > li > span a, .rtl.singular-sfwd-lessons #learndash_lesson_topics_list ul > li > span a { padding-left: 2%; } .learndash_topic_dots.type-list a{display: block;} .list-count, .widget .list-count {display: none;} #lessons_list .list-count, #quiz_list .list-count{display: table-cell;} .btn-join, #btn-join, .learndash_checkout_buttons input.btn-join[type="button"], a#quiz_continue_link { border: none; font-weight: normal; background: #5CB85C; -webkit-font-smoothing: subpixel-antialiased; -webkit-transition: border .25s linear, color .25s linear, background-color .25s linear, background .25s linear ; transition: border .25s linear, color .25s linear, background-color .25s linear, background .25s linear ; color: #ffffff ; background-color: #5CB85C; padding: 10px 19px; font-size: 17px; line-height: 1.471; border-radius: 6px; white-space: normal; text-decoration: none ; height: auto ; cursor: pointer; } .btn-join:hover, .btn-join:focus, .btn-join:active, .btn-join:visited, .btn-join.active, #btn-join:hover, #btn-join:focus, a#quiz_continue_link:hover, .learndash_checkout_buttons input.btn-join[type="button"]:hover, a#quiz_continue_link:focus { color: #ffffff; background-color: #58d68d; border-color: #58d68d; } .btn-join:active, .btn-join.active, #btn-join:active, #btn-join.active, a#quiz_continue_link:active { background-color: #27ad60; border-color: #27ad60; } .btn-blue, .learndash_checkout_button input[type="submit"] { border: none; font-weight: normal; -webkit-font-smoothing: subpixel-antialiased; -webkit-transition: border .25s linear, color .25s linear, background-color .25s linear, background .25s linear ; transition: border .25s linear, color .25s linear, background-color .25s linear, background .25s linear ; color: #ffffff ; background-color: #3498DB; background: #3498DB; padding: 10px 19px; font-size: 17px; line-height: 1.471; border-radius: 6px; white-space: normal; text-decoration: none ; } a.btn-blue:hover, .btn-blue:hover, .learndash_checkout_button input[type="submit"]:hover, a.btn-blue:focus, .btn-blue:focus, .learndash_checkout_button input[type="submit"]:focus, a.btn-blue:active, .btn-blue:active, .learndash_checkout_button input[type="submit"]:active, a.btn-blue:visited, .btn-blue:visited, .learndash_checkout_button input[type="submit"]:visited { color: #ffffff; background-color: #5dade2; border-color: #5dade2; } .quiz_continue_link, .slickQuizWrapper .quizReturn{ margin: 20px 0 ; } dd.course_progress { display: block; margin: 10px auto; padding: 0; position: relative; width: 90%; background-color: #F5F5F5; border: medium none; border-radius: 4px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset; height: 20px; overflow: hidden; } dd.course_progress div.course_progress_blue { display: block; position: relative; text-align: left; width: 75%; background-color: #5CB85C ; box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.15) inset; color: #FFFFFF; float: right; font-size: 12px; height: 100% ; transition: width 0.6s ease 0s; } #learndash_course_content_title {margin-bottom: 5px ;} #course_progress_details > strong {line-height: 1.6;} .no_radius { border-radius: 0 ; } .quiz_title { width: 55%; line-height: 25px; padding-right: 12px ; } .certificate { width: 15%; } .scores { width: 10%; } .quiz_date { width: 20%; } #learndash_next_prev_link {margin-top: 10px;} #learndash_next_prev_link a.prev-link { float: right;} #learndash_next_prev_link a.next-link { float: left;} #ld_categorydropdown { margin: 20px 0; } #ld_categorydropdown form { display: inline-block; } #ld_categorydropdown select { margin-right: 10px; } #ld_categorydropdown span { font-weight: bold; } #learndash_course_certificate { margin: 10px 0; } .wpProQuiz_content { position: relative; } .wpProQuiz_spinner { position: absolute; right: -2%; top: -2%; width: 104%; height: 104%; background: white; z-index: 10000; opacity: 0.9; filter: alpha(opacity=40); /* For IE8 and earlier */ } .wpProQuiz_spinner > div { background-image: url(images/spinner.gif); position: relative; margin: auto; width: 128px; height: 128px; top: 30%; } .wpProQuiz_questionList .graded-disclaimer { font-size: .8rem; } .wpProQuiz_questionList .graded-disclaimer { font-size: .8rem; } .wpProQuiz_upload_essay { padding: 11px; font-size: .75em; } .jq-dropdown .jq-dropdown-menu { overflow: hidden ; } .jq-dropdown .jq-dropdown-menu li { list-style: none ; list-style-type: none ; margin: 0 ; padding: 0 ; overflow: hidden ; } .course_navigation ul.learndash-course-quiz-list { margin-right: 0; list-style: none; } .course_navigation ul.learndash-course-quiz-list li { margin-right: 0; list-style: none; } form.sfwd-mark-complete input.learndash_mark_complete_button[disabled] { color: #aaa; } form.sfwd-mark-complete p.ld-video-delay-message { } form.sfwd-mark-complete p.ld-video-delay-message span.time-countdown { background-color: #CCC; padding: 0 2px; } /* [user_groups] shortcode styles. See template/user_group_shortcode.php for details. */ .learndash-user-groups { } .learndash-user-groups .learndash-user-groups-section { clear: both; } .learndash-user-groups .learndash-user-groups-section .learndash-user-groups-header, .learndash-user-groups .learndash-user-groups-section .learndash-user-groups-item-title { clear: both; font-weight: bold; } .learndash-user-groups .learndash-user-groups-section ul.learndash-user-groups-items { list-style: none; margin-right: 15px; }PKc\ޥbb:themes/legacy/templates/learndash_lesson_video.min-rtl.cssnuW+Abody.learndash-cpt.learndash-embed-responsive .ld-video{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}body.learndash-cpt.learndash-embed-responsive .ld-video div.wp-video,body.learndash-cpt.learndash-embed-responsive .ld-video embed,body.learndash-cpt.learndash-embed-responsive .ld-video iframe,body.learndash-cpt.learndash-embed-responsive .ld-video object,body.learndash-cpt.learndash-embed-responsive .ld-video video{top:0;right:0;width:100%!important;height:100%}body.learndash-cpt.learndash-embed-responsive .ld-video iframe{position:absolute}body.learndash-cpt.learndash-embed-responsive .ld-video[data-video-provider=vooplayer] iframe{position:unset}body.learndash-cpt.learndash-embed-responsive .mejs-container.mejs-video,body.learndash-cpt.learndash-embed-responsive .mejs-overlay.mejs-video.load,body.learndash-cpt.learndash-embed-responsive .wp-video,body.learndash-cpt.learndash-embed-responsive video.wp-video-shortcode{width:100%!important;height:100%!important}body.learndash-cpt.learndash-embed-responsive .mejs-container.mejs-video{padding-top:56.25%}body.learndash-cpt.learndash-embed-responsive .wp-video,body.learndash-cpt.learndash-embed-responsive video.wp-video-shortcode{max-width:100%!important}body.learndash-cpt.learndash-embed-responsive video.wp-video-shortcode{position:relative}body.learndash-cpt.learndash-embed-responsive .mejs-container.mejs-video .mejs-mediaelement{position:absolute;top:0;left:0;bottom:0;right:0}body.learndash-cpt.learndash-embed-responsive .mejs-container.mejs-video .mejs-overlay-play{top:0;left:0;bottom:0;right:0;width:auto!important;height:auto!important}PKc\I  3themes/legacy/includes/class-ld-themes-register.phpnuW+Atheme_key = 'legacy'; $this->theme_name = esc_html__( 'Legacy', 'learndash' ); $this->theme_base_dir = trailingslashit( LEARNDASH_LMS_PLUGIN_DIR ) . 'themes/' . $this->theme_key; $this->theme_base_url = trailingslashit( LEARNDASH_LMS_PLUGIN_URL ) . 'themes/' . $this->theme_key; $this->theme_template_dir = $this->theme_base_dir . '/templates'; $this->theme_template_url = $this->theme_base_url . '/templates'; } } } add_action( 'learndash_themes_init', function() { LearnDash_Theme_Register_Legacy::add_theme_instance( 'legacy' ); } ); PKc\l ~~1themes/ld30/includes/class-ld-themes-register.phpnuW+Atheme_key = 'ld30'; $this->theme_name = esc_html__( 'LearnDash 3.0', 'learndash' ); $this->theme_base_dir = trailingslashit( LEARNDASH_LMS_PLUGIN_DIR ) . 'themes/' . $this->theme_key; $this->theme_base_url = trailingslashit( LEARNDASH_LMS_PLUGIN_URL ) . 'themes/' . $this->theme_key; $this->theme_template_dir = $this->theme_base_dir . '/templates'; $this->theme_template_url = $this->theme_base_url . '/templates'; } } } add_action( 'learndash_themes_init', function() { LearnDash_Theme_Register_LD30::add_theme_instance( 'ld30' ); } ); if ( learndash_is_active_theme( 'ld30' ) ) { // Include the helper functions include_once __DIR__ . '/helpers.php'; } PKc\rqfX:X:1themes/ld30/includes/login-register-functions.phpnuW+A'; $course_id = learndash_get_course_id( get_the_ID() ); if ( ( ! empty( $course_id ) ) && ( in_array( learndash_get_setting( $course_id, 'course_price_type' ), array( 'free' ), true ) ) && ( apply_filters( 'learndash_login_form_include_course', true, $course_id ) ) ) { $content .= ''; $content .= wp_nonce_field( 'learndash-login-form-course-' . $course_id . '-nonce', 'learndash-login-form-course-nonce', false, false ); } return $content; } // Add a filter for validation returns. add_filter( 'login_form_top', 'learndash_add_login_field_top' ); /** * Login tasks * * @param object $user WP_User object if success. wp_error is error. * @param string $username Login form entered user login. * @param string $password Login form entered user password. */ function learndash_authenticate( $user, $username, $password ) { if ( ( $user ) && ( is_a( $user, 'WP_User' ) ) ) { /** * If the user started from a Course and registered then once they * go through the password setup they will login. The login form * could be the default WP login, the LD course modal or some other * plugin. During the registration if the captured course ID is saved * in the user meta we enroll that user into that course. */ $registered_course_id = get_user_meta( $user->ID, '_ld_registered_course', true ); if ( '' !== $registered_course_id ) { delete_user_meta( $user->ID, '_ld_registered_course' ); } $registered_course_id = absint( $registered_course_id ); if ( ! empty( $registered_course_id ) ) { ld_update_course_access( $user->ID, $registered_course_id ); } /** * If the user login is coming from a LD course then we enroll the * user into the course. This helps save a step for the user. */ $login_course_id = learndash_validation_login_form_course(); $login_course_id = absint( $login_course_id ); if ( ! empty( $login_course_id ) ) { ld_update_course_access( $user->ID, $login_course_id ); } } elseif ( ( is_wp_error( $user ) ) && ( $user->has_errors() ) ) { /** * This is here instead of learndash_login_failed() because WP * handles 'empty_username', 'empty_password' conditions different * then invalid values. * * See logic in wp_authenticate() */ $redirect_to = learndash_validation_login_form_redirect_to(); if ( $redirect_to ) { $ignore_codes = array( 'empty_username', 'empty_password' ); if ( is_wp_error( $user ) && in_array( $user->get_error_code(), $ignore_codes, true ) ) { $redirect_to = add_query_arg( 'login', 'failed', $redirect_to ); $redirect_to = learndash_add_login_hash( $redirect_to ); wp_safe_redirect( $redirect_to ); die(); } } } return $user; } add_filter( 'authenticate', 'learndash_authenticate', 99, 3 ); /** * Handle login fail scenario from WP. * * Note for 'empty_username', 'empty_password' error conditions this action * will not be called. Those conditions are handled in learndash_authenticate() * if the user logged in via the LD modal. * * @since 3.0 * @param string $username Login name from login form process. Not used. */ function learndash_login_failed( $username = '' ) { $redirect_to = learndash_validation_login_form_redirect_to(); if ( $redirect_to ) { $redirect_to = add_query_arg( 'login', 'failed', $redirect_to ); $redirect_to = learndash_add_login_hash( $redirect_to ); wp_safe_redirect( $redirect_to ); die(); } } add_action( 'wp_login_failed', 'learndash_login_failed', 1, 1 ); /** * Utility function to check and return the login form course_id. * * @since 3.1.2 * @return integer $course_id Valid course_id if valid. */ function learndash_validation_login_form_course() { if ( ( isset( $_POST['learndash-login-form'] ) ) && ( wp_verify_nonce( $_POST['learndash-login-form'], 'learndash-login-form' ) ) ) { if ( ( isset( $_POST['learndash-login-form-course'] ) ) && ( ! empty( $_POST['learndash-login-form-course'] ) ) ) { $course_id = absint( $_POST['learndash-login-form-course'] ); if ( ( isset( $_POST['learndash-login-form-course-nonce'] ) ) && ( wp_verify_nonce( $_POST['learndash-login-form-course-nonce'], 'learndash-login-form-course-' . $course_id . '-nonce' ) ) ) { if ( ( ! empty( $course_id ) ) && ( apply_filters( 'learndash_login_form_include_course', true, $course_id ) ) ) { return absint( $course_id ); } } } } return false; } /** * Utility function to check the login form course_id. * * @since 3.1.2 * @return integer $course_id Valid course_id if valid. */ function learndash_validation_login_form_redirect_to() { if ( ( isset( $_POST['learndash-login-form'] ) ) && ( wp_verify_nonce( $_POST['learndash-login-form'], 'learndash-login-form' ) ) ) { if ( ( isset( $_POST['redirect_to'] ) ) && ( ! empty( $_POST['redirect_to'] ) ) ) { return esc_url( $_POST['redirect_to'] ); } } return false; } /** * REGISTRATION FUNCTIONS */ /** * User Register Success * * When the user registers it if was from a Course we capture that for later * when the user goes through the password set logic. After the password set * we can redirect the user to the course. See learndash_password_reset() * function. * * @since 3.1.2 * @param integer $user_id The Registers user ID. */ function learndash_register_user_success( $user_id = 0 ) { if ( ! empty( $user_id ) ) { $course_id = learndash_validation_registration_form_course(); if ( ! empty( $course_id ) ) { if ( ( learndash_get_post_type_slug( 'course' ) === get_post_type( $course_id ) ) ) { add_user_meta( $user_id, '_ld_registered_course', absint( $course_id ) ); } } } } add_action( 'user_register', 'learndash_register_user_success', 10, 1 ); /** * User Register Fail * * From this function we capture the failed registration errors and send the user * back to the registration form part of the LD login modal. * * @param string $sanitized_user_login User entered login (sanitized). * @param string $user_email User entered email. * @param array $errors Array of registration errors. */ function learndash_user_register_error( $sanitized_user_login, $user_email, $errors ) { $redirect_url = learndash_validation_registration_form_redirect_to(); if ( $redirect_url ) { $redirect_url = remove_query_arg( 'ld-registered', $redirect_url ); /** * This line is copied from register_new_user function of wp-login.php. So the * filtername should not be prefixed with 'learndash_'. */ $errors = apply_filters( 'registration_errors', $errors, $sanitized_user_login, $user_email ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound // This if check is copied from register_new_user function of wp-login.php. if ( $errors->get_error_code() ) { $has_errors = true; // add error codes to custom redirection URL one by one. foreach ( $errors->errors as $e => $m ) { $redirect_url = add_query_arg( $e, '1', $redirect_url ); } $redirect_url = learndash_add_login_hash( $redirect_url ); $redirect_url = apply_filters( 'learndash_registration_error_url', $redirect_url ); if ( ! empty( $redirect_url ) ) { // add finally, redirect to your custom page with all errors in attributes. wp_safe_redirect( $redirect_url ); exit; } } } } add_action( 'register_post', 'learndash_user_register_error', 99, 3 ); /** * Utility function to check and return the registration form course_id. * * @since 3.1.2 * @return integer $course_id Valid course_id if valid. */ function learndash_validation_registration_form_course() { if ( ( isset( $_POST['learndash-registration-form'] ) ) && ( wp_verify_nonce( $_POST['learndash-registration-form'], 'learndash-registration-form' ) ) ) { if ( ( isset( $_POST['learndash-registration-form-course'] ) ) && ( ! empty( $_POST['learndash-registration-form-course'] ) ) ) { $course_id = absint( $_POST['learndash-registration-form-course'] ); if ( ( ! empty( $course_id ) ) && ( apply_filters( 'learndash_registration_form_include_course', true, $course_id ) ) ) { if ( ( isset( $_POST['learndash-registration-form-course-nonce'] ) ) && ( wp_verify_nonce( $_POST['learndash-registration-form-course-nonce'], 'learndash-registration-form-course-' . $course_id . '-nonce' ) ) ) { return absint( $course_id ); } } } } return false; } /** * Utility function to check the registration form course_id. * * @since 3.1.2 * @return integer $course_id Valid course_id if valid. */ function learndash_validation_registration_form_redirect_to() { if ( ( isset( $_POST['learndash-registration-form'] ) ) && ( wp_verify_nonce( $_POST['learndash-registration-form'], 'learndash-registration-form' ) ) ) { if ( ( isset( $_POST['redirect_to'] ) ) && ( ! empty( $_POST['redirect_to'] ) ) ) { return esc_url( $_POST['redirect_to'] ); } } return false; } /** * PASSWORD RESET FUNCTINS */ /** * Variable to capture the user from the reset password. This var * is used in the learndash_password_reset_login_url() function to * redirect the user back to the origin. */ global $ld_password_reset_user; $ld_password_reset_user = ''; // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound /** * Handle password reset logic. * * Called after the user updates new password. * * @since 3.1.2 * @param object $user WP_User object. * @param string $new_pass New Password. */ function learndash_password_reset( $user, $new_pass ) { if ( $user ) { global $ld_password_reset_user; $ld_password_reset_user = $user; // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound add_filter( 'login_url', 'learndash_password_reset_login_url', 30, 3 ); } } add_action( 'password_reset', 'learndash_password_reset', 30, 2 ); /** * Called only during password set to filter the login_url. * * @since 3.1.2 * @param string $login_url Current login_url. * @param string $redirect Query string redirect_to parameter and value. * @param boolean $force_reauth Force reauth. */ function learndash_password_reset_login_url( $login_url = '', $redirect = '', $force_reauth = '' ) { global $ld_password_reset_user; if ( ( isset( $_GET['action'] ) ) && ( 'resetpass' === $_GET['action'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- No nonces on public facing login forms if ( ( ! empty( $login_url ) ) && ( empty( $redirect ) ) ) { $user = $ld_password_reset_user; if ( ( $user ) && ( is_a( $user, 'WP_User' ) ) ) { $ld_login_url = get_user_meta( $user->ID, '_ld_lostpassword_redirect_to', true ); delete_user_meta( $user->ID, '_ld_lostpassword_redirect_to' ); if ( ! empty( $ld_login_url ) ) { $login_url = esc_url( $ld_login_url ); } else { $registered_course_id = get_user_meta( $user->ID, '_ld_registered_course', true ); delete_user_meta( $user->ID, '_ld_registered_course', $registered_course_id ); if ( ! empty( $registered_course_id ) ) { $registered_course_url = get_permalink( $registered_course_id ); $registered_course_url = learndash_add_login_hash( $registered_course_url ); $login_url = esc_url( $registered_course_url ); } } } } } return $login_url; } /** * Store the password reset redirect_to URL. * * When the user clicks the password reset on the LD login popup we capture the * 'redirect_to' URL. This is done at step 2 of the password reset process after * the user has enter their username/email. * * The user will then receive an email from WP with a link to reset the * password. Once the user has created a new password they will be shown a * login link. That login URL will be the stored 'redirect_to' user meta value. * See the function learndash_password_reset_login_url() for that stage of the * processing. */ function learndash_login_form_lostpassword() { if ( isset( $_POST['learndash-registration-form'], $_REQUEST['redirect_to'] ) && wp_verify_nonce( $_POST['learndash-registration-form'], 'learndash-registration-form' ) && ! empty( $_REQUEST['redirect_to'] ) ) { $redirect_to = esc_url( $_REQUEST['redirect_to'] ); // Only if the 'redirect_to' link contains our parameter. if ( false !== strpos( $redirect_to, 'ld-resetpw=true' ) ) { if ( isset( $_POST['user_login'] ) && is_string( $_POST['user_login'] ) ) { $user_login = wp_unslash( $_POST['user_login'] ); $user = get_user_by( 'login', $user_login ); if ( ( $user ) && ( is_a( $user, 'WP_User' ) ) ) { /** * We remove the 'ld-resetpw' part because we don't want to trigger * the login modal showing the password has been reset again. */ $redirect_to = remove_query_arg( 'ld-resetpw', $redirect_to ); /** * Store the redirect URL in user meta. This will be retrieved in * the function learndash_password_reset_login_url(). */ update_user_meta( $user->ID, '_ld_lostpassword_redirect_to', $redirect_to ); } } } } } add_action( 'login_form_lostpassword', 'learndash_login_form_lostpassword', 30 ); /** * Utility function to add '#login' to the end of a URL. * * Used throughout LD30 login model and processing functions. * * @since 3.1.2 * @param string $url URL to check and append hash. * @return string URL. */ function learndash_add_login_hash( $url = '' ) { if ( strpos( $url, '#login' ) === false ) { $url .= '#login'; } return $url; } /** * Get array of login error conditions. * * @since 3.1.2 * @param boolean $return_keys True to return keys of conditions only. * @return array of conditions. */ function learndash_login_error_conditions( $return_keys = false ) { $errors_conditions = apply_filters( 'learndash-registration-errors', array( 'username_exists' => __( 'Registration username exists.', 'learndash' ), 'email_exists' => __( 'Registration email exists.', 'learndash' ), 'empty_username' => __( 'Registration requires a username.', 'learndash' ), 'empty_email' => __( 'Registration requires a valid email.', 'learndash' ), 'invalid_username' => __( 'Invalid username.', 'learndash' ), 'invalid_email' => __( 'Invalid email.', 'learndash' ), ) ); if ( true === $return_keys ) { return array_keys( $errors_conditions ); } return $errors_conditions; } PKc\'' themes/ld30/includes/helpers.phpnuW+A LEARNDASH_LMS_PLUGIN_DIR . 'themes/ld30/templates/', 'LD_30_VER' => '1.0', ); foreach ( $learndash_30_defs as $learndash_30_definition => $learndash_30_value ) { if ( ! defined( $learndash_30_definition ) ) { define( $learndash_30_definition, $learndash_30_value ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.VariableConstantNameFound -- Used inside foreach loop } } require 'shortcodes.php'; require 'login-register-functions.php'; /** * Get course price * * Return an array of price type, amount and cycle * * @since 3.0 * * @param int/object $course * @return array price details */ function learndash_get_course_price( $course = null ) { if ( null === $course ) { global $post; $course = $post; } if ( is_numeric( $course ) ) { $course = get_post( $course ); } // Get the course price $meta = get_post_meta( $course->ID, '_sfwd-courses', true ); $course_price = array( 'type' => ! empty( $meta['sfwd-courses_course_price_type'] ) ? $meta['sfwd-courses_course_price_type'] : '', 'price' => ! empty( $meta['sfwd-courses_course_price'] ) ? $meta['sfwd-courses_course_price'] : '', ); if ( 'subscribe' === $course_price['type'] ) { $frequency = get_post_meta( $course->ID, 'course_price_billing_t3', true ); $interval = intval( get_post_meta( $course->ID, 'course_price_billing_p3', true ) ); $label = ''; switch ( $frequency ) { case ( 'D' ): $label = _n( 'day', 'days', $interval, 'learndash' ); break; case ( 'M' ): $label = _n( 'month', 'months', $interval, 'learndash' ); break; case ( 'Y' ): $label = _n( 'year', 'years', $interval, 'learndash' ); break; } $course_price['frequency'] = $label; $course_price['interval'] = $interval; } return apply_filters( 'learndash_get_course_price', $course_price ); } /** * Output breadcrumbs * * Sames as learndash_get_breadcrumbs only it actually outputs escpated markup * * @since 3.0 * * @param int/object $post * @return null */ function learndash_the_breadcrumbs( $post = null ) { if ( null === $post ) { global $post; } if ( is_numeric( $post ) ) { $post = get_post( $post ); } echo wp_kses_post( learndash_get_breadcrumbs( $post ) ); } /** * Get breadcrumbs * * Builds an array of breadcrumbs for the current LearnDash post * * @since 3.0 * * @param int/object $post * @param array arguments, not currently being used * @return array hierarchy of breadcrumbs */ function learndash_get_breadcrumbs( $post = null, $args = false ) { if ( null === $post ) { global $post; } if ( is_numeric( $post ) ) { $post = get_post( $post ); } if ( $args ) { extract( $args ); } // Get the course ID of the current element $course_id = learndash_get_course_id( $post->ID ); $breadcrumbs = array( 'course' => array( 'permalink' => learndash_get_step_permalink( $course_id ), 'title' => get_the_title( $course_id ), ), 'current' => array( 'permalink' => learndash_get_step_permalink( $post->ID ), 'title' => get_the_title( $post->ID ), ), ); // If this is a topic or a quiz we might need a third hierarhcy switch ( get_post_type() ) { case 'sfwd-topic': $lesson_id = learndash_course_get_single_parent_step( $course_id, $post->ID ); $breadcrumbs['lesson'] = array( 'permalink' => learndash_get_step_permalink( $lesson_id ), 'title' => get_the_title( $lesson_id ), ); break; case 'sfwd-quiz': // A quiz can have a parent of a course, lesson or topic... $parent_id = learndash_course_get_single_parent_step( $course_id, $post->ID ); $key = ( get_post_type( $parent_id ) === 'sfwd-topic' || get_post_type( $parent_id ) === 'sfwd-lessons' ? get_post_type( $parent_id ) : null ); if ( isset( $key ) && ! empty( $key ) ) { $breadcrumbs[ $key ] = array( 'permalink' => learndash_get_step_permalink( $parent_id ), 'title' => get_the_title( $parent_id ), ); } break; } $breadcrumbs = apply_filters( 'learndash_breadcrumbs', $breadcrumbs ); return $breadcrumbs; } /** * Get essays from a specific quiz attempt - DEPRICATED * * Look up all the essay responses from a particular quiz attempt * * @since 3.0 * * @param int $post_id * @return array array of post objects */ function learndash_get_essays_by_quiz_attempt( $attempt_id = null, $user_id = null ) { // Fail gracefully if ( null === $attempt_id ) { return false; } if ( null === $user_id ) { $cuser = wp_get_current_user(); $user_id = $cuser->ID; } $quiz_attempts = get_user_meta( $user_id, '_sfwd-quizzes', true ); $essays = array(); if ( ! $quiz_attempts || empty( $quiz_attempts ) ) { return false; } foreach ( $quiz_attempts as $attempt ) { if ( $attempt['quiz'] != $attempt_id || ! isset( $attempt['graded'] ) ) { continue; } foreach ( $attempt['graded'] as $essay ) { $essays[] = $essay['post_id']; } } return $essays; } function learndash_get_essay_details( $post_id = null ) { if ( null === $post_id ) { return false; } $essay = get_post( $post_id ); if ( ! $essay || empty( $essay ) ) { return false; } $details = array( 'points' => array( 'awarded' => 0, 'total' => 0, ), 'status' => $essay->post_status, ); $quiz_id = get_post_meta( $post_id, 'quiz_id', true ); $question_id = get_post_meta( $post_id, 'question_id', true ); if ( ! empty( $quiz_id ) ) { $question_mapper = new WpProQuiz_Model_QuestionMapper(); $question = $question_mapper->fetchById( intval( $question_id ), null ); if ( $question instanceof WpProQuiz_Model_Question ) { $submitted_essay_data = learndash_get_submitted_essay_data( $quiz_id, $question_id, $essay ); $details['points']['total'] = $question->getPoints(); if ( isset( $submitted_essay_data['points_awarded'] ) ) { $details['points']['awarded'] = intval( $submitted_essay_data['points_awarded'] ); } } } return $details; } /** * Get current lesson progress * * Returns stats about a users current progress within a lesson * * @since 3.0 * * @param array $topics - An array of the lessons topics, contexualized for the users progress * @return array Array of stats including percentage, completed and total */ function learndash_get_lesson_progress( $topics = null ) { $progress = apply_filters( 'learndash_get_lesson_progress_defaults', array( 'percentage' => 0, 'completed' => 0, 'total' => 0, ) ); // Fail gracefully, return zero's if ( null === $topics || emtpy( $topics ) ) { return $progress; } foreach ( $topics as $key => $topic ) { $progress['total']++; if ( ! empty( $topic->completed ) ) { $progress['completed']++; } } if ( 0 === ! $progress['completed'] ) { $progress['percentage'] = floor( $progress['completed'] / $progress['total'] * 100 ); } return apply_filters( 'learndash_get_lesson_progress', $progress, $topics ); } /** * Check if any LearnDash content type is complete * * Works on lessons or topics, single function for simpler logic in the templates * * @since 3.0 * * @param int/object $post Either a post ID or psot object * @param int $user_id The user to check against * @param int $course_id The course to check against (required for reusable content) * @return bool true if complete, false if not */ function learndash_is_item_complete( $post = null, $user_id = null, $course_id = null ) { $complete = false; if ( null === $post ) { global $post; } if ( is_numeric( $post ) ) { $post = get_post( $post ); } if ( null === $user_id ) { $user = wp_get_current_user(); $user_id = $user->ID; } if ( null === $course_id ) { $course_id = learndash_get_course_id( $post->ID ); } switch ( get_post_type( $post ) ) { case ( 'sfwd-lessons' ): $complete = learndash_is_lesson_complete( $user_id, $post->ID, $course_id ); break; case ( 'sfwd-topic' ): $complete = learndash_is_topic_complete( $user_id, $post->ID, $course_id ); break; case ( 'sfwd-quiz' ): break; } return apply_filters( 'learndash_is_item_complete', $complete, $user_id, $post->ID, $course_id ); } /** * Get a label for the content type by post type * * Universal function for simpler template logic and reusable templates * * @since 3.0 * * @param string $post_type - The post type to check against * @return string The label for the content type based on user settings */ function learndash_get_content_label( $post_type = null, $args = null ) { if ( $args ) { extract( $args ); } $post_type = ( null === $post_type ? get_post_type() : $post_type ); $label = ''; switch ( $post_type ) { case ( 'sfwd-courses' ): $label = LearnDash_Custom_Label::get_label( 'course' ); break; case ( 'sfwd-lessons' ): if ( isset( $parent ) ) { $label = LearnDash_Custom_Label::get_label( 'course' ); } else { $label = LearnDash_Custom_Label::get_label( 'lesson' ); } break; case ( 'sfwd-topic' ): if ( isset( $parent ) ) { $label = LearnDash_Custom_Label::get_label( 'lesson' ); } else { $label = LearnDash_Custom_Label::get_label( 'topic' ); } break; } return apply_filters( 'learndash_get_content_label', $label, $post_type ); } function learndash_get_assignment_progress( $assignments = null ) { $stats = array( 'total' => 0, 'complete' => 0, ); if ( null === $assignments || empty( $assignments ) ) { return apply_filters( 'learndash_get_assignment_progress', $stats ); } foreach ( $assignments as $assignment ) { $stats['total']++; if ( learndash_is_assignment_approved_by_meta( $assignment->ID ) ) { $stats['complete']++; } } return apply_filters( 'learndash_get_assignment_progress', $stats ); } /** * Get Lesson Progress * * Return stats about the users current progress within a lesson * * @since 3.0 * * @param int/object $post - Lesson ID or post object to check against * @param int $course_id - Course ID the lesson belongs to * * @return array Total steps, completed steps and percentage complete */ function learndash_lesson_progress( $post = null, $course_id = null ) { if ( null === $post ) { global $post; } if ( is_numeric( $post ) ) { $post = get_post( $post ); } if ( null === $course_id ) { $course_id = learndash_get_course_id( $post->ID ); } if ( 'sfwd-lessons' === get_post_type( $post->ID ) ) { $lesson_id = $post->ID; } else { $lesson_id = learndash_course_get_single_parent_step( $course_id, $post->ID ); } $topics = learndash_topic_dots( $lesson_id, false, 'array', null, $course_id ); if ( ! $topics || empty( $topics ) ) { return false; } $progress = array( 'total' => 0, 'completed' => 0, 'percentage' => 0, ); foreach ( $topics as $key => $topic ) { $progress['total']++; if ( isset( $topic->completed ) && $topic->completed ) { $progress['completed']++; } } /** * Note: Since we're not counting quizzes at all in the lessons or topics we don't need to count quizzes * * @var [type] */ if ( 0 !== absint( $progress['completed'] ) ) { $progress['percentage'] = floor( $progress['completed'] / $progress['total'] * 100 ); } return apply_filters( 'learndash_lesson_progress', $progress, $post ); } /** * Count the number of topics and quizzes a lesson has * * Counts the number of topics, topic quizzes and lesson quizzes and returns them in an array * * @since 3.0 * * @param int/object $lesson - The lesson ID or post object to check against * @param int $course_id - Course ID the lesson belongs to * * @return array Count of topics and quizzes */ function learndash_get_lesson_content_count( $lesson, $course_id ) { $count = array( 'topics' => 0, 'quizzes' => 0, ); $quizzes = learndash_get_lesson_quiz_list( $lesson['post']->ID, get_current_user_id(), $course_id ); $lesson_topics = learndash_topic_dots( $lesson['post']->ID, false, 'array', null, $course_id ); if ( $quizzes & ! empty( $quizzes ) ) { $count['quizzes'] += count( $quizzes ); } if ( $lesson_topics && ! empty( $lesson_topics ) ) { foreach ( $lesson_topics as $topic ) { $count['topics']++; $quizzes = learndash_get_lesson_quiz_list( $topic, null, $course_id ); if ( ! $quizzes || empty( $quizzes ) ) { continue; } $count['quizzes'] += count( $quizzes ); } } return $count; } /** * Ouput Lesson Row Class * * Filterable string of class names populated based on lesson status and attributes * * @since 3.0 * * @param object $lesson The lesson post object to evaluate * @param bool $has_access Defaults to false * * @return string Class names */ function learndash_lesson_row_class( $lesson = null, $has_access = false ) { if ( null === $lesson ) { return; } /** * Base classes * * ld-item-list-item -- for styling * ld-item-lesson-item -- more specific * ld-lesson-item-{post_id} * is_sample (if sample) * * @var string $lesson_class */ $lesson_class = 'ld-item-list-item ld-expandable ld-item-lesson-item ld-lesson-item-' . $lesson['post']->ID . ' ' . $lesson['sample']; // Available or not available $lesson_class .= ( ! empty( $lesson['lesson_access_from'] ) || ! $has_access ? ' learndash-not-available' : '' ); // Complete or not complete $lesson_class .= ' ' . ( 'completed' === $lesson['status'] ? 'learndash-complete' : 'learndash-incomplete' ); // If expandable or not if ( ! empty( $topics ) ) { $lesson_class .= ' ld-expandable'; } if ( ( isset( $is_current_lesson ) && $is_current_lesson ) || ( isset( $_GET['widget_instance']['widget_instance']['current_lesson_id'] ) && absint( $_GET['widget_instance']['widget_instance']['current_lesson_id'] ) === absint( $lesson['post']->ID ) ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Data is only used for conditional and not further processed. $lesson_class .= ' ld-current-lesson'; } // Filter echo esc_attr( apply_filters( 'learndash-lesson-row-class', $lesson_class, $lesson ) ); } function learndash_quiz_row_classes( $quiz = null, $context = 'course' ) { $classes = array( 'wrapper' => '', 'anchor' => '', 'preview' => '', ); if ( 'course' === $context ) { $classes['wrapper'] .= 'ld-item-list-item ld-item-list-item-quiz'; $classes['preview'] .= 'ld-item-list-item-preview'; $classes['anchor'] .= 'ld-item-name ld-primary-color-hover'; } else { $classes['wrapper'] .= 'ld-table-list-item'; $classes['preview'] .= 'ld-table-list-item-quiz'; $classes['anchor'] .= 'ld-table-list-item-preview ld-topic-row ld-primary-color-hover'; } $classes['wrapper'] .= ' ' . $quiz['sample'] . ' ' . ( 'completed' === $quiz['status'] ? 'learndash-complete' : 'learndash-incomplete' ); return apply_filters( 'learndash_quiz_row_classes', $classes, $quiz, $context ); } /** * Lesson Attributes * * Populates an array of attributes about a lesson, if it's a sample or if it isn't currently available * * @since 3.0 * * @param object $lesson - The lesson post object to evaluate * * @return array Attributes including label, icon and class name */ function learndash_get_lesson_attributes( $lesson = null ) { $attributes = array(); // Fail silently if ( null === $lesson ) { return $attributes; } if ( 'is_sample' === $lesson['sample'] ) { $attributes[] = array( 'label' => __( 'Sample Lesson', 'learndash' ), 'icon' => 'ld-icon-unlocked', 'class' => 'ld-status-unlocked ld-primary-color', ); } if ( ! empty( $lesson['lesson_access_from'] ) ) { $attributes[] = array( 'label' => sprintf( // translators: placeholders: Date when lesson will be available esc_html_x( 'Available on %s', 'Available on date label', 'learndash' ), learndash_adjust_date_time_display( $lesson['lesson_access_from'] ) ), 'class' => 'ld-status-waiting ld-tertiary-background', 'icon' => 'ld-icon-calendar', ); } return apply_filters( 'learndash_lesson_attributes', $attributes, $lesson ); } /** * Get Template Part * * Function to facilitate including sub-templates * * @since 3.0 * * @param string $filepath - The path to the template file to include * @param array $args - Any variables to pass along to the new template * @param bool $echo - Output or just return * * @return string If echo is false, string with markup returned */ function learndash_get_template_part( $filepath, $args = null, $echo = false ) { // Keep this in the logic from LD core to allow the same overrides. $filepath = SFWD_LMS::get_template( $filepath, null, null, true ); if ( ( ! empty( $filepath ) ) && ( file_exists( $filepath ) ) ) { ob_start(); extract( $args ); include $filepath; $output = ob_get_clean(); if ( $echo ) { echo $output; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Outputting HTML from templates } else { return $output; } } } /** * Learndash Content Wrapper Class * * Filterable function to add a class to all LearnDash content, allows conditional adding of additional classes * * @since 3.0 * * @param int/object $post - Post ID or post object * * @return string Wrapper class */ function learndash_get_wrapper_class( $post = null ) { if ( null === $post ) { global $post; } if ( is_numeric( $post ) ) { $post = get_post( $post ); } return apply_filters( 'learndash_wrapper_class', 'learndash-wrapper', $post ); } /** * Output Learndash Content Wrapper Class * * Same as learndash_get_wrapper_class only outputs it * * @since 3.0 * * @param int/object $post - Post ID or post object * * @return null */ function learndash_the_wrapper_class( $post = null ) { if ( null === $post ) { global $post; } if ( is_numeric( $post ) ) { $post = get_post( $post ); } echo esc_attr( learndash_get_wrapper_class( $post ) ); } /** * LearnDash Status Icon * * Output the status icon for a course element. Simplifies template logic. * * @since 3.0 * * @param string $status The current items status, either not-completed or completed (based on current logic and labeling) * @param string $post_type What post type we're checking against so this can be used for courses, lessons, topics and quizzes * @param array $args Arguments * @param bool $echo True to output, false to return markup * * @return null/string */ function learndash_status_icon( $status = 'not-completed', $post_type = null, $args = null, $echo = false ) { $class = 'ld-status-icon '; $markup = ''; if ( 'sfwd-quiz' !== $post_type ) { switch ( $status ) { case ( 'not-completed' ): $class .= 'ld-status-incomplete'; $markup = '
      '; break; case ( 'completed' ): $class .= 'ld-status-complete ld-secondary-background'; $markup = '
      '; break; case ( 'progress' ): $class .= 'ld-status-in-progress ld-secondary-in-progress-icon'; $markup = '
      '; break; default: $class .= 'ld-status-incomplete'; $markup = '
      '; break; } } else { switch ( $status ) { case ( 'notcompleted' ): case ( 'failed' ): $class .= 'ld-quiz-incomplete'; $markup = '
      '; break; case ( 'completed' ): case ( 'passed' ): $class .= 'ld-quiz-complete ld-secondary-color'; $markup = '
      '; break; case ( 'pending' ): $class .= 'ld-quiz-pending'; $markup = '
      '; break; } } $markup = apply_filters( 'learndash_status_icon', $markup, $status, $post_type, $args, $echo ); if ( $echo ) { echo wp_kses_post( $markup ); } return $markup; } /** * LearnDash Status Bubble * * Output the status bubble of an element. Simplifies template logic. * * @since 3.0 * * @param string $status - The current items status, either incomplete or complete * @param string $context - The current context the bubble is being output, used for color management * * @return null/string */ function learndash_status_bubble( $status = 'incomplete', $context = null, $echo = true ) { $bubble = ''; switch ( $status ) { case 'In Progress': case 'progress': case 'incomplete': $bubble = '
      ' . esc_html_x( 'In Progress', 'In Progress item status', 'learndash' ) . '
      '; break; case 'complete': case 'completed': case 'Completed': $bubble = '
      ' . esc_html_x( 'Complete', 'In Progress item status', 'learndash' ) . '
      '; break; case 'graded': $bubble = '
      ' . esc_html_x( 'Graded', 'In Progress item status', 'learndash' ) . '
      '; break; case 'not_graded': $bubble = '
      ' . esc_html_x( 'Not Graded', 'In Progress item status', 'learndash' ) . '
      '; break; case '': default: break; } $bubble = apply_filters( 'learndash_status_bubble', $bubble, $status ); if ( $echo ) { echo wp_kses_post( $bubble ); } else { return $bubble; } } // This is just for testing icon sizing and scaling // add_action( 'admin_footer', 'learndash_test_admin_icon' ); function learndash_test_admin_icon() { ?> ID; } $args = array( 'posts_per_page' => -1, 'post_type' => 'sfwd-assignment', 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'course_id', 'value' => $course_id, ), array( 'key' => 'user_id', 'value' => $user_id, ), ), ); $assignments = new WP_Query( $args ); if ( ! $assignments->have_posts() ) { return false; } return $assignments; } add_action( 'wp_enqueue_scripts', 'learndash_30_remove_legacy_css' ); function learndash_30_remove_legacy_css() { $styles = array( 'sfwd_front_css', 'learndash_style', 'learndash_quiz_front', ); foreach ( $styles as $handle ) { wp_dequeue_style( $handle ); } } function learndash_get_user_stats( $user_id = null ) { if ( null === $user_id ) { $cuser = wp_get_current_user(); $user_id = $cuser->ID; } else { $user_id = absint( $user_id ); } $progress = get_user_meta( $user_id, '_sfwd-course_progress' ); $stats = array( 'courses' => 0, 'completed' => 0, 'points' => learndash_get_user_course_points( $user_id ), 'certificates' => learndash_get_certificate_count( $user_id ), ); $courses = learndash_user_get_enrolled_courses( $user_id, array(), true ); if ( $courses ) { $stats['courses'] = count( $courses ); foreach ( $courses as $course_id ) { $progress = learndash_course_progress( array( 'user_id' => $user_id, 'course_id' => $course_id, 'array' => true, ) ); if ( 100 === absint( $progress['percentage'] ) ) { $stats['completed']++; } } } return apply_filters( 'learndash-get-user-stats', $stats, $user_id ); } global $learndash_in_focus_mode; $learndash_in_focus_mode = false; add_filter( 'template_include', 'learndash_30_focus_mode', 99 ); function learndash_30_focus_mode( $template ) { $focus_mode = LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Theme_LD30', 'focus_mode_enabled' ); if ( 'yes' !== $focus_mode ) { global $learndash_in_focus_mode; $learndash_in_focus_mode = true; return $template; } $post_types = array( 'sfwd-lessons', 'sfwd-topic', 'sfwd-assignment', 'sfwd-quiz', ); if ( in_array( get_post_type(), $post_types, true ) && is_singular( $post_types ) ) { return LEARNDASH_LMS_PLUGIN_DIR . 'themes/ld30/templates/focus/index.php'; } return $template; } add_filter( 'learndash_template_filename', 'learndash_30_template_filename', 1000, 5 ); function learndash_30_template_filename( $filepath = '', $name = '', $args = array(), $echo = false, $return_file_path = false ) { /** * The Transition Routes array contains the legacy template filename as the key * and the value is the alternate filename to be used. */ $transition_template_filenames = array( // LD Core templates 'course.php' => 'course.php', 'lesson.php' => 'lesson.php', 'topic.php' => 'topic.php', 'quiz.php' => 'quiz.php', // LD Core Shortcode templates 'profile.php' => 'shortcodes/profile.php', 'ld_course_list.php' => 'shortcodes/ld_course_list.php', 'course_list_template.php' => 'shortcodes/course_list_template.php', 'ld_topic_list.php' => 'shortcodes/ld_topic_list.php', 'user_groups_shortcode.php' => 'shortcodes/user_groups_shortcode.php', 'course_content_shortcode.php' => 'shortcodes/course_content_shortcode.php', // LD Core Widgets 'course_navigation_widget.php' => 'widgets/course-navigation.php', 'course_progress_widget.php' => 'widgets/course-progress.php', // LD Core Messages 'learndash_course_prerequisites_message.php' => 'modules/messages/prerequisites.php', 'learndash_course_points_access_message.php' => 'modules/messages/course-points.php', 'learndash_course_lesson_not_available.php' => 'modules/messages/lesson-not-available.php', // LD Core Modules. 'learndash_lesson_video.php' => 'modules/lesson-video.php', 'learndash_lesson_assignment_upload_form.php' => false, ); if ( ( ! empty( $filepath ) ) && ( isset( $transition_template_filenames[ $filepath ] ) ) ) { $filepath = $transition_template_filenames[ $filepath ]; } return $filepath; } add_action( 'wp_enqueue_scripts', 'learndash_30_template_assets' ); function learndash_30_template_assets() { // If this function is being called then we are the active theme. $theme_template_url = LearnDash_Theme_Register::get_active_theme_base_url(); /** * @TODO : These assets really should be moved to the /templates directory since they are part of the theme. */ wp_register_style( 'learndash-front', $theme_template_url . '/assets/css/learndash' . leardash_min_asset() . '.css', array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_register_script( 'learndash-front', $theme_template_url . '/assets/js/learndash.js', array( 'jquery' ), LEARNDASH_SCRIPT_VERSION_TOKEN, true ); wp_register_style( 'learndash-quiz-front', $theme_template_url . '/assets/css/learndash.quiz.front' . leardash_min_asset() . '.css', array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_enqueue_style( 'learndash-front' ); wp_style_add_data( 'learndash-front', 'rtl', 'replace' ); wp_enqueue_script( 'learndash-front' ); wp_localize_script( 'learndash-front', 'ajaxurl', admin_url( 'admin-ajax.php' ) ); wp_localize_script( 'learndash-front', 'ldVars', array( 'postID' => get_the_ID(), 'videoReqMsg' => esc_html__( 'You must watch the video before accessing this content', 'learndash' ), ) ); if ( get_post_type() == 'sfwd-quiz' ) { wp_enqueue_style( 'learndash-quiz-front' ); wp_style_add_data( 'learndash-quiz-front', 'rtl', 'replace' ); } $dequeue_styles = array( 'learndash_pager_css', 'learndash_template_style_css', ); foreach ( $dequeue_styles as $style ) { wp_dequeue_style( $style ); } } add_action( 'enqueue_block_editor_assets', 'learndash_30_editor_scripts' ); function learndash_30_editor_scripts() { wp_enqueue_style( 'learndash-front', LEARNDASH_LMS_PLUGIN_URL . 'themes/ld30/assets/css/learndash' . leardash_min_asset() . '.css', array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'learndash-front', 'rtl', 'replace' ); wp_enqueue_script( 'learndash-front', LEARNDASH_LMS_PLUGIN_URL . 'themes/ld30/assets/js/learndash' . leardash_min_asset() . '.js', array( 'jquery' ), LEARNDASH_SCRIPT_VERSION_TOKEN, true ); } class LearnDash_User_Status_Widget extends WP_Widget { /** * Setup Course Info Widget */ public function __construct() { $widget_ops = array( 'classname' => 'widget_lduserstatus', 'description' => sprintf( // translators: placeholder: Courses esc_html_x( 'LearnDash - Registered %s and progress information of users. Visible only to users logged in.', 'placeholders: courses', 'learndash' ), LearnDash_Custom_Label::get_label( 'courses' ) ), ); $control_ops = array(); // 'width' => 400, 'height' => 350); parent::__construct( 'lduserstatus', __( 'User Status', 'learndash' ), $widget_ops, $control_ops ); } /** * Displays widget * * @since 3.0.0 * * @param array $args widget arguments * @param array $instance widget instance * @return string widget output */ public function widget( $args, $instance ) { global $learndash_shortcode_used; extract( $args ); /** * Filter widget title * * @since 3.0.0 * * @param string */ $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance ); if ( empty( $user_id ) ) { $current_user = wp_get_current_user(); if ( empty( $current_user->ID ) ) { return; } $user_id = $current_user->ID; } if ( empty( $args ) ) { $args = array( 'return' => true, ); } elseif ( ! isset( $args['return'] ) ) { $args['return'] = true; } if ( isset( $instance['registered_num'] ) ) { $args['registered_num'] = intval( $instance['registered_num'] ); } if ( isset( $instance['registered_orderby'] ) ) { $args['registered_orderby'] = sanitize_text_field( $instance['registered_orderby'] ); } if ( isset( $instance['registered_order'] ) ) { $args['registered_order'] = sanitize_text_field( $instance['registered_order'] ); } $course_info = SFWD_LMS::get_course_info( $user_id, $args ); $user_status = learndash_get_template_part( 'shortcodes/user-status.php', array( 'course_info' => $course_info, 'shortcode_atts' => $args, 'context' => 'widget', ), false ); if ( empty( $user_status ) ) { return; } echo $before_widget; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- HTML output before widget if ( ! empty( $title ) ) { echo $before_title . $title . $after_title; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- HTML output before and after title } echo $user_status; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- HTML output user status echo $after_widget; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- HTML output after widget $learndash_shortcode_used = true; } /** * Handles widget updates in admin * * @since 2.1.0 * * @param array $new_instance * @param array $old_instance * @return array $instance */ public function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['title'] = wp_strip_all_tags( $new_instance['title'] ); $instance['registered_show_thumbnail'] = esc_attr( $new_instance['registered_show_thumbnail'] ); if ( '' !== $new_instance['registered_num'] ) { $instance['registered_num'] = intval( $new_instance['registered_num'] ); } else { $instance['registered_num'] = false; } $instance['registered_orderby'] = esc_attr( $new_instance['registered_orderby'] ); $instance['registered_order'] = esc_attr( $new_instance['registered_order'] ); return $instance; } /** * Display widget form in admin * * @since 2.1.0 * * @param array $instance widget instance */ public function form( $instance ) { $instance = wp_parse_args( (array) $instance, array( 'title' => '', 'registered_show_thumbnail' => '', 'registered_num' => false, 'registered_orderby' => '', 'registered_order' => '', ) ); $title = wp_strip_all_tags( $instance['title'] ); $registered_show_thumbnail = esc_attr( $instance['registered_show_thumbnail'] ); if ( '' !== $instance['registered_num'] ) { $registered_num = abs( intval( $instance['registered_num'] ) ); } else { $registered_num = ''; } $registered_orderby = esc_attr( $instance['registered_orderby'] ); $registered_order = esc_attr( $instance['registered_order'] ); ?>

      esc_html__( 'LearnDash: Focus Mode Dropdown', 'learndash' ), ) ) ); } function learndash_30_get_custom_focus_menu_items() { $theme_locations = get_nav_menu_locations(); if ( ! isset( $theme_locations['ld30_focus_mode'] ) ) { return false; } $menu_obj = get_term( $theme_locations['ld30_focus_mode'], 'nav_menu' ); if ( ! $menu_obj || ! isset( $menu_obj->term_id ) ) { return false; } return wp_get_nav_menu_items( $menu_obj->term_id ); } add_action( 'wp_enqueue_scripts', 'learndash_30_custom_colors' ); function learndash_30_custom_colors() { $colors = apply_filters( 'learndash_30_custom_colors', array( 'primary' => LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Theme_LD30', 'color_primary' ), 'secondary' => LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Theme_LD30', 'color_secondary' ), 'tertiary' => LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Theme_LD30', 'color_tertiary' ), ) ); $responsive_video = apply_filters( 'learndash_30_responsive_video', LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Theme_LD30', 'responsive_video_enabled' ) ); $focus_width = apply_filters( 'learndash_30_focus_mode_width', LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Theme_LD30', 'focus_mode_content_width' ) ); ob_start(); if ( ( isset( $colors['primary'] ) ) && ( ! empty( $colors['primary'] ) ) && ( LD_30_COLOR_PRIMARY != $colors['primary'] ) ) { // Convert HEX to RGB for for use with rgba() $primaryBuildRgb = list($r, $g, $b) = sscanf( $colors['primary'], '#%02x%02x%02x' ); $primaryRgb = "$r, $g, $b"; ?> .learndash-wrapper .ld-item-list .ld-item-list-item.ld-is-next, .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label:focus-within { border-color: ; } /* .learndash-wrapper a:not(.ld-button):not(#quiz_continue_link):not(.ld-focus-menu-link):not(.btn-blue):not(#quiz_continue_link):not(.ld-js-register-account):not(#ld-focus-mode-course-heading):not(#btn-join):not(.ld-item-name):not(.ld-table-list-item-preview):not(.ld-lesson-item-preview-heading), */ .learndash-wrapper .ld-breadcrumbs a, .learndash-wrapper .ld-lesson-item.ld-is-current-lesson .ld-lesson-item-preview-heading, .learndash-wrapper .ld-lesson-item.ld-is-current-lesson .ld-lesson-title, .learndash-wrapper .ld-primary-color-hover:hover, .learndash-wrapper .ld-primary-color, .learndash-wrapper .ld-primary-color-hover:hover, .learndash-wrapper .ld-primary-color, .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab.ld-active, .learndash-wrapper .ld-button.ld-button-transparent, .learndash-wrapper .ld-button.ld-button-reverse, .learndash-wrapper .ld-icon-certificate, .learndash-wrapper .ld-login-modal .ld-login-modal-login .ld-modal-heading, #wpProQuiz_user_content a, .learndash-wrapper .ld-item-list .ld-item-list-item a.ld-item-name:hover, .learndash-wrapper .ld-focus-comments__heading-actions .ld-expand-button, .learndash-wrapper .ld-focus-comments__heading a, .learndash-wrapper .ld-focus-comments .comment-respond a, .learndash-wrapper .ld-focus-comment .ld-comment-reply a.comment-reply-link:hover, .learndash-wrapper .ld-expand-button.ld-button-alternate { color: !important; } .learndash-wrapper .ld-focus-comment.bypostauthor>.ld-comment-wrapper, .learndash-wrapper .ld-focus-comment.role-group_leader>.ld-comment-wrapper, .learndash-wrapper .ld-focus-comment.role-administrator>.ld-comment-wrapper { background-color:rgba(, 0.03) !important; } .learndash-wrapper .ld-primary-background, .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab.ld-active:after { background: !important; } .learndash-wrapper .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-status-incomplete, .learndash-wrapper .ld-focus-comment.bypostauthor:not(.ptype-sfwd-assignment) >.ld-comment-wrapper>.ld-comment-avatar img, .learndash-wrapper .ld-focus-comment.role-group_leader>.ld-comment-wrapper>.ld-comment-avatar img, .learndash-wrapper .ld-focus-comment.role-administrator>.ld-comment-wrapper>.ld-comment-avatar img { border-color: !important; } .learndash-wrapper .ld-loading::before { border-top:3px solid !important; } .learndash-wrapper .ld-button:hover:not(.learndash-link-previous-incomplete):not(.ld-button-transparent), #learndash-tooltips .ld-tooltip:after, #learndash-tooltips .ld-tooltip, .learndash-wrapper .ld-primary-background, .learndash-wrapper .btn-join, .learndash-wrapper #btn-join, .learndash-wrapper .ld-button:not(.ld-js-register-account):not(.learndash-link-previous-incomplete):not(.ld-button-transparent), .learndash-wrapper .ld-expand-button, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button:not(.wpProQuiz_button_reShowQuestion):not(.wpProQuiz_button_restartQuiz), .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2, .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading, .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-focus-sidebar-trigger, .learndash-wrapper .ld-focus-comments .form-submit #submit, .learndash-wrapper .ld-login-modal input[type='submit'], .learndash-wrapper .ld-login-modal .ld-login-modal-register, .learndash-wrapper .wpProQuiz_content .wpProQuiz_certificate a.btn-blue, .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items a, #wpProQuiz_user_content table.wp-list-table thead th, #wpProQuiz_overlay_close, .learndash-wrapper .ld-expand-button.ld-button-alternate .ld-icon { background-color: !important; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items:before { border-bottom-color: !important; } .learndash-wrapper .ld-button.ld-button-transparent:hover { background: transparent !important; } .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete .learndash_mark_complete_button, .learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete #learndash_mark_complete_button, .learndash-wrapper .ld-button.ld-button-transparent, .learndash-wrapper .ld-button.ld-button-alternate, .learndash-wrapper .ld-expand-button.ld-button-alternate { background-color:transparent !important; } .learndash-wrapper .ld-focus-header .ld-user-menu .ld-user-menu-items a, .learndash-wrapper .ld-button.ld-button-reverse:hover, .learndash-wrapper .ld-alert-success .ld-alert-icon.ld-icon-certificate, .learndash-wrapper .ld-alert-warning .ld-button:not(.learndash-link-previous-incomplete), .learndash-wrapper .ld-primary-background.ld-status { color:white !important; } .learndash-wrapper .ld-status.ld-status-unlocked { background-color: !important; color: !important; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_addToplist { background-color: !important; border: 1px solid !important; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_toplistTable th { background: !important; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_toplistTrOdd { background-color: !important; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewDiv li.wpProQuiz_reviewQuestionTarget { background-color: !important; } .learndash-wrapper #quiz_continue_link, .learndash-wrapper .ld-secondary-background, .learndash-wrapper .learndash_mark_complete_button, .learndash-wrapper #learndash_mark_complete_button, .learndash-wrapper .ld-status-complete, .learndash-wrapper .ld-alert-success .ld-button, .learndash-wrapper .ld-alert-success .ld-alert-icon { background-color: !important; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link { background-color: !important; } .learndash-wrapper .course_progress .sending_progress_bar { background: !important; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button_reShowQuestion:hover, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button_restartQuiz:hover { background-color: !important; opacity: 0.75; } .learndash-wrapper .ld-secondary-color-hover:hover, .learndash-wrapper .ld-secondary-color, .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete .learndash_mark_complete_button, .learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete #learndash_mark_complete_button, .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete:after { color: !important; } .learndash-wrapper .ld-secondary-in-progress-icon { border-left-color: !important; border-top-color: !important; } .learndash-wrapper .ld-alert-success { border-color: ; background-color: transparent !important; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionSolved, .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionSolved { background-color: !important; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewLegend span.wpProQuiz_reviewColor_Answer { background-color: !important; } .learndash-wrapper .ld-alert-warning { background-color:transparent; } .learndash-wrapper .ld-status-waiting, .learndash-wrapper .ld-alert-warning .ld-alert-icon { background-color: !important; } .learndash-wrapper .ld-tertiary-color-hover:hover, .learndash-wrapper .ld-tertiary-color, .learndash-wrapper .ld-alert-warning { color: !important; } .learndash-wrapper .ld-tertiary-background { background-color: !important; } .learndash-wrapper .ld-alert-warning { border-color: !important; } .learndash-wrapper .ld-tertiary-background, .learndash-wrapper .ld-alert-warning .ld-alert-icon { color:white !important; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionReview, .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionReview { background-color: !important; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewLegend span.wpProQuiz_reviewColor_Review { background-color: !important; } .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content { max-width: ; } false, 'message' => __( 'No attributes passed in', 'learndash' ), ) ); } if ( isset( $_GET['profile_search'] ) ) { $atts['search'] = sanitize_text_field( $_GET['profile_search'] ); $_GET['ld-profile-search'] = sanitize_text_field( $_GET['profile_search'] ); } $atts = apply_filters( 'learndash_profile_ajax_search_atts', $_GET['shortcode_instance'] ); echo learndash_profile( $atts ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Outputs the LearnDash Profile template wp_send_json_success( array( 'success' => true, 'markup' => ob_get_clean(), ) ); } add_action( 'wp_ajax_ld30_ajax_pager', 'learndash_30_ajax_pager' ); add_action( 'wp_ajax_nopriv_ld30_ajax_pager', 'learndash_30_ajax_pager' ); function learndash_30_ajax_pager() { $course_id = ( isset( $_GET['course_id'] ) ? absint( $_GET['course_id'] ) : false ); $lesson_id = ( isset( $_GET['lesson_id'] ) ? absint( $_GET['lesson_id'] ) : false ); $context = ( isset( $_GET['context'] ) ? esc_attr( $_GET['context'] ) : false ); $widget_instance = ( isset( $_GET['widget_instance'] ) ? $_GET['widget_instance'] : array() ); // Assumed Course Navigation Widget but always check. if ( isset( $widget_instance['widget_instance']['show_lesson_quizzes'] ) ) { $widget_instance['widget_instance']['show_lesson_quizzes'] = (bool) $widget_instance['widget_instance']['show_lesson_quizzes']; } if ( isset( $widget_instance['widget_instance']['show_topic_quizzes'] ) ) { $widget_instance['widget_instance']['show_topic_quizzes'] = (bool) $widget_instance['widget_instance']['show_topic_quizzes']; } if ( isset( $widget_instance['widget_instance']['show_course_quizzes'] ) ) { $widget_instance['widget_instance']['show_course_quizzes'] = (bool) $widget_instance['widget_instance']['show_course_quizzes']; } $cuser = wp_get_current_user(); $user_id = ( is_user_logged_in() ? $cuser->ID : false ); global $course_pager_results; $contexts_without_course_id = array( 'profile', 'course_info_courses', ); if ( ! in_array( $context, $contexts_without_course_id, true ) && ( ! isset( $course_id ) || empty( $course_id ) ) ) { wp_send_json_error( array( 'success' => false, 'message' => __( 'No course ID supplied', 'learndash' ), ) ); } // We're paginating topics if ( isset( $lesson_id ) && ! empty( $lesson_id ) ) { $all_topics = learndash_topic_dots( $lesson_id, false, 'array' ); $topic_pager_args = apply_filters( 'ld30_ajax_topic_pager_args', array( 'course_id' => $course_id, 'lesson_id' => $lesson_id, ) ); $topics = learndash_process_lesson_topics_pager( $all_topics, $topic_pager_args ); if ( empty( $topics ) || ! $topics ) { wp_send_json_error( array( 'success' => false, 'message' => __( 'No topics for this lesson', 'learndash' ), ) ); } ob_start(); foreach ( $topics as $key => $topic ) { learndash_get_template_part( 'topic/partials/row.php', array( 'topic' => $topic, 'user_id' => $user_id, 'course_id' => $course_id, ), true ); } $topic_list = ob_get_clean(); $nav_topics = ''; if ( isset( $_GET['widget_instance'] ) ) { ob_start(); foreach ( $topics as $key => $topic ) { learndash_get_template_part( 'widgets/navigation/topic-row.php', array( 'topic' => $topic, 'course_id' => $course_id, 'user_id' => $user_id, 'widget_instance' => $widget_instance['widget_instance'], ), true ); } $nav_topics = ob_get_clean(); } /** * Add in quizzes if needed * * @var [type] */ $show_lesson_quizzes = true; if ( isset( $course_pager_results[ $lesson_id ]['pager'] ) && ! empty( $course_pager_results[ $lesson_id ]['pager'] ) ) : $show_lesson_quizzes = ( $course_pager_results[ $lesson_id ]['pager']['paged'] == $course_pager_results[ $lesson_id ]['pager']['total_pages'] ? true : false ); endif; $show_lesson_quizzes = apply_filters( 'learndash-show-lesson-quizzes', $show_lesson_quizzes, $lesson_id, $course_id, $user_id ); if ( $show_lesson_quizzes ) { $quizzes = learndash_get_lesson_quiz_list( $lesson_id, $user_id, $course_id ); if ( $quizzes && ! empty( $quizzes ) ) { /** * First add them to the lesson listing * * @var [type] */ ob_start(); foreach ( $quizzes as $quiz ) { learndash_get_template_part( 'quiz/partials/row.php', array( 'quiz' => $quiz, 'user_id' => $user_id, 'course_id' => $course_id, 'context' => 'lesson', ), true ); } $topic_list .= ob_get_clean(); /** * See if we should add them to the widget nav * * @var [type] */ if ( isset( $widget_instance['show_lesson_quizzes'] ) && true === (bool) $widget_instance['show_lesson_quizzes'] ) { ob_start(); foreach ( $quizzes as $quiz ) { learndash_get_template_part( 'widgets/navigation/quiz-row.php', array( 'course_id' => $course_id, 'user_id' => $user_id, 'context' => 'lesson', 'quiz' => $quiz, ), true ); } $nav_topics .= ob_get_clean(); } } } ob_start(); learndash_get_template_part( 'modules/pagination.php', array( 'pager_results' => $course_pager_results[ $lesson_id ]['pager'], 'pager_context' => 'course_topics', 'href_query_arg' => 'ld-topic-page', 'lesson_id' => $lesson_id, 'course_id' => $course_id, 'href_val_prefix' => $lesson_id . '-', ), true ); $pager = ob_get_clean(); wp_send_json_success( array( 'success' => true, 'context' => $context, 'topics' => $topic_list, 'nav_topics' => $nav_topics, 'pager' => $pager, 'lesson_id' => $lesson_id, ) ); } elseif ( 'course_lessons' === $context ) { $lesson_query_args = learndash_focus_mode_lesson_query_args( $course_id ); $lessons = learndash_30_get_course_navigation( $course_id, array(), $lesson_query_args ); $has_access = sfwd_lms_has_access( $course_id ); $lesson_progression_enabled = learndash_lesson_progression_enabled( $course_id ); $lesson_topics = array(); if ( ! empty( $lessons ) ) { foreach ( $lessons as $lesson ) { $all_topics = learndash_topic_dots( $lesson['post']->ID, false, 'array', null, $course_id ); $topic_pager_args = apply_filters( 'ld30_ajax_topic_pager_args', array( 'course_id' => $course_id, 'lesson_id' => $lesson['post']->ID, ) ); $lesson_topics[ $lesson['post']->ID ] = learndash_process_lesson_topics_pager( $all_topics, $topic_pager_args ); if ( ! empty( $lesson_topics[ $lesson['post']->ID ] ) ) { $has_topics = true; } } } $quizzes = learndash_get_course_quiz_list( $course_id ); ob_start(); learndash_get_template_part( 'course/listing.php', array( 'course_id' => $course_id, 'user_id' => $user_id, 'lessons' => $lessons, 'lesson_topics' => $lesson_topics, 'quizzes' => $quizzes, 'has_access' => $has_access, 'course_pager_results' => $course_pager_results, 'lesson_progression_enabled' => $lesson_progression_enabled, ), true ); $lesson_list = ob_get_clean(); // Need to adjust based on widget settings $lessons = learndash_get_course_lessons_list( $course_id, $user_id, $lesson_query_args ); ob_start(); learndash_get_template_part( 'widgets/navigation/rows.php', array( 'course_id' => $course_id, 'widget_instance' => ( isset( $widget_instance['widget_instance'] ) ? $widget_instance['widget_instance'] : false ), 'lessons' => $lessons, 'course_pager_results' => $course_pager_results, 'has_access' => $has_access, 'user_id' => $user_id, ), true ); $nav_lessons = ob_get_clean(); wp_send_json_success( array( 'success' => true, 'context' => $context, 'lessons' => $lesson_list, 'nav_lessons' => $nav_lessons, 'course_id' => $course_id, 'widget_instance' => $widget_instance, ) ); } elseif ( 'profile' === $context ) { ob_start(); if ( ! isset( $_GET['shortcode_instance'] ) ) { wp_send_json_error( array( 'success' => false, 'message' => __( 'No attributes passed in', 'learndash' ), ) ); } $atts = apply_filters( 'learndash_profile_ajax_pagination_atts', $_GET['shortcode_instance'] ); echo learndash_profile( $atts ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Outputs the LearnDash Profile shortcode wp_send_json_success( array( 'success' => true, 'markup' => ob_get_clean(), ) ); } elseif ( 'course_content_shortcode' === $context ) { ob_start(); $atts = apply_filters( 'learndash_course_content_shortcode_ajax_pagination_atts', $_GET['shortcode_instance'] ); echo learndash_course_content_shortcode( $atts ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Outputs the LearnDash Course Content shortcode wp_send_json_success( array( 'success' => true, 'markup' => ob_get_clean(), ) ); } elseif ( 'course_info_courses' === $context ) { $args = array( 'return' => true, 'paged' => ( isset( $_GET['ld-user-status'] ) ? intval( $_GET['ld-user-status'] ) : 1 ), ); add_filter( 'learndash_course_info_paged', function( $paged = 1, $context = '' ) { if ( ( 'registered' === $context ) && ( isset( $_GET['ld-user-status'] ) ) && ( ! empty( $_GET['ld-user-status'] ) ) ) { $paged = intval( $_GET['ld-user-status'] ); } // Always return $paged return $paged; }, 10, 2 ); $instance = apply_filters( 'learndash_user_status_widget_ajax_pagination_atts', $_GET['shortcode_instance'] ); if ( isset( $instance['registered_num'] ) ) { $args['registered_num'] = intval( $instance['registered_num'] ); } if ( isset( $instance['registered_orderby'] ) ) { $args['registered_orderby'] = sanitize_text_field( $instance['registered_orderby'] ); } if ( isset( $instance['registered_order'] ) ) { $args['registered_order'] = sanitize_text_field( $instance['registered_order'] ); } $course_info = SFWD_LMS::get_course_info( $user_id, $args ); ob_start(); learndash_get_template_part( 'shortcodes/user-status.php', array( 'course_info' => $course_info, 'shortcode_atts' => $args, 'context' => 'widget', ), true ); wp_send_json_success( array( 'success' => true, 'markup' => ob_get_clean(), ) ); } wp_send_json_error( array( 'success' => false, 'message' => __( 'No Pagination Match', 'learndash' ), ) ); } function learndash_focus_mode_lesson_query_args( $course_id, $course_lessons_per_page = null ) { global $post; $lesson_query_args = array(); $instance = array(); if ( null === $course_lessons_per_page ) { $course_lessons_per_page = learndash_get_course_lessons_per_page( $course_id ); } if ( $course_lessons_per_page > 0 && ( $post instanceof WP_Post ) ) { if ( in_array( $post->post_type, array( 'sfwd-lessons', 'sfwd-topic', 'sfwd-quiz' ), true ) ) { $instance['current_step_id'] = $post->ID; if ( 'sfwd-lessons' === $post->post_type ) { $instance['current_lesson_id'] = $post->ID; } elseif ( in_array( $post->post_type, array( 'sfwd-topic', 'sfwd-quiz' ), true ) ) { $instance['current_lesson_id'] = learndash_course_get_single_parent_step( $course_id, $post->ID, 'sfwd-lessons' ); } if ( ! empty( $instance['current_lesson_id'] ) ) { $course_lesson_ids = learndash_course_get_steps_by_type( $course_id, 'sfwd-lessons' ); if ( ! empty( $course_lesson_ids ) ) { $course_lessons_paged = array_chunk( $course_lesson_ids, $course_lessons_per_page, true ); $lessons_paged = 0; foreach ( $course_lessons_paged as $paged => $paged_set ) { if ( in_array( $instance['current_lesson_id'], $paged_set, true ) ) { $lessons_paged = $paged + 1; break; } } if ( ! empty( $lessons_paged ) ) { $lesson_query_args['pagination'] = 'true'; $lesson_query_args['paged'] = $lessons_paged; } } } elseif ( in_array( $post->post_type, array( 'sfwd-quiz' ), true ) ) { // If here we have a global Quiz. So we set the pager to the max number $course_lesson_ids = learndash_course_get_steps_by_type( $course_id, 'sfwd-lessons' ); if ( ! empty( $course_lesson_ids ) ) { $course_lessons_paged = array_chunk( $course_lesson_ids, $course_lessons_per_page, true ); $lesson_query_args['paged'] = count( $course_lessons_paged ); } } } } else { if ( ( $post ) && ( is_a( $post, 'WP_Post' ) ) && ( in_array( $post->post_type, array( 'sfwd-lessons', 'sfwd-topic', 'sfwd-quiz' ), true ) ) ) { $instance['current_step_id'] = $post->ID; if ( 'sfwd-lessons' === $post->post_type ) { $instance['current_lesson_id'] = $post->ID; } elseif ( in_array( $post->post_type, array( 'sfwd-topic', 'sfwd-quiz' ), true ) ) { $instance['current_lesson_id'] = learndash_course_get_single_parent_step( $course_id, $post->ID, 'sfwd-lessons' ); } } } return $lesson_query_args; } function learndash_hex2rgb( $color, $opacity = false ) { $default = 'rgb(0,0,0)'; // Return default if no color provided if ( empty( $color ) ) { return $default; } // Sanitize $color if "#" is provided if ( '#' === $color[0] ) { $color = substr( $color, 1 ); } // Check if color has 6 or 3 characters and get values if ( strlen( $color ) == 6 ) { $hex = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] ); } elseif ( strlen( $color ) == 3 ) { $hex = array( $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2] ); } else { return $default; } // Convert hexadec to rgb $rgb = array_map( 'hexdec', $hex ); // Check if opacity is set(rgba or rgb) if ( $opacity ) { if ( abs( $opacity ) > 1 ) { $opacity = 1.0; } $output = 'rgba(' . implode( ',', $rgb ) . ',' . $opacity . ')'; } else { $output = 'rgb(' . implode( ',', $rgb ) . ')'; } // Return rgb(a) color string return $output; } function learndash_30_get_course_navigation( $course_id, $widget_instance = array(), $lesson_query_args = array() ) { $course = get_post( $course_id ); if ( empty( $course->ID ) || $course_id != $course->ID ) { return; } if ( empty( $course->ID ) || 'sfwd-courses' !== $course->post_type ) { return; } if ( is_user_logged_in() ) { $user_id = get_current_user_id(); } else { $user_id = 0; } $course_navigation_widget_pager = array(); global $course_navigation_widget_pager; add_action( 'learndash_course_lessons_list_pager', function( $query_result = null ) { global $course_navigation_widget_pager; $course_navigation_widget_pager['paged'] = 1; if ( ( isset( $query_result->query_vars['paged'] ) ) && ( $query_result->query_vars['paged'] > 1 ) ) { $course_navigation_widget_pager['paged'] = $query_result->query_vars['paged']; } $course_navigation_widget_pager['total_items'] = $query_result->found_posts; $course_navigation_widget_pager['total_pages'] = $query_result->max_num_pages; } ); $lessons = learndash_get_course_lessons_list( $course, $user_id, $lesson_query_args ); return $lessons; } function learndash_30_get_course_sections( $course_id = null ) { if ( empty( $course_id ) ) { $course_id = get_the_ID(); } if ( get_post_type( $course_id ) != 'sfwd-courses' ) { $course_id = learndash_get_course_id( $course_id ); } $sections = array(); $sections_index = array(); $sections_raw = get_post_meta( $course_id, 'course_sections', true ); if ( ! $sections_raw || empty( $sections_raw ) ) { return false; } /** * Because sections only store total order, but lessons might be paginated -- we need to pass them in relative to their parent. Not great for performance. * * @var [type] */ $sections_raw = json_decode( $sections_raw ); if ( ! is_array( $sections_raw ) ) { return false; } $lessons = learndash_get_course_lessons_list( $course_id, null, array( 'num' => -1 ) ); if ( ! $lessons || empty( $lessons ) || ! is_array( $lessons ) ) { return false; } $lessons = array_values( $lessons ); $i = 0; foreach ( $lessons as $lesson ) { foreach ( $sections_raw as $section ) { if ( $section->order == $i ) { $sections[ $lesson['post']->ID ] = $section; $i++; } } $i++; } return $sections; } add_filter( 'body_class', 'learndash_30_custom_body_classes' ); function learndash_30_custom_body_classes( $classes ) { $focus_mode = LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Theme_LD30', 'focus_mode_enabled' ); $post_types = array( 'sfwd-lessons', 'sfwd-topic', 'sfwd-quiz', 'sfwd-assignment', ); if ( 'yes' === $focus_mode && in_array( get_post_type(), $post_types, true ) ) { $classes[] = 'ld-in-focus-mode'; } return $classes; } function learndash_30_focus_mode_can_complete( $post = null, $course_id = null ) { if ( null === $post ) { global $post; } if ( is_int( $post ) ) { $post = get_post( $post ); } if ( ! $course_id ) { $course_id = learndash_get_course_id( $course_id ); } // Shouldn't appear regardless if this is a quiz if ( get_post_type( $post ) == 'sfwd-quiz' ) { return false; } $complete_button = learndash_mark_complete( $post ); // If the complete button returns empty, also just return false if ( empty( $complete_button ) ) { return false; } // Check if has any outstanding quizzes $quizzes = learndash_get_lesson_quiz_list( $post->ID, get_current_user_id(), $course_id ); // If there is a quiz then the quiz is the mark complete if ( $quizzes ) { return false; } return true; } /** * Depricated */ function learndash_30_responsive_videos( $html, $url, $attr, $post_id ) { $responsive_video = apply_filters( 'learndash_30_responsive_video', LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Theme_LD30', 'responsive_video_enabled' ) ); if ( ! isset( $responsive_video ) || 'yes' !== $responsive_video ) { return false; } $post_types = apply_filters( 'learndash_responsive_video_post_types', array( 'sfwd-courses', 'sfwd-lessons', 'sfwd-topic', 'sfwd-quiz', 'sfwd-assignments', ) ); if ( ! in_array( get_post_type( $post_id ), $post_types, true ) ) { return $html; } $matches = apply_filters( 'learndash_responsive_video_domains', array( 'youtube.com', 'vimeo.com', ) ); foreach ( $matches as $match ) { if ( strpos( $url, $match ) !== false ) { return '
      ' . $html . '
      '; } } return $html; } function learndash_get_certificate_count( $user = null ) { if ( null === $user ) { $user = wp_get_current_user(); } if ( is_int( $user ) ) { $user = get_user_by( 'id', $user ); } if ( ! $user ) { return false; } $certificates = 0; $courses = get_user_meta( $user->ID, '_sfwd-course_progress', true ); $quizzes = get_user_meta( $user->ID, '_sfwd-quizzes', true ); if ( $courses && ! empty( $courses ) ) { foreach ( $courses as $course_id => $meta ) { $link = learndash_get_course_certificate_link( $course_id, $user->ID ); if ( ! empty( $link ) ) { $certificates++; } } } if ( $quizzes && ! empty( $quizzes ) ) { foreach ( $quizzes as $quiz_attempt ) { if ( isset( $quiz_attempt['certificate']['certificateLink'] ) ) { $certificates++; } } } return $certificates; } function learndash_30_has_lesson_quizzes( $course_id = null, $lessons = null ) { if ( null === $course_id && get_post_type() == 'sfwd-courses' ) { $course_id = get_the_ID(); } elseif ( null === $course_id ) { $course_id = learndash_get_course_id( get_the_ID() ); } if ( null === $lessons ) { $lessons = learndash_get_course_lessons_list( $course_id ); } foreach ( $lessons as $lesson ) { $quizzes = learndash_get_lesson_quiz_list( $lesson['post']->ID, null, $course_id ); if ( ! empty( $quizzes ) ) { return true; } } return false; } function learndash_get_points_awarded_array( $assignment_id ) { $points_enabled = learndash_assignment_is_points_enabled( $assignment_id ); if ( ! $points_enabled ) { return false; } $current = get_post_meta( $assignment_id, 'points', true ); if ( is_numeric( $current ) ) { $assignment_settings_id = intval( get_post_meta( $assignment_id, 'lesson_id', true ) ); $max_points = learndash_get_setting( $assignment_settings_id, 'lesson_assignment_points_amount' ); $max_points = intval( $max_points ); if ( ! empty( $max_points ) ) { $percentage = ( intval( $current ) / intval( $max_points ) ) * 100; $percentage = round( $percentage, 2 ); } else { $percentage = 0.00; } return apply_filters( 'learndash_get_points_awarded_array', array( 'current' => $current, 'max' => $max_points, 'percentage' => $percentage, ), $assignment_id ); } } function learndash_30_has_topics( $course_id = null, $lessons = null ) { $course_id = ( null === $course_id ? learndash_get_course_id() : $course_id ); if ( is_user_logged_in() ) { $user_id = get_current_user_id(); } else { $user_id = 0; } if ( ! empty( $lessons ) ) { foreach ( $lessons as $lesson ) { $lesson_topics[ $lesson['post']->ID ] = learndash_topic_dots( $lesson['post']->ID, false, 'array', $user_id, $course_id ); if ( ! empty( $lesson_topics[ $lesson['post']->ID ] ) ) { return true; } } } } function learndash_30_the_currency_symbol() { echo wp_kses_post( learndash_30_get_currency_symbol() ); } function learndash_30_get_currency_symbol() { $options = get_option( 'sfwd_cpt_options' ); $currency_setting = class_exists( 'LearnDash_Settings_Section' ) ? LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_PayPal', 'paypal_currency' ) : null; $currency = ''; $stripe_settings = get_option( 'learndash_stripe_settings' ); if ( ! empty( $stripe_settings ) && ! empty( $stripe_settings['currency'] ) ) { $currency = $stripe_settings['currency']; } elseif ( isset( $currency_setting ) || ! empty( $currency_setting ) ) { $currency = $currency_setting; } elseif ( isset( $options['modules'] ) && isset( $options['modules']['sfwd-courses_options'] ) && isset( $options['modules']['sfwd-courses_options']['sfwd-courses_paypal_currency'] ) ) { $currency = $options['modules']['sfwd-courses_options']['sfwd-courses_paypal_currency']; } if ( class_exists( 'NumberFormatter' ) ) { $locale = get_locale(); $number_format = new NumberFormatter( $locale . '@currency=' . $currency, NumberFormatter::CURRENCY ); $currency = $number_format->getSymbol( NumberFormatter::CURRENCY_SYMBOL ); } return $currency; } function learndash_user_can_bypass_course_limits( $user_id = null ) { if ( null === $user_id ) { $user = wp_get_current_user(); $user_id = $user->ID; } $learndash_user_can_bypass_course_limits = false; if ( learndash_is_admin_user( $user_id ) ) { $bypass_course_limits_admin_users = LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_General_Admin_User', 'bypass_course_limits_admin_users' ); if ( 'yes' === $bypass_course_limits_admin_users ) { $bypass_course_limits_admin_users = true; } else { $bypass_course_limits_admin_users = false; } } else { $bypass_course_limits_admin_users = false; } global $post; // For logged in users to allow an override filter. $bypass_course_limits_admin_users = apply_filters( 'learndash_prerequities_bypass', $bypass_course_limits_admin_users, $user_id, $post->ID, $post ); return $bypass_course_limits_admin_users; } /** * Genesis doesn't use the normal wp_enqueue_scripts or wp_head so we need to call the enqueue function specifically for Genesis * * Since 3.0.1 */ add_action( 'learndash-focus-head', 'learndash_studiopress_compatibility' ); function learndash_studiopress_compatibility() { if ( function_exists( 'genesis_enqueue_main_stylesheet' ) ) { genesis_enqueue_main_stylesheet(); } } /** * Override Sample lesson access logic. * * By default a sample lesson is available even to anonymous users. This * filter will override that access. The filer 'learndash_can_access_sample' * is also used themes/ld30/templates/lesson/partials/row.php to control * visibility of the lesson and sub-steps. * * @since 3.2.1 * @param boolean $access Access status true if the user can access $post_id. * @param integer $post_id Course step the user is trying to access. * @param integer $user_id User ID. */ add_filter( 'sfwd_lms_has_access', function( $access, $post_id, $user_id ) { if ( ( is_single() ) && ( ! is_admin() ) ) { $lesson_id = learndash_get_lesson_id( $post_id ); if ( ( true === (bool) $access ) && ( ! empty( $lesson_id ) ) && ( learndash_is_sample( $lesson_id ) ) ) { $access = apply_filters( 'learndash_lesson_sample_access', $access, $lesson_id, learndash_get_course_id(), $user_id ); } } return $access; }, 30, 3 ); PKc\`G$$#themes/ld30/includes/shortcodes.phpnuW+A LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Theme_LD30', 'login_mode_enabled' ), 'url' => false, 'label' => false, 'icon' => false, 'placement' => false, 'class' => false, 'button' => false, 'login_url' => '', 'login_label' => __( 'Login', 'learndash' ), 'login_icon' => 'login', 'login_placement' => 'left', 'login_class' => 'ld-login', 'login_button' => 'true', 'logout_url' => '', 'logout_label' => __( 'Logout', 'learndash' ), 'logout_icon' => 'arrow-right', 'logout_placement' => 'right', 'logout_class' => 'ld-logout', 'logout_button' => '', 'preview_action' => '', 'return' => '', ), $atts ); $atts['action'] = ''; if ( ( empty( $atts['action'] ) ) || ( ! in_array( $atts['action'], array( 'login', 'logout' ), true ) ) ) { if ( is_user_logged_in() ) { $atts['action'] = 'logout'; } else { $atts['action'] = 'login'; } } if ( ( ! empty( $atts['preview_action'] ) ) && ( in_array( $atts['preview_action'], array( 'login', 'logout' ), true ) ) ) { $atts['action'] = $atts['preview_action']; } $atts = apply_filters( 'learndash_login_shortcode_atts', $atts ); $filter_args = array(); if ( 'logout' === $atts['action'] ) { $filter_action = 'learndash-login-shortcode-logout'; if ( false === (bool) $atts['url'] ) { if ( ! empty( $atts['logout_url'] ) ) { $atts['logout_url'] = esc_url_raw( $atts['logout_url'] ); $filter_args['url'] = wp_logout_url( $atts['logout_url'] ); } else { $filter_args['url'] = wp_logout_url( get_permalink() ); } } else { $filter_args['url'] = wp_logout_url( $atts['url'] ); } if ( false === (bool) $atts['label'] ) { if ( ! empty( $atts['logout_label'] ) ) { $filter_args['label'] = $atts['logout_label']; } else { $filter_args['label'] = __( 'Logout', 'learndash' ); } } else { $filter_args['label'] = $atts['label']; } if ( false === (bool) $atts['icon'] ) { if ( ! empty( $atts['logout_icon'] ) ) { $filter_args['icon'] = $atts['logout_icon']; } else { $filter_args['icon'] = 'arrow-right'; } } else { $filter_args['icon'] = $atts['icon']; } if ( false === (bool) $atts['placement'] ) { if ( ! empty( $atts['logout_placement'] ) ) { $filter_args['placement'] = $atts['logout_placement']; } else { $filter_args['placement'] = 'right'; } } else { $filter_args['placement'] = $atts['placement']; } if ( false === (bool) $atts['class'] ) { if ( ! empty( $atts['logout_class'] ) ) { $filter_args['class'] = 'ld-logout ' . $atts['logout_class']; } else { $filter_args['class'] = 'ld-logout'; } } else { $filter_args['class'] = $atts['class']; } if ( false === (bool) $atts['button'] ) { if ( ! empty( $atts['logout_button'] ) ) { $filter_args['button'] = $atts['logout_button']; } else { $filter_args['button'] = 'true'; } } else { $filter_args['button'] = $atts['button']; } } elseif ( 'login' === $atts['action'] ) { $filter_action = 'learndash-login-shortcode-login'; if ( false === (bool) $atts['url'] ) { if ( ! empty( $atts['login_url'] ) ) { $atts['login_url'] = esc_url_raw( $atts['login_url'] ); $filter_args['url'] = $atts['login_url']; } else { if ( 'yes' === $atts['login_model'] ) { $filter_args['url'] = '#login'; } else { $filter_args['url'] = wp_login_url( get_permalink() ); } } } else { $filter_args['url'] = $atts['url']; } if ( false === (bool) $atts['label'] ) { if ( ! empty( $atts['login_label'] ) ) { $filter_args['label'] = $atts['login_label']; } else { $filter_args['label'] = __( 'Login', 'learndash' ); } } else { $filter_args['label'] = $atts['label']; } if ( false === (bool) $atts['icon'] ) { if ( ! empty( $atts['login_icon'] ) ) { $filter_args['icon'] = $atts['login_icon']; } else { $filter_args['icon'] = 'login'; } } else { $filter_args['icon'] = $atts['icon']; } if ( false === (bool) $atts['placement'] ) { if ( ! empty( $atts['login_placement'] ) ) { $filter_args['placement'] = $atts['login_placement']; } else { $filter_args['placement'] = 'left'; } } else { $filter_args['placement'] = $atts['placement']; } if ( false === (bool) $atts['class'] ) { if ( ! empty( $atts['login_class'] ) ) { $filter_args['class'] = 'ld-login ' . $atts['login_class']; } else { $filter_args['class'] = 'ld-login'; } } else { $filter_args['class'] = $atts['class']; } if ( false === (bool) $atts['button'] ) { if ( ! empty( $atts['login_button'] ) ) { $filter_args['button'] = $atts['login_button']; } else { $filter_args['button'] = 'true'; } } else { $filter_args['button'] = $atts['button']; } } $filter_args['url'] = apply_filters( 'learndash_login_url', $filter_args['url'], $atts['action'], $atts ); $filter_args = apply_filters( $filter_action, $filter_args, $atts ); $filter_args['class'] .= ' ld-login-text ld-login-button ' . ( isset( $filter_args['button'] ) && 'true' == $filter_args['button'] ? 'ld-button' : '' ); $icon = ( isset( $filter_args['icon'] ) ? '' : '' ); if ( empty( $atts['return'] ) ) { ob_start(); echo ''; if ( ! in_array( get_post_type(), learndash_get_post_types( 'course' ), true ) && ! is_user_logged_in() && 'yes' === $atts['login_model'] ) { learndash_load_login_modal_html(); } $content .= ob_get_clean(); } else { $content = maybe_serialize( $filter_args ); } return $content; } add_shortcode( 'learndash_login', 'learndash_login_shortcode' ); function learndash_user_status_shortcode( $atts = array() ) { if ( isset( $atts['user_id'] ) && ! empty( $atts['user_id'] ) ) { $user_id = intval( $atts['user_id'] ); unset( $atts['user_id'] ); } else { $current_user = wp_get_current_user(); if ( empty( $current_user->ID ) ) { return; } $user_id = $current_user->ID; } if ( empty( $atts ) ) { $atts = array( 'return' => true ); } elseif ( ! isset( $atts['return'] ) ) { $atts['return'] = true; } $course_info = SFWD_LMS::get_course_info( $user_id, $atts ); learndash_get_template_part( 'shortcodes/user-status.php', array( 'course_info' => $course_info, 'shortcode_atts' => $atts, ), true ); } add_shortcode( 'learndash_user_status', 'learndash_user_status_shortcode' ); PKc\%oZA,A,=themes/ld30/includes/class-ld-settings-section-theme-ld30.phpnuW+Asettings_page_id = 'learndash_lms_settings'; // This is the 'option_name' key used in the wp_options table. $this->setting_option_key = 'learndash_settings_theme_ld30'; // This is the HTML form field prefix used. $this->setting_field_prefix = 'learndash_settings_theme_ld30'; // Used within the Settings API to uniquely identify this section. $this->settings_section_key = 'settings_theme_ld30'; // Section label/header. $this->settings_section_label = esc_html__( 'Theme LearnDash 3.0 Options', 'learndash' ); // Set Associated Theme ID $this->settings_theme_key = 'ld30'; $ld30_colors_defs = array( 'LD_30_COLOR_PRIMARY' => '#00a2e8', 'LD_30_COLOR_SECONDARY' => '#019e7c', 'LD_30_COLOR_TERTIARY' => '#ffd200', ); foreach ( $ld30_colors_defs as $definition => $value ) { if ( ! defined( $definition ) ) { define( $definition, $value ); } } parent::__construct(); } /** * Initialize the metabox settings values. */ public function load_settings_values() { parent::load_settings_values(); if ( ! isset( $this->setting_option_values['login_logo'] ) ) { $this->setting_option_values['login_logo'] = 0; } if ( ! isset( $this->setting_option_values['focus_mode_enabled'] ) ) { $this->setting_option_values['focus_mode_enabled'] = 0; } if ( ! isset( $this->setting_option_values['login_mode_enabled'] ) ) { $this->setting_option_values['login_mode_enabled'] = 0; } if ( ! isset( $this->setting_option_values['responsive_video_enabled'] ) ) { $this->setting_option_values['responsive_video_enabled'] = 0; } if ( ( ! isset( $this->setting_option_values['color_primary'] ) ) || ( empty( $this->setting_option_values['color_primary'] ) ) ) { $this->setting_option_values['color_primary'] = ''; } if ( ( ! isset( $this->setting_option_values['color_secondary'] ) ) || ( empty( $this->setting_option_values['color_secondary'] ) ) ) { $this->setting_option_values['color_secondary'] = ''; } if ( ( ! isset( $this->setting_option_values['color_tertiary'] ) ) || ( empty( $this->setting_option_values['color_tertiary'] ) ) ) { $this->setting_option_values['color_tertiary'] = ''; } if ( ( ! isset( $this->setting_option_values['focus_mode_content_width'] ) ) || ( empty( $this->setting_option_values['focus_mode_content_width'] ) ) ) { $this->setting_option_values['focus_mode_content_width'] = 'default'; } /* if ( ( ! isset( $this->setting_option_values['color_4'] ) ) || ( empty( $this->setting_option_values['color_4'] ) ) ) { $this->setting_option_values['color_4'] = '#35e8d0'; } */ } /** * Initialize the metabox settings fields. */ public function load_settings_fields() { $this->setting_option_fields = array( 'color_primary' => array( 'name' => 'color_primary', 'type' => 'colorpicker', 'label' => esc_html__( 'Accent Color', 'learndash' ), 'help_text' => esc_html__( 'Main color used throughout the theme (buttons, action items, and highlights).', 'learndash' ), 'value' => ! empty( $this->setting_option_values['color_primary'] ) ? $this->setting_option_values['color_primary'] : '', 'validate_callback' => array( $this, 'validate_section_field_colors' ), 'validate_args' => array( 'allow_empty' => 1, ), 'attrs' => array( 'data-default-color' => LD_30_COLOR_PRIMARY, 'placeholder' => LD_30_COLOR_PRIMARY, ), ), 'color_secondary' => array( 'name' => 'color_secondary', 'type' => 'colorpicker', 'label' => esc_html__( 'Progress Color', 'learndash' ), 'help_text' => esc_html__( 'Color used for all successful progress-related items (completed items, certificates, and progress bars).', 'learndash' ), 'value' => ! empty( $this->setting_option_values['color_secondary'] ) ? $this->setting_option_values['color_secondary'] : '', 'validate_callback' => array( $this, 'validate_section_field_colors' ), 'validate_args' => array( 'allow_empty' => 1, ), 'attrs' => array( 'data-default-color' => LD_30_COLOR_SECONDARY, 'placeholder' => LD_30_COLOR_SECONDARY, ), ), 'color_tertiary' => array( 'name' => 'color_tertiary', 'type' => 'colorpicker', 'label' => esc_html__( 'Notifications, Warnings, etc...', 'learndash' ), 'help_text' => esc_html__( 'This color is used when there are warning, important messages.', 'learndash' ), 'value' => ! empty( $this->setting_option_values['color_tertiary'] ) ? $this->setting_option_values['color_tertiary'] : '', 'validate_callback' => array( $this, 'validate_section_field_colors' ), 'validate_args' => array( 'allow_empty' => 1, ), 'attrs' => array( 'data-default-color' => LD_30_COLOR_TERTIARY, 'placeholder' => LD_30_COLOR_TERTIARY, ), ), 'focus_mode_enabled' => array( 'name' => 'focus_mode_enabled', 'type' => 'checkbox-switch', 'label' => esc_html__( 'Focus Mode', 'learndash' ), 'help_text' => sprintf( // translators: placeholder: courses. esc_html_x( 'Provide a distraction-free course experience allowing users to focus on the content. This applies to ALL %s.', 'placeholder: courses.', 'learndash' ), learndash_get_custom_label_lower( 'courses' ) ), 'value' => $this->setting_option_values['focus_mode_enabled'], 'options' => array( '' => '', 'yes' => sprintf( // translators: placeholder: course. esc_html_x( 'Distraction-free %s experience', 'placeholder: course', 'learndash' ), learndash_get_custom_label_lower( 'course' ) ), ), 'child_section_state' => ( 'yes' === $this->setting_option_values['focus_mode_enabled'] ) ? 'open' : 'closed', ), 'focus_mode_content_width' => array( 'name' => 'focus_mode_content_width', 'type' => 'select', 'label' => esc_html__( 'Focus Mode Content Width', 'learndash' ), 'help_text' => esc_html__( 'Adjust the maximum width of the content area within Focus Mode', 'learndash' ), 'value' => $this->setting_option_values['focus_mode_content_width'], 'options' => array( 'default' => __( 'Default (960px)', 'learndash' ), '768px' => __( 'Narrow (768px)', 'learndash' ), '1180px' => __( 'Wide (1180px)', 'learndash' ), '1600px' => __( 'Extra-wide (1600px)', 'learndash' ), 'inherit' => __( 'Full width', 'learndash' ), ), 'parent_setting' => 'focus_mode_enabled', ), 'login_mode_enabled' => array( 'name' => 'login_mode_enabled', 'type' => 'checkbox-switch', 'label' => esc_html__( 'Login & Registration', 'learndash' ), 'help_text' => sprintf( // translators: placeholder: Link to Registration article. esc_html_x( 'When active the LearnDash templates will be used for user login and %s pages.', 'placeholder: Link to Registration article.', 'learndash' ), '' . esc_html__( 'registration', 'learndash' ) . '' ), 'value' => $this->setting_option_values['login_mode_enabled'], 'options' => array( '' => esc_html__( 'Default registration used', 'learndash' ), 'yes' => sprintf( // translators: placeholder: courses. esc_html_x( 'Customized registration enabled for LearnDash %s', 'placeholder: courses', 'learndash' ), learndash_get_custom_label_lower( 'courses' ) ), ), ), 'login_logo' => array( 'name' => 'login_logo', 'type' => 'media-upload', 'label' => esc_html__( 'Logo Upload', 'learndash' ), 'help_text' => esc_html__( 'This logo will appear in the Focus Mode and LearnDash Login form when enabled. Optional.', 'learndash' ), 'value' => $this->setting_option_values['login_logo'], 'validate_callback' => array( $this, 'validate_section_field_media_upload' ), 'validate_args' => array( 'allow_empty' => 1, ), ), 'responsive_video_enabled' => array( 'name' => 'responsive_video_enabled', 'type' => 'checkbox-switch', 'label' => esc_html__( 'Video Responsive CSS', 'learndash' ), 'help_text' => esc_html__( 'This will make your videos within video progression responsive. Disable if you notice video display issues.', 'learndash' ), 'value' => $this->setting_option_values['responsive_video_enabled'], 'options' => array( '' => '', 'yes' => esc_html__( 'Videos will automatically resize based on screen size', 'learndash' ), ), ), ); $this->setting_option_fields = apply_filters( 'learndash_settings_fields', $this->setting_option_fields, $this->settings_section_key ); parent::load_settings_fields(); } /** * Validate settings field. * * @param string $val Value to be validated. * @param string $key settings fields key. * @param array $args Settings field args array. * * @return integer $val. */ public function validate_section_field_media_upload( $val, $key, $args = array() ) { // Get the digits only. $val = absint( $val ); if ( ( isset( $args['field']['validate_args']['allow_empty'] ) ) && ( true == $args['field']['validate_args']['allow_empty'] ) && ( empty( $val ) ) ) { $val = ''; } return $val; } /** * Validate color selection settings fields. * * @param string $val Value to be validated. * @param string $key settings fields key. * @param array $args Settings field args array. * * @return integer $val. */ public function validate_section_field_colors( $val, $key, $args = array() ) { switch ( $key ) { case 'color_primary': if ( LD_30_COLOR_PRIMARY == $val ) { $val = ''; } break; case 'color_secondary': if ( LD_30_COLOR_SECONDARY == $val ) { $val = ''; } break; case 'color_tertiary': if ( LD_30_COLOR_TERTIARY == $val ) { $val = ''; } break; default: break; } return $val; } } } add_action( 'learndash_settings_sections_init', function() { LearnDash_Settings_Theme_LD30::add_section_instance(); } ); PKc\l/NII(themes/ld30/templates/course/listing.phpnuW+A
      $i, 'sections' => $sections, 'lesson' => $lesson, 'course_id' => $course_id, 'user_id' => $user_id, 'lesson_topics' => ! empty( $lesson_topics ) ? $lesson_topics : [], 'has_access' => $has_access, 'course_pager_results' => $course_pager_results, ), true ); $i++; endforeach; endif; /** * Determine if we should show course quizzes at this point or not * * @var $show_course_quizzes boolean * @since 3.0 */ $show_course_quizzes = true; if ( isset( $course_pager_results['pager'] ) && ! empty( $course_pager_results['pager'] ) && 0 !== absint( $course_pager_results['pager']['total_pages'] ) ) : $show_course_quizzes = ( $course_pager_results['pager']['paged'] == $course_pager_results['pager']['total_pages'] ? true : false ); endif; $show_course_quizzes = apply_filters( 'learndash-show-course-quizzes', $show_course_quizzes, $course_id, $user_id ); if ( $show_course_quizzes && ! empty( $quizzes ) ) : foreach ( $quizzes as $quiz ) : learndash_get_template_part( 'quiz/partials/row.php', array( 'course_id' => $course_id, 'user_id' => $user_id, 'context' => 'course', 'quiz' => $quiz, 'has_access' => $has_access, ), true ); endforeach; endif; /** * Action to add custom content after the course listing * * @since 3.0 */ do_action( 'learndash-course-listing-after', $course_id, $user_id ); /** * Action to add custom content before the course pagination * * @since 3.0 */ do_action( 'learndash-course-pagination-before', $course_id, $user_id ); if ( isset( $course_pager_results['pager'] ) ) : learndash_get_template_part( 'modules/pagination.php', array( 'pager_results' => $course_pager_results['pager'], 'pager_context' => ( isset( $context ) ? $context : 'course_lessons' ), 'course_id' => $course_id, ), true ); endif; /** * Action to add custom content after the course pagination * * @since 3.0 */ do_action( 'learndash-course-pagination-after', $course_id, $user_id ); ?>
      PKc\-themes/ld30/templates/course/partials/row.phpnuW+A PKc\hK &themes/ld30/templates/quiz/listing.phpnuW+A
      */ ?>
      $quiz, 'course_id' => $course_id, 'user_id' => $user_id, 'context' => $context, ), true ); endforeach; ?>
      post_title ) ? $quiz_attempt['post']->post_title : @$quiz_attempt['quiz_title']; $quiz_link = ! empty( $quiz_attempt['post']->ID ) ? learndash_get_step_permalink( intval( $quiz_attempt['post']->ID ), $course_id ) : '#'; /** * Only display the quiz if we've found a title * * @var [string] $quiz_title */ if ( ! empty( $quiz_title ) ) : ?>
      ID, '_viewProfileStatistics', true ), $user_id, $quiz_attempt, basename( __FILE__ ) ) ) : ?>
      ID ); if ( ! empty( $quiz_essays ) ) : foreach ( $quiz_essays as $essay ) : SFWD_LMS::get_template( 'quiz/partials/essay-row.php', array( 'essay' => $essay, 'context' => $context, ) ); endforeach; endif; ?>
      PKc\'[j+themes/ld30/templates/quiz/partials/row.phpnuW+AID, $course_id, $user_id ); ?> ID, $course_id, $user_id ); PKc\I[ themes/ld30/templates/lesson.phpnuW+A
      'lesson', 'course_id' => $course_id, 'user_id' => $user_id, ), true ); /** * If the user needs to complete the previous lesson display an alert * */ if ( @$lesson_progression_enabled && ! @$previous_lesson_completed ) : $previous_item = learndash_get_previous( $post ); learndash_get_template_part( 'modules/messages/lesson-progression.php', array( 'previous_item' => $previous_item, 'course_id' => $course_id, 'context' => 'topic', 'user_id' => $user_id, ), true ); endif; if ( $show_content ) : /** * Content and/or tabs */ learndash_get_template_part( 'modules/tabs.php', array( 'course_id' => $course_id, 'post_id' => get_the_ID(), 'user_id' => $user_id, 'content' => $content, 'materials' => $materials, 'context' => 'lesson', ), true ); /** * Display Lesson Assignments */ $bypass_course_limits_admin_users = learndash_user_can_bypass_course_limits( $user_id ); if ( lesson_hasassignments( $post ) && ! empty( $user_id ) ) : if ( ( learndash_lesson_progression_enabled() && learndash_lesson_topics_completed( $post->ID ) ) || ! learndash_lesson_progression_enabled() || $bypass_course_limits_admin_users ) : /** * Action to add custom content before the lesson assignment * * @since 3.0 */ do_action( 'learndash-lesson-assignment-before', get_the_ID(), $course_id, $user_id ); learndash_get_template_part( 'assignment/listing.php', array( 'course_step_post' => $post, 'user_id' => $user_id, 'course_id' => $course_id, ), true ); /** * Action to add custom content after the lesson assignment * * @since 3.0 */ do_action( 'learndash-lesson-assignment-after', get_the_ID(), $course_id, $user_id ); endif; endif; /** * Lesson Topics or Quizzes */ if ( ! empty( $topics ) || ! empty( $quizzes ) ) : /** * Action to add custom content before the course certificate link * * @since 3.0 */ do_action( 'learndash-lesson-content-list-before', get_the_ID(), $course_id, $user_id ); global $post; $lesson = array( 'post' => $post, ); ?>
      $course_id, 'lesson' => $lesson, 'topics' => $topics, 'quizzes' => $quizzes, 'user_id' => $user_id, ), true ); ?>
      $course_id, 'course_step_post' => $post, 'user_id' => $user_id, 'course_settings' => isset( $course_settings ) ? $course_settings : array(), 'can_complete' => $can_complete, 'context' => 'lesson', ), true ); /** * Action to add custom content after the lesson * * @since 3.0 */ do_action( 'learndash-lesson-after', get_the_ID(), $course_id, $user_id ); ?>
      PKc\Kc-themes/ld30/templates/modules/breadcrumbs.phpnuW+A
      PKc\Ѵ`kk*themes/ld30/templates/modules/progress.phpnuW+A true, 'course_id' => $course_id, 'user_id' => $user_id, ), $course_id, $user_id, $context ); $progress = apply_filters( 'learndash-' . $context . '-progress-stats', learndash_course_progress( $progress_args ) ); } else { global $post; $progress = apply_filters( 'learndash-' . $context . '-progress-stats', learndash_lesson_progress( $post, $course_id ) ); } if ( $progress ) : /** * This is just here for reference */ ?>
      $course_id, 'user_id' => $user_id, 'post_id' => $course_id, 'activity_type' => 'course', ); $course_activity = learndash_get_user_activity( $course_args ); if ( $course_activity && get_post_type() === 'sfwd-courses' ) : echo sprintf( // translators: Last activity date in infobar. esc_html_x( 'Last activity on %s', 'Last activity date in infobar', 'learndash' ), esc_html( learndash_adjust_date_time_display( $course_activity->activity_updated ) ) ); else : echo sprintf( // translators: placeholder: completed steps, total steps esc_html_x( '%1$d/%2$d Steps', 'placeholder: completed steps, total steps', 'learndash' ), esc_html( $progress['completed'] ), esc_html( $progress['total'] ) ); endif; endif; ?>
      PKc\}ֻa,themes/ld30/templates/modules/pagination.phpnuW+AArray * ( * [paged] => 1 * [total_items] => 30 * [total_pages] => 2 * ) */ if ( ( isset( $pager_results ) ) && ( ! empty( $pager_results ) ) ) { if ( ! isset( $pager_context ) ) { $pager_context = ''; } if ( ! isset( $href_val_prefix ) ) { $href_val_prefix = ''; } if ( isset( $atts ) && isset( $atts['num'] ) ) { $pager_results['num'] = $atts['num']; } $pager_json = htmlspecialchars( wp_json_encode( $pager_results ) ); // Generic wrappers. These can be changes via the switch below $wrapper_before = '
      '; $wrapper_after = '
      '; if ( $pager_results['total_pages'] > 1 ) { if ( ( ! isset( $href_query_arg ) ) || ( empty( $href_query_arg ) ) ) { switch ( $pager_context ) { case 'course_lessons': $href_query_arg = 'ld-lesson-page'; break; case 'course_lesson_topics': $href_query_arg = 'ld-topic-page'; break; case 'profile': $href_query_arg = 'ld-profile-page'; break; case 'course_content_shortcode': case 'course_content': $href_query_arg = 'ld-courseinfo-lesson-page'; break; case 'course_info_courses': $href_query_arg = 'ld-user-status'; break; // These are just here to show the existing different context items. case 'course_info_registered': case 'course_info_quizzes': case 'course_navigation_widget': case 'course_navigation_admin': case 'course_list': default: break; } } $pager_left_disabled = ''; $pager_left_class = ''; if ( 1 === absint( $pager_results['paged'] ) ) { $pager_left_disabled = ' disabled="disabled" '; $pager_left_class = 'disabled'; } $prev_page_number = ( $pager_results['paged'] > 1 ) ? $pager_results['paged'] - 1 : 1; $pager_right_disabled = ''; $pager_right_class = ''; if ( $pager_results['paged'] == $pager_results['total_pages'] ) { $pager_right_disabled = ' disabled="disabled" '; $pager_right_class = 'disabled'; } $next_page_number = ( $pager_results['paged'] < $pager_results['total_pages'] ) ? $pager_results['paged'] + 1 : $pager_results['total_pages']; $data_lesson_id = ( isset( $lesson_id ) ? 'data-lesson_id="' . $lesson_id . '"' : '' ); $course_id = ( isset( $course_id ) ? $course_id : '' ); $search_arg = ( isset( $search ) ? '&ld-profile-search=' . $search : '' ); do_action( 'learndash_pagination_before_wrapper' ); echo $wrapper_before; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Outputs HTML /** * * Action to add custom content before the register modal heading * * @since 3.0 */ do_action( 'learndash_pagination_before' ); ?> 'content', 'icon' => 'ld-icon-content', 'label' => LearnDash_Custom_Label::get_label( $context ), 'content' => $content, ), array( 'id' => 'materials', 'icon' => 'ld-icon-materials', 'label' => __( 'Materials', 'learndash' ), 'content' => $materials, 'condition' => ( isset( $materials ) && ! empty( $materials ) ), ), ), $context, $course_id, $user_id ); foreach ( $tabs as $tab ) { if ( ! isset( $tab['condition'] ) ) { $tab_count++; } if ( isset( $tab['condition'] ) && $tab['condition'] ) { $tab_count++; } } ?>
      1 ) : $i = 0; ?>
      $has_access, 'user_id' => $user_id, 'course_id' => $course_id, 'course_status' => $course_status, 'post' => $post, ), true ); break; case ( 'lesson' ): ?>
      'lesson', 'user_id' => $user_id, 'course_id' => $course_id, ), true ); $status = ''; if ( is_user_logged_in() ) { $status = ( learndash_is_item_complete() ? 'complete' : 'incomplete' ); } learndash_status_bubble( $status ); ?>
      'topic', 'user_id' => $user_id, 'course_id' => $course_id, ), true ); $status = ''; if ( is_user_logged_in() ) { $status = ( learndash_is_item_complete() ? 'complete' : 'incomplete' ); } learndash_status_bubble( $status ); ?>
      'topic', 'user_id' => $user_id, 'course_id' => $course_id, ), true ); ?>
      'course', 'user_id' => $user_id, 'course_id' => $course_id, ), true ); /** * Action to add custom content inside the ld-course-status infobox after the progress bar * * @since 3.0 */ do_action( 'learndash-course-infobar-access-progress-after', get_post_type(), $course_id, $user_id ); learndash_status_bubble( $course_status ); /** * Action to add custom content inside the ld-course-status infobox after the access status * * @since 3.0 */ do_action( 'learndash-course-infobar-access-status-after', get_post_type(), $course_id, $user_id ); ?>
      ' . learndash_30_get_currency_symbol() . '' ); endif; echo wp_kses_post( $course_pricing['price'] ); else : $label = apply_filters( 'learndash_no_price_price_label', ( 'closed' === $course_pricing['type'] ? __( 'Closed', 'learndash' ) : __( 'Free', 'learndash' ) ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Late escaped on output echo esc_html( $label ); endif; if ( isset( $course_pricing['type'] ) && 'subscribe' === $course_pricing['type'] ) : ?>
      ' . esc_html__( 'Login to Enroll', 'learndash' ) . ''; else : echo learndash_payment_buttons( $post ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Outputs Payment button HTML endif; break; case ( 'paynow' ): case ( 'subscribe' ): // Price (Free / Price) $ld_payment_buttons = learndash_payment_buttons( $post ); echo $ld_payment_buttons; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Outputs Button HTML if ( apply_filters( 'learndash_login_modal', true, $course_id, $user_id ) && ! is_user_logged_in() ) : echo ''; if ( ! empty( $ld_payment_buttons ) ) { esc_html_e( 'or', 'learndash' ); } echo ''; endif; break; case ( 'closed' ): $button = learndash_payment_buttons( $post ); if ( empty( $button ) ) : echo '' . esc_html__( 'This course is currently closed', 'learndash' ) . ''; else : echo $button; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Outputs Button HTML endif; break; } do_action( 'learndash-course-infobar-action-cell-after', get_post_type(), $course_id, $user_id ); ?>
      PKc\6H^ 'themes/ld30/templates/modules/alert.phpnuW+A
      ' : '' ); // phpcs:disable WordPress.Security.EscapeOutput.OutputNotEscaped -- Escaped above ?> >
      PKc\ؒV766.themes/ld30/templates/modules/lesson-video.phpnuW+A 'alert', 'message' => '', 'type' => 'warning', 'button' => array( 'url' => learndash_get_step_permalink( $previous_item->ID, $course_id ), 'class' => 'learndash-link-previous-incomplete', 'label' => __( 'Back', 'learndash' ), 'icon' => 'arrow-left', 'icon-location' => 'left', ), ); switch ( $previous_item->post_type ) { case ( 'sfwd-quiz' ): $alert['message'] = sprintf( // translators: placeholder: Quiz label esc_html_x( 'Please go back and complete the previous %s.', 'placeholders: Quiz label', 'learndash' ), esc_html( learndash_get_custom_label_lower( 'quiz' ) ) ); break; case ( 'sfwd-topic' ): $alert['message'] = sprintf( // translators: placeholder: Topic label esc_html_x( 'Please go back and complete the previous %s.', 'placeholders: topic label', 'learndash' ), esc_html( learndash_get_custom_label_lower( 'topic' ) ) ); break; default: $alert['message'] = sprintf( // translators: placeholder: Lesson Label esc_html_x( 'Please go back and complete the previous %s.', 'placeholders: lesson label', 'learndash' ), esc_html( learndash_get_custom_label_lower( 'lesson' ) ) ); break; } } else { $alert['message'] = sprintf( // translators: placeholder: Lesson esc_html_x( 'Please go back and complete the previous %s.', 'placeholders lesson', 'learndash' ), esc_html( learndash_get_custom_label_lower( 'lesson' ) ) ); } $alert = apply_filters( 'learndash_' . $context . '_progress_alert', $alert, get_the_ID(), $course_id ); /** * Action to add custom content before the lesson progression alert * * @since 3.0 */ do_action( 'learndash-' . $context . '-progession-alert-before', get_the_ID(), $course_id ); learndash_get_template_part( 'modules/alert.php', $alert, true ); /** * Action to add custom content after the lesson progression alert * * @since 3.0 */ do_action( 'learndash-' . $context . '-progession-alert-after', get_the_ID(), $course_id ); PKc\-iL8themes/ld30/templates/modules/messages/course-points.phpnuW+A
      'warning', 'icon' => 'alert', 'message' => $message, ), true ); ?>
      PKc\%3S  ?themes/ld30/templates/modules/messages/lesson-not-available.phpnuW+AAvailable on: %s', 'learndash' ) ), esc_html( learndash_adjust_date_time_display( $lesson_access_from_int ) ) ); $button = false; // The figure out how to display it if ( 'lesson' === $context ) { $button = array( 'url' => get_permalink( $course_id ), 'label' => learndash_get_label_course_step_back( learndash_get_post_type_slug( 'course' ) ), 'icon' => 'arrow-left', 'icon-location' => 'left', ); // On the lesson single we display additional information. } ?>
      'info', 'icon' => 'calendar', 'button' => $button, 'message' => apply_filters( 'learndash_lesson_available_from_text', $message, get_post( $lesson_id ), $lesson_access_from_int ), ), true ); ?>
      PKc\TT8themes/ld30/templates/modules/messages/prerequisites.phpnuW+A $pre_status ) { if ( false === (bool) $pre_status ) { $i++; if ( ! empty( $post_links ) ) { $post_links .= ', '; } $post_links .= '' . wp_kses_post( get_the_title( $pre_post_id ) ) . ''; } } } ?>
      '; $message .= sprintf( // translators: placeholders: %1$s: Course, Lesson or Quiz singular, %2$s: Course singular label esc_html_x( 'To take this %1$s, you need to complete the following %2$s first:', 'placeholders: (1) will be Course, Lesson or Quiz sigular. (2) Course sigular label', 'learndash' ), $content_type, esc_html( _n( learndash_get_custom_label_lower( 'course' ), learndash_get_custom_label_lower( 'courses' ), $i, 'learndash' ) ) ); if ( ! empty( $post_links ) ) { $message .= ' ' . $post_links . ''; } $message .= '

      '; learndash_get_template_part( 'modules/alert.php', array( 'type' => 'warning', 'icon' => 'alert', 'message' => $message, ), true ); ?>
      PKc\##.themes/ld30/templates/modules/course-steps.phpnuW+Apost_type ) ) { if ( apply_filters( 'learndash_show_parent_previous_link', true, $course_step_post, $user_id, $course_id ) ) { $learndash_previous_step_id = learndash_previous_post_link( null, 'id', get_post( $parent_id ) ); } } $learndash_next_step_id = ''; $button_class = 'ld-button ' . ( 'focus' === $context ? 'ld-button-transparent' : '' ); /* * See details for filter 'learndash_show_next_link' https://bitbucket.org/snippets/learndash/5oAEX * * @since version 2.3 */ $current_complete = false; if ( ( empty( $course_settings ) ) && ( ! empty( $course_id ) ) ) { $course_settings = learndash_get_setting( $course_id ); } if ( ( isset( $course_settings['course_disable_lesson_progression'] ) ) && ( 'on' === $course_settings['course_disable_lesson_progression'] ) ) { $current_complete = true; } else { if ( 'sfwd-topic' === $course_step_post->post_type ) { $current_complete = learndash_is_topic_complete( $user_id, $course_step_post->ID ); } elseif ( 'sfwd-lessons' === $course_step_post->post_type ) { $current_complete = learndash_is_lesson_complete( $user_id, $course_step_post->ID ); } if ( ( true !== (bool) $current_complete ) && ( learndash_is_admin_user( $user_id ) ) ) { $bypass_course_limits_admin_users = LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_General_Admin_User', 'bypass_course_limits_admin_users' ); if ( 'yes' === $bypass_course_limits_admin_users ) { $current_complete = true; } } } $learndash_maybe_show_next_step_link = apply_filters( 'learndash_show_next_link', $current_complete, $user_id, $course_step_post->ID ); if ( true === (bool) $learndash_maybe_show_next_step_link ) { $learndash_next_step_id = learndash_next_post_link( null, 'id', $course_step_post ); if ( ( empty( $learndash_next_step_id ) ) && ( learndash_get_post_type_slug( 'topic' ) === $course_step_post->post_type ) ) { if ( learndash_is_lesson_complete( $user_id, $parent_id ) ) { if ( apply_filters( 'learndash_show_parent_next_link', true, $course_step_post, $user_id, $course_id ) ) { $learndash_next_step_id = learndash_next_post_link( null, 'id', get_post( $parent_id ) ); } } } } elseif ( ( ! is_user_logged_in() ) && ( empty( $learndash_next_step_id ) ) ) { $learndash_next_step_id = learndash_next_post_link( null, 'id', $course_step_post ); if ( ( empty( $learndash_next_step_id ) ) && ( learndash_get_post_type_slug( 'topic' ) === $course_step_post->post_type ) ) { $learndash_next_step_id = learndash_next_post_link( null, 'id', get_post( $parent_id ) ); } if ( ! empty( $learndash_next_step_id ) ) { if ( ! learndash_is_sample( $learndash_next_step_id ) ) { if ( ( ! isset( $course_settings['course_price_type'] ) ) || ( 'open' !== $course_settings['course_price_type'] ) ) { $learndash_next_step_id = ''; } } } } /** * Filters to override next step post ID. * * @since 3.1.2 * * @param int $learndash_next_step_id The next step post ID. * @param int $course_step_post The current step WP_Post ID. * @param int $course_id The current Course ID. * @param int $user_id The current User ID. * * @return int $learndash_next_step_id */ $learndash_next_step_id = apply_filters( 'learndash_next_step_id', $learndash_next_step_id, $course_step_post->ID, $course_id, $user_id ); $complete_button = learndash_mark_complete( $course_step_post ); //if ( ! empty( $learndash_previous_nav ) || ! empty( $learndash_next_nav ) || ! empty( $complete_button ) ) : ?> PKc\?'"2themes/ld30/templates/modules/certificate/link.phpnuW+A ID ); ?> PKc\ܮف9themes/ld30/templates/shortcodes/course_list_template.phpnuW+AID; } else { $user_id = false; } ?>
      ', '
      ', ); $output = learndash_get_template_part( '/course/partials/row.php', array( 'course_id' => $course_id, 'user_id' => $user_id, ) ); break; case ( 'sfwd-lessons' ): global $course_lessons_results; if ( isset( $course_lessons_results['pager'] ) ) : learndash_get_template_part( 'modules/pagination.php', array( 'pager_results' => $course_lessons_results['pager'], 'pager_context' => 'course_lessons', ), true ); endif; break; case ( 'sfwd-topic' ): $wrapper = array( '
      ', '
      ', ); $output = learndash_get_template_part( '/topic/partials/row.php', array( 'topic' => $post, 'course_id' => $course_id, 'user_id' => $user_id, ) ); break; } ?> PKc\On((9themes/ld30/templates/shortcodes/user-status/quiz-row.phpnuW+A $v ) : $quiz = get_post( $v['quiz'] ); if ( ! $quiz instanceof WP_Post || 'sfwd-quiz' !== $quiz->post_type ) { if ( ( isset( $v['pro_quizid'] ) ) && ( ! empty( $v['pro_quizid'] ) ) ) { $quiz_post_id = learndash_get_quiz_id_by_pro_quiz_id( intval( $v['pro_quizid'] ) ); if ( ! empty( $quiz_post_id ) ) { $quiz = get_post( $quiz_post_id ); } } } if ( ( ! ( $quiz instanceof WP_Post ) ) || ( 'sfwd-quiz' !== $quiz->post_type ) ) { continue; } $certificateLink = ''; $certificate_threshold = 0; if ( ! isset( $v['has_graded'] ) ) { $v['has_graded'] = false; } if ( true === (bool) $v['has_graded'] && true === (bool) LD_QuizPro::quiz_attempt_has_ungraded_question( $v ) ) { $certificateLink = ''; $certificate_threshold = 0; $passstatus = 'red'; } else { $c = learndash_certificate_details( $v['quiz'], $user_id ); if ( ( isset( $c['certificateLink'] ) ) && ( ! empty( $c['certificateLink'] ) ) ) { $certificateLink = $c['certificateLink']; } if ( ( isset( $c['certificate_threshold'] ) ) && ( '' !== $c['certificate_threshold'] ) ) { $certificate_threshold = $c['certificate_threshold']; } $passstatus = isset( $v['pass'] ) ? ( ( 1 == $v['pass'] ) ? 'green' : 'red' ) : ''; } $quiz_title = ! empty( $quiz->post_title ) ? $quiz->post_title : @$v['quiz_title']; $quiz_course_id = 0; if ( isset( $v['course'] ) ) { $quiz_course_id = intval( $v['course'] ); } else { $quiz_course_id = learndash_get_course_id( $quiz, true ); } if ( ! empty( $quiz_title ) ) : ?> PKc\A ;themes/ld30/templates/shortcodes/user-status/course-row.phpnuW+A $user_id, 'course_id' => $course_id, 'array' => true, ) ); $status = ( 100 === absint( $progress['percentage'] ) ) ? 'completed' : 'notcompleted'; $status = ( absint( $progress['percentage'] ) > 0 && 100 !== absint( $progress['percentage'] ) ? 'progress' : $status ); $since = learndash_user_group_enrolled_to_course_from( $user_id, $course_id ); if ( empty( $since ) ) { $since = ld_course_access_from( $course_id, $user_id ); } $course_class = apply_filters( 'learndash-course-row-class', 'ld-item-list-item ld-item-list-item-course ld-expandable ' . ( 100 === absint( $progress['percentage'] ) ? 'learndash-complete' : 'learndash-incomplete' ), $course, $user_id ); $course_icon_class = apply_filters( 'learndash-course-icon-class', 'ld-status-icon ' . ( 100 === absint( $progress['percentage'] ) ? 'ld-status-complete' : 'ld-status-incomplete' ), $course, $user_id ); ?> PKc\v*l!!,themes/ld30/templates/shortcodes/profile.phpnuW+A wp_json_encode( $learndash_data ) ); wp_localize_script( 'learndash_template_script_js', 'sfwd_data', $learndash_data ); endif; endif; /** * We don't want to include this if this is a paginated view as we'll end up with duplicates * * @var $_GET['action'] (string) is set to ld30_ajax_pager if paginating */ if ( ! isset( $_GET['action'] ) || 'ld30_ajax_pager' !== $_GET['action'] ) : LD_QuizPro::showModalWindow(); endif; ?>
      user_lastname ) || ! empty( $current_user->user_firstname ) ) : ?>
      user_firstname . ' ' . $current_user->user_lastname ); ?>
      LearnDash_Custom_Label::get_label( 'courses' ), 'value' => $learndash_user_stats['courses'], 'class' => 'ld-profile-stat-courses', ), array( 'title' => __( 'Completed', 'learndash' ), 'value' => $learndash_user_stats['completed'], 'class' => 'ld-profile-stat-completed', ), array( 'title' => __( 'Certificates', 'learndash' ), 'value' => $learndash_user_stats['certificates'], 'class' => 'ld-profile-stat-certificates', ), ); if ( isset( $shortcode_atts['course_points_user'] ) && 'yes' === $shortcode_atts['course_points_user'] ) { $learndash_profile_stats[] = array( 'title' => esc_html__( 'Points', 'learndash' ), 'value' => $learndash_user_stats['points'], 'class' => 'ld-profile-stat-points', ); } $learndash_profile_stats = apply_filters( 'learndash_profile_stats', $learndash_profile_stats, $user_id ); if ( ( ! empty( $learndash_profile_stats ) ) && ( is_array( $learndash_profile_stats ) ) ) { foreach ( $learndash_profile_stats as $learndash_profile_stat ) { $learndash_stat_class = 'ld-profile-stat'; if ( ( isset( $learndash_profile_stat['class'] ) ) && ( ! empty( $learndash_profile_stat['class'] ) ) ) { $learndash_stat_class .= ' ' . $learndash_profile_stat['class']; } ?>

      $user_id, 'user_courses' => $user_courses, ), true ); ?>
      $user_id, 'course_id' => $learndash_course_id, 'quiz_attempts' => $quiz_attempts, 'shortcode_atts' => $shortcode_atts, ), true ); endforeach; else : $learndash_no_courses_found_alert = array( 'icon' => 'alert', // translators: placeholder: Courses. 'message' => sprintf( esc_html_x( 'No %s found', 'placeholder: Courses', 'learndash' ), esc_html( LearnDash_Custom_Label::get_label( 'courses' ) ) ), 'type' => 'warning', ); learndash_get_template_part( 'modules/alert.php', $learndash_no_courses_found_alert, true ); endif; ?>
      $profile_pager, 'pager_context' => 'profile', 'search' => $learndash_profile_search, ), true ); ?>
      post_content ) ? false : true ); ?>
      post_title ); ?>
      post_content ); $group_content = str_replace( ']]>', ']]>', $group_content ); echo $group_content; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Outputting HTML content SFWD_LMS::content_filter_control( true ); ?>
      PKc\6Ca!##:themes/ld30/templates/shortcodes/course_info_shortcode.phpnuW+A
      $user_id, 'courses_registered' => $courses_registered, 'shortcode_atts' => $shortcode_atts, 'course_progress' => $course_progress, 'shortcode_atts' => $shortcode_atts, 'course_id' => $course_id, ), true ); endforeach; ?>
      $courses_registered_pager, 'pager_context' => 'course_info_courses', ) ); endif; ?>
      PKc\Fy}tt3themes/ld30/templates/shortcodes/course-listing.phpnuW+A 'true', 'num' => false, 'paged' => 1, 'post_type' => 'sfwd-courses', 'post_status' => 'publish', 'order' => 'DESC', 'orderby' => 'ID', 'user_id' => false, 'mycourses' => null, 'post__in' => null, 'course_id' => '', // Not sure why these are here as there is not supported logic. // 'lesson_id' => '', // 'topic_id' => '', 'meta_key' => '', 'meta_value' => '', 'meta_compare' => '', 'tag' => '', 'tag_id' => 0, 'tag__and' => '', 'tag__in' => '', 'tag__not_in' => '', 'tag_slug__and' => '', 'tag_slug__in' => '', 'cat' => '', 'category_name' => 0, 'category__and' => '', 'category__in' => '', 'category__not_in' => '', 'tax_compare' => 'AND', 'categoryselector' => '', 'show_thumbnail' => 'true', 'show_content' => 'true', 'author__in' => '', 'col' => '', 'progress_bar' => 'false', 'array' => false, 'course_grid' => 'true', ), $attr ); $post_type_slug = 'course'; $post_type_Class = 'LearnDash_Settings_Courses_Taxonomies'; if ( ( isset( $attr['post_type'] ) ) && ( ! empty( $attr['post_type'] ) ) ) { if ( learndash_get_post_type_slug( 'lesson' ) === $attr['post_type'] ) { $post_type_slug = 'lesson'; $post_type_Class = 'LearnDash_Settings_Lessons_Taxonomies'; } elseif ( learndash_get_post_type_slug( 'topic' ) === $attr['post_type'] ) { $post_type_slug = 'topic'; $post_type_Class = 'LearnDash_Settings_Topics_Taxonomies'; } elseif ( learndash_get_post_type_slug( 'quiz' ) === $attr['post_type'] ) { $post_type_slug = 'quiz'; $post_type_Class = 'LearnDash_Settings_Quizzes_Taxonomies'; } } if ( ! empty( $post_type_slug ) ) { $attr_defaults = array_merge( $attr_defaults, array( $post_type_slug . '_categoryselector' => '', $post_type_slug . '_cat' => '', $post_type_slug . '_category_name' => '', $post_type_slug . '_category__and' => '', $post_type_slug . '_category__in' => '', $post_type_slug . '_category__not_in' => '', $post_type_slug . '_tag' => '', $post_type_slug . '_tag_id' => '', $post_type_slug . '_tag__and' => '', $post_type_slug . '_tag__in' => '', $post_type_slug . '_tag__not_in' => '', $post_type_slug . '_tag_slug__and' => '', $post_type_slug . '_tag_slug__in' => '', ) ); } $atts = shortcode_atts( $attr_defaults, $attr ); if ( ( 'true' === $atts['mycourses'] ) || ( 'enrolled' === $atts['mycourses'] ) ) { if ( is_user_logged_in() ) { $atts['mycourses'] = 'enrolled'; } else { return ''; } } elseif ( 'not-enrolled' === $atts['mycourses'] ) { if ( is_user_logged_in() ) { $atts['mycourses'] = 'not-enrolled'; } else { return ''; } } else { $atts['mycourses'] = null; } if ( '' === $atts['post__in'] ) { $atts['post__in'] = null; } //if ( isset( $atts['num'] ) ) // $atts['num'] = intval( $atts['num'] ); if ( false === (bool) $atts['num'] ) { if ( ( isset( $atts['course_id'] ) ) && ( ! empty( $atts['course_id'] ) ) ) { $atts['num'] = learndash_get_course_lessons_per_page( intval( $atts['course_id'] ) ); } else { $atts['num'] = LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_General_Per_Page', 'per_page' ); } } elseif ( '-1' == $atts['num'] ) { $atts['num'] = 0; } else { $atts['num'] = intval( $atts['num'] ); } if ( 0 === $atts['num'] ) { $atts['num'] = -1; } $atts = apply_filters( 'ld_course_list_shortcode_attr_values', $atts, $attr ); if ( is_user_logged_in() ) { if ( ( isset( $atts['user_id'] ) ) && ( false === (bool) $atts['user_id'] ) ) { $atts['user_id'] = get_current_user_id(); } elseif ( ( isset( $atts['user_id'] ) ) && ( false !== (bool) $atts['user_id'] ) ) { if ( learndash_is_admin_user() ) { // Good leave the user_id in place. } elseif ( learndash_is_group_leader_user( get_current_user_id() ) ) { $groups = learndash_get_administrators_group_ids( get_current_user_id() ); if ( ! empty( $groups ) ) { $user_courses = array(); foreach ( $groups as $group_id ) { if ( learndash_is_user_in_group( $atts['user_id'], $group_id ) ) { $group_courses = learndash_group_enrolled_courses( $group_id ); if ( ! empty( $group_courses ) ) { $user_courses = array_merge( $user_courses, $group_courses ); } } } if ( ! empty( $user_courses ) ) { $atts['post__in'] = $user_courses; } } else { $atts['user_id'] = get_current_user_id(); } } else { $atts['user_id'] = get_current_user_id(); } } } else { $atts['user_id'] = false; $atts['mycourses'] = null; } extract( $atts ); global $post; $filter = array( 'post_type' => $post_type, 'post_status' => $post_status, 'posts_per_page' => $num, 'paged' => $paged, 'order' => $order, 'orderby' => $orderby, ); $meta_query = array(); // Added an empty meta query set. Then we check later and if still empty we remove it before calling get_posts. if ( ! isset( $filter['meta_query'] ) ) { $filter['meta_query'] = array(); } if ( ! empty( $author__in ) ) { $filter['author__in'] = $author__in; } if ( ( ! empty( $meta_key ) ) && ( ! empty( $meta_value ) ) ) { $meta_query = array( 'key' => $meta_key, 'value' => $meta_value, ); if ( empty( $meta_compare ) ) { $meta_compare = '='; } $meta_query['compare'] = $meta_compare; $filter['meta_query'][] = $meta_query; } if ( ( ! empty( $course_id ) ) && ( is_null( $post__in ) ) ) { if ( 'yes' === LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) ) { $filter['post__in'] = learndash_course_get_steps_by_type( $course_id, $atts['post_type'] ); } else { $meta_query = array( 'key' => 'course_id', 'value' => intval( $course_id ), 'compare' => '=', ); } $filter['meta_query'][] = $meta_query; } elseif ( ! empty( $post__in ) ) { $filter['post__in'] = $post__in; } if ( LearnDash_Settings_Section::get_section_setting( $post_type_Class, 'wp_post_category' ) == 'yes' ) { if ( ! empty( $cat ) ) { //$filter['cat'] = $cat; if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => intval( $cat ), ); } if ( ! empty( $category_name ) ) { //$filter['category_name'] = $category_name; if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => trim( $category_name ), ); } if ( ! empty( $category__and ) ) { //$filter['category__and'] = explode( ',', $category__and ); $category__and = array_map( 'intval', explode( ',', $category__and ) ); if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => $category__and, 'operator' => 'AND', ); } if ( ! empty( $category__in ) ) { //$filter['category__in'] = explode( ',', $category__in ); $category__in = array_map( 'intval', explode( ',', $category__in ) ); if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => $category__in, 'operator' => 'IN', ); } if ( ! empty( $category__not_in ) ) { //$filter['category__not_in'] = explode( ',', $category__not_in ); $category__not_in = array_map( 'intval', explode( ',', $category__not_in ) ); if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => $category__not_in, 'operator' => 'NOT IN', ); } } if ( LearnDash_Settings_Section::get_section_setting( $post_type_Class, 'wp_post_tag' ) == 'yes' ) { if ( ! empty( $tag ) ) { //$filter['tag'] = $tag; if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'post_tag', 'field' => 'slug', 'terms' => trim( $tag ), ); } if ( ! empty( $tag_id ) ) { //$filter['tag_id'] = $tag; if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'post_tag', 'field' => 'term_id', 'terms' => intval( $tag_id ), ); } if ( ! empty( $tag__and ) ) { //$filter['tag__and'] = explode( ',', $tag__and ); $tag__and = array_map( 'intval', explode( ',', $tag__and ) ); if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'post_tag', 'field' => 'term_id', 'terms' => $tag__and, 'operator' => 'AND', ); } if ( ! empty( $tag__in ) ) { //$filter['tag__in'] = explode( ',', $tag__in ); $tag__in = array_map( 'intval', explode( ',', $tag__in ) ); if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'post_tag', 'field' => 'term_id', 'terms' => $tag__in, 'operator' => 'IN', ); } if ( ! empty( $tag__not_in ) ) { //$filter['tag__not_in'] = explode( ',', $tag__not_in ); $tag__not_in = array_map( 'intval', explode( ',', $tag__not_in ) ); if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'post_tag', 'field' => 'term_id', 'terms' => $tag__not_in, 'operator' => 'NOT IN', ); } if ( ! empty( $tag_slug__and ) ) { //$filter['tag_slug__and'] = explode( ',', $tag_slug__and ); $tag_slug__and = array_map( 'trim', explode( ',', $tag_slug__and ) ); if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'post_tag', 'field' => 'slug', 'terms' => $tag_slug__and, 'operator' => 'AND', ); } if ( ! empty( $tag_slug__in ) ) { //$filter['tag_slug__in'] = explode( ',', $tag_slug__in ); $tag_slug__in = array_map( 'trim', explode( ',', $tag_slug__in ) ); if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'post_tag', 'field' => 'slug', 'terms' => $tag_slug__in, 'operator' => 'IN', ); } } if ( LearnDash_Settings_Section::get_section_setting( $post_type_Class, 'ld_' . $post_type_slug . '_category' ) == 'yes' ) { // course_cat="123" if ( ( isset( $atts[ $post_type_slug . '_cat' ] ) ) && ( ! empty( $atts[ $post_type_slug . '_cat' ] ) ) ) { if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'ld_' . $post_type_slug . '_category', 'field' => 'term_id', 'terms' => intval( $atts[ $post_type_slug . '_cat' ] ), ); } // course_category_name (string) - use category slug. // course_category_name="course-category-one" if ( ( isset( $atts[ $post_type_slug . '_category_name' ] ) ) && ( ! empty( $atts[ $post_type_slug . '_category_name' ] ) ) ) { if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'ld_' . $post_type_slug . '_category', 'field' => 'slug', 'terms' => trim( $atts[ $post_type_slug . '_category_name' ] ), ); } // course_category__and (array) - use category id. if ( ( isset( $atts[ $post_type_slug . '_category__and' ] ) ) && ( ! empty( $atts[ $post_type_slug . '_category__and' ] ) ) ) { $cat__and = array_map( 'intval', explode( ',', $atts[ $post_type_slug . '_category__and' ] ) ); if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'ld_' . $post_type_slug . '_category', 'field' => 'term_id', 'terms' => $cat__and, 'operator' => 'AND', 'include_children' => false, ); } // course_category__in (array) - use category id. if ( ( isset( $atts[ $post_type_slug . '_category__in' ] ) ) && ( ! empty( $atts[ $post_type_slug . '_category__in' ] ) ) ) { $cat__in = array_map( 'intval', explode( ',', $atts[ $post_type_slug . '_category__in' ] ) ); if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'ld_' . $post_type_slug . '_category', 'field' => 'term_id', 'terms' => $cat__in, 'operator' => 'IN', 'include_children' => false, ); } // course_category___not_in (array) - use category id. if ( ( isset( $atts[ $post_type_slug . '_category__not_in' ] ) ) && ( ! empty( $atts[ $post_type_slug . '_category__not_in' ] ) ) ) { $cat__not_in = array_map( 'intval', explode( ',', $atts[ $post_type_slug . '_category__not_in' ] ) ); if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'ld_' . $post_type_slug . '_category', 'field' => 'term_id', 'terms' => $cat__not_in, 'operator' => 'NOT IN', 'include_children' => false, ); } } if ( LearnDash_Settings_Section::get_section_setting( $post_type_Class, 'ld_' . $post_type_slug . '_tag' ) == 'yes' ) { // course_tag (string) - use tag slug. if ( ( isset( $atts[ $post_type_slug . '_tag' ] ) ) && ( ! empty( $atts[ $post_type_slug . '_tag' ] ) ) ) { if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'ld_' . $post_type_slug . '_tag', 'field' => 'slug', 'terms' => trim( $atts[ $post_type_slug . '_tag' ] ), ); } // course_tag_id (int) - use tag id. if ( ( isset( $atts[ $post_type_slug . '_tag_id' ] ) ) && ( ! empty( $atts[ $post_type_slug . '_tag_id' ] ) ) ) { if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'ld_' . $post_type_slug . '_tag', 'field' => 'term_id', 'terms' => intval( $atts[ $post_type_slug . '_tag_id' ] ), ); } // course_tag__and (array) - use tag ids. if ( ( isset( $atts[ $post_type_slug . '_tag__and' ] ) ) && ( ! empty( $atts[ $post_type_slug . '_tag__and' ] ) ) ) { $tag__and = array_map( 'intval', explode( ',', $atts[ $post_type_slug . '_tag__and' ] ) ); if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'ld_' . $post_type_slug . '_tag', 'field' => 'term_id', 'terms' => $tag__and, 'operator' => 'AND', ); } // course_tag__in (array) - use tag ids. if ( ( isset( $atts[ $post_type_slug . '_tag__in' ] ) ) && ( ! empty( $atts[ $post_type_slug . '_tag__in' ] ) ) ) { $tag__in = array_map( 'intval', explode( ',', $atts[ $post_type_slug . '_tag__in' ] ) ); if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'ld_' . $post_type_slug . '_tag', 'field' => 'term_id', 'terms' => $tag__in, 'operator' => 'IN', ); } // course_tag__not_in (array) - use tag ids. if ( ( isset( $atts[ $post_type_slug . '_tag__not_in' ] ) ) && ( ! empty( $atts[ $post_type_slug . '_tag__not_in' ] ) ) ) { $tag__not_in = array_map( 'intval', explode( ',', $atts[ $post_type_slug . '_tag__not_in' ] ) ); if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'ld_' . $post_type_slug . '_tag', 'field' => 'term_id', 'terms' => $tag__not_in, 'operator' => 'NOT IN', ); } // course_tag_slug__and (array) - use tag slugs. if ( ( isset( $atts[ $post_type_slug . '_tag_slug__and' ] ) ) && ( ! empty( $atts[ $post_type_slug . '_tag_slug__and' ] ) ) ) { $tag_slug__and = array_map( 'trim', explode( ',', $atts[ $post_type_slug . '_tag_slug__and' ] ) ); if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'ld_' . $post_type_slug . '_tag', 'field' => 'slug', 'terms' => $tag_slug__and, 'operator' => 'AND', ); } // course_tag_slug__in (array) - use tag slugs. if ( ( isset( $atts[ $post_type_slug . '_tag_slug__in' ] ) ) && ( ! empty( $atts[ $post_type_slug . '_tag_slug__in' ] ) ) ) { $tag_slug__in = array_map( 'trim', explode( ',', $atts[ $post_type_slug . '_tag_slug__in' ] ) ); if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'ld_' . $post_type_slug . '_tag', 'field' => 'slug', 'terms' => $tag_slug__in, 'operator' => 'IN', ); } } if ( ( isset( $filter['tax_query'] ) ) && ( count( $filter['tax_query'] ) > 1 ) ) { // Due to a quick on WP_Query the 'compare' option needs to be in the first position. // So we save off the current tax_query, add the 'relation', then merge in the original tax_query $tax_query = $filter['tax_query']; $filter['tax_query'] = array( 'relation' => $tax_compare ); $filter['tax_query'] = array_merge( $filter['tax_query'], $tax_query ); } elseif ( ! empty( $meta_compare ) ) { $filter['meta_compare'] = $meta_compare; } // Logic to determine the exact post ids to query. This will help drive the category selectors below and prevent extra queries. $shortcode_course_id = null; if ( is_null( $post__in ) ) { if ( 'enrolled' === $mycourses ) { $filter['post__in'] = learndash_user_get_enrolled_courses( $atts['user_id'] ); if ( empty( $filter['post__in'] ) ) { return; } } elseif ( 'not-enrolled' === $mycourses ) { $filter['post__not_in'] = learndash_user_get_enrolled_courses( $atts['user_id'] ); if ( empty( $filter['post__not_in'] ) ) { unset( $filter['post__not_in'] ); } } } $filter = apply_filters( 'learndash_ld_course_list_query_args', $filter, $atts ); if ( 'true' == $array ) { return get_posts( $filter ); } if ( ( $post ) && ( is_a( $post, 'WP_Post' ) ) && ( $post->post_type == $post_type ) ) { if ( ( isset( $filter['post__not_in'] ) ) && ( ! empty( $filter['post__not_in'] ) ) ) { $filter['post__not_in'][] = $post->ID; } else { $filter['post__not_in'] = array( $post->ID ); } } // At this point the $filter var contains all the shortcode processing logic. // So now we want to save off the var to one used by the category selector (if used). $filter_cat = $filter; $filter_cat['posts_per_page'] = -1; $ld_categorydropdown = ''; $categories = array(); $ld_categories = array(); //if ( $include_outer_wrapper == 'true' ) { if ( ( trim( $categoryselector ) == 'true' ) && ( LearnDash_Settings_Section::get_section_setting( $post_type_Class, 'wp_post_category' ) == 'yes' ) ) { $cats = array(); if ( ( isset( $_GET['catid'] ) ) && ( ! empty( $_GET['catid'] ) ) ) { $atts['cat'] = intval( $_GET['catid'] ); if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => intval( $_GET['catid'] ), ); } //if ( isset( $filter_cat['post__in'] ) ) { //$filter_cat['include'] = $filter_cat['post__in']; // unset( $filter_cat['post__in'] ); //} //if ( isset( $filter_cat['post__not_in'] ) ) { //$filter_cat['include'] = $filter_cat['post__in']; // unset( $filter_cat['post__not_in'] ); //} $posts = get_posts( $filter_cat ); // We first need to build a listing of the categories used by each of the queried posts. if ( ! empty( $posts ) ) { foreach ( $posts as $post ) { $post_categories = wp_get_post_categories( $post->ID ); if ( ! empty( $post_categories ) ) { foreach ( $post_categories as $c ) { if ( empty( $cats[ $c ] ) ) { $cat = get_category( $c ); $cats[ $c ] = array( 'id' => $cat->cat_ID, 'name' => $cat->name, 'slug' => $cat->slug, 'parent' => $cat->parent, 'count' => 0, 'posts' => array(), ); } $cats[ $c ]['count']++; $cats[ $c ]['posts'][] = $post->ID; } } } // Once we have these categories we need to requery the categories in order to get them into a proper ordering. if ( ! empty( $cats ) ) { // And also let this query be filtered. $get_categories_args = apply_filters( 'learndash_course_list_category_args', array( 'taxonomy' => 'category', 'type' => $post_type, 'include' => array_keys( $cats ), 'orderby' => 'name', 'order' => 'ASC', ) ); if ( ! empty( $get_categories_args ) ) { $categories = get_categories( $get_categories_args ); } } } } else { $categoryselector = ''; $atts['categoryselector']; } // We can only support one of the other category OR course_category selectors if ( ( trim( $atts[ $post_type_slug . '_categoryselector' ] ) == 'true' ) && ( empty( $categoryselector ) ) && ( LearnDash_Settings_Section::get_section_setting( $post_type_Class, 'ld_' . $post_type_slug . '_category' ) == 'yes' ) ) { $ld_cats = array(); if ( ( isset( $_GET[ $post_type_slug . '_catid' ] ) ) && ( ! empty( $_GET[ $post_type_slug . '_catid' ] ) ) ) { $atts[ $post_type_slug . '_cat' ] = intval( $_GET[ $post_type_slug . '_catid' ] ); if ( ! isset( $filter['tax_query'] ) ) { $filter['tax_query'] = array(); } $filter['tax_query'][] = array( 'taxonomy' => 'ld_' . $post_type_slug . '_category', 'field' => 'term_id', 'terms' => intval( $_GET[ $post_type_slug . '_catid' ] ), ); } $cat_posts = get_posts( $filter_cat ); // We first need to build a listing of the categories used by each of the queried posts. if ( ! empty( $cat_posts ) ) { $args = array( 'fields' => 'ids' ); foreach ( $cat_posts as $cat_post ) { $post_categories = wp_get_object_terms( $cat_post->ID, 'ld_' . $post_type_slug . '_category', $args ); if ( ! empty( $post_categories ) ) { foreach ( $post_categories as $c ) { if ( empty( $ld_cats[ $c ] ) ) { $ld_cat = get_term( $c, 'ld_' . $post_type_slug . '_category' ); $ld_cats[ $c ] = array( 'id' => $ld_cat->cat_ID, 'name' => $ld_cat->name, 'slug' => $ld_cat->slug, 'parent' => $ld_cat->parent, 'count' => 0, 'posts' => array(), ); } $ld_cats[ $c ]['count']++; $ld_cats[ $c ]['posts'][] = $cat_post->ID; } } } // Once we have these categories we need to requery the categories in order to get them into a proper ordering. if ( ! empty( $ld_cats ) ) { // And also let this query be filtered. $get_ld_categories_args = apply_filters( 'learndash_course_list_' . $post_type_slug . '_category_args', array( 'taxonomy' => 'ld_' . $post_type_slug . '_category', 'type' => $post_type, 'include' => array_keys( $ld_cats ), 'orderby' => 'name', 'order' => 'ASC', ) ); $post_type_object = get_post_type_object( $atts['post_type'] ); //error_log('post_type_slug['. $atts['post_type'] .'] post_type_object
      '. print_r($post_type_object, true) .'
      '); $tax_object = get_taxonomy( 'ld_' . $post_type_slug . '_category' ); if ( ! empty( $get_ld_categories_args ) ) { $ld_categories = get_terms( $get_ld_categories_args ); } } } } else { $atts[ $post_type_slug . '_categoryselector' ] = ''; } //} //error_log('filter
      '. print_r($filter, true) .'
      '); $loop = new WP_Query( $filter ); //error_log('loop
      '. print_r($loop, true) .'
      '); $level = ob_get_level(); ob_start(); if ( 'true' == $include_outer_wrapper ) { if ( ! empty( $categories ) ) { $categorydropdown = '
      '; $categorydropdown .= '
      "; /** * Filter HTML output of category dropdown * * @since 2.1.0 * * @param string $categorydropdown */ echo apply_filters( 'ld_categorydropdown', $categorydropdown, $atts, $filter ); } if ( ! empty( $ld_categories ) ) { $ld_categorydropdown = '
      '; $ld_categorydropdown .= '
      "; /** * Filter HTML output of category dropdown * * @since 2.1.0 * * @param string $categorydropdown */ echo apply_filters( 'ld_' . $post_type_slug . '_categorydropdown', $ld_categorydropdown, $atts, $filter ); } } $filter_json = htmlspecialchars( wp_json_encode( $atts ) ); $filter_md5 = md5( $filter_json ); //error_log('include_outer_wrapper['. $include_outer_wrapper .']'); if ( 'true' == $include_outer_wrapper ) { // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Escaped above ?>
      the_post() in the section below we are changing the * global $post object. The problem is after this loop we call wp_reset_postdata() but * the global $post is not being reset. This is really only an issue with the Gutenberg * render blocks. * * @since 2.5.9 */ // if ( ( defined( 'REST_REQUEST' ) ) && ( true === REST_REQUEST ) ) { $post_save = $post; // } while ( $loop->have_posts() ) { $loop->the_post(); if ( empty( $atts['course_id'] ) ) { $course_id = learndash_get_course_id( get_the_ID() ); } else { $course_id = $atts['course_id']; } echo SFWD_LMS::get_template( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Outputting HTML template 'course_list_template', array( 'shortcode_atts' => $atts, 'course_id' => $course_id, ) ); //} } ?>
      0 ) ) { $course_list_pager = array(); if ( isset( $loop->query_vars['paged'] ) ) { $course_list_pager['paged'] = $loop->query_vars['paged']; } else { $course_list_pager['paged'] = $filter['paged']; } $course_list_pager['total_items'] = intval( $loop->found_posts ); $course_list_pager['total_pages'] = intval( $loop->max_num_pages ); echo SFWD_LMS::get_template( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Outputting HTML template 'learndash_pager.php', array( 'pager_results' => $course_list_pager, 'pager_context' => 'course_list', ) ); } if ( 'true' == $include_outer_wrapper ) { ?>
      $user_id, 'course_id' => $course_id, 'array' => true, ) ); $status = ( 100 === absint( $progress['percentage'] ) ) ? 'completed' : 'notcompleted'; if ( absint( $progress['percentage'] ) > 0 && 100 !== absint( $progress['percentage'] ) ) { $status = 'progress'; } $course_class = apply_filters( 'learndash-course-row-class', 'ld-item-list-item ld-item-list-item-course ld-expandable ' . ( 100 === absint( $progress['percentage'] ) ? 'learndash-complete' : 'learndash-incomplete' ), $course, $user_id ); ?>
      ID, $user_id ); if ( ! empty( $learndash_certificate_link ) ) : ?>
      $user_id, 'course_id' => $course_id, 'progress' => $progress, ), true ); $assignments = learndash_get_course_assignments( $course_id, $user_id ); if ( $assignments || ! empty( $quiz_attempts[ $course_id ] ) ) : ?>
      $user_id, 'course_id' => $course_id, 'quiz_attempts' => $quiz_attempts, ), true ); endif; ?> $user_id, 'course_id' => $course_id, 'assignments' => $assignments, ), true ); endif; ?>
      PKc\>D5themes/ld30/templates/shortcodes/profile/quiz-row.phpnuW+AID, '_viewProfileStatistics', true ), $user_id, $quiz_attempt, basename( __FILE__ ) ) ) { $stats = ''; } } endif; // Quiz title and link... $quiz_title = ! empty( $quiz_attempt['post']->post_title ) ? $quiz_attempt['post']->post_title : @$quiz_attempt['quiz_title']; $quiz_link = ! empty( $quiz_attempt['post']->ID ) ? learndash_get_step_permalink( intval( $quiz_attempt['post']->ID ), $course_id ) : '#'; ?>
      '; } $quiz_columns = apply_filters( 'learndash_profile_quiz_columns', array( 'certificate' => array( 'id' => $quiz_list_columns[0]['id'], 'label' => $quiz_list_columns[0]['label'], 'content' => $certificateLink, 'class' => '', ), 'score' => array( 'id' => $quiz_list_columns[1]['id'], 'label' => $quiz_list_columns[1]['label'], 'content' => $score, 'class' => '', ), 'stats' => array( 'id' => $quiz_list_columns[2]['id'], 'label' => $quiz_list_columns[2]['label'], 'content' => $stats, 'class' => '', ), 'date' => array( 'id' => $quiz_list_columns[3]['id'], 'label' => $quiz_list_columns[3]['label'], 'content' => learndash_adjust_date_time_display( $quiz_attempt['time'] ), 'class' => '', ), ), $quiz_attempt, $quiz_list_columns ); foreach ( $quiz_columns as $column ) : ?>
      :
      'comments', 'label' => __( 'Comments', 'learndash' ), ), array( 'id' => 'status', 'label' => __( 'Status', 'learndash' ), ), array( 'id' => 'points', 'label' => __( 'Points', 'learndash' ), ), ) ); foreach ( $columns as $column ) : ?>
      $essay, 'user_id' => $user_id, 'course_id' => $course_id, ), true ); endforeach; ?>
      PKc\qR6themes/ld30/templates/shortcodes/profile/essay-row.phpnuW+AID ); $comments = get_comment_count( $essay->ID ); $details = learndash_get_essay_details( $essay->ID ); $essay_columns = apply_filters( 'learndash-profile-essay-column', array( 'comments' => ' ' . $comments['all'] . '', 'status' => learndash_status_bubble( $details['status'], 'essay', false ), 'points' => $details['points']['awarded'] . '/' . $details['points']['total'], ) ); ?>
      $content ) : ?>
      PKc\?4themes/ld30/templates/shortcodes/profile/quizzes.phpnuW+A
      'certificate', 'label' => __( 'Certificate', 'learndash' ), ), array( 'id' => 'scores', 'label' => __( 'Score', 'learndash' ), ), array( 'id' => 'stats', 'label' => __( 'Statistics', 'learndash' ), ), array( 'id' => 'date', 'label' => __( 'Date', 'learndash' ), ), ) ); foreach ( $columns as $column ) : ?>
      $quiz_attempt ) : learndash_get_template_part( 'shortcodes/profile/quiz-row.php', array( 'user_id' => $user_id, 'quiz_attempt' => $quiz_attempt, 'course_id' => $course_id, 'quiz_list_columns' => $columns, ), true ); endforeach; ?>
      PKc\Cp;themes/ld30/templates/shortcodes/profile/search-results.phpnuW+A PKc\sm}<themes/ld30/templates/shortcodes/profile/course-progress.phpnuW+A
      PKc\!ԚVo o 3themes/ld30/templates/shortcodes/profile/search.phpnuW+A $learndash_profile_search_query, ), true ); endif; ?> PKc\zگ8themes/ld30/templates/shortcodes/profile/assignments.phpnuW+A
      __( '', 'learndash' ), 'status' => __( 'Status', 'learndash' ), 'date' => __( 'Date', 'learndash' ), ) ); foreach ( $cols as $slug => $label ) : ?>
      have_posts() ) : while ( $assignments->have_posts() ) : $assignments->the_post(); global $post; learndash_get_template_part( 'shortcodes/profile/assignment-row.php', array( 'assignment_post_type_object' => get_post_type_object( 'sfwd-assignment' ), 'assignment' => $post, 'course_id' => $course_id, 'user_id' => $user_id, ), true ); endwhile; else : // In theory this will never display, but fallback just in case. ?>
      PKc\900;themes/ld30/templates/shortcodes/profile/assignment-row.phpnuW+AID ); ( $assignment->ID ); ?>
      ' target="_blank"> publicly_queryable ? get_permalink( $assignment->ID ) : get_post_meta( $assignment->ID, 'file_link', true ) ); ?> ID ) ); ?>
      publicly_queryable ) : /** * Action to add custom content before assignment post link * * @since 3.0 */ do_action( 'learndash-assignment-row-columns-before', $assignment, get_the_ID(), $course_id, $user_id ); ob_start(); if ( post_type_supports( 'sfwd-assignment', 'comments' ) && apply_filters( 'comments_open', $assignment->comment_status, $assignment->ID ) ) : // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- WP Core hook /** * Action to add custom content before assignment comment count & link * * @since 3.0 */ do_action( 'learndash-assignment-row-comments-before', $assignment, get_the_ID(), $course_id, $user_id ); ?> ID ) ); ?> ID ) && ! $assignment_points ) : ob_start(); ?> ID ) ) : ob_start(); ?> ID ); // Apply a fitler so devs can add more info here later $row_columns = apply_filters( 'learndash-assignment-list-columns-content', $row_columns ); if ( ! empty( $row_columns ) ) : foreach ( $row_columns as $slug => $content ) : do_action( 'learndash-assignment-row-' . $slug . '-before', $assignment, get_the_ID(), $course_id, $user_id ); ?>
      PKc\7_:themes/ld30/templates/shortcodes/user_groups_shortcode.phpnuW+A

      $learndash_group, ), true ); endforeach; ?>

      $learndash_group, ), true ); endforeach; ?>
      PKc\eK44=themes/ld30/templates/shortcodes/course_content_shortcode.phpnuW+A

      $course_id, 'user_id' => $user_id, 'lessons' => $lessons, 'lesson_topics' => ! empty( $lesson_topics ) ? $lesson_topics : [], 'quizzes' => $quizzes, 'has_access' => $has_access, 'course_pager_results' => $course_pager_results, 'lesson_progression_enabled' => $lesson_progression_enabled, 'context' => 'course_content_shortcode', ), true ); /** * Action to add custom content before the course content listing * * @since 3.0 */ do_action( 'learndash-course-content-list-after', $course_id, $user_id ); ?>
      PKc\3xx0themes/ld30/templates/shortcodes/user-status.phpnuW+A', '' ) : array( '

      ', '

      ' ) ); if ( 'profile.php' !== $pagenow && 'user-edit.php' !== $pagenow && $course_info['courses_registered'] && ! empty( $course_info['courses_registered'] ) ) : ?>
      $course_info['user_id'], 'courses_registered' => $course_info['courses_registered'], 'shortcode_atts' => $shortcode_atts, 'course_progress' => $course_info['course_progress'], 'course_id' => $course_id, ), true ); endforeach; ?>
      $course_info['courses_registered_pager'], 'pager_context' => 'course_info_courses', ), true ); ?>
      PKc\s3ל##-themes/ld30/templates/lesson/partials/row.phpnuW+AID ] ) ? $lesson_topics[ $lesson['post']->ID ] : ''; $quizzes = learndash_get_lesson_quiz_list( $lesson['post']->ID, $user_id, $course_id ); $attributes = learndash_get_lesson_attributes( $lesson ); $content_count = learndash_get_lesson_content_count( $lesson, $course_id ); // Fallbacks $count = ( isset( $count ) ? $count : 0 ); $sections = ( isset( $sections ) ? $sections : array() ); $atts = apply_filters( 'learndash_lesson_row_atts', ( isset( $has_access ) && ! $has_access && 'is_not_sample' === $lesson['sample'] ? 'data-ld-tooltip="' . esc_html__( "You don't currently have access to this content", 'learndash' ) . '"' : '' ), $lesson['post']->ID, $course_id, $user_id ); /** * New logic to override sample lessons access LEARNDASH-3854 */ if ( ( empty( $atts ) ) && ( ! is_user_logged_in() ) ) { if ( 'is_sample' === $lesson['sample'] ) { if ( true !== (bool) apply_filters( 'learndash_lesson_sample_access', true, $lesson['post']->ID, $course_id, $user_id ) ) { $atts = apply_filters( 'learndash_lesson_row_atts_sample_no_access', 'data-ld-tooltip="' . esc_html__( 'Please login to view sample content', 'learndash' ) . '"', $lesson['post']->ID, $course_id, $user_id ); } } } /** * Action to add custom content before a row * * @since 3.0 */ do_action( 'learndash-lesson-row-before', $lesson['post']->ID, $course_id, $user_id ); if ( isset( $sections[ $lesson['post']->ID ] ) ) : learndash_get_template_part( 'lesson/partials/section.php', array( 'section' => $sections[ $lesson['post']->ID ], 'course_id' => $course_id, 'user_id' => $user_id, ), true ); endif; ?>
      >
      ID, $course_id, $user_id ); learndash_get_template_part( 'lesson/listing.php', array( 'lesson' => $lesson, 'topics' => $topics, 'quizzes' => $quizzes, 'course_id' => $course_id, 'user_id' => $user_id, 'course_pager_results' => $course_pager_results, ), true ); /** * Action to add custom content after the topic/quiz list * * @since 3.0 */ do_action( 'learndash-lesson-row-topic-list-after', $lesson['post']->ID, $course_id, $user_id ); ?>
      ID, $course_id, $user_id ); ?> PKc\  7themes/ld30/templates/lesson/partials/not-available.phpnuW+A PKc\g1themes/ld30/templates/lesson/partials/section.phpnuW+A
      post_title ); ?>
      ID ]['pager'] ) ? true : false ); $table_class = 'ld-table-list ld-topic-list' . ( true === $is_sample ? ' is_sample' : '' ) . ( ! $has_pagination ? ' ld-no-pagination' : '' ); /** * Action to add custom content before topic list * * @since 3.0 */ do_action( 'learndash-topic-list-before', $lesson['post']->ID, $course_id, $user_id ); ?>
      ID, $course_id, $user_id ); ?>
      ID, $course_id, $user_id ); ?> ID, $course_id, $user_id ) ) { ?> ID, $course_id, $user_id ) ) { ?> ID, $course_id, $user_id ); ?>
      ID, $course_id, $user_id ); ?>
      $topic ) : learndash_get_template_part( 'topic/partials/row.php', array( 'topic' => $topic, 'user_id' => $user_id, 'course_id' => $course_id, ), true ); endforeach; endif; $show_lesson_quizzes = true; if ( isset( $course_pager_results[ $lesson['post']->ID ]['pager'] ) && ! empty( $course_pager_results[ $lesson['post']->ID ]['pager'] ) ) : $show_lesson_quizzes = ( $course_pager_results[ $lesson['post']->ID ]['pager']['paged'] == $course_pager_results[ $lesson['post']->ID ]['pager']['total_pages'] ? true : false ); endif; $show_lesson_quizzes = apply_filters( 'learndash-show-lesson-quizzes', $show_lesson_quizzes, $lesson['post']->ID, $course_id, $user_id ); if ( ! empty( $quizzes ) && $show_lesson_quizzes ) : foreach ( $quizzes as $quiz ) : learndash_get_template_part( 'quiz/partials/row.php', array( 'quiz' => $quiz, 'user_id' => $user_id, 'course_id' => $course_id, 'lesson' => $lesson, 'context' => 'lesson', ), true ); endforeach; endif; ?>
      ID, $course_id, $user_id ); ?> PKc\j\N0themes/ld30/templates/course_registered_rows.phpnuW+A

      'success ld-alert-certificate', 'icon' => 'certificate', 'message' => __( 'You\'ve earned a certificate!', 'learndash' ), 'button' => array( 'url' => $course_certficate_link, 'icon' => 'download', 'label' => __( 'Download Certificate', 'learndash' ), 'target' => '_new', ), ), true ); endif; /** * Action to add custom content after the course certificate link * * @since 3.0 */ do_action( 'learndash-course-certificate-link-after', $course_id, $user_id ); /** * Course info bar */ learndash_get_template_part( 'modules/infobar.php', array( 'context' => 'course', 'course_id' => $course_id, 'user_id' => $user_id, 'has_access' => $has_access, 'course_status' => $course_status, 'post' => $post, ), true ); ?> $course_id, 'post_id' => get_the_ID(), 'user_id' => $user_id, 'content' => $content, 'materials' => $materials, 'context' => 'course', ), true ); /** * Identify if we should show the course content listing * @var $show_course_content [bool] */ $show_course_content = ( ! $has_access && 'on' === $course_meta['sfwd-courses_course_disable_content_table'] ? false : true ); if ( $has_course_content && $show_course_content ) : ?>

      $course_id, 'user_id' => $user_id, 'lessons' => $lessons, 'lesson_topics' => ! empty( $lesson_topics ) ? $lesson_topics : [], 'quizzes' => $quizzes, 'has_access' => $has_access, 'course_pager_results' => $course_pager_results, 'lesson_progression_enabled' => $lesson_progression_enabled, ), true ); /** * Action to add custom content before the course content listing * * @since 3.0 */ do_action( 'learndash-course-content-list-after', $course_id, $user_id ); ?>
      PKc\7+themes/ld30/templates/assignment/upload.phpnuW+A 0 ) { $assignments = learndash_get_user_assignments( $course_step_post->ID, $user_id ); if ( ! empty( $assignments ) && count( $assignments ) >= $assignment_upload_limit_count ) { return; } } } do_action( 'learndash-assignment-uploads-before', $course_step_post->ID, $course_id, $user_id ); ?>
      ID, $course_id, $user_id ); esc_html_e( 'Upload Assignment', 'learndash' ); ?> ID, $course_id, $user_id ); ?>
      ID, $course_id, $user_id ); ?>
      ID, $course_id, $user_id ); ?>
      ID, $course_id, $user_id ); ?>
      PKc\~`1themes/ld30/templates/assignment/partials/row.phpnuW+AID ); ?>
      ID ) ) : if ( ( isset( $post_settings['lesson_assignment_deletion_enabled'] ) && 'on' === $post_settings['lesson_assignment_deletion_enabled'] && absint( $assignment->post_author ) === absint( $user_id ) ) || ( learndash_is_admin_user( $user_id ) ) || ( learndash_is_group_leader_of_user( $user_id, $post->post_author ) ) ) : ?> ' target="_blank"> publicly_queryable ? get_permalink( $assignment->ID ) : get_post_meta( $assignment->ID, 'file_link', true ) ); ?> ID ) ); ?>
      comment_status, $assignment->ID ) ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- WP Core filter ?> ID ) ); ?> ID ) && ! $assignment_points ) : ob_start(); ?> ID ) ) : ob_start(); ?> $content ) : do_action( 'learndash-assignment-row-' . $slug . '-before', $assignment, get_the_ID(), $course_id, $user_id ); ?>
      PKc\>,themes/ld30/templates/assignment/listing.phpnuW+AID ); $assignments = learndash_get_user_assignments( $course_step_post->ID, $user_id ); /** * Action to add custom content before assignment list * * @since 3.0 */ do_action( 'learndash-assignment-alerts-before', $course_step_post->ID, $course_id, $user_id ); $assignment_messages = get_user_meta( get_current_user_id(), 'ld_assignment_message', true ); if ( ! empty( $assignment_messages ) && is_array( $assignment_messages ) ) : foreach ( $assignment_messages as $assignment_message ) : if ( ( isset( $assignment_message['message'] ) && ! empty( $assignment_message['message'] ) ) && ( isset( $assignment_message['type'] ) && ! empty( $assignment_message['type'] ) ) ) : $message = array( 'type' => 'warning', 'icon' => 'alert', 'message' => $assignment_message['message'], ); if ( 'success' === $assignment_message['type'] ) { $message['type'] = 'success'; $message['icon'] = 'checkmark'; } $message = apply_filters( 'learndash_assignment_upload_message', $message, $course_step_post->ID, $course_id, $user_id ); learndash_get_template_part( 'modules/alert.php', array( 'type' => $message['type'], 'icon' => $message['icon'], 'message' => $message['message'], ), true ); endif; endforeach; delete_user_meta( get_current_user_id(), 'ld_assignment_message' ); endif; /** * Action to add custom content before assignment list * * @since 3.0 */ do_action( 'learndash-assignment-alerts-after', $course_step_post->ID, $course_id, $user_id ); // Default to empty to prevent count errors if ( ! $assignments || empty( $assignments ) ) { $assignments = array(); } /** * Action to add custom content before assignment list * * @since 3.0 */ do_action( 'learndash-assignment-list-before', $course_step_post->ID, $course_id, $user_id ); ?> ID, $course_id, $user_id ); $approval_needed = $assignment_stats['total'] - $assignment_stats['complete']; learndash_get_template_part( 'modules/alert.php', array( 'type' => 'warning', 'icon' => 'alert', 'message' => ( $approval_needed > 1 ? __( 'You have assignments awaiting approval.', 'learndash' ) : __( 'You have an assignment awaiting approval.', 'learndash' ) ), ), true ); do_action( 'learndash-assignment-list-after-aproval-alert', $course_step_post->ID, $course_id, $user_id ); endif; /** * Action to add custom content before assignment list * * @since 3.0 */ do_action( 'learndash-assignment-list-after-alert-before-table', $course_step_post->ID, $course_id, $user_id ); ?>
      ID, $course_id, $user_id ); ?> ID, $course_id, $user_id ); ?>
      sprintf( // translators: placeholders: assignment count approved, assignment count total. esc_html_x( '%1$d/%2$d Approved', 'placeholders: assignment count approved, assignment count total', 'learndash' ), $assignment_stats['complete'], $assignment_stats['total'] ), ) ); foreach ( $columns as $class => $label ) : ?>
      ID, $course_id, $user_id ); echo esc_html( $label ); /** * Action to add custom content after assignment list column * * @since 3.0 */ do_action( 'learndash-assignment-list-table-after-column-' . $class, $course_step_post->ID, $course_id, $user_id ); ?>
      ID, $course_id, $user_id ); ?>
      ID, $course_id, $user_id ); if ( ! empty( $assignments ) ) : $assignment_post_type_object = get_post_type_object( 'sfwd-assignment' ); foreach ( $assignments as $assignment ) : learndash_get_template_part( 'assignment/partials/row.php', array( 'assignment' => $assignment, 'post_settings' => $post_settings, 'course_id' => $course_id, 'user_id' => $user_id, 'assignment_post_type_object' => $assignment_post_type_object, ), true ); endforeach; else : esc_html_x( 'No assignments submitted at this time', 'No assignments message', 'learndash' ); endif; /** * Action to add custom content after assignment list * * @since 3.0 */ do_action( 'learndash-assignment-list-after', $course_step_post->ID, $course_id, $user_id ); learndash_get_template_part( 'assignment/upload.php', array( 'post_settings' => $post_settings, 'course_step_post' => $course_step_post, 'user_id' => $user_id, 'course_id' => $course_id, ), true ); /** * Action to add custom content after assignment list * * @since 3.0 */ do_action( 'learndash-assignment-upload-after', $course_step_post->ID, $course_id, $user_id ); ?>
      ID, $course_id, $user_id ); ?> PKc\ (themes/ld30/templates/focus/comments.phpnuW+A
      approved > 0 ) && ( ! isset( $_GET['replytocom'] ) ) ) { ?>
      approved, 'comments', 'learndash' ) ), esc_html( number_format_i18n( $learndash_comment_count->approved ) ) ); ?>
      approved ) ) : ?>
      approved ) ) ? ' ld-collapsed' : ''; ?>
      esc_html__( 'Leave a Comment', 'learndash' ), ) ); comment_form( $args ); ?>
      PKc\Npp(themes/ld30/templates/focus/masthead.phpnuW+A '', 'logo_url' => '', 'text' => '', 'text_url' => '', ); $header['logo'] = LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Theme_LD30', 'login_logo' ); if ( ! empty( $header['logo'] ) ) { $header['logo_alt'] = get_post_meta( $header['logo'], '_wp_attachment_image_alt', true ); $header['logo_alt'] = apply_filters( 'learndash_focus_header_logo_alt', $header['logo_alt'], $course_id, $user_id ); $header['logo_url'] = apply_filters( 'learndash_focus_header_logo_url', get_home_url(), $course_id, $user_id ); } else { $header['text'] = apply_filters( 'learndash_focus_header_text', '', $course_id, $user_id ); if ( ! empty( $header['text'] ) ) { $header['text_url'] = apply_filters( 'learndash_focus_header_text_url', '', $course_id, $user_id ); } } ?>
      $course_id, 'user_id' => $user_id, 'context' => 'focus', ), true ); } do_action( 'learndash-focus-header-nav-before', $course_id, $user_id ); $can_complete = learndash_30_focus_mode_can_complete(); learndash_get_template_part( 'modules/course-steps.php', array( 'course_id' => $course_id, 'course_step_post' => $post, 'user_id' => $user_id, 'course_settings' => isset( $course_settings ) ? $course_settings : array(), 'can_complete' => $can_complete, 'context' => 'focus', ), true ); do_action( 'learndash-focus-header-nav-after', $course_id, $user_id ); ?>
      user_nicename, $user_data ) ) ); ?> array( 'url' => get_the_permalink( $course_id ), 'label' => sprintf( // translators: Placeholder for course home link. esc_html_x( '%s Home', 'Placeholder for course home link', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), ), ); if ( $custom_menu_items ) : foreach ( $custom_menu_items as $menu_item ) : $menu_items[ $menu_item->post_name ] = array( 'url' => $menu_item->url, 'label' => $menu_item->title, 'classes' => esc_attr( 'ld-focus-menu-link ld-focus-menu-' . $menu_item->post_name ), 'target' => '', 'attr_title' => '', 'xfn' => '', ); if ( ( property_exists( $menu_item, 'classes' ) ) && ( is_array( $menu_item->classes ) ) ) { $classes = array_filter( $menu_item->classes, 'strlen' ); if ( ! empty( $classes ) ) { $menu_items[ $menu_item->post_name ]['classes'] .= ' ' . implode( ' ', $classes ); } } if ( ( property_exists( $menu_item, 'target' ) ) && ( ! empty( $menu_item->target ) ) ) { $menu_items[ $menu_item->post_name ]['target'] = esc_attr( $menu_item->target ); } if ( ( property_exists( $menu_item, 'attr_title' ) ) && ( ! empty( $menu_item->attr_title ) ) ) { $menu_items[ $menu_item->post_name ]['attr_title'] = esc_attr( $menu_item->attr_title ); } if ( ( property_exists( $menu_item, 'xfn' ) ) && ( ! empty( $menu_item->xfn ) ) ) { $menu_items[ $menu_item->post_name ]['xfn'] = esc_attr( $menu_item->xfn ); } endforeach; endif; $menu_items['logout'] = array( 'url' => wp_logout_url( get_the_permalink( $course_id ) ), 'label' => __( 'Logout', 'learndash' ), ); if ( $menu_items && ! empty( $menu_items ) ) : foreach ( $menu_items as $slug => $item ) : ?> class="" target="" rel="" title="" href="">
      PKc\ 'themes/ld30/templates/focus/sidebar.phpnuW+A
      true, 'show_topic_quizzes' => true, 'show_course_quizzes' => true, ) ); learndash_get_template_part( 'widgets/navigation/rows.php', array( 'course_id' => $course_id, 'widget_instance' => $widget_instance, 'lessons' => $lessons, 'has_access' => $has_access, 'user_id' => $user_id, 'course_pager_results' => $course_pager_results, ), true ); do_action( 'learndash-focus-sidebar-nav-after', $course_id, $user_id ); ?>
      PKc\G|ww&themes/ld30/templates/focus/header.phpnuW+A > >
      PKc\ d^^&themes/ld30/templates/focus/footer.phpnuW+A
      PKc\+gL[ [ %themes/ld30/templates/focus/index.phpnuW+AID : false ); do_action( 'learndash-focus-header-before', $course_id, $user_id ); learndash_get_template_part( 'focus/header.php', array( 'course_id' => $course_id, 'user_id' => $user_id, 'context' => 'focus', ), true ); do_action( 'learndash-focus-sidebar-before', $course_id, $user_id ); learndash_get_template_part( 'focus/sidebar.php', array( 'course_id' => $course_id, 'user_id' => $user_id, 'context' => 'focus', ), true ); ?>
      $course_id, 'user_id' => $user_id, 'context' => 'focus', ), true ); do_action( 'learndash-focus-masthead-after', $course_id, $user_id ); ?>

      '', ) ); ?> $course_id, 'user_id' => $user_id, 'context' => 'focus', ), true ); endif; ?>
      $course_id, 'user_id' => $user_id, 'context' => 'focus', ), true ); do_action( 'learndash-focus-content-footer-after', $course_id, $user_id ); endwhile; else : learndash_get_template_part( 'modules/alert.php', array( 'type' => 'warning', 'icon' => 'alert', 'message' => esc_html__( 'No content found at this address', 'learndash' ), ), true ); endif; ?> PKc\xU -themes/ld30/templates/focus/comments_list.phpnuW+Auser_id ); $roles = $user_data->roles; $role_classes = ''; if ( ! empty( $roles ) ) { foreach ( $roles as $role ) : $role_classes .= 'role-' . $role; if ( 'administrator' === $role || 'group_leader' === $role ) { $role_name = translate_user_role( $wp_roles->roles[ $role ]['name'] ); } endforeach; } $learndash_avatar_class = empty( get_avatar( $comment->comment_author_email ) ) ? ' ld-no-avatar-image' : ''; ?>
      post_type . ' ' . $role_classes . $learndash_avatar_class ); ?> id="comment-">
      comment_approved ) : ?>
      comment_author_email ) ); ?> comment_author ); if ( ! empty( $role_name ) ) { echo esc_html( ' (' . $role_name . ')' ); } ?> ' . esc_html( get_comment_date() ) . '', ' ' . esc_html( get_comment_time() ) . '' ); ?>
      esc_html__( 'Reply', 'learndash' ), 'after' => '', 'depth' => $depth, 'max_depth' => $args['max_depth'], ) ) ); ?>
      'div', 'page' => get_query_var( 'cpage', 1 ), 'callback' => 'learndash_focus_mode_comments_list', ) ); wp_list_comments( $args ); } PKc\/!bnthemes/ld30/templates/quiz.phpnuW+A
      ID, $course_id, $user_id ); learndash_get_template_part( 'modules/infobar.php', array( 'context' => 'quiz', 'course_id' => $course_id, 'user_id' => $user_id, 'post' => $quiz_post, ), true ); if ( ! empty( $lesson_progression_enabled ) ) : $last_incomplete_step = is_quiz_accessable( null, $quiz_post, true, $course_id ); if ( is_a( $last_incomplete_step, 'WP_Post' ) ) { /** * Action to add custom content before the quiz progression * * @since 3.0 */ do_action( 'learndash-quiz-progression-before', $quiz_post->ID, $course_id, $user_id ); learndash_get_template_part( 'modules/messages/lesson-progression.php', array( 'previous_item' => $last_incomplete_step, 'course_id' => $course_id, 'user_id' => $user_id, 'context' => 'quiz', ), true ); /** * Action to add custom content after the quiz progress * * @since 3.0 */ do_action( 'learndash-quiz-progression-after', $quiz_post->ID, $course_id, $user_id ); } endif; if ( $show_content ) : /** * Content and/or tabs */ learndash_get_template_part( 'modules/tabs.php', array( 'course_id' => $course_id, 'post_id' => $quiz_post->ID, 'user_id' => $user_id, 'content' => $content, 'materials' => $materials, 'context' => 'quiz', ), true ); if ( $attempts_left ) : /** * Action to add custom content before the actual quiz content (not WP_Editor content) * * @since 3.0 */ do_action( 'learndash-quiz-actual-content-before', $quiz_post->ID, $course_id, $user_id ); echo $quiz_content; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Post content /** * Action to add custom content after the actual quiz content (not WP_Editor content) * * @since 3.0 */ do_action( 'learndash-quiz-actual-content-after', $quiz_post->ID, $course_id, $user_id ); else : /** * Display an alert */ /** * Action to add custom content before the quiz attempts alert * * @since 3.0 */ do_action( 'learndash-quiz-attempts-alert-before', $quiz_post->ID, $course_id, $user_id ); learndash_get_template_part( 'modules/alert.php', array( 'type' => 'warning', 'icon' => 'alert', 'message' => sprintf( // translators: placeholders: quiz, attempts count. esc_html_x( 'You have already taken this %1$s %2$d time(s) and may not take it again.', 'placeholders: quiz, attempts count', 'learndash' ), learndash_get_custom_label_lower( 'quiz' ), $attempts_count ), ), true ); /** * Action to add custom content after the quiz attempts alert * * @since 3.0 */ do_action( 'learndash-quiz-attempts-alert-after', $quiz_post->ID, $course_id, $user_id ); endif; endif; /** * Action to add custom content before the quiz content starts * * @since 3.0 */ do_action( 'learndash-quiz-after', $quiz_post->ID, $course_id, $user_id ); ?>
      PKc\&themes/ld30/templates/topic.phpnuW+A
      'topic', 'course_id' => $course_id, 'user_id' => $user_id, ), true ); /** * If the user needs to complete the previous lesson AND topic display an alert * */ if ( $lesson_progression_enabled && ( ! $previous_topic_completed || ! $previous_lesson_completed ) ) : $previous_item = learndash_get_previous( $post ); if ( empty( $previous_item ) ) { $previous_item = learndash_get_previous( $lesson_post ); } learndash_get_template_part( 'modules/messages/lesson-progression.php', array( 'previous_item' => $previous_item, 'course_id' => $course_id, 'context' => 'topic', ), true ); endif; if ( $show_content ) : learndash_get_template_part( 'modules/tabs.php', array( 'course_id' => $course_id, 'post_id' => get_the_ID(), 'user_id' => $user_id, 'content' => $content, 'materials' => $materials, 'context' => 'topic', ), true ); if ( ! empty( $quizzes ) ) : learndash_get_template_part( 'quiz/listing.php', array( 'user_id' => $user_id, 'course_id' => $course_id, 'lesson_id' => $lesson_id, 'quizzes' => $quizzes, 'context' => 'topic', ), true ); endif; if ( lesson_hasassignments( $post ) && ! empty( $user_id ) ) : learndash_get_template_part( 'assignment/listing.php', array( 'user_id' => $user_id, 'course_step_post' => $post, 'course_id' => $course_id, 'context' => 'topic', ), true ); endif; endif; // $show_content $can_complete = false; if ( $all_quizzes_completed && $logged_in && ! empty( $course_id ) ) : $can_complete = apply_filters( 'learndash-lesson-can-complete', true, get_the_ID(), $course_id, $user_id ); endif; learndash_get_template_part( 'modules/course-steps.php', array( 'course_id' => $course_id, 'course_step_post' => $post, 'all_quizzes_completed' => $all_quizzes_completed, 'user_id' => $user_id, 'course_settings' => isset( $course_settings ) ? $course_settings : array(), 'context' => 'topic', 'can_complete' => $can_complete, ), true ); /** * Action to add custom content after the topic * * @since 3.0 */ do_action( 'learndash-topic-after', get_the_ID(), $course_id, $user_id ); ?>
      PKc\H5ID ); $post_id = ( isset( $_GET['widget_instance']['widget_instance']['current_step_id'] ) ? $topic->ID : get_the_ID() ); $topic_class = apply_filters( 'learndash-topic-row-class', 'ld-table-list-item-preview ld-primary-color-hover ld-topic-row ' . ( $topic->completed ? 'learndash-complete' : 'learndash-incomplete' ) . ' ' . ( $post_id == $topic_id ? 'ld-is-current-item' : '' ), $topic ); $topic_status = apply_filters( 'learndash-topic-status', ( $topic->completed ? 'completed' : 'not-completed' ), $topic, $course_id ); /** * Action to add custom content before topic row * * @since 3.0 */ do_action( 'learndash-topic-row-before', $topic->ID, $course_id, $user_id ); ?> ID, $course_id, $user_id ); $topic_quizzes = learndash_get_lesson_quiz_list( $topic, null, $course_id ); if ( $topic_quizzes && ! empty( $topic_quizzes ) ) : foreach ( $topic_quizzes as $quiz ) : learndash_get_template_part( 'quiz/partials/row.php', array( 'quiz' => $quiz, 'context' => 'topic', 'course_id' => $course_id, 'user_id' => $user_id, ), true ); endforeach; endif; /** * Action to add custom content after a topic quiz row * * @since 3.0 */ do_action( 'learndash-topic-quiz-row-after', $topic->ID, $course_id, $user_id ); /** * Action to add custom content after topic row * * @since 3.0 */ do_action( 'learndash-topic-row-after', $topic->ID, $course_id, $user_id ); ?> PKc\Y 1themes/ld30/templates/widgets/navigation/rows.phpnuW+AID ) ) { $is_current_lesson = true; } elseif ( get_the_ID() === absint( $is_current_lesson ) ) { // Not sure how this is ever reached. $is_current_lesson = true; } $all_topics = learndash_topic_dots( $course_lesson['post']->ID, false, 'array' ); $topic_pager_args = apply_filters( 'ld30_ajax_topic_pager_args', array( 'course_id' => $course_id, 'lesson_id' => $course_lesson['post']->ID, ) ); $lesson_topics = learndash_process_lesson_topics_pager( $all_topics, $topic_pager_args ); learndash_get_template_part( 'widgets/navigation/lesson-row.php', array( 'count' => $i, 'sections' => $sections, 'lesson' => $course_lesson, 'course_id' => $course_id, 'user_id' => $user_id, 'lesson_topics' => $lesson_topics, 'widget_instance' => $widget_instance, 'is_current_lesson' => $is_current_lesson, 'has_access' => $has_access, ), true ); $i++; endforeach; endif; /** * Should we show quizzes in the course navigation based on pagination? * @var [type] */ $show_course_quizzes = true; if ( isset( $course_pager_results['pager'] ) && ! empty( $course_pager_results['pager'] ) ) { $show_course_quizzes = ( absint( $course_pager_results['pager']['paged'] ) === absint( $course_pager_results['pager']['total_pages'] ) ? true : false ); } if ( isset( $widget_instance['show_course_quizzes'] ) && true !== (bool) $widget_instance['show_course_quizzes'] ) { $show_course_quizzes = false; } if ( $show_course_quizzes == true ) : $course_quiz_list = learndash_get_course_quiz_list( $course_id, get_current_user_id() ); if ( ! empty( $course_quiz_list ) ) : foreach ( $course_quiz_list as $quiz ) : learndash_get_template_part( 'widgets/navigation/quiz-row.php', array( 'quiz' => $quiz, 'user_id' => $user_id, 'course_id' => $course_id, 'context' => 'course', ), true ); endforeach; endif; endif; if ( isset( $course_pager_results['pager'] ) ) : learndash_get_template_part( 'modules/pagination.php', array( 'pager_results' => $course_pager_results['pager'], 'pager_context' => 'course_lessons', 'course_id' => $course_id, ), true ); endif; PKc\T T 7themes/ld30/templates/widgets/navigation/lesson-row.phpnuW+AID, get_current_user_id(), $course_id ); /** * Should this lesson be expandable, false by default * @var $expandable boolean */ $expandable = false; if ( isset( $lesson_topics ) && ! empty( $lesson_topics ) ) { $expandable = true; } elseif ( isset( $quizzes ) && ! empty( $quizzes ) ) { if ( isset( $widget_instance['show_lesson_quizzes'] ) && true === (bool) $widget_instance['show_lesson_quizzes'] ) { $expandable = true; } } $current_lesson_id = null; global $post; global $course_pager_results; if ( isset( $post ) && is_object( $post ) && isset( $post->post_type ) ) { if ( in_array( $post->post_type, array( 'sfwd-lessons', 'sfwd-topic', 'sfwd-quiz' ), true ) ) { if ( 'sfwd-lessons' === $post->post_type ) { $current_lesson_id = $post->ID; } elseif ( in_array( $post->post_type, array( 'sfwd-topic', 'sfwd-quiz' ), true ) ) { $current_lesson_id = learndash_course_get_single_parent_step( $course_id, $post->ID, 'sfwd-lessons' ); } } } if ( isset( $_GET['widget_instance']['widget_instance']['current_lesson_id'] ) ) { $current_lesson_id = intval( $_GET['widget_instance']['widget_instance']['current_lesson_id'] ); } $is_current_lesson = ( absint( $current_lesson_id ) === absint( $lesson['post']->ID ) ? true : false ); $lesson_class = 'ld-lesson-item ' . ( $is_current_lesson ? 'ld-is-current-lesson' : 'ld-is-not-current-lesson' ); $lesson_class .= ( ! empty( $lesson['lesson_access_from'] ) || ! $has_access ? ' learndash-not-available' : '' ); $lesson_class .= ' ' . ( 'completed' === $lesson['status'] ? 'learndash-complete' : 'learndash-incomplete' ); $lesson_class .= ( isset( $lesson['sample'] ) ? ' ' . $lesson['sample'] : '' ); $lesson_class = apply_filters( 'learndash-nav-widget-lesson-class', $lesson_class ); if ( isset( $sections[ $lesson['post']->ID ] ) ) : learndash_get_template_part( 'widgets/navigation/section.php', array( 'section' => $sections[ $lesson['post']->ID ], 'course_id' => $course_id, 'user_id' => $user_id, ), true ); endif; ?>
      0 && 'completed' !== $lesson['status'] ? 'progress' : $lesson['status'] ); } else { $status = $lesson['status']; } learndash_status_icon( $status, 'sfwd-lesson', null, true ); ?>
      post_title ); if ( ! empty( $attributes ) ) : foreach ( $attributes as $attribute ) : ?>
      ID, $course_id, $user_id ); $content_count = learndash_get_lesson_content_count( $lesson, $course_id ); ?> 0 ) { echo sprintf( // translators: placeholders: Topic Count, Topic/Topics Label. esc_html_x( '%1$d %2$s', 'placeholders: Topic Count, Topic/Topics Label', 'learndash' ), esc_html( $content_count['topics'] ), esc_html( _n( LearnDash_Custom_Label::get_label( 'topic' ), LearnDash_Custom_Label::get_label( 'topics' ), $content_count['topics'], 'learndash' ) ) ); } if ( $content_count['quizzes'] > 0 && $content_count['topics'] > 0 ) { echo ' | '; } if ( $content_count['quizzes'] > 0 ) { echo sprintf( // translators: placeholders: Quiz Count, Quiz/Quizzes Label. esc_html_x( '%1$d %2$s', 'placeholders: Quiz Count, Quiz/Quizzes Label', 'learndash' ), esc_html( $content_count['quizzes'] ), esc_html( _n( LearnDash_Custom_Label::get_label( 'quiz' ), LearnDash_Custom_Label::get_label( 'quizzes' ), $content_count['quizzes'], 'learndash' ) ) ); } ?>
      $topic, 'course_id' => $course_id, 'user_id' => $user_id, 'widget_instance' => $widget_instance, ), true ); endforeach; endif; if ( isset( $widget_instance['show_lesson_quizzes'] ) && true === (bool) $widget_instance['show_lesson_quizzes'] ) : $show_lesson_quizzes = true; if ( isset( $course_pager_results[ $lesson['post']->ID ]['pager'] ) && ! empty( $course_pager_results[ $lesson['post']->ID ]['pager'] ) ) : $show_lesson_quizzes = ( absint( $course_pager_results[ $lesson['post']->ID ]['pager']['paged'] ) === absint( $course_pager_results[ $lesson['post']->ID ]['pager']['total_pages'] ) ? true : false ); endif; $show_lesson_quizzes = apply_filters( 'learndash-show-lesson-quizzes', $show_lesson_quizzes, $lesson['post']->ID, $course_id, $user_id ); if ( $quizzes && ! empty( $quizzes ) && $show_lesson_quizzes ) : foreach ( $quizzes as $quiz ) : learndash_get_template_part( 'widgets/navigation/quiz-row.php', array( 'course_id' => $course_id, 'user_id' => $user_id, 'context' => 'lesson', 'quiz' => $quiz, ), true ); endforeach; endif; endif; ?>
      ID ]['pager'] ) ) : ?>
      PKc\Dʵ6themes/ld30/templates/widgets/navigation/topic-row.phpnuW+Acompleted ? ' learndash-complete' : ' learndash-incomplete' ), $topic ); $topic_class = 'ld-table-list-item-preview ld-primary-color-hover ld-topic-row ' . ( get_the_ID() === absint( $topic->ID ) ? 'ld-is-current-item ' : '' ); $topic_class = apply_filters( 'learndash-topic-row-class', $topic_class, $topic ); $topic_status = apply_filters( 'learndash-topic-status', ( $topic->completed ? 'completed' : 'not-completed' ) ); ?> $course_id, 'user_id' => $user_id, 'context' => 'lesson', 'quiz' => $quiz, ), true ); endforeach; endif; endif; ?> PKc\E'4themes/ld30/templates/widgets/navigation/section.phpnuW+A
      post_title ); ?>
      'ld-lesson-item' . ( 'completed' === $quiz['status'] ? ' learndash-complete' : ' learndash-incomplete' ), 'wrapper' => 'ld-lesson-item-preview' . ( get_the_ID() === absint( $quiz['post']->ID ) ? ' ld-is-current-item ' : '' ), 'anchor' => 'ld-lesson-item-preview-heading ld-primary-color-hover', 'title' => 'ld-lesson-title', ); if ( isset( $context ) && 'lesson' === $context ) { $classes['container'] = 'ld-table-list-item' . ( 'completed' === $quiz['status'] ? ' learndash-complete' : ' learndash-incomplete' ); $classes['wrapper'] = 'ld-table-list-item-wrapper'; $classes['anchor'] = 'ld-table-list-item-preview ld-primary-color-hover' . ( get_the_ID() === absint( $quiz['post']->ID ) ? ' ld-is-current-item ' : '' ); $classes['title'] = 'ld-topic-title'; } ?> PKc\tOI@@1themes/ld30/templates/widgets/course-progress.phpnuW+AID; } if ( ! isset( $course_id ) ) { $course_id = ( get_post_type() == 'sfwd-courses' ? get_the_ID() : learndash_get_course_id( get_the_ID() ) ); } ?>
      'course', 'course_id' => $course_id, 'user_id' => $user_id, ), true ); ?>
      PKc\23themes/ld30/templates/widgets/course-navigation.phpnuW+A $course_id, 'widget_instance' => $widget_instance, ); if ( ! isset( $user_id ) ) { $cuser = wp_get_current_user(); $user_id = $cuser->ID; } $widget_data_json = htmlspecialchars( wp_json_encode( $widget_data ) ); ?>
      $course_id, 'widget_instance' => $widget_instance, 'lessons' => $lessons, 'course_pager_results' => $course_pager_results, 'has_access' => $has_access, 'user_id' => $user_id, ), true ); if ( ! empty( $widget_instance['current_step_id'] ) && $widget_instance['current_step_id'] != $course->ID ) : ?>
      PKc\YTa`a`(themes/ld30/assets/css/learndash.min.cssnuW+A@font-face{font-family:'ld-icons';src:url("../fonts/ld-icons.eot?e0vk6b");src:url("../fonts/ld-icons.eot?e0vk6b#iefix") format("embedded-opentype"),url("../fonts/ld-icons.ttf?e0vk6b") format("truetype"),url("../fonts/ld-icons.woff?e0vk6b") format("woff"),url("../fonts/ld-icons.svg?e0vk6b#ld-icons") format("svg");font-weight:normal;font-style:normal} .ld-icon{font-family:'ld-icons' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block} .ld-icon-alert:before{content:"\e90d"}.ld-icon-unlocked:before{content:"\e900"} .ld-icon-quiz:before{content:"\e901"}.ld-icon-materials:before{content:"\e902"} .ld-icon-download:before{content:"\e903"}.ld-icon-course-outline:before{content:"\e904"} .ld-icon-content:before{content:"\e905"}.ld-icon-complete:before,.ld-icon-checkmark:before{content:"\e906"} .ld-icon-clock:before{content:"\e907"}.ld-icon-certificate:before{content:"\e908"} .ld-icon-calendar:before{content:"\e909"}.ld-icon-assignment:before{content:"\e90a"} .ld-icon-arrow-up:before{content:"\e912"}.ld-icon-arrow-right:before{content:"\e913"} .ld-icon-arrow-left:before{content:"\e914"}.ld-icon-arrow-down:before{content:"\e915"} .ld-icon-login:before{content:"\e90c"}.ld-icon-remove:before,.ld-icon-delete:before{content:"\e90b"} .ld-icon-comments:before{content:"\e917"}.ld-icon-search:before{content:"\e916"} .learndash-wrapper *{-webkit-box-sizing:border-box;box-sizing:border-box}.learndash-wrapper .learndash_checkout_buttons{margin:0 .5em 0 0} .learndash-wrapper .btn-join,.learndash-wrapper #btn-join{margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;text-align:center;text-decoration:none;cursor:pointer;width:100%;max-width:385px;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:auto;padding:.75em 1.5em;margin-left:0} .learndash-wrapper .btn-join .ld-icon,.learndash-wrapper #btn-join .ld-icon{font-size:.875em} .learndash-wrapper .btn-join .ld-text,.learndash-wrapper #btn-join .ld-text{padding:0 1em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center} .learndash-wrapper .btn-join+.ld-button,.learndash-wrapper #btn-join+.ld-button{margin-left:1em} .learndash-wrapper .btn-join.ld-compact,.learndash-wrapper #btn-join.ld-compact{padding:0;width:24px;height:24px;border-radius:100%;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .btn-join.ld-compact .ld-icon,.learndash-wrapper #btn-join.ld-compact .ld-icon{margin-right:0;font-size:.75em} .learndash-wrapper .btn-join.ld-compact .ld-text,.learndash-wrapper #btn-join.ld-compact .ld-text{padding:0} .learndash-wrapper .btn-join.ld-button-alternate,.learndash-wrapper #btn-join.ld-button-alternate{background:transparent;color:#00a2e8;padding:0} .learndash-wrapper .btn-join.ld-button-alternate .ld-icon,.learndash-wrapper #btn-join.ld-button-alternate .ld-icon{background:#00a2e8;color:white;border-radius:100%;width:18px;height:18px;-webkit-box-flex:0;-ms-flex:0 0 18px;flex:0 0 18px;padding:2px;line-height:16px;text-align:center;font-weight:bold;-webkit-transition:color .3s ease,background .3s ease;transition:color .3s ease,background .3s ease} .learndash-wrapper .btn-join.ld-button-alternate .ld-text,.learndash-wrapper #btn-join.ld-button-alternate .ld-text{padding-left:.5em} .learndash-wrapper .btn-join.ld-button-alternate:hover,.learndash-wrapper #btn-join.ld-button-alternate:hover{background:transparent} .learndash-wrapper .btn-join.ld-button-transparent,.learndash-wrapper #btn-join.ld-button-transparent{color:#00a2e8;background:transparent} .learndash-wrapper .btn-join.ld-button-transparent.ld-status-complete,.learndash-wrapper #btn-join.ld-button-transparent.ld-status-complete{color:#019e7c} .learndash-wrapper .btn-join.ld-button-transparent:hover,.learndash-wrapper #btn-join.ld-button-transparent:hover{background:transparent} .learndash-wrapper .btn-join.ld-button-reverse,.learndash-wrapper #btn-join.ld-button-reverse{background:white;color:#00a2e8} .learndash-wrapper .btn-join.ld-button-reverse:hover,.learndash-wrapper #btn-join.ld-button-reverse:hover{background:#00a2e8;color:white} .learndash-wrapper .btn-join:hover,.learndash-wrapper #btn-join:hover{opacity:.75;background-color:#00a2e8} .learndash-wrapper .btn-join:focus,.learndash-wrapper #btn-join:focus{outline:0;opacity:.75} .learndash-wrapper .ld-button{margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;text-align:center;text-decoration:none;cursor:pointer;width:100%;max-width:385px;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:auto;padding:.75em 1.5em} .learndash-wrapper .ld-button .ld-icon{font-size:.875em}.learndash-wrapper .ld-button .ld-text{padding:0 1em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center} .learndash-wrapper .ld-button+.ld-button{margin-left:1em}.learndash-wrapper .ld-button.ld-compact{padding:0;width:24px;height:24px;border-radius:100%;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .ld-button.ld-compact .ld-icon{margin-right:0;font-size:.75em} .learndash-wrapper .ld-button.ld-compact .ld-text{padding:0}.learndash-wrapper .ld-button.ld-button-alternate{background:transparent;color:#00a2e8;padding:0} .learndash-wrapper .ld-button.ld-button-alternate .ld-icon{background:#00a2e8;color:white;border-radius:100%;width:18px;height:18px;-webkit-box-flex:0;-ms-flex:0 0 18px;flex:0 0 18px;padding:2px;line-height:16px;text-align:center;font-weight:bold;-webkit-transition:color .3s ease,background .3s ease;transition:color .3s ease,background .3s ease} .learndash-wrapper .ld-button.ld-button-alternate .ld-text{padding-left:.5em}.learndash-wrapper .ld-button.ld-button-alternate:hover{background:transparent} .learndash-wrapper .ld-button.ld-button-transparent{color:#00a2e8;background:transparent} .learndash-wrapper .ld-button.ld-button-transparent.ld-status-complete{color:#019e7c} .learndash-wrapper .ld-button.ld-button-transparent:hover{background:transparent} .learndash-wrapper .ld-button.ld-button-reverse{background:white;color:#00a2e8}.learndash-wrapper .ld-button.ld-button-reverse:hover{background:#00a2e8;color:white} .learndash-wrapper .ld-button:hover{opacity:.75;background-color:#00a2e8}.learndash-wrapper .ld-button:focus{outline:0;opacity:.75} .learndash-wrapper .ld-button .ld-icon{-webkit-transition:all ease-in-out 250ms;transition:all ease-in-out 250ms} .learndash-wrapper .ld-button:hover .ld-icon-arrow-right{-webkit-transform:translateX(3px);-ms-transform:translateX(3px);transform:translateX(3px)} .learndash-wrapper .ld-button:hover .ld-icon-arrow-left{-webkit-transform:translateX(-3px);-ms-transform:translateX(-3px);transform:translateX(-3px)} .learndash-wrapper a{text-decoration:none;text-shadow:none;border-bottom:none !important;-webkit-box-shadow:none !important;box-shadow:none !important} .learndash-wrapper a:hover{text-decoration:none}.learndash-wrapper.ld-container{display:-webkit-box;display:-ms-flexbox;display:flex;padding:0 2em;max-width:1280px;margin:auto} .learndash-wrapper .ld-page-content{-webkit-box-flex:1;-ms-flex:1 auto;flex:1 auto;padding-right:2.5%} .learndash-wrapper .ld-sidebar-content{-webkit-box-flex:0;-ms-flex:0 0 250px;flex:0 0 250px;padding-left:2.5%} .learndash-wrapper .ld-profile-avatar{border-radius:100%;overflow:hidden}.learndash-wrapper .ld-profile-avatar img{width:100%;height:auto} .learndash-wrapper .sfwd-mark-complete,.learndash-wrapper #sfwd-mark-complete{position:relative;display:block;overflow:hidden} .learndash-wrapper .sfwd-mark-complete::after,.learndash-wrapper #sfwd-mark-complete::after{font-family:'ld-icons' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;content:"\e906";position:absolute;right:1em;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);color:white} .learndash-wrapper .learndash_mark_complete_button,.learndash-wrapper #learndash_mark_complete_button{margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;text-align:center;text-decoration:none;cursor:pointer;width:100%;max-width:385px;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:auto;padding:.75em 1.5em;background-color:#019e7c;padding:1em;padding-right:3em} .learndash-wrapper .learndash_mark_complete_button .ld-icon,.learndash-wrapper #learndash_mark_complete_button .ld-icon{font-size:.875em} .learndash-wrapper .learndash_mark_complete_button .ld-text,.learndash-wrapper #learndash_mark_complete_button .ld-text{padding:0 1em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center} .learndash-wrapper .learndash_mark_complete_button+.ld-button,.learndash-wrapper #learndash_mark_complete_button+.ld-button{margin-left:1em} .learndash-wrapper .learndash_mark_complete_button.ld-compact,.learndash-wrapper #learndash_mark_complete_button.ld-compact{padding:0;width:24px;height:24px;border-radius:100%;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .learndash_mark_complete_button.ld-compact .ld-icon,.learndash-wrapper #learndash_mark_complete_button.ld-compact .ld-icon{margin-right:0;font-size:.75em} .learndash-wrapper .learndash_mark_complete_button.ld-compact .ld-text,.learndash-wrapper #learndash_mark_complete_button.ld-compact .ld-text{padding:0} .learndash-wrapper .learndash_mark_complete_button.ld-button-alternate,.learndash-wrapper #learndash_mark_complete_button.ld-button-alternate{background:transparent;color:#00a2e8;padding:0} .learndash-wrapper .learndash_mark_complete_button.ld-button-alternate .ld-icon,.learndash-wrapper #learndash_mark_complete_button.ld-button-alternate .ld-icon{background:#00a2e8;color:white;border-radius:100%;width:18px;height:18px;-webkit-box-flex:0;-ms-flex:0 0 18px;flex:0 0 18px;padding:2px;line-height:16px;text-align:center;font-weight:bold;-webkit-transition:color .3s ease,background .3s ease;transition:color .3s ease,background .3s ease} .learndash-wrapper .learndash_mark_complete_button.ld-button-alternate .ld-text,.learndash-wrapper #learndash_mark_complete_button.ld-button-alternate .ld-text{padding-left:.5em} .learndash-wrapper .learndash_mark_complete_button.ld-button-alternate:hover,.learndash-wrapper #learndash_mark_complete_button.ld-button-alternate:hover{background:transparent} .learndash-wrapper .learndash_mark_complete_button.ld-button-transparent,.learndash-wrapper #learndash_mark_complete_button.ld-button-transparent{color:#00a2e8;background:transparent} .learndash-wrapper .learndash_mark_complete_button.ld-button-transparent.ld-status-complete,.learndash-wrapper #learndash_mark_complete_button.ld-button-transparent.ld-status-complete{color:#019e7c} .learndash-wrapper .learndash_mark_complete_button.ld-button-transparent:hover,.learndash-wrapper #learndash_mark_complete_button.ld-button-transparent:hover{background:transparent} .learndash-wrapper .learndash_mark_complete_button.ld-button-reverse,.learndash-wrapper #learndash_mark_complete_button.ld-button-reverse{background:white;color:#00a2e8} .learndash-wrapper .learndash_mark_complete_button.ld-button-reverse:hover,.learndash-wrapper #learndash_mark_complete_button.ld-button-reverse:hover{background:#00a2e8;color:white} .learndash-wrapper .learndash_mark_complete_button:hover,.learndash-wrapper #learndash_mark_complete_button:hover{opacity:.75;background-color:#00a2e8} .learndash-wrapper .learndash_mark_complete_button:focus,.learndash-wrapper #learndash_mark_complete_button:focus{outline:0;opacity:.75} .learndash-wrapper .learndash_mark_complete_button:disabled,.learndash-wrapper #learndash_mark_complete_button:disabled{cursor:pointer;-webkit-filter:grayscale(100%);filter:grayscale(100%)} .learndash-wrapper .ld-content-actions{clear:both;border-top:2px solid #e2e7ed;padding:1em 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between} .learndash-wrapper .ld-content-actions .ld-content-action{-webkit-box-flex:0;-ms-flex:0 0 185px;flex:0 0 185px;position:relative} .learndash-wrapper .ld-content-actions .ld-content-action .ld-course-step-back{font-size:.75em;margin:0 20%} .learndash-wrapper .ld-content-actions .ld-content-action+a{-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center} .learndash-wrapper .ld-content-actions>a{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;font-size:.75em} .learndash-wrapper .ld-content-actions .learndash_timer,.learndash-wrapper .ld-content-actions #learndash_timer{position:absolute;top:100%;text-align:center;display:block;padding:1em;left:0;right:0;color:#728188;font-weight:bold} .learndash-wrapper .ld-mobile-only{display:none !important}.learndash-wrapper .ld-loading{position:relative} .learndash-wrapper .ld-loading::after{position:absolute;content:'';display:block;z-index:99;top:0;left:0;right:0;bottom:0;background:rgba(255,255,255,0.5)} .learndash-wrapper .ld-loading::before{content:'';display:block;position:absolute;border-radius:50%;width:40px;z-index:100;height:40px;left:50%;top:50%;margin:-20px 0 0 -20px;border:3px solid rgba(0,0,0,0.5);border-top:3px solid #00a2e8;-webkit-animation:ldrotating 1.2s infinite linear;animation:ldrotating 1.2s infinite linear} .learndash-wrapper .ld-group-list{margin-bottom:2em}.learndash-wrapper .ld-item-list{margin:2em 0 1em 0} .learndash-wrapper .ld-item-list .ld-table-list.ld-no-pagination{border-bottom:0 !important} .learndash-wrapper .ld-item-list .ld-item-list-content{padding:1.5em}.learndash-wrapper .ld-item-list .ld-section-heading{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;align-items:center} .learndash-wrapper .ld-item-list .ld-section-heading h3{font-weight:bold}.learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%} .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-progress{-webkit-box-flex:1;-ms-flex:1;flex:1} .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-progress .ld-progress-stats{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end} .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-progress .ld-progress-label{text-transform:none;font-size:1.5em} .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-progress .ld-progress-bar{background-color:#e2e7ed} .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-expand-button{margin-left:1em} .learndash-wrapper .ld-item-list .ld-section-heading .ld-search-prompt{display:-webkit-box;display:-ms-flexbox;display:flex;color:#728188;cursor:pointer;font-weight:800;font-size:.875em;-webkit-transition:color .3s ease;transition:color .3s ease} .learndash-wrapper .ld-item-list .ld-section-heading .ld-search-prompt .ld-icon{width:20px;height:20px;margin-left:5px;font-size:1.4em} .learndash-wrapper .ld-item-list .ld-section-heading .ld-search-prompt:hover{color:#00a2e8} .learndash-wrapper .ld-item-list .ld-item-search{height:auto;max-height:0;-webkit-transition:max-height .3s ease;transition:max-height .3s ease;overflow:hidden} .learndash-wrapper .ld-item-list .ld-item-search h4{margin:0;margin-bottom:.5em;font-weight:bold} .learndash-wrapper .ld-item-list .ld-item-search .ld-closer{position:absolute;top:10px;right:15px;cursor:pointer;font-weight:700;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.625em} .learndash-wrapper .ld-item-list .ld-item-search .ld-closer:before{content:'x';margin-right:.25em} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-wrapper{padding:12px;position:relative;background:#e2e7ed;border-radius:6px;margin:1em 0;overflow:visible} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-wrapper:before{content:'';position:absolute;width:16px;height:16px;top:-8px;left:66px;background:white;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);z-index:9} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-wrapper:before{background:#e2e7ed;z-index:9;left:auto;right:130px} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields>*{-webkit-box-flex:1;-ms-flex:1;flex:1;padding-right:1em} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields label{display:block;margin-bottom:.5em;font-size:.875em;color:#728188} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields input,.learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields select{height:30px;border:2px solid #ccd2d9;background:white;border-radius:0;width:100%;padding:0 .5em} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-name{position:relative} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-name .ld-reset-button{position:absolute;right:18px;bottom:2px;font-weight:700;font-size:12px;background:#fff;height:26px;padding:0 1em;line-height:26px;color:#728188;text-decoration:none;display:inline-block} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-name .ld-reset-button::before{content:'x';margin-right:.25em;display:inline-block} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-name input[type=text]{width:100%} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit{-webkit-box-flex:0;-ms-flex:0 0 100px;flex:0 0 100px;padding-right:0} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button{height:30px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:0;margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;text-align:center;text-decoration:none;cursor:pointer;width:100%;max-width:385px;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:auto;padding:.75em 1.5em;margin:0} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button .ld-icon{font-size:.875em} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button .ld-text{padding:0 1em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button+.ld-button{margin-left:1em} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-compact{padding:0;width:24px;height:24px;border-radius:100%;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-compact .ld-icon{margin-right:0;font-size:.75em} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-compact .ld-text{padding:0} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-alternate{background:transparent;color:#00a2e8;padding:0} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-alternate .ld-icon{background:#00a2e8;color:white;border-radius:100%;width:18px;height:18px;-webkit-box-flex:0;-ms-flex:0 0 18px;flex:0 0 18px;padding:2px;line-height:16px;text-align:center;font-weight:bold;-webkit-transition:color .3s ease,background .3s ease;transition:color .3s ease,background .3s ease} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-alternate .ld-text{padding-left:.5em} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-alternate:hover{background:transparent} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-transparent{color:#00a2e8;background:transparent} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-transparent.ld-status-complete{color:#019e7c} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-transparent:hover{background:transparent} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-reverse{background:white;color:#00a2e8} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-reverse:hover{background:#00a2e8;color:white} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button:hover{opacity:.75;background-color:#00a2e8} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button:focus{outline:0;opacity:.75} .learndash-wrapper .ld-item-list .ld-item-list-item{border:2px solid #e2e7ed;border-radius:6px;margin-bottom:12px;background:#fff} .learndash-wrapper .ld-item-list .ld-item-list-item.ld-is-next{border-color:#00a2e8} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview{padding:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-status-icon{margin-right:.5em;margin-top:.35em} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-name{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%;-webkit-box-align:top;-ms-flex-align:top;align-items:top;color:#495255} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-sep{color:#e2e7ed;padding:0 .5em} .learndash-wrapper .ld-item-list .ld-item-list-item a.ld-item-name:hover{color:#00a2e8} .learndash-wrapper .ld-item-list .ld-item-list-item a.ld-item-name:hover .ld-item-title .ld-item-components{color:#728188} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-title .ld-item-components{font-weight:700;display:block;font-size:.825em;margin-top:.5em;color:#728188} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-title .ld-status{display:inline-block;font-size:.825em} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-title .ld-item-component+.ld-status{margin-left:.5em} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-details{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-details .ld-expand-button{margin-left:1em} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-details .ld-certificate-link{margin-right:15px;font-size:26px;color:#019e7c} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded{position:relative;height:auto;max-height:0;overflow:hidden;-webkit-transition:max-height .5s ease;transition:max-height .5s ease} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded:before{content:'';position:absolute;width:16px;height:16px;top:-8px;left:66px;background:white;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);z-index:9} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded:before{left:64px} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-progress{background:#e2e7ed;padding:2em 4.125em} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-item-contents{padding:2em 4.125em} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-progress{margin-top:0} .learndash-wrapper .ld-table-list{border-radius:6px;overflow:hidden;margin:1.5em 0} .learndash-wrapper .ld-table-list .ld-table-list-header,.learndash-wrapper .ld-table-list .ld-table-list-item-preview{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:20px 0;overflow-wrap:break-word} .learndash-wrapper .ld-table-list .ld-table-list-header a,.learndash-wrapper .ld-table-list .ld-table-list-item-preview a{color:#333} .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-title,.learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-title{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-title a,.learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-title a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-columns,.learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:2;-ms-flex:2;flex:2;padding-left:1em} .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-columns .ld-table-list-column,.learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding-left:.25em;padding-right:.25em} .learndash-wrapper .ld-table-list a.ld-table-list-item-preview{color:#333}.learndash-wrapper .ld-table-list a.ld-table-list-item-preview:hover{color:#00a2e8} .learndash-wrapper .ld-table-list .ld-table-list-header{background-color:#00a2e8;color:white;font-weight:800;padding:20px 22px} .learndash-wrapper .ld-table-list .ld-table-list-items{padding:0 20px;border:2px solid #e2e7ed;border-top:0;border-bottom:0;font-size:.875em;overflow:hidden} .learndash-wrapper .ld-table-list .ld-table-list-item{border-bottom:1px solid #e2e7ed;padding-left:0;padding-right:0} .learndash-wrapper .ld-table-list .ld-table-list-item:last-child{border-bottom:0} .learndash-wrapper .ld-table-list .ld-table-list-item .ld-table-list-title a{color:#333} .learndash-wrapper .ld-table-list .ld-table-list-item .ld-table-list-title a:hover{color:#00a2e8} .learndash-wrapper .ld-table-list .ld-table-list-item .ld-comments-column{color:#728188;font-weight:700;font-size:1.2em} .learndash-wrapper .ld-table-list .ld-table-list-item .ld-comments-column a{color:#728188} .learndash-wrapper .ld-table-list .ld-table-list-item .ld-comments-column .ld-icon-comments{font-size:1.5em;-webkit-transform:translateY(0.2em);-ms-transform:translateY(0.2em);transform:translateY(0.2em)} .learndash-wrapper .ld-table-list .ld-table-list-item-expanded{padding:.75em 2em} .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list{position:relative} .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list:before{content:'';position:absolute;width:16px;height:16px;top:-8px;left:66px;background:white;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);z-index:9} .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list:before{left:32px} .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-header{background-color:#e2e7ed;color:#495255} .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-items{padding-top:0;background:#e2e7ed} .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-item:first-child{border-top:2px solid #495255} .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-item{border-bottom:1px solid rgba(73,82,85,0.2)} .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-item:last-child{border-bottom:0} .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-item-preview{padding:10px;padding-left:0;padding-right:0} .learndash-wrapper .ld-table-list .ld-table-list-footer{background:#e2e7ed;padding:20px} .learndash-wrapper .ld-table-list .ld-table-list-footer .ld-pagination{margin-bottom:0} .learndash-wrapper .ld-table-list.ld-no-pagination{border-bottom:2px solid #e2e7ed} .learndash-wrapper .ld-table-list.ld-no-pagination .ld-table-list-footer{background:transparent;padding:0} .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-columns .ld-table-list-column{font-size:.75em;-webkit-box-flex:0;-ms-flex:0 1 150px;flex:0 1 150px} .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-columns .ld-table-list-column.ld-assignment-column-approved{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:right} .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column{font-size:.875em;-webkit-box-flex:0;-ms-flex:0 1 150px;flex:0 1 150px;line-height:1.4em} .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column .ld-column-label{display:none} .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column.ld-statuscolumn{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:right} .learndash-wrapper .ld-table-list.ld-assignment-list .ld-table-list-item-preview .ld-table-list-title{overflow:hidden} .learndash-wrapper .ld-progress{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:1em 0} .learndash-wrapper .ld-progress .ld-progress-heading{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:.75em;line-height:1em} .learndash-wrapper .ld-progress .ld-progress-heading .ld-progress-label{text-transform:uppercase;font-weight:800} .learndash-wrapper .ld-progress .ld-progress-heading .ld-progress-stats{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start} .learndash-wrapper .ld-progress .ld-progress-heading .ld-progress-stats .ld-progress-percentage{text-transform:uppercase;font-weight:800;color:#019e7c;margin-right:1.5em} .learndash-wrapper .ld-progress .ld-progress-bar{height:7px;background-color:white;border-radius:7px;margin:5px 0;overflow:hidden} .learndash-wrapper .ld-progress .ld-progress-bar .ld-progress-bar-percentage{height:7px;background:#019e7c} .learndash-wrapper .ld-progress.ld-progress-inline{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-progress.ld-progress-inline .ld-progress-bar{-webkit-box-flex:1;-ms-flex:1 auto;flex:1 auto;margin-right:1em} .learndash-wrapper .ld-progress.ld-progress-inline .ld-status{margin-left:1em}.learndash-wrapper .ld-breadcrumbs+.ld-topic-status{padding:0} .learndash-wrapper.learndash-widget .ld-progress{-ms-flex-wrap:wrap;flex-wrap:wrap} .learndash-wrapper.learndash-widget .ld-progress .ld-progress-heading{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:.25em 0} .learndash-wrapper.learndash-widget .ld-progress .ld-progress-bar{background-color:#e2e7ed;width:100%;margin-right:0} .learndash-pager{color:#728188;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;color:#728188;text-transform:uppercase;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:12px;font-weight:700;background-color:#e2e7ed;padding:6px 12px;border-radius:17px;margin:10px 0} .learndash-pager a{font-size:18px;color:#728188;text-decoration:none !important;border:none !important;cursor:pointer;-webkit-box-shadow:none !important;box-shadow:none !important;line-height:1em} .learndash-pager a::before,.learndash-pager a::after{display:none}.learndash-pager a.disabled{opacity:.5;cursor:default} .learndash-pager .pager-left{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1} .learndash-pager .pager-legend{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;padding:0 8px} .learndash-pager .pager-right{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3} .learndash-wrapper .ld-pagination{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;color:#728188;text-transform:uppercase;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:.75em;font-weight:700;margin-bottom:1em} .learndash-wrapper .ld-pagination .ld-pages{background-color:#e2e7ed;-webkit-box-flex:0;-ms-flex:0 0 180px;flex:0 0 180px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5em;border-radius:17px;overflow:hidden;line-height:1} .learndash-wrapper .ld-pagination .ld-pages i{display:block;background-size:contain;background-position:center;background-repeat:no-repeat;color:#728188;cursor:pointer;-webkit-transition:color .3s ease;transition:color .3s ease} .learndash-wrapper .ld-pagination .ld-pages i:hover{color:#00a2e8}.learndash-wrapper .ld-pagination .ld-pages a{color:#728188;-webkit-transition:all ease-in-out 250ms;transition:all ease-in-out 250ms} .learndash-wrapper .ld-pagination .ld-pages a:hover{color:#333}.learndash-wrapper .ld-pagination .ld-pages a.disabled{pointer-events:none;opacity:.25} .learndash-wrapper .ld-item-list-item-expanded .ld-pagination .ld-pages{-webkit-box-flex:0;-ms-flex:0 0 100px;flex:0 0 100px;padding:0 10px} .learndash-wrapper .ld-table-list-footer .ld-pagination .ld-pages{-webkit-box-flex:0;-ms-flex:0 0 120px;flex:0 0 120px} .learndash-wrapper .ld-section-heading h3{font-size:24px;margin:.5em 0}.learndash-wrapper .ld-score{font-weight:700} .learndash-wrapper .ld-score.score-low{color:#ff3c00}.learndash-wrapper .ld-score.score-high{color:#019e7c} .learndash-wrapper .ld-expand-button{margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;text-align:center;text-decoration:none;cursor:pointer;width:100%;max-width:385px;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:auto;padding:.75em 1.5em;display:flex;align-items:center} .learndash-wrapper .ld-expand-button .ld-icon{font-size:.875em}.learndash-wrapper .ld-expand-button .ld-text{padding:0 1em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center} .learndash-wrapper .ld-expand-button+.ld-button{margin-left:1em}.learndash-wrapper .ld-expand-button.ld-compact{padding:0;width:24px;height:24px;border-radius:100%;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .ld-expand-button.ld-compact .ld-icon{margin-right:0;font-size:.75em} .learndash-wrapper .ld-expand-button.ld-compact .ld-text{padding:0}.learndash-wrapper .ld-expand-button.ld-button-alternate{background:transparent;color:#00a2e8;padding:0} .learndash-wrapper .ld-expand-button.ld-button-alternate .ld-icon{background:#00a2e8;color:white;border-radius:100%;width:18px;height:18px;-webkit-box-flex:0;-ms-flex:0 0 18px;flex:0 0 18px;padding:2px;line-height:16px;text-align:center;font-weight:bold;-webkit-transition:color .3s ease,background .3s ease;transition:color .3s ease,background .3s ease} .learndash-wrapper .ld-expand-button.ld-button-alternate .ld-text{padding-left:.5em} .learndash-wrapper .ld-expand-button.ld-button-alternate:hover{background:transparent} .learndash-wrapper .ld-expand-button.ld-button-transparent{color:#00a2e8;background:transparent} .learndash-wrapper .ld-expand-button.ld-button-transparent.ld-status-complete{color:#019e7c} .learndash-wrapper .ld-expand-button.ld-button-transparent:hover{background:transparent} .learndash-wrapper .ld-expand-button.ld-button-reverse{background:white;color:#00a2e8} .learndash-wrapper .ld-expand-button.ld-button-reverse:hover{background:#00a2e8;color:white} .learndash-wrapper .ld-expand-button:hover{opacity:.75;background-color:#00a2e8}.learndash-wrapper .ld-expand-button:focus{outline:0;opacity:.75} .learndash-wrapper .ld-expand-button.ld-expanded .ld-icon{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)} .learndash-wrapper .ld-expand-button.ld-button-alternate .ld-text{text-align:left} .learndash-wrapper .ld-status{border-radius:12px;background-color:#e2e7ed;text-align:center;padding:5px 12px;text-transform:uppercase;font-weight:700;letter-spacing:.5px;font-size:11px;line-height:1.1;color:#728188;display:block} .learndash-wrapper .ld-status-icon{-ms-flex-preferred-size:26px;flex-basis:26px;-ms-flex-negative:0;flex-shrink:0;height:26px;width:26px;border-radius:100%;display:inline-block;position:relative;text-align:center} .learndash-wrapper .ld-status-icon .ld-icon{font-size:1.5em}.learndash-wrapper .ld-status-icon .ld-icon:before{position:absolute;top:50%;left:50%;-webkit-transform:translateY(-50%) translateX(-50%);-ms-transform:translateY(-50%) translateX(-50%);transform:translateY(-50%) translateX(-50%)} .learndash-wrapper .ld-status-icon.ld-status-complete .ld-icon{font-size:1em}.learndash-wrapper .ld-status-icon.ld-quiz-complete{color:#019e7c} .learndash-wrapper .ld-status-complete{background-color:#019e7c;color:white}.learndash-wrapper a.ld-status-complete:link,.learndash-wrapper a.ld-status-complete:visited,.learndash-wrapper a.ld-status-complete:focus{color:white} .learndash-wrapper .ld-status-waiting{background-color:#ffd200;color:rgba(0,0,0,0.65)} .learndash-wrapper .ld-status-unlocked{background-color:#ebf8fd;color:#00a2e8}.learndash-wrapper .ld-status-incomplete.ld-status-icon{border:4px solid #e2e7ed;background-color:white} .learndash-wrapper .ld-status-in-progress{border:4px solid #e2e7ed;border-left-color:#019e7c;border-top-color:#019e7c;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);background-color:white} .learndash-wrapper .ld-certificate-icon{width:40px;height:30px;background:#019e7c;display:block;margin:auto} .learndash-wrapper .ld-item-icon{margin-right:.25em;-ms-flex-negative:0;flex-shrink:0;font-size:1.4em} .learndash-wrapper .ld-item-icon.quiz-failure{color:#ff3c00}.learndash-wrapper .ld-item-icon.ld-quiz-complete{color:#019e7c} .learndash-wrapper .ld-item-icon.ld-quiz-incomplete{color:#333}.learndash-wrapper .ld-icon-delete{font-size:1.8em;color:#7b8990;margin-right:.25em} .learndash-wrapper .ld-icon-delete:hover{color:#333}.learndash-wrapper .ld-home-link{color:#495255;font-size:.75em;margin:0 0 .75em 0;text-decoration:underline} .learndash-wrapper .ld-home-link:hover{text-decoration:none}.learndash-wrapper .ld-text-content{color:#666;line-height:1.6;margin:1.5em 0} .learndash-wrapper .ld-select-field{position:relative}.learndash-wrapper .ld-select-field:after{font-family:'ld-icons' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;content:"\e90e";position:absolute;top:50%;right:.5em;z-index:9;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);pointer-events:none} .learndash-wrapper .ld-select-field select{-webkit-appearance:none;-moz-appearance:none;appearance:none} .learndash-wrapper .ld-file-upload{padding:1.5em;background-color:#f0f3f6;border-radius:6px;margin:1em 0} .learndash-wrapper .ld-file-upload .ld-file-upload-heading{color:#728188;font-size:1.2em;font-weight:700} .learndash-wrapper .ld-file-upload .ld-file-upload-heading span{font-weight:300;font-size:.8em} .learndash-wrapper .ld-file-upload .ld-file-upload-form{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:1em;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input+label{font-weight:700;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;background-color:white;border-top-left-radius:12px;border-bottom-left-radius:12px;overflow:hidden;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input+label strong{background-color:#728188;font-weight:700;color:white;padding:.5em 2em;font-size:.875em} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input+label span{color:#333;font-size:.875em;font-style:italic;border-top-right-radius:12px;border-bottom-right-radius:12px;padding:.5em 2em;white-space:nowrap;text-overflow:ellipsis;overflow:hidden} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-button{-webkit-box-flex:0;-ms-flex:0 0 150px;flex:0 0 150px;height:35px;text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:.875em;opacity:.5} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-selected+.ld-button{opacity:1} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input+label{cursor:pointer;border-top-right-radius:12px;border-bottom-right-radius:12px;margin-right:.5em} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input:focus+label,.learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input.has-focus+label{outline:1px dotted #000;outline:-webkit-focus-ring-color auto 5px} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-upload-message{font-size:.8em;margin-top:1em;line-height:1.5em} .learndash-wrapper .ld-hide{display:none}.learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading,.learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading{margin-bottom:1.5em} .learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading h2,.learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading h2{margin:0;padding:0;font-size:24px} .learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading .ld-item-list-actions,.learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading .ld-item-list-actions{width:auto;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end} .learndash-wrapper .ld-item-list.ld-course-list .ld-lesson-section-heading,.learndash-wrapper .ld-item-list.ld-lesson-list .ld-lesson-section-heading{font-size:18px;display:block;margin:1em 0 .5em 0;font-weight:bold} .learndash-wrapper .ld-lesson-list.ld-item-list .ld-item-list-item .ld-table-list{border-radius:0;margin-top:0;margin:0} .learndash-wrapper .ld-lesson-list.ld-item-list .ld-item-list-item .ld-table-list .ld-table-list-items{border:0} .learndash-wrapper .ld-item-list.ld-lesson-list .ld-topic-list .ld-table-list-header{padding:20px 60px} .learndash-wrapper .ld-item-list.ld-lesson-list .ld-topic-list .ld-table-list-item{margin:0 2.8em} .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-lesson-details{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:.75em;line-height:1em} .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-lesson-details .ld-lesson-list-progress{text-transform:uppercase;padding-right:10px;margin-right:10px;border-right:1px solid rgba(255,255,255,0.5)} .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-lesson-details .ld-lesson-list-steps{font-weight:normal} .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-preview{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start} .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-preview .ld-status-icon{margin-right:.5em} .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-expanded{padding-top:0} .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-expanded .ld-status{display:inline-block} .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-item.unavailable .ld-table-list-item-preview{opacity:.5} .learndash-wrapper .ld-topic-status{border-radius:6px;background:#f0f3f6;overflow:hidden} .learndash-wrapper .ld-topic-status .ld-progress{padding:0 1em}.learndash-wrapper .quiz_continue_link{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around;margin:10px} .learndash-wrapper .ld-quiz-actions{border-top:2px solid #f0f3f6;margin-top:30px;padding-top:30px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:20px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse} .learndash-wrapper .ld-quiz-actions .quiz_continue_link{margin:0 10px}.learndash-wrapper .ld-quiz-actions .wpProQuiz_button{margin:0 10px;background:#495255} .learndash-wrapper .ld-quiz-actions input[type='button']{margin:0 10px} .learndash-wrapper .ld-quiz-actions input[name="reShowQuestion"],.learndash-wrapper .ld-quiz-actions input[name="restartQuiz"]{background:#495255} .learndash-wrapper #quiz_continue_link{background:#019e7c}.learndash-wrapper #quiz_continue_link:hover{background:#019e7c} .learndash-wrapper .course_progress{height:7px;max-width:100%;background-color:#f0f3f6;border-radius:7px;margin:1em 0;overflow:hidden} .learndash-wrapper .course_progress .sending_progress_bar{height:7px;background:#019e7c} .learndash-wrapper .wpProQuiz_content .wpProQuiz_lock,.learndash-wrapper .wpProQuiz_content .wpProQuiz_loadQuiz,.learndash-wrapper .wpProQuiz_content .wpProQuiz_prerequisite,.learndash-wrapper .wpProQuiz_content .wpProQuiz_startOnlyRegisteredUser{padding:25px 15px 25px 75px;background-color:#f0f3f6;border-radius:6px;margin:1em 0;border:2px solid #e2e7ed;color:#728188;position:relative;min-height:85px} .learndash-wrapper .wpProQuiz_content .wpProQuiz_lock p,.learndash-wrapper .wpProQuiz_content .wpProQuiz_loadQuiz p,.learndash-wrapper .wpProQuiz_content .wpProQuiz_prerequisite p,.learndash-wrapper .wpProQuiz_content .wpProQuiz_startOnlyRegisteredUser p{margin:0;padding:0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable{border:5px solid #f0f3f6;border-radius:4px;padding:0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable table,.learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable table tbody{border:0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable table tbody td{padding:15px;border:0 !important} .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable .wpProQuiz_resultValue div{-webkit-box-shadow:none;box-shadow:none} .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable .wpProQuiz_resultName{line-height:1.2em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_certificate{text-align:center}.learndash-wrapper .wpProQuiz_content .wpProQuiz_certificate a.btn-blue{margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;display:inline-block;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;display:inline-block;padding:.5em 1em;text-align:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-decoration:none;cursor:pointer;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2{margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;text-align:center;text-decoration:none;cursor:pointer;width:100%;max-width:385px;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:auto;padding:.75em 1.5em;width:auto} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button .ld-icon,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2 .ld-icon{font-size:.875em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button .ld-text,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2 .ld-text{padding:0 1em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button+.ld-button,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2+.ld-button{margin-left:1em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-compact,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-compact{padding:0;width:24px;height:24px;border-radius:100%;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-compact .ld-icon,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-compact .ld-icon{margin-right:0;font-size:.75em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-compact .ld-text,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-compact .ld-text{padding:0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-alternate,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-alternate{background:transparent;color:#00a2e8;padding:0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-alternate .ld-icon,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-alternate .ld-icon{background:#00a2e8;color:white;border-radius:100%;width:18px;height:18px;-webkit-box-flex:0;-ms-flex:0 0 18px;flex:0 0 18px;padding:2px;line-height:16px;text-align:center;font-weight:bold;-webkit-transition:color .3s ease,background .3s ease;transition:color .3s ease,background .3s ease} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-alternate .ld-text,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-alternate .ld-text{padding-left:.5em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-alternate:hover,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-alternate:hover{background:transparent} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-transparent,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-transparent{color:#00a2e8;background:transparent} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-transparent.ld-status-complete,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-transparent.ld-status-complete{color:#019e7c} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-transparent:hover,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-transparent:hover{background:transparent} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-reverse,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-reverse{background:white;color:#00a2e8} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-reverse:hover,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-reverse:hover{background:#00a2e8;color:white} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button:hover,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2:hover{opacity:.75;background-color:#00a2e8} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button:focus,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2:focus{outline:0;opacity:.75} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link{margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;text-align:center;text-decoration:none;cursor:pointer;width:100%;max-width:385px;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:auto;padding:.75em 1.5em;text-align:center;-ms-flex-pack:distribute;justify-content:space-around;background:#019e7c} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link .ld-icon{font-size:.875em} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link .ld-text{padding:0 1em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link+.ld-button{margin-left:1em} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-compact{padding:0;width:24px;height:24px;border-radius:100%;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-compact .ld-icon{margin-right:0;font-size:.75em} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-compact .ld-text{padding:0} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-alternate{background:transparent;color:#00a2e8;padding:0} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-alternate .ld-icon{background:#00a2e8;color:white;border-radius:100%;width:18px;height:18px;-webkit-box-flex:0;-ms-flex:0 0 18px;flex:0 0 18px;padding:2px;line-height:16px;text-align:center;font-weight:bold;-webkit-transition:color .3s ease,background .3s ease;transition:color .3s ease,background .3s ease} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-alternate .ld-text{padding-left:.5em} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-alternate:hover{background:transparent} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-transparent{color:#00a2e8;background:transparent} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-transparent.ld-status-complete{color:#019e7c} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-transparent:hover{background:transparent} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-reverse{background:white;color:#00a2e8} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-reverse:hover{background:#00a2e8;color:white} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link:hover{opacity:.75;background-color:#00a2e8} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link:focus{outline:0;opacity:.75} .learndash-wrapper .wpProQuiz_content .wpProQuiz_question{padding-bottom:1em}.learndash-wrapper .wpProQuiz_content ul.wpProQuiz_questionList{margin:1em 0;background:transparent;border:0;padding:0;list-style:none;padding-left:0 !important;margin-left:0 !important} .learndash-wrapper .wpProQuiz_content ul.wpProQuiz_questionList[data-type="essay"] li.wpProQuiz_questionListItem{-ms-flex-wrap:wrap;flex-wrap:wrap} .learndash-wrapper .wpProQuiz_content ul.wpProQuiz_questionList input.wpProQuiz_questionInput{max-width:100%;width:2%} .learndash-wrapper .wpProQuiz_content ul.wpProQuiz_questionList span{margin-right:0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewQuestion{padding:5px}.learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewQuestion ol{margin:0 !important;padding:0 !important;line-height:1.5em !important} .learndash-wrapper .wpProQuiz_content .graded-disclaimer{margin-top:1em;font-size:.85em;font-style:italic} .learndash-wrapper .wpProQuiz_content .wpProQuiz_matrixSortString{margin:1em 0;background:transparent;border:0;padding:0} .learndash-wrapper .wpProQuiz_content ul.wpProQuiz_sortStringList{padding:0;margin:1em 0 !important;padding:0 !important} .learndash-wrapper .wpProQuiz_content .wpProQuiz_sortStringItem{display:inline-block;border:0;background:#f0f3f6;border-radius:6px;margin:0 .5em .5em 0;padding:.5em 1em;-webkit-box-shadow:none;box-shadow:none} .learndash-wrapper .wpProQuiz_content .wpProQuiz_mextrixTr .wpProQuiz_sortStringItem{margin:.5em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_tipp>div{background-color:#f0f3f6;padding:1em;border-radius:6px;margin:1em 0;width:auto;-webkit-box-shadow:0 0;box-shadow:0 0;border:0;margin-left:1em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_tipp>div:before{content:'';position:absolute;width:16px;height:16px;top:-8px;left:66px;background:white;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);z-index:9} .learndash-wrapper .wpProQuiz_content .wpProQuiz_tipp>div:before{left:1em;bottom:-4px;top:auto;background-color:#f0f3f6} .learndash-wrapper .wpProQuiz_content .wpProQuiz_tipp>div h5{padding-bottom:0;font-weight:bold;text-transform:uppercase;font-size:.8em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="cloze_answer"] p{padding-bottom:0;padding-right:.25em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem{margin-bottom:.5em;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem p{text-align:left} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem .wpProQuiz_sortable{border:2px solid #e2e7ed;border-radius:6px;background:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;padding:1em;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-shadow:none;box-shadow:none;width:100%} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem .wpProQuiz_sortable:before{font-family:'ld-icons' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;content:"\e904";margin-right:1em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem span.wpProQuiz_cloze{margin:0 5px} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:2px solid #e2e7ed;border-radius:6px;padding:1em;width:100%} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label input{margin-right:1em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label input.wpProQuiz_questionInput[type='text']{border:0;-webkit-box-shadow:none;box-shadow:none;width:100%} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label.is-selected,.learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label:focus-within{border-color:#00a2e8} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem textarea.wpProQuiz_questionEssay{border:2px solid #e2e7ed;border-radius:6px;width:100%;padding:1em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect{background:transparent} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect label{background:#019e7c;color:white} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect .wpProQuiz_sortable{background:#019e7c;color:white} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerIncorrect{background:transparent} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerIncorrect label{border-color:red} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerIncorrect .wpProQuiz_sortable{border-color:red} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrectIncomplete{background:transparent;border:1px solid transparent !important} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrectIncomplete label{border-color:#019e7c} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrectIncomplete .wpProQuiz_sortable{border-color:#019e7c} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem .wpProQuiz_cloze{display:inline-block;background:#e2e7ed;border-radius:6px;padding:2px .5em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem .wpProQuiz_cloze input{border:0;background-color:transparent} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem>table{border-collapse:separate;border:0;border:2px solid #e2e7ed;border-radius:6px} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem>table td{border:0;padding:0 !important;vertical-align:top} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem>table td:first-child{border-right:2px solid #e2e7ed} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem>table td .wpProQuiz_maxtrixSortText{display:block;padding:1em;border-top-right-radius:0;border-bottom-right-radius:0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem>table td .wpProQuiz_maxtrixSortCriterion{padding:.5em;border-left:0;height:100%;border-top-left-radius:0;border-bottom-left-radius:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect>table{border-color:#019e7c} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect>table td{background-color:#019e7c;border-color:#019e7c} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect>table td .wpProQuiz_maxtrixSortText{background-color:none;color:none} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect>table td .wpProQuiz_maxtrixSortCriterion .wpProQuiz_sortStringItem{background-color:none;color:none} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerIncorrect>table{border-color:red} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerIncorrect>table td{border-color:red} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="assessment_answer"] .wpProQuiz_questionListItem{border:2px solid #e2e7ed;border-radius:6px;padding:1em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="assessment_answer"] .wpProQuiz_questionListItem p{margin:0;padding:0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="assessment_answer"] label{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;color:#728188;padding:0;border:0;margin:0 .25em;width:auto;font-weight:bold} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="assessment_answer"] label input{margin-right:.5em;height:.8em;width:.8em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="cloze_answer"] .wpProQuiz_questionListItem .wpProQuiz_cloze .wpProQuiz_answerCorrect{background-color:#019e7c} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="cloze_answer"] .wpProQuiz_questionListItem .wpProQuiz_cloze .wpProQuiz_answerIncorrect{background-color:red} .learndash-wrapper .wpProQuiz_content .wpProQuiz_header{font-weight:bold;margin:.5em 0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_response{padding:25px 15px 25px 75px;background-color:#f0f3f6;border-radius:6px;margin:1em 0;border:2px solid #e2e7ed;color:#728188;position:relative;min-height:85px;padding:25px;background-color:#f0f3f6;text-align:center;-webkit-box-shadow:none;box-shadow:none;min-height:none} .learndash-wrapper .wpProQuiz_content .wpProQuiz_response p{margin:0;padding:0}.learndash-wrapper .wpProQuiz_content .wpProQuiz_response img{max-width:100%;height:auto} .learndash-wrapper .wpProQuiz_content .wpProQuiz_listItem .wpProQuiz_question ul.wpProQuiz_questionList{margin:0;padding:0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_listItem[data-type="cloze_answer"] .wpProQuiz_questionListItem{display:block} .learndash-wrapper .wpProQuiz_content .wpProQuiz_time_limit{margin:1em 0;background-color:#e2e7ed;border-radius:6px;position:relative;padding:1em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_time_limit:before{content:'';position:absolute;bottom:1em;left:1em;right:1em;height:7px;z-index:8;background:white} .learndash-wrapper .wpProQuiz_content .wpProQuiz_time_limit .time{color:#728188}.learndash-wrapper .wpProQuiz_content .wpProQuiz_time_limit .wpProQuiz_progress{z-index:9;position:relative;background-color:#019e7c;height:7px;margin-bottom:0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table{width:100%}.learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td:first-child{width:150px;font-size:.9em;font-weight:700} .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td input[type=text],.learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td select,.learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td textarea{width:100%} .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='5'] label,.learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='8'] label{display:inline-block;margin-left:.5em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='6']{display:-webkit-box;display:-ms-flexbox;display:flex} .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='6'] select{margin-right:1%} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay]{padding:1.5em;background-color:#f0f3f6;border-radius:6px;margin:1em 0;margin:1em 0;-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=file]{background:white;padding:1em;border-radius:6px;-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:1em} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit]{margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;text-align:center;text-decoration:none;cursor:pointer;width:100%;max-width:385px;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:auto;padding:.75em 1.5em;max-width:100px} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit] .ld-icon{font-size:.875em} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit] .ld-text{padding:0 1em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit]+.ld-button{margin-left:1em} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-compact{padding:0;width:24px;height:24px;border-radius:100%;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-compact .ld-icon{margin-right:0;font-size:.75em} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-compact .ld-text{padding:0} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-alternate{background:transparent;color:#00a2e8;padding:0} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-alternate .ld-icon{background:#00a2e8;color:white;border-radius:100%;width:18px;height:18px;-webkit-box-flex:0;-ms-flex:0 0 18px;flex:0 0 18px;padding:2px;line-height:16px;text-align:center;font-weight:bold;-webkit-transition:color .3s ease,background .3s ease;transition:color .3s ease,background .3s ease} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-alternate .ld-text{padding-left:.5em} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-alternate:hover{background:transparent} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-transparent{color:#00a2e8;background:transparent} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-transparent.ld-status-complete{color:#019e7c} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-transparent:hover{background:transparent} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-reverse{background:white;color:#00a2e8} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-reverse:hover{background:#00a2e8;color:white} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit]:hover{opacity:.75;background-color:#00a2e8} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit]:focus{outline:0;opacity:.75} .learndash-wrapper .wpProQuiz_quiz_time{color:#728188;font-weight:bold;font-size:.8em} .learndash-wrapper .wpProQuiz_graded_points,.learndash-wrapper .wpProQuiz_points{padding:1em;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#f0f3f6;border-radius:6px;margin:1em 0;border:2px solid #e2e7ed;color:#728188} .learndash-wrapper .wpProQuiz_content .wpProQuiz_box{background:#f0f3f6;border:0;border-radius:3px;overflow:auto} .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li{-webkit-box-shadow:0 0;box-shadow:0 0;border:0;border-radius:2px} .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionTarget{-webkit-box-shadow:0 0;box-shadow:0 0;background-color:#00a2e8;color:#fff} .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionSolved{color:#fff} .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionReview{color:#fff} .learndash-wrapper .wpProQuiz_reviewDiv{margin-bottom:2em;padding-bottom:2em;border-bottom:2px solid #f0f3f6} .learndash-wrapper .wpProQuiz_reviewDiv .wpProQuiz_reviewQuestion{background:#f0f3f6;border:0;border-radius:3px} .learndash-wrapper .wpProQuiz_reviewDiv .wpProQuiz_reviewQuestion li{-webkit-box-shadow:0 0;box-shadow:0 0;border:0;border-radius:2px} .learndash-wrapper .wpProQuiz_reviewDiv .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionTarget{-webkit-box-shadow:0 0;box-shadow:0 0;background-color:#00a2e8;color:#fff} .learndash-wrapper .wpProQuiz_reviewDiv .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionSolved{color:#fff} .learndash-wrapper .wpProQuiz_reviewDiv .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionReview{color:#fff} .learndash-wrapper .ld-course-navigation .ld-course-navigation-heading{border-bottom:4px solid #e2e7ed;padding-bottom:12px} .learndash-wrapper .ld-course-navigation .ld-course-navigation-heading h3{margin-top:0} .learndash-wrapper .ld-course-navigation .ld-course-navigation-actions .ld-home-link{display:block} .learndash-wrapper .ld-course-navigation .ld-course-navigation-actions .ld-expand-button{margin-left:0;font-size:12px} .learndash-wrapper .ld-course-navigation .ld-course-navigation-actions .ld-expand-button .ld-icon{font-size:10px} .learndash-wrapper .ld-course-navigation .ld-status-icon{width:15px;height:15px;-webkit-box-flex:0;-ms-flex:0 0 15px;flex:0 0 15px;border:0;text-align:center;margin-right:10px;margin-top:.15em} .learndash-wrapper .ld-course-navigation .ld-status-icon .ld-icon-checkmark{font-size:.825em;margin-top:1px} .learndash-wrapper .ld-course-navigation .ld-status-icon.ld-status-in-progress{border:2px solid #e2e7ed;border-left-color:#019e7c;border-top-color:#019e7c} .learndash-wrapper .ld-course-navigation .ld-status-icon.ld-status-incomplete{border:2px solid #e2e7ed} .learndash-wrapper .ld-course-navigation .ld-status-icon .ld-icon-quiz{font-size:1.1em;margin-top:-2px} .learndash-wrapper .ld-course-navigation .ld-item-icon{width:14px;height:20px;font-size:1em} .learndash-wrapper .ld-course-navigation .ld-pagination{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:1em 0} .learndash-wrapper .ld-course-navigation .ld-pagination .ld-pages{-webkit-box-flex:0;-ms-flex:0 0 120px;flex:0 0 120px;background-color:#728188} .learndash-wrapper .ld-course-navigation .ld-pagination .ld-pages i,.learndash-wrapper .ld-course-navigation .ld-pagination .ld-pages span{color:white} .learndash-wrapper .ld-course-navigation .ld-lesson-item{border-bottom:1px solid #e2e7ed} .learndash-wrapper .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-lesson-item-preview-heading,.learndash-wrapper .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-lesson-title{color:#00a2e8;font-weight:bold} .learndash-wrapper .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-lesson-item-preview-heading .ld-status-incomplete,.learndash-wrapper .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-lesson-title .ld-status-incomplete{border:2px solid #00a2e8} .learndash-wrapper .ld-course-navigation .ld-sep{color:#e2e7ed;padding:0 .25em}.learndash-wrapper .ld-course-navigation .ld-lesson-item-section-heading{margin-top:1em} .learndash-wrapper .ld-course-navigation .ld-lesson-item-section-heading .ld-lesson-section-heading{font-size:1em;font-weight:bold;margin-bottom:.25em;text-align:left;display:block} .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview{padding:10px 0}.learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-lesson-item-preview-heading{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;line-height:1.25em} .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview a.ld-lesson-item-preview-heading{color:#495255} .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview a.ld-lesson-item-preview-heading:hover{color:#00a2e8} .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-lesson-title{font-size:.875em;font-weight:400;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex} .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-lesson-title .ld-status-icon{margin-left:.5em} .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-lesson-title .ld-status-icon .ld-icon{font-size:.825em;margin-top:1px} .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-expand-button{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;padding-left:2em;padding-top:.5em;color:#728188} .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-expand-button .ld-icon{font-size:.625em} .learndash-wrapper .ld-course-navigation .ld-lesson-item-expanded{height:auto;max-height:0;-webkit-transition:max-height .3s ease;transition:max-height .3s ease;overflow:hidden;background:#f0f3f6;border-radius:8px;margin:0 20px 0 20px;position:relative} .learndash-wrapper .ld-course-navigation .ld-lesson-item-expanded::before{content:'';display:block;left:50px;top:0;position:absolute;width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #fff} .learndash-wrapper .ld-course-navigation .ld-lesson-item-expanded.ld-expanded{max-height:20000px;margin-bottom:1em} .learndash-wrapper .ld-course-navigation .ld-lesson-item-expanded .ld-table-list-items{padding:1em .5em} .learndash-wrapper .ld-course-navigation .ld-table-list-header{display:none}.learndash-wrapper .ld-course-navigation .ld-table-list-footer{background:transparent;padding:.25em !important} .learndash-wrapper .ld-course-navigation .ld-table-list.ld-topic-list{margin:0}.learndash-wrapper .ld-course-navigation .ld-table-list.ld-topic-list .ld-table-list-items{border:0;padding-right:0} .learndash-wrapper .ld-course-navigation .ld-table-list.ld-topic-list .ld-table-list-item{font-size:.9em;border-bottom:0;line-height:1.5em} .learndash-wrapper .ld-course-navigation .ld-table-list.ld-topic-list .ld-table-list-item .ld-table-list-item-preview{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:.5em} .learndash-wrapper .ld-course-navigation .ld-table-list.ld-topic-list .ld-table-list-item .ld-table-list-item-preview.ld-is-current-item{font-weight:bold} .learndash-wrapper .widget_course_return{margin-top:1em;font-size:.8em}.learndash-wrapper .ld-profile-summary{margin:2em 0} .learndash-wrapper .ld-profile-summary .ld-profile-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;margin:1.5em 0} .learndash-wrapper .ld-profile-summary .ld-profile-card .ld-profile-avatar{width:150px;height:150px;border:5px solid #e2e7ed} .learndash-wrapper .ld-profile-summary .ld-profile-card .ld-profile-heading{font-size:2em;font-weight:800;margin:5px 0} .learndash-wrapper .ld-profile-summary .ld-profile-card .ld-profile-edit-link{color:#728188;font-size:14px} .learndash-wrapper .ld-profile-summary .ld-profile-stats{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .ld-profile-summary .ld-profile-stats .ld-profile-stat{-webkit-box-flex:0;-ms-flex:0 0 90px;flex:0 0 90px;text-align:center;border-right:1px solid #e2e7ed;padding:0 12px} .learndash-wrapper .ld-profile-summary .ld-profile-stats .ld-profile-stat strong{display:block;font-size:36px;margin-bottom:8px;font-weight:800} .learndash-wrapper .ld-profile-summary .ld-profile-stats .ld-profile-stat span{color:#728188;font-size:14px} .learndash-wrapper .ld-profile-summary .ld-profile-stats .ld-profile-stat:last-child{border-right:0} .learndash-wrapper #ld-profile .ld-section-heading{margin-bottom:0}.learndash-wrapper #ld-profile .ld-quiz-list .ld-table-list-item-preview+.ld-table-list-item-expanded{margin-top:-20px} .learndash-wrapper #ld-profile .ld-quiz-list .ld-table-list-item-preview+.ld-table-list-item-expanded .ld-essay-list{margin-top:0} .learndash-wrapper #ld-profile .ld-item-list-item-preview .ld-status{white-space:nowrap} #wpProQuiz_overlay_close{margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;text-align:center;text-decoration:none;cursor:pointer;width:100%;max-width:385px;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:auto;padding:.75em 1.5em;max-width:180px} #wpProQuiz_overlay_close .ld-icon{font-size:.875em}#wpProQuiz_overlay_close .ld-text{padding:0 1em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center} #wpProQuiz_overlay_close+.ld-button{margin-left:1em}#wpProQuiz_overlay_close.ld-compact{padding:0;width:24px;height:24px;border-radius:100%;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} #wpProQuiz_overlay_close.ld-compact .ld-icon{margin-right:0;font-size:.75em}#wpProQuiz_overlay_close.ld-compact .ld-text{padding:0} #wpProQuiz_overlay_close.ld-button-alternate{background:transparent;color:#00a2e8;padding:0} #wpProQuiz_overlay_close.ld-button-alternate .ld-icon{background:#00a2e8;color:white;border-radius:100%;width:18px;height:18px;-webkit-box-flex:0;-ms-flex:0 0 18px;flex:0 0 18px;padding:2px;line-height:16px;text-align:center;font-weight:bold;-webkit-transition:color .3s ease,background .3s ease;transition:color .3s ease,background .3s ease} #wpProQuiz_overlay_close.ld-button-alternate .ld-text{padding-left:.5em}#wpProQuiz_overlay_close.ld-button-alternate:hover{background:transparent} #wpProQuiz_overlay_close.ld-button-transparent{color:#00a2e8;background:transparent} #wpProQuiz_overlay_close.ld-button-transparent.ld-status-complete{color:#019e7c}#wpProQuiz_overlay_close.ld-button-transparent:hover{background:transparent} #wpProQuiz_overlay_close.ld-button-reverse{background:white;color:#00a2e8}#wpProQuiz_overlay_close.ld-button-reverse:hover{background:#00a2e8;color:white} #wpProQuiz_overlay_close:hover{opacity:.75;background-color:#00a2e8}#wpProQuiz_overlay_close:focus{outline:0;opacity:.75} #wpProQuiz_user_content h2{border-bottom:2px solid #f0f3f6;font-size:24px;padding:.5em 0} #wpProQuiz_user_content h2+h2{font-size:18px;border-bottom:0}#wpProQuiz_user_content table.wp-list-table{border-radius:8px;border-collapse:collapse;background:transparent;border:0} #wpProQuiz_user_content table.wp-list-table tr,#wpProQuiz_user_content table.wp-list-table td,#wpProQuiz_user_content table.wp-list-table th{background:transparent} #wpProQuiz_user_content table.wp-list-table thead th{background:#00a2e8;color:#fff;border-bottom:0;padding:25px 15px;font-size:14px;line-height:1;white-space:nowrap} #wpProQuiz_user_content table.wp-list-table thead th:first-child{border-radius:8px 0 0 0} #wpProQuiz_user_content table.wp-list-table thead th:last-child{border-radius:0 8px 0 0} #wpProQuiz_user_content table.wp-list-table tbody tr.categoryTr th{background:#f0f3f6;padding:15px;border-bottom:1px solid #f0f3f6;line-height:1;white-space:nowrap;text-align:center} #wpProQuiz_user_content table.wp-list-table tbody tr.categoryTr th:first-child,#wpProQuiz_user_content table.wp-list-table tbody tr.categoryTr th:only-child{text-align:left} #wpProQuiz_user_content table.wp-list-table tbody tr th{padding:15px;font-weight:normal;font-size:16px;text-align:center} #wpProQuiz_user_content table.wp-list-table tbody tr th p{margin:0 0 5px 0}#wpProQuiz_user_content table.wp-list-table tbody tr th:first-child{-webkit-box-shadow:inset 3px 0 0 0 #f0f3f6;box-shadow:inset 3px 0 0 0 #f0f3f6} #wpProQuiz_user_content table.wp-list-table tbody tr th:last-child{-webkit-box-shadow:inset -3px 0 0 0 #f0f3f6;box-shadow:inset -3px 0 0 0 #f0f3f6} #wpProQuiz_user_content table.wp-list-table tbody tr th:nth-child(2){text-align:left} #wpProQuiz_user_content table.wp-list-table tbody tr th:only-child{-webkit-box-shadow:inset -3px 0 0 0 #f0f3f6,inset 3px 0 0 0 #f0f3f6;box-shadow:inset -3px 0 0 0 #f0f3f6,inset 3px 0 0 0 #f0f3f6} #wpProQuiz_user_content table.wp-list-table tbody tr.categoryTr th:nth-child(2){text-align:center} #wpProQuiz_user_content table.wp-list-table tfoot tr{border-bottom:0}#wpProQuiz_user_content table.wp-list-table tfoot tr th{background:#f0f3f6;border:0;padding:15px;font-weight:normal;font-size:16px;text-align:center} #wpProQuiz_user_content table.wp-list-table tfoot tr th:first-child{border-radius:0 0 0 8px} #wpProQuiz_user_content table.wp-list-table tfoot tr th:last-child{border-radius:0 0 8px 0} .learndash-wrapper .ld-tabs{margin:1em 0}.learndash-wrapper .ld-tabs .ld-tabs-navigation{position:relative;margin:0;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-tabs .ld-tabs-navigation:after{content:'';height:6px;background:#e2e7ed;position:absolute;bottom:0;left:0;right:0;z-index:8} .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab{display:-webkit-box;display:-ms-flexbox;display:flex;padding:1.5em;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-weight:700;color:#728188;cursor:pointer;-webkit-transition:color .3s ease;transition:color .3s ease;white-space:nowrap} .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab .ld-icon{font-size:1.4em;margin-right:.25em} .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab:after{content:'';height:6px;background:transparent;position:absolute;bottom:0;left:0;right:0;z-index:9;z-index:9;-webkit-transition:background .3s ease;transition:background .3s ease} .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab.ld-active{color:#00a2e8}.learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab.ld-active:after{background:#00a2e8} .learndash-wrapper .ld-tabs .ld-tabs-content .ld-tab-content{display:none;padding:2em 0} .learndash-wrapper .ld-tabs .ld-tabs-content .ld-tab-content.ld-visible{display:block} .learndash-wrapper .ld-tabs.ld-tab-count-1 .ld-tab-content{padding:0}.learndash-wrapper .ld-breadcrumbs{background:#f0f3f6;border-radius:6px;padding:.5em 1em;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments{font-size:.75em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-right:1em} .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments span{display:inline}.learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments span a{font-weight:700} .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments span:after{content:'>'} .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments span:last-child:after{display:none} .learndash-wrapper .ld-breadcrumbs .ld-status{white-space:nowrap}.learndash-wrapper .ld-breadcrumbs .ld-status.ld-status-progress{background:#00a2e8;color:#fff} .learndash-wrapper .ld-breadcrumbs .ld-status.ld-status-complete{background:#019e7c;color:#fff} .rtl .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments span:after{content:'<'} .learndash-wrapper .ld-alert-content{width:100%}.learndash-wrapper .ld-alert{padding:25px 15px 25px 75px;background-color:#f0f3f6;border-radius:6px;margin:1em 0;border:2px solid #e2e7ed;color:#728188;position:relative;min-height:85px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-alert .ld-alert-icon{background-color:#e2e7ed;border-radius:100%;padding:.5em;margin-right:.5em;font-size:24px;position:absolute;left:15px;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)} .learndash-wrapper .ld-alert .ld-alert-icon.ld-icon-alert{padding:3px;font-size:42px} .learndash-wrapper .ld-alert .ld-alert-text{font-size:1em;font-weight:700}.learndash-wrapper .ld-alert .ld-button{margin-left:1em;min-width:7.5em;display:inline-block;height:auto;padding:5px 20px 5px 30px;position:relative;max-width:185px} .learndash-wrapper .ld-alert .ld-button .ld-icon{position:absolute;left:15px;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)} .learndash-wrapper .ld-alert .ld-alert-content a,.learndash-wrapper .ld-alert .ld-text a{text-decoration:underline;color:rgba(0,0,0,0.8)} .learndash-wrapper .ld-alert-warning{color:rgba(0,0,0,0.65);border-color:#ffd200;background-color:#fff6cd} .learndash-wrapper .ld-alert-warning .ld-alert-icon{background-color:#ffd200}.learndash-wrapper .ld-alert-warning .ld-button{background-color:#ffd200;color:rgba(0,0,0,0.65)} .learndash-wrapper .ld-alert-certificate .ld-button{padding-left:40px;min-width:unset;max-width:unset;width:auto;text-decoration:none !important} .learndash-wrapper .ld-alert-certificate.ld-alert-success{color:#495255}.learndash-wrapper .ld-alert-success{color:white;border-color:#019e7c;background-color:rgba(1,158,124,0.2)} .learndash-wrapper .ld-alert-success .ld-alert-icon{background-color:#019e7c;color:white} .learndash-wrapper .ld-alert-success .ld-button{background-color:#019e7c}.learndash-wrapper .ld-alert-success .ld-button .ld-icon-download{margin-right:5px;font-size:18px} .learndash-wrapper .ld-focus{display:-webkit-box;display:-ms-flexbox;display:flex} .learndash-wrapper .ld-focus .ld-tab-content ul:not(.blocks-gallery-grid):not(.wp-block-gallery),.learndash-wrapper .ld-focus .ld-tab-content ol:not(.blocks-gallery-grid):not(.wp-block-gallery){display:block;list-style:disc outside none;margin:1em 0;padding-left:40px} .learndash-wrapper .ld-focus .ld-tab-content ol:not(.blocks-gallery-grid):not(.wp-block-gallery){list-style-type:decimal} .learndash-wrapper .ld-focus .ld-tab-content li:not(.blocks-gallery-item){display:list-item} .learndash-wrapper .ld-focus .ld-tab-content ul:not(.blocks-gallery-grid) ul,.learndash-wrapper .ld-focus .ld-tab-content ol:not(.blocks-gallery-grid) ul{margin:0;list-style-type:circle} .learndash-wrapper .ld-focus .ld-tab-content ol:not(.blocks-gallery-grid) ol,.learndash-wrapper .ld-focus .ld-tab-content ul:not(.blocks-gallery-grid) ol{margin:0;list-style-type:lower-latin} .learndash-wrapper .ld-focus .ld-focus-sidebar{position:fixed;left:0;top:0;bottom:0;width:350px;background-color:white;border-right:1px solid #e2e7ed;padding-top:50px;padding-bottom:150px;-webkit-transition:all .3s ease;transition:all .3s ease;z-index:99} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-focus-sidebar-wrapper{overflow-x:visible;overflow-y:auto;height:100%} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-focus-sidebar-trigger{position:absolute;height:75px;width:50px;right:0;top:0;bottom:0;background:#00a2e8;z-index:99;cursor:pointer;color:white} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-focus-sidebar-trigger .ld-icon{position:absolute;border-radius:100%;background:inherit;right:0;top:50%;-webkit-transform:translateY(-50%) translateX(25%);-ms-transform:translateY(-50%) translateX(25%);transform:translateY(-50%) translateX(25%);font-size:.8em;padding:8px;z-index:9} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-focus-sidebar-trigger:hover .ld-icon:before{opacity:.5} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading{background-color:#00a2e8;color:white;border-bottom:0;min-height:75px;overflow:visible;width:350px;position:relative;z-index:9;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:.75em 3.125em .75em 1em} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading a{color:#fff} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading h3{font-size:1em;margin:0;line-height:1.35em;padding:0 0 0 1.6em;font-weight:bold;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;color:white;position:relative;z-index:100} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading h3 a{color:white} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading h3 .ld-icon{position:absolute;left:1px;top:3px} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading .ld-expand-button{color:white;display:none} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading .ld-home-link{color:white;padding:0;border-left:0;margin-left:0} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation{position:relative;overflow:visible} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-course-navigation-list{opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-expanded{margin:0;border-radius:0;background:transparent} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-expanded .ld-table-list-items{padding:.5em} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-section-heading{padding:0 1em} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-section-heading .ld-lesson-section-heading{margin-bottom:0} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list{background-color:#f0f3f6;border-radius:0;padding:1em 1em;position:relative;margin:0} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list:before{content:'';position:absolute;width:16px;height:16px;top:-8px;left:66px;background:white;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);z-index:9} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list:before{background-color:white;left:43px;width:13px;height:13px;top:-7px} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list .ld-table-list-item{font-size:.875em} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-preview{padding:.5em;padding-left:1.6em} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item{border-bottom:1px solid #e2e7ed;background-color:white;padding:0} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item .ld-lesson-item-preview{padding:1em} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-pagination{margin:1em 0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-pagination .ld-pages{background-color:#728188;-webkit-box-flex:0;-ms-flex:0 0 120px;flex:0 0 120px} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-pagination .ld-pages i,.learndash-wrapper .ld-focus .ld-focus-sidebar .ld-pagination .ld-pages span{color:white} .learndash-wrapper .ld-focus .ld-focus-main{-webkit-box-flex:1;-ms-flex:1 auto;flex:1 auto;margin-left:350px;width:-webkit-calc(100% - 350px);width:calc(100% - 350px);-webkit-transition:margin-left .3s ease;transition:margin-left .3s ease} .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content{padding:5em;margin:0 auto;max-width:960px} .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content h1{margin:0;padding:0;margin-bottom:.5em} .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content .ld-topic-status .ld-progress{display:none} .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content .ld-topic-status,.learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content .ld-lesson-status{margin-bottom:1em} .learndash-wrapper .ld-focus .ld-focus-header{position:fixed;background:white;top:0;left:0;right:0;height:51px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border-bottom:1px solid #e2e7ed;z-index:99} .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav{width:55px;display:none} .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav a{display:block;padding:0 15px} .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav span{display:block;width:25px;height:4px;margin:4px 0;background-color:#333;-webkit-transition:all ease-in-out 250ms;transition:all ease-in-out 250ms} .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav.expanded .bar-1{-webkit-transform:rotate(-45deg) translate(-4px,8px);-ms-transform:rotate(-45deg) translate(-4px,8px);transform:rotate(-45deg) translate(-4px,8px)} .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav.expanded .bar-2{opacity:0} .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav.expanded .bar-3{-webkit-transform:rotate(45deg) translate(-3px,-7px);-ms-transform:rotate(45deg) translate(-3px,-7px);transform:rotate(45deg) translate(-3px,-7px)} .learndash-wrapper .ld-focus .ld-focus-header .ld-brand-logo{background-color:white;-webkit-box-flex:0;-ms-flex:0 0 350px;flex:0 0 350px;height:100%;-webkit-transition:-webkit-box-flex .3s ease;transition:-webkit-box-flex .3s ease;transition:flex .3s ease;transition:flex .3s ease,-webkit-box-flex .3s ease,-ms-flex .3s ease;padding:.5em 1em} .learndash-wrapper .ld-focus .ld-focus-header .ld-brand-logo img{height:100%;width:auto} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-actions{-webkit-box-flex:0;-ms-flex:0 1;flex:0 1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;border-top:0} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action{position:relative} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action .learndash_timer,.learndash-wrapper .ld-focus .ld-focus-header .ld-content-action #learndash_timer{position:absolute;left:0;bottom:1px;right:0;text-align:center;top:0;background:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action,.learndash-wrapper .ld-focus .ld-focus-header .ld-progress{height:50px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-focus .ld-focus-header .ld-progress{border-right:1px solid #e2e7ed} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action{border-right:1px solid #e2e7ed} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action:last-child,.learndash-wrapper .ld-focus .ld-focus-header .ld-content-action.ld-empty{border:0} .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete:after,.learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete:after{color:#019e7c} .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete:disabled:after,.learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete:disabled:after{color:#728188} .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete .learndash_mark_complete_button,.learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete #learndash_mark_complete_button,.learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete .learndash_mark_complete_button,.learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete #learndash_mark_complete_button{color:#00a2e8;background:transparent;color:#019e7c;background:transparent !important} .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete .learndash_mark_complete_button.ld-status-complete,.learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete #learndash_mark_complete_button.ld-status-complete,.learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete .learndash_mark_complete_button.ld-status-complete,.learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete #learndash_mark_complete_button.ld-status-complete{color:#019e7c} .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete .learndash_mark_complete_button:hover,.learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete #learndash_mark_complete_button:hover,.learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete .learndash_mark_complete_button:hover,.learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete #learndash_mark_complete_button:hover{background:transparent} .learndash-wrapper .ld-focus .ld-focus-header .ld-progress{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end} .learndash-wrapper .ld-focus .ld-focus-header .ld-progress-wrap{width:100%;max-width:500px} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action{-webkit-box-flex:0;-ms-flex:0 1;flex:0 1} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action .sfwd-mark-complete,.learndash-wrapper .ld-focus .ld-focus-header .ld-content-action #sfwd-mark-complete{margin:0 1em} .learndash-wrapper .ld-focus .ld-focus-header .ld-progress{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;padding-right:1em;padding:0;margin:0;padding-top:.5em;padding-right:1em} .learndash-wrapper .ld-focus .ld-focus-header .ld-progress .ld-progress-bar{background:#e2e7ed} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;height:50px;padding-right:1em;border-left:1px solid #e2e7ed} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-text{color:#728188;font-size:.75em} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-profile-avatar{width:40px;height:40px;margin-left:1em} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items{position:absolute;top:100%;right:0;z-index:9;opacity:0;visibility:hidden;margin-right:1em} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items:before{content:'';position:absolute;top:-5px;right:1em;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #00a2e8;z-index:-1} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items a{position:relative;display:block;white-space:nowrap;background-color:#00a2e8;color:white;font-weight:700;padding:.75em 2.5em;font-size:.875em;border-bottom:1px solid rgba(255,255,255,0.1)} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items a:hover{opacity:.8} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items a:last-child{border-bottom:0} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu:hover .ld-user-menu-items{opacity:1;visibility:visible} .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-sidebar{background-color:transparent;-webkit-transform:translateX(-webkit-calc(-100% + 50px));-ms-transform:translateX(calc(-100% + 50px));transform:translateX(calc(-100% + 50px))} .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-sidebar-wrapper .ld-focus-sidebar-trigger .ld-icon{-webkit-transform:translateY(-50%) translateX(45%) rotate(180deg);-ms-transform:translateY(-50%) translateX(45%) rotate(180deg);transform:translateY(-50%) translateX(45%) rotate(180deg)} .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-course-navigation .ld-course-navigation-heading{top:0} .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-course-navigation .ld-course-navigation-heading h3{opacity:0} .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-course-navigation .ld-course-navigation-list{opacity:0} .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-main{margin-left:50px;width:-webkit-calc(100% - 50px);width:calc(100% - 50px)} body.admin-bar .learndash-wrapper .ld-focus-header{top:32px}body.admin-bar .learndash-wrapper .ld-focus-sidebar{top:32px} body.ld-in-focus-mode{margin:0;padding:0;background:#fff}body.ld-in-focus-mode::before,body.ld-in-focus-mode::after{display:none} body.ld-in-focus-mode .learndash-wrapper{background:#fff}body.ld-in-focus-mode.admin-bar{padding-top:32px} #learndash-tooltips{font-family:'Open Sans','Arial','Helvetica',sans-serif;position:absolute;top:0;right:0;left:0;bottom:0;height:100%;z-index:999;font-size:16px;pointer-events:none} #learndash-tooltips .ld-tooltip{position:absolute;background-color:#00a2e8;color:white;font-weight:700;border-radius:6px;padding:.25em 1em;-webkit-transform:translateX(1%) translateY(-25px);-ms-transform:translateX(1%) translateY(-25px);transform:translateX(1%) translateY(-25px);-webkit-box-shadow:0 -1px 0 2px rgba(255,255,255,0.75);box-shadow:0 -1px 0 2px rgba(255,255,255,0.75);font-size:.75em;opacity:0;-webkit-transition:opacity .1s linear;transition:opacity .1s linear;text-align:center;min-width:150px;max-width:300px} #learndash-tooltips .ld-tooltip:after{content:'';height:5px;width:5px;background:#00a2e8;position:absolute;bottom:-4px;-webkit-transform:rotate(45deg) translateX(-50%);-ms-transform:rotate(45deg) translateX(-50%);transform:rotate(45deg) translateX(-50%);left:5%} #learndash-tooltips .ld-tooltip.ld-shifted-left:after{left:10%}#learndash-tooltips .ld-tooltip.ld-shifted-right{-webkit-transform:translateX(-100%) translateY(-30px);-ms-transform:translateX(-100%) translateY(-30px);transform:translateX(-100%) translateY(-30px)} #learndash-tooltips .ld-tooltip.ld-shifted-right:after{left:auto;right:10%}#learndash-tooltips .ld-tooltip.ld-visible{opacity:1} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled{display:-webkit-box;display:-ms-flexbox;display:flex;background:#f0f3f6;padding:1em 0;margin:1em 0;border-radius:6px} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled>*{-webkit-box-flex:1;-ms-flex:1 auto;flex:1 auto;width:33%;-ms-flex-pack:distribute;justify-content:space-around;text-align:center;border-right:2px solid #bec5cb;padding:0 1em} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled>*:last-child{border-right:0} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-button{margin:0} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-status{display:inline-block;width:auto} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around;text-align:center;margin-bottom:.5em;line-height:1.25em} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-price{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center;-ms-flex-pack:distribute;justify-content:space-around;font-size:32px;font-weight:bold;color:#728188;margin-top:-3px;line-height:1} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-price .ld-text{font-size:14px;margin-left:8px;font-weight:normal} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-price .ld-currency{font-size:16px;margin-right:.25em} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-label{display:block;color:#728188;font-size:.75em;font-weight:bold;margin-bottom:1em} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around;-ms-flex-wrap:wrap;flex-wrap:wrap} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .ppalholder{position:absolute} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .ld-text{font-size:14px;color:#728188;display:inline-block;white-space:nowrap;margin-right:.5em} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .ld-text .ld-login-text{display:inline-block;margin-left:5px;text-decoration:underline;font-weight:bold} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .learndash_checkout_buttons{margin:0 .5em} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-seg-action.status-closed .ld-text{white-space:normal} .learndash-wrapper .ld-course-status.ld-course-status-enrolled{background-color:#f0f3f6;border-radius:6px;padding:.5em 1em;display:-webkit-box;display:-ms-flexbox;display:flex} .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress{margin:0;padding:0;-webkit-box-flex:1;-ms-flex:1;flex:1;padding-right:1em} .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-status{width:auto;display:inline-block;margin:0 auto} .learndash-wrapper .ld-course-status .ld-status{line-height:1.3}.learndash-wrapper .ld-course-status .ld-status.ld-status-progress{background:#00a2e8;color:#fff} .learndash-wrapper .ld-course-status .ld-status.ld-status-complete{background:#019e7c;color:#fff} .learndash-wrapper .ld-course-certificate{text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:1em 0} .learndash-wrapper .ld-course-certificate .ld-button{display:inline-block;max-width:inherit;font-size:14px} .learndash-wrapper .ld-course-certificate .ld-icon-certificate{font-size:24px;margin-right:5px} .jq-dropdown-menu{-webkit-box-shadow:0 0 0 1px #ddd !important;box-shadow:0 0 0 1px #ddd !important} .jq-dropdown-menu input[type='button'],.jq-dropdown-menu input[type='submit']{margin:0;padding:0;-webkit-transition:none;transition:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1.5em;font-size:16px;border-radius:0;border:0;display:block !important;width:100% !important;color:#00a2e8;padding:.5em 1em;text-align:center;font-size:14px !important} .jq-dropdown-menu input[type='button']:hover,.jq-dropdown-menu input[type='submit']:hover{background:#fafafa !important;color:#495255 !important} .jq-dropdown-menu .ppalholder{display:none}.learndash-wrapper .learndash-wrapper-login-modal{position:relative} .learndash-wrapper .ld-modal{position:absolute;-webkit-transform:translateY(-50%) translateX(-50%);-ms-transform:translateY(-50%) translateX(-50%);transform:translateY(-50%) translateX(-50%);z-index:999;width:100%;z-index:9000;max-width:1024px;min-height:300px;background:white;border-radius:6px;overflow:hidden;overflow-y:auto;-webkit-box-shadow:-3px -3px 20px rgba(0,0,0,0.14);box-shadow:-3px -3px 20px rgba(0,0,0,0.14);opacity:0;visibility:hidden;-webkit-transition:all .3s ease;transition:all .3s ease} .learndash-wrapper .ld-modal .ld-modal-closer{position:absolute;top:.5em;right:0;z-index:9;color:#728188;cursor:pointer;line-height:.5;padding:1em;font-size:1.5em} .learndash-wrapper .ld-modal.ld-can-register .ld-modal-closer{color:#fff}.learndash-wrapper.ld-modal-closed{display:none !important} .learndash-wrapper.ld-modal-open .ld-modal{opacity:1;visibility:visible}.learndash-wrapper .ld-login-modal{display:-webkit-box;display:-ms-flexbox;display:flex;text-align:center;margin:25% 50% 20px 50%} .learndash-wrapper .ld-login-modal .ld-modal-heading{font-weight:300;font-size:2.25em;margin:0;margin:.5em 0} .learndash-wrapper .ld-login-modal .ld-login-modal-wrapper{padding:20px;max-width:350px;min-width:80%;margin:0 auto} .learndash-wrapper .ld-login-modal .ld-login-modal-login{-webkit-box-flex:1;-ms-flex:1;flex:1;background:white;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .ld-login-modal .ld-login-modal-login .ld-modal-heading{color:#00a2e8} .learndash-wrapper .ld-login-modal .ld-login-modal-login .ld-modal-text{color:#728188;font-size:.875em} .learndash-wrapper .ld-login-modal .ld-login-modal-register{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#00a2e8;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:white} .learndash-wrapper .ld-login-modal .ld-login-modal-register .ld-button:hover{opacity:1;-webkit-box-shadow:0 0 0 5px #fff !important;box-shadow:0 0 0 5px #fff !important} .learndash-wrapper .ld-login-modal .ld-login-modal-register label{display:block;font-weight:bold;margin-bottom:.5em;font-size:14px} .learndash-wrapper .ld-login-modal .ld-login-modal-register #ld-user-register{margin:2em 0} .learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='text'],.learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='password'],.learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='email']{border:2px solid #fff;margin:0;margin-bottom:1em;padding:0;padding:.5em;background-color:#f9f9f9;padding-left:2em;font-size:1.2em;width:100%;-webkit-transition:all ease-in-out 250ms;transition:all ease-in-out 250ms} .learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='text']:focus,.learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='password']:focus,.learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='email']:focus{background:#fff} .learndash-wrapper .ld-login-modal .ld-login-modal-register #reg_passmail{font-size:.825em} .learndash-wrapper .ld-login-modal .ld-login-modal-register #wp-submit{margin:0 auto;min-width:150px;text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:0;padding:7px 35px;border-radius:20px;font-weight:bold;font-size:14px;border:5px solid #fff} .learndash-wrapper .ld-login-modal .ld-login-modal-form{margin:2em 0}.learndash-wrapper .ld-login-modal .ld-login-modal-form form{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-login-modal .ld-login-modal-form p{margin:0}.learndash-wrapper .ld-login-modal .ld-login-modal-form p.login-submit{text-align:center} .learndash-wrapper .ld-login-modal .ld-login-modal-form label{display:block;color:#728188;font-weight:bold;margin-bottom:.5em;font-size:14px} .learndash-wrapper .ld-login-modal .ld-login-modal-form .login-username{position:relative} .learndash-wrapper .ld-login-modal .ld-login-modal-form .login-username:before{font-family:'ld-icons' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;content:"\e90c";position:absolute;color:#728188;top:2.5em;left:.5em} .learndash-wrapper .ld-login-modal .ld-login-modal-form .login-password{position:relative} .learndash-wrapper .ld-login-modal .ld-login-modal-form .login-password:before{font-family:'ld-icons' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;content:"\e900";position:absolute;color:#728188;top:2.5em;left:.5em} .learndash-wrapper .ld-login-modal .ld-login-modal-form .ld-login-modal-branding{position:relative;padding-top:2em;margin-top:1em} .learndash-wrapper .ld-login-modal .ld-login-modal-form .ld-login-modal-branding:before{content:'';display:block;position:absolute;width:50px;height:3px;background-color:#e2e7ed;left:50%;top:0;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)} .learndash-wrapper .ld-login-modal .ld-login-modal-form .ld-login-modal-branding img{max-width:100%;max-height:250px;height:auto} .learndash-wrapper .ld-login-modal input[type='text'],.learndash-wrapper .ld-login-modal input[type='password'],.learndash-wrapper .ld-login-modal input[type='email'],.learndash-wrapper .ld-login-modal .ld-login-field,.learndash-wrapper .ld-login-modal .ld-password-field{border:2px solid #e2e7ed;margin:0;margin-bottom:1em;padding:0;padding:.5em;background-color:#f0f3f6;color:#728188;padding-left:2em;font-size:.875em;width:100%;-webkit-transition:all ease-in-out 250ms;transition:all ease-in-out 250ms} .learndash-wrapper .ld-login-modal input[type='text']:focus,.learndash-wrapper .ld-login-modal input[type='password']:focus,.learndash-wrapper .ld-login-modal input[type='email']:focus,.learndash-wrapper .ld-login-modal .ld-login-field:focus,.learndash-wrapper .ld-login-modal .ld-password-field:focus{border-color:#495255} .learndash-wrapper .ld-login-modal ::-webkit-input-placeholder{font-family:'Open Sans','Arial','Helvetica',sans-serif} .learndash-wrapper .ld-login-modal :-ms-input-placeholder{font-family:'Open Sans','Arial','Helvetica',sans-serif} .learndash-wrapper .ld-login-modal ::placeholder{font-family:'Open Sans','Arial','Helvetica',sans-serif} .learndash-wrapper .ld-login-modal .ld-forgot-password-link{color:#333;text-decoration:underline;font-size:.875em} .learndash-wrapper .ld-login-modal .ld-button,.learndash-wrapper .ld-login-modal input[type='submit']{margin:2em auto;min-width:150px;text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:0;border-radius:20px;font-weight:bold;font-size:14px} .learndash-wrapper .ld-login-modal input[type='submit']{background:#00a2e8;color:#fff;cursor:pointer;padding:.75em 5em;-webkit-transition:all ease-in-out 250ms;transition:all ease-in-out 250ms} .learndash-wrapper .ld-login-modal input[type='submit']:hover{opacity:.8} .learndash-wrapper .ld-button.ld-login-button{display:-webkit-box;display:-ms-flexbox;display:flex} .learndash-wrapper .ld-button.ld-login-button.ld-logout{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between} .learndash-wrapper .ld-button.ld-login-button.ld-login{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start} .learndash-wrapper .ld-button.ld-login-button.ld-login .ld-icon{margin-right:10px} .learndash-not-available .ld-table-list-item-preview,.learndash-not-available .ld-lesson-item-preview,.learndash-not-available .ld-item-list-item-preview,.user_has_no_access .ld-table-list-item-preview,.user_has_no_access .ld-lesson-item-preview,.user_has_no_access .ld-item-list-item-preview{cursor:not-allowed;pointer-events:none} .learndash-not-available .ld-table-list-item-preview a.ld-lesson-item-preview-heading,.learndash-not-available .ld-table-list-item-preview a.ld-item-name,.learndash-not-available .ld-lesson-item-preview a.ld-lesson-item-preview-heading,.learndash-not-available .ld-lesson-item-preview a.ld-item-name,.learndash-not-available .ld-item-list-item-preview a.ld-lesson-item-preview-heading,.learndash-not-available .ld-item-list-item-preview a.ld-item-name,.user_has_no_access .ld-table-list-item-preview a.ld-lesson-item-preview-heading,.user_has_no_access .ld-table-list-item-preview a.ld-item-name,.user_has_no_access .ld-lesson-item-preview a.ld-lesson-item-preview-heading,.user_has_no_access .ld-lesson-item-preview a.ld-item-name,.user_has_no_access .ld-item-list-item-preview a.ld-lesson-item-preview-heading,.user_has_no_access .ld-item-list-item-preview a.ld-item-name{cursor:not-allowed;pointer-events:none} .learndash-not-available .ld-table-list-item-preview a.ld-lesson-item-preview-heading .ld-status-icon,.learndash-not-available .ld-table-list-item-preview a.ld-item-name .ld-status-icon,.learndash-not-available .ld-lesson-item-preview a.ld-lesson-item-preview-heading .ld-status-icon,.learndash-not-available .ld-lesson-item-preview a.ld-item-name .ld-status-icon,.learndash-not-available .ld-item-list-item-preview a.ld-lesson-item-preview-heading .ld-status-icon,.learndash-not-available .ld-item-list-item-preview a.ld-item-name .ld-status-icon,.user_has_no_access .ld-table-list-item-preview a.ld-lesson-item-preview-heading .ld-status-icon,.user_has_no_access .ld-table-list-item-preview a.ld-item-name .ld-status-icon,.user_has_no_access .ld-lesson-item-preview a.ld-lesson-item-preview-heading .ld-status-icon,.user_has_no_access .ld-lesson-item-preview a.ld-item-name .ld-status-icon,.user_has_no_access .ld-item-list-item-preview a.ld-lesson-item-preview-heading .ld-status-icon,.user_has_no_access .ld-item-list-item-preview a.ld-item-name .ld-status-icon{pointer-events:all} .learndash-not-available .ld-table-list-item-preview .ld-expand-button,.learndash-not-available .ld-lesson-item-preview .ld-expand-button,.learndash-not-available .ld-item-list-item-preview .ld-expand-button,.user_has_no_access .ld-table-list-item-preview .ld-expand-button,.user_has_no_access .ld-lesson-item-preview .ld-expand-button,.user_has_no_access .ld-item-list-item-preview .ld-expand-button{pointer-events:all} .learndash-not-available a.ld-topic-row,.user_has_no_access a.ld-topic-row{cursor:not-allowed;pointer-events:none} .learndash-not-available.is_sample .ld-lesson-item-preview,.learndash-not-available.is_sample .ld-item-list-item-preview,.user_has_no_access.is_sample .ld-lesson-item-preview,.user_has_no_access.is_sample .ld-item-list-item-preview{cursor:pointer;pointer-events:all} .learndash-not-available.is_sample .ld-lesson-item-preview a.ld-lesson-item-preview-heading,.learndash-not-available.is_sample .ld-lesson-item-preview a.ld-item-name,.learndash-not-available.is_sample .ld-item-list-item-preview a.ld-lesson-item-preview-heading,.learndash-not-available.is_sample .ld-item-list-item-preview a.ld-item-name,.user_has_no_access.is_sample .ld-lesson-item-preview a.ld-lesson-item-preview-heading,.user_has_no_access.is_sample .ld-lesson-item-preview a.ld-item-name,.user_has_no_access.is_sample .ld-item-list-item-preview a.ld-lesson-item-preview-heading,.user_has_no_access.is_sample .ld-item-list-item-preview a.ld-item-name{cursor:pointer;pointer-events:all} .user_has_no_access .wpProQuiz_resultsList .ld-item-list-item-preview a.ld-item-name{cursor:pointer;pointer-events:all} .ld-topic-list.is_sample .ld-table-list-item-preview,.ld-topic-list.is_sample .ld-lesson-item-preview,.ld-topic-list.is_sample .ld-item-list-item-preview,.ld-lesson-item.is_sample .ld-table-list-item-preview,.ld-lesson-item.is_sample .ld-lesson-item-preview,.ld-lesson-item.is_sample .ld-item-list-item-preview,.ld-item-list-item.is_sample .ld-table-list-item-preview,.ld-item-list-item.is_sample .ld-lesson-item-preview,.ld-item-list-item.is_sample .ld-item-list-item-preview{cursor:pointer;pointer-events:all} .ld-topic-list.is_sample .ld-table-list-item-preview a.ld-lesson-item-preview-heading,.ld-topic-list.is_sample .ld-table-list-item-preview a.ld-item-name,.ld-topic-list.is_sample .ld-lesson-item-preview a.ld-lesson-item-preview-heading,.ld-topic-list.is_sample .ld-lesson-item-preview a.ld-item-name,.ld-topic-list.is_sample .ld-item-list-item-preview a.ld-lesson-item-preview-heading,.ld-topic-list.is_sample .ld-item-list-item-preview a.ld-item-name,.ld-lesson-item.is_sample .ld-table-list-item-preview a.ld-lesson-item-preview-heading,.ld-lesson-item.is_sample .ld-table-list-item-preview a.ld-item-name,.ld-lesson-item.is_sample .ld-lesson-item-preview a.ld-lesson-item-preview-heading,.ld-lesson-item.is_sample .ld-lesson-item-preview a.ld-item-name,.ld-lesson-item.is_sample .ld-item-list-item-preview a.ld-lesson-item-preview-heading,.ld-lesson-item.is_sample .ld-item-list-item-preview a.ld-item-name,.ld-item-list-item.is_sample .ld-table-list-item-preview a.ld-lesson-item-preview-heading,.ld-item-list-item.is_sample .ld-table-list-item-preview a.ld-item-name,.ld-item-list-item.is_sample .ld-lesson-item-preview a.ld-lesson-item-preview-heading,.ld-item-list-item.is_sample .ld-lesson-item-preview a.ld-item-name,.ld-item-list-item.is_sample .ld-item-list-item-preview a.ld-lesson-item-preview-heading,.ld-item-list-item.is_sample .ld-item-list-item-preview a.ld-item-name{cursor:pointer;pointer-events:all} .ld-topic-list.is_sample a.ld-lesson-item-preview,.ld-topic-list.is_sample a.ld-table-list-item-preview,.ld-topic-list.is_sample a.ld-topic-row,.ld-lesson-item.is_sample a.ld-lesson-item-preview,.ld-lesson-item.is_sample a.ld-table-list-item-preview,.ld-lesson-item.is_sample a.ld-topic-row,.ld-item-list-item.is_sample a.ld-lesson-item-preview,.ld-item-list-item.is_sample a.ld-table-list-item-preview,.ld-item-list-item.is_sample a.ld-topic-row{cursor:pointer !important;pointer-events:all !important} .learndash-wrapper .ld-user-status.ld-is-widget{margin:30px 0}.learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item{border:0;border-bottom:2px solid #f0f3f6;border-radius:0;padding:10px 0;margin:10px 0} .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item:last-child{border-bottom:0} .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item .ld-item-list-item-preview{padding:0} .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-title{font-size:14px;line-height:1.5em} .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-components{margin-top:10px} .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-components span{display:block;margin:0 0 5px 0;font-size:12px;line-height:1.5em} .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-components span.ld-sep{display:none} .learndash-wrapper .ld-user-status.ld-is-widget .ld-pagination{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start} .learndash-wrapper .ld-focus-comments{margin:2em 0}.learndash-wrapper .ld-focus-comments p.comment-form-comment{margin:0;width:100% !important;max-width:100% !important} .learndash-wrapper .ld-focus-comments p.comment-form-comment textarea{width:100%} .learndash-wrapper .ld-focus-comments #ld-comments{margin-bottom:50px}.learndash-wrapper .ld-focus-comments #commentform .logged-in-as{margin:0;font-size:.875em;font-weight:normal;float:right} .learndash-wrapper .ld-focus-comments #commentform textarea#comment{font-family:inherit;padding:.875em;background:#e2e7ed;border:5px solid #e2e7ed;border-radius:6px;font-size:1em} .learndash-wrapper .ld-focus-comments #commentform textarea#comment:focus{background:transparent;outline:0;-webkit-box-shadow:none;box-shadow:none} .learndash-wrapper .ld-focus-comments .comment-navigation .nav-links{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row} .learndash-wrapper .ld-focus-comments .comment-navigation .nav-links .nav-previous{margin:0;text-align:left;min-width:50%;width:100%;font-weight:bold} .learndash-wrapper .ld-focus-comments .comment-navigation .nav-links .nav-next{margin:0;text-align:right;min-width:50%;width:100%;font-weight:bold} .learndash-wrapper .ld-focus-comments .form-submit{width:100% !important;max-width:100% !important} .learndash-wrapper .ld-focus-comments .form-submit #submit{margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;text-align:center;text-decoration:none;cursor:pointer;width:100%;max-width:385px;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:auto;padding:.75em 1.5em;font-size:1em;display:inline-block;padding:.75em 3em;margin-top:0;height:auto;margin-top:1em;min-width:unset;max-width:unset;width:unset;text-decoration:none !important} .learndash-wrapper .ld-focus-comments .form-submit #submit .ld-icon{font-size:.875em} .learndash-wrapper .ld-focus-comments .form-submit #submit .ld-text{padding:0 1em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center} .learndash-wrapper .ld-focus-comments .form-submit #submit+.ld-button{margin-left:1em} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-compact{padding:0;width:24px;height:24px;border-radius:100%;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-compact .ld-icon{margin-right:0;font-size:.75em} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-compact .ld-text{padding:0} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-alternate{background:transparent;color:#00a2e8;padding:0} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-alternate .ld-icon{background:#00a2e8;color:white;border-radius:100%;width:18px;height:18px;-webkit-box-flex:0;-ms-flex:0 0 18px;flex:0 0 18px;padding:2px;line-height:16px;text-align:center;font-weight:bold;-webkit-transition:color .3s ease,background .3s ease;transition:color .3s ease,background .3s ease} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-alternate .ld-text{padding-left:.5em} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-alternate:hover{background:transparent} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-transparent{color:#00a2e8;background:transparent} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-transparent.ld-status-complete{color:#019e7c} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-transparent:hover{background:transparent} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-reverse{background:white;color:#00a2e8} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-reverse:hover{background:#00a2e8;color:white} .learndash-wrapper .ld-focus-comments .form-submit #submit:hover{opacity:.75;background-color:#00a2e8} .learndash-wrapper .ld-focus-comments .form-submit #submit:focus{outline:0;opacity:.75} .learndash-wrapper .ld-focus-comments__heading{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom:4px solid #e2e7ed;margin-bottom:.5em} .learndash-wrapper .ld-focus-comments__heading .ld-expand-button .ld-text{padding-right:.5em;font-size:1em} .learndash-wrapper .ld-focus-comments__heading .ld-expand-button .ld-icon{font-size:.75em} .learndash-wrapper .ld-focus-comments__header{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:2em;font-weight:normal;margin-bottom:10px} .learndash-wrapper .ld-focus-comments__comments{overflow:hidden;-webkit-transition:max-height .3s ease;transition:max-height .3s ease;font-size:1em;font-weight:normal} .learndash-wrapper .ld-focus-comments .comment-respond{position:relative;padding-top:0} .learndash-wrapper .ld-focus-comments .comment-respond #reply-title{font-size:1.5em;font-weight:normal;margin-bottom:.75em} .learndash-wrapper .ld-focus-comments .comment-respond small{margin-left:1em;font-size:.75em} .learndash-wrapper .ld-focus-comments .comment-form label{display:none}.learndash-wrapper .ld-focus-comments #ld-comments-post-button.ld-open{display:none} .learndash-wrapper .ld-focus-comments #ld-comments-form.ld-collapsed{display:none} .learndash-wrapper .ld-focus-comment{margin:2em 0}.learndash-wrapper .ld-focus-comment:last-child{margin-bottom:5em} .learndash-wrapper .ld-focus-comment.depth-1{margin-left:0}.learndash-wrapper .ld-focus-comment.depth-2,.learndash-wrapper .ld-focus-comment.depth-3,.learndash-wrapper .ld-focus-comment.depth-4,.learndash-wrapper .ld-focus-comment.depth-5{margin-left:74px} .learndash-wrapper .ld-focus-comment .ld-comment-avatar{position:relative;margin-bottom:1em;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-focus-comment .ld-comment-avatar img{-webkit-box-sizing:border-box;box-sizing:border-box;max-width:58px;height:auto;border-radius:100%;margin-right:16px;border:4px solid transparent} .learndash-wrapper .ld-focus-comment .ld-comment-avatar .ld-comment-avatar-author .ld-comment-author-name{color:black;font-size:1.125em;margin-bottom:5px;display:block;font-weight:bold} .learndash-wrapper .ld-focus-comment .ld-comment-avatar .ld-comment-avatar-author a.ld-comment-permalink{color:#728188;font-size:.875em;text-decoration:none;display:block} .learndash-wrapper .ld-focus-comment .ld-comment-body{overflow:hidden;position:relative;margin-left:74px} .learndash-wrapper .ld-focus-comment .ld-comment-reply{margin:1em 0}.learndash-wrapper .ld-focus-comment .ld-comment-reply a.comment-reply-link{border:0;display:inline-block;padding:.5em 1.75em;color:black;font-weight:bold;font-size:.875em;position:relative;z-index:9;background-color:#e2e7ed;border-radius:18px} .learndash-wrapper .ld-focus-comment.bypostauthor>.ld-comment-wrapper,.learndash-wrapper .ld-focus-comment.role-group_leader>.ld-comment-wrapper,.learndash-wrapper .ld-focus-comment.role-administrator>.ld-comment-wrapper{border-radius:6px;background:#f2fafd;padding:1em} .learndash-wrapper .ld-focus-comment.bypostauthor>.ld-comment-wrapper>.ld-comment-avatar img,.learndash-wrapper .ld-focus-comment.role-group_leader>.ld-comment-wrapper>.ld-comment-avatar img,.learndash-wrapper .ld-focus-comment.role-administrator>.ld-comment-wrapper>.ld-comment-avatar img{border-color:#00a2e8} .learndash-wrapper .ld-focus-comment.bypostauthor.ptype-sfwd-assignment>.ld-comment-wrapper{border-radius:0;background:transparent;padding:0} .learndash-wrapper .ld-focus-comment.bypostauthor.ptype-sfwd-assignment>.ld-comment-wrapper>.ld-comment-avatar img{border-color:transparent} .learndash-wrapper .ld-focus-comment.ld-no-avatar-image .ld-comment-body{margin-left:0} @media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.learndash-wrapper .ld-expand-button{min-width:120px} .learndash-wrapper .ld-expand-button.ld-button-alternate .ld-icon{-ms-flex-preferred-size:15px;flex-basis:15px} .learndash-wrapper .ld-status-icon.ld-status-incomplete,.learndash-wrapper .ld-status-icon.ld-status-in-progress{-ms-flex-preferred-size:18px;flex-basis:18px} .learndash-wrapper .ld-course-navigation .ld-status-icon.ld-status-incomplete,.learndash-wrapper .ld-course-navigation .ld-status-icon.ld-status-in-progress{-ms-flex-preferred-size:10px;flex-basis:10px} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-details .ld-expand-button{min-width:80px} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-details .ld-expand-button.ld-compact{min-width:0;margin-right:1em} .learndash-wrapper .ld-item-list .ld-section-heading .ld-search-prompt{margin-right:3em} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-actions{-webkit-box-flex:1;-ms-flex:1;flex:1} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action{-webkit-box-flex:1;-ms-flex:1;flex:1} .learndash-wrapper .ld-login-modal .ld-login-modal-wrapper{width:100%}}@media(max-width:1280px){.learndash-wrapper .ld-focus .ld-focus-header .ld-progress{-webkit-box-flex:1;-ms-flex:1;flex:1} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu{-webkit-box-flex:0;-ms-flex:0 1;flex:0 1} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-text{display:none} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .learndash_checkout_buttons,.learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .learndash_checkout_button{margin-right:0} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .learndash_checkout_button{margin-bottom:.5em} }@media(max-width:1024px){.learndash-wrapper.ld-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-page-content{margin-bottom:3em}.learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-text{display:none} .learndash-wrapper .ld-focus .ld-focus-header .ld-brand-logo{-webkit-box-flex:0;-ms-flex:0 0 150px;flex:0 0 150px} .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content{padding-left:3em}.learndash-wrapper .ld-login-modal{top:100px;width:80%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)} .learndash-wrapper .ld-login-modal.ld-can-register .ld-modal-closer{color:#728188} }@media(max-width:768px){.learndash-wrapper .ld-content-actions{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start} .learndash-wrapper .ld-content-actions .ld-content-action{-webkit-box-flex:1;-ms-flex:1;flex:1} .learndash-wrapper .ld-content-actions>*{margin-bottom:2em;margin-left:0}.learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-columns{display:none} .learndash-wrapper .ld-table-list .ld-table-list-item-preview{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start} .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-title{width:100%} .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns{width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding-top:.5em} .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column{-webkit-box-flex:1;-ms-flex:1 auto;flex:1 auto;margin:0 0 .5em 0} .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column .ld-column-label{display:inline-block;margin:0 0 .5em 0} .learndash-wrapper .ld-table-list.ld-assignment-list .ld-table-list-item-preview .ld-table-list-title{-webkit-box-flex:1;-ms-flex:1;flex:1} .learndash-wrapper .ld-item-list.ld-lesson-list .ld-topic-list .ld-table-list-header{padding-left:1em;padding-right:1em} .learndash-wrapper .ld-item-list.ld-lesson-list .ld-topic-list .ld-table-list-item{margin:0 1em} .learndash-wrapper .ld-quiz-actions{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-quiz-actions .quiz_continue_link,.learndash-wrapper .ld-quiz-actions .wpProQuiz_button,.learndash-wrapper .ld-quiz-actions input[type='button']{margin-bottom:1em;margin-left:auto;margin-right:auto;width:auto} .learndash-wrapper .ld-alert{display:block;text-align:center;padding:75px 15px 15px} .learndash-wrapper .ld-alert .ld-alert-content{margin:0 0 1em 0}.learndash-wrapper .ld-alert .ld-icon{left:50%;margin:0;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);top:10%} .learndash-wrapper .ld-alert .ld-button{margin-left:0}.learndash-wrapper .ld-focus .ld-focus-header{position:relative;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;height:auto} .learndash-wrapper .ld-focus .ld-focus-header .ld-brand-logo{display:none}.learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav{display:block;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1} .learndash-wrapper .ld-focus .ld-focus-header .ld-progress{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;padding:0 1em;margin:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-right:0} .learndash-wrapper .ld-focus .ld-focus-header .ld-progress .ld-progress-stats{text-align:center;display:block} .learndash-wrapper .ld-focus .ld-focus-header .ld-progress .ld-progress-percentage{line-height:1em;margin-bottom:.3em} .learndash-wrapper .ld-focus .ld-focus-header .ld-progress .ld-progress-steps{display:none} .learndash-wrapper .ld-focus .ld-focus-header .ld-progress .ld-progress-bar{margin:0} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3;border-left:0} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-actions{border-top:1px solid #efefef;background:#fff;padding:0;-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:100%;-ms-flex:100%;flex:100%} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-actions>*{margin:0}.learndash-wrapper .ld-focus .ld-focus-header .ld-content-actions .ld-content-action{height:auto;-webkit-box-flex:50%;-ms-flex:50%;flex:50%} .learndash-wrapper .ld-focus .ld-focus-content{margin-top:30px}.learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-sidebar{-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)} .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-sidebar .ld-focus-sidebar-trigger{display:none} .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-main{margin-left:0;width:100%} .learndash-wrapper .ld-focus .ld-focus-main{margin-left:0;width:100%}.learndash-wrapper .ld-focus .ld-course-navigation-heading{position:static} .learndash-wrapper .ld-focus .ld-course-navigation{padding-top:0}.learndash-wrapper .ld-focus .ld-focus-sidebar{top:0;padding-top:0;z-index:1000;position:absolute} body.admin-bar .learndash-wrapper .ld-focus-header{top:0}body.admin-bar .learndash-wrapper .ld-focus-sidebar{top:93px} body.ld-in-focus-mode.admin-bar{padding-top:0}body.ld-in-focus-mode.admin-bar .ld-focus-sidebar{top:97px} .learndash-wrapper .ld-login-modal{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-focus-comment.depth-2,.learndash-wrapper .ld-focus-comment.depth-3,.learndash-wrapper .ld-focus-comment.depth-4,.learndash-wrapper .ld-focus-comment.depth-5{margin-left:20px} }@media(max-width:640px){.learndash-wrapper .ld-mobile-only{display:inherit !important} .learndash-wrapper .ld-not-mobile{display:none !important}.learndash-wrapper .ld-item-list .ld-section-heading h2,.learndash-wrapper .ld-item-list .ld-section-heading h3{text-align:center;margin-bottom:10px} .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-expand-button{margin:10px auto} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-wrapper:before{left:20px;right:auto} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-name .ld-reset-button{right:2px} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields>*{width:100%;margin-bottom:1em;padding-right:0} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-flex:1;-ms-flex:1;flex:1} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button{margin:auto} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-name{-webkit-box-flex:1;-ms-flex:1;flex:1} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-details{margin-top:1em;margin-left:2em} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-details .ld-status{margin-left:0;margin-right:1em} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-details .ld-expand-button{margin-left:0} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-progress,.learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-item-contents{padding:2em 1em} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-item-contents{padding-top:0} .learndash-wrapper .ld-table-list .ld-table-list-items{padding:0 20px}.learndash-wrapper .ld-lesson-list .ld-table-list-items{padding:0} .learndash-wrapper #ld-profile .ld-table-list .ld-table-list-item-expanded{padding:0} .learndash-wrapper .ld-progress .ld-progress-heading{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-progress .ld-progress-heading.ld-progress-inline{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-pagination{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .ld-file-upload .ld-file-upload-form{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input+label{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border-radius:0;text-align:center;width:100%} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input+label strong,.learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input+label span{width:100%} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-button{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-top:1em} .learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading,.learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading{margin-bottom:.5em;margin-top:.5em;-ms-flex-wrap:wrap;flex-wrap:wrap} .learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading h2,.learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading .ld-item-list-actions,.learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading h2,.learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading .ld-item-list-actions{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between} .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-header{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch} .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-lesson-details{margin:1em 2.9em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2{margin-right:auto !important;margin-left:auto !important;margin-bottom:1em;float:none !important} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.wpProQuiz_TipButton,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.wpProQuiz_TipButton{display:inline;margin:auto;padding:.25em .5em;width:auto} .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='6']{-ms-flex-wrap:wrap;flex-wrap:wrap} .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='6'] select{margin-bottom:1em;-webkit-box-flex:1;-ms-flex:1 0 50%;flex:1 0 50%} .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='6'] select:first-child{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%} .learndash-wrapper #ld-profile .ld-section-heading .ld-item-list-actions{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between} .learndash-wrapper #ld-profile .ld-section-heading .ld-expand-button{margin:10px 0;max-width:120px} .learndash-wrapper #ld-profile .ld-profile-stats{-ms-flex-wrap:wrap;flex-wrap:wrap} .learndash-wrapper #ld-profile .ld-profile-stats .ld-profile-stat{width:50%;border:0;-webkit-box-flex:1;-ms-flex:1;flex:1;margin:0 0 2em 0 !important;padding:0 1em !important} .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab{padding:1em}.learndash-wrapper .ld-breadcrumbs{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start} .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments{width:100%}.learndash-wrapper .ld-breadcrumbs .ld-status{width:100%;margin-top:1em} .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-main,.learndash-wrapper .ld-focus .ld-focus-main{margin-left:0} .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-main .ld-focus-content,.learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content{margin:30px auto 50px;padding:5% 1.5em} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled>*{border-right:0;border-bottom:1px solid #e2e7ed;padding:1em 0;width:auto} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled>*:last-child{border-bottom:0} .learndash-wrapper .ld-course-status.ld-course-status-enrolled{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-right:0;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start} .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress .ld-progress-heading{display:block;width:100%;text-align:center} .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress .ld-progress-stats{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress .ld-progress-stats .ld-progress-steps{margin-left:0} .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress .ld-progress-bar{width:100%;margin:1em 0} .learndash-wrapper .ld-login-modal{width:100%}}@-webkit-keyframes ldrotating{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)} }@keyframes ldrotating{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)} }PKc\sX3themes/ld30/assets/css/learndash.quiz.front.min.cssnuW+A.learndash-wrapper .wpProQuiz_content .wpProQuiz_addToplist{margin-top:10px;background-color:rgb(0,162,232,.1);padding:10px;border:1px solid #00a2e8}.learndash-wrapper .wpProQuiz_content .wpProQuiz_toplistTable th{background:#00a2e8}.learndash-wrapper .wpProQuiz_content .wpProQuiz_toplistTrOdd{background-color:rgba(0,162,232,.1)}.learndash-wrapper .wpProQuiz_content a#quiz_continue_link:hover{opacity:.75;background-color:#019e7c}.learndash-wrapper .wpProQuiz_content .wpProQuiz_button_reShowQuestion:hover,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button_restartQuiz:hover{background-color:#019e7c;opacity:.75}.learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewColor{height:15px;width:15px;display:inline-block;margin-right:2px}.learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewLegend span.wpProQuiz_reviewColor_Answer{background-color:#019e7c}.learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewLegend span.wpProQuiz_reviewColor_Review{background-color:#ffd200}.learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewDiv li.wpProQuiz_reviewQuestionTarget{background-color:#00a2e8}.learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionSolved,.learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionSolved{background-color:#019e7c}.learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionReview,.learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionReview{background-color:#ffd200}PKc\HǑ\__,themes/ld30/assets/css/learndash.min-rtl.cssnuW+A@font-face{font-family:'ld-icons';src:url("../fonts/ld-icons.eot?e0vk6b");src:url("../fonts/ld-icons.eot?e0vk6b#iefix") format("embedded-opentype"),url("../fonts/ld-icons.ttf?e0vk6b") format("truetype"),url("../fonts/ld-icons.woff?e0vk6b") format("woff"),url("../fonts/ld-icons.svg?e0vk6b#ld-icons") format("svg");font-weight:normal;font-style:normal} .ld-icon{font-family:'ld-icons' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block} .ld-icon-alert:before{content:"\e90d"}.ld-icon-unlocked:before{content:"\e900"} .ld-icon-quiz:before{content:"\e901"}.ld-icon-materials:before{content:"\e902"} .ld-icon-download:before{content:"\e903"}.ld-icon-course-outline:before{content:"\e904"} .ld-icon-content:before{content:"\e905"}.ld-icon-complete:before,.ld-icon-checkmark:before{content:"\e906"} .ld-icon-clock:before{content:"\e907"}.ld-icon-certificate:before{content:"\e908"} .ld-icon-calendar:before{content:"\e909"}.ld-icon-assignment:before{content:"\e90a"} .ld-icon-arrow-up:before{content:"\e912"}.ld-icon-arrow-right:before{content:"\e913"} .ld-icon-arrow-left:before{content:"\e914"}.ld-icon-arrow-down:before{content:"\e915"} .ld-icon-login:before{content:"\e90c"}.ld-icon-remove:before,.ld-icon-delete:before{content:"\e90b"} .ld-icon-comments:before{content:"\e917"}.ld-icon-search:before{content:"\e916"} .learndash-wrapper *{-webkit-box-sizing:border-box;box-sizing:border-box}.learndash-wrapper .learndash_checkout_buttons{margin:0 0 0 .5em} .learndash-wrapper .btn-join,.learndash-wrapper #btn-join{margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;text-align:center;text-decoration:none;cursor:pointer;width:100%;max-width:385px;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:auto;padding:.75em 1.5em;margin-right:0} .learndash-wrapper .btn-join .ld-icon,.learndash-wrapper #btn-join .ld-icon{font-size:.875em} .learndash-wrapper .btn-join .ld-text,.learndash-wrapper #btn-join .ld-text{padding:0 1em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center} .learndash-wrapper .btn-join+.ld-button,.learndash-wrapper #btn-join+.ld-button{margin-right:1em} .learndash-wrapper .btn-join.ld-compact,.learndash-wrapper #btn-join.ld-compact{padding:0;width:24px;height:24px;border-radius:100%;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .btn-join.ld-compact .ld-icon,.learndash-wrapper #btn-join.ld-compact .ld-icon{margin-left:0;font-size:.75em} .learndash-wrapper .btn-join.ld-compact .ld-text,.learndash-wrapper #btn-join.ld-compact .ld-text{padding:0} .learndash-wrapper .btn-join.ld-button-alternate,.learndash-wrapper #btn-join.ld-button-alternate{background:transparent;color:#00a2e8;padding:0} .learndash-wrapper .btn-join.ld-button-alternate .ld-icon,.learndash-wrapper #btn-join.ld-button-alternate .ld-icon{background:#00a2e8;color:white;border-radius:100%;width:18px;height:18px;-webkit-box-flex:0;-ms-flex:0 0 18px;flex:0 0 18px;padding:2px;line-height:16px;text-align:center;font-weight:bold;-webkit-transition:color .3s ease,background .3s ease;transition:color .3s ease,background .3s ease} .learndash-wrapper .btn-join.ld-button-alternate .ld-text,.learndash-wrapper #btn-join.ld-button-alternate .ld-text{padding-right:.5em} .learndash-wrapper .btn-join.ld-button-alternate:hover,.learndash-wrapper #btn-join.ld-button-alternate:hover{background:transparent} .learndash-wrapper .btn-join.ld-button-transparent,.learndash-wrapper #btn-join.ld-button-transparent{color:#00a2e8;background:transparent} .learndash-wrapper .btn-join.ld-button-transparent.ld-status-complete,.learndash-wrapper #btn-join.ld-button-transparent.ld-status-complete{color:#019e7c} .learndash-wrapper .btn-join.ld-button-transparent:hover,.learndash-wrapper #btn-join.ld-button-transparent:hover{background:transparent} .learndash-wrapper .btn-join.ld-button-reverse,.learndash-wrapper #btn-join.ld-button-reverse{background:white;color:#00a2e8} .learndash-wrapper .btn-join.ld-button-reverse:hover,.learndash-wrapper #btn-join.ld-button-reverse:hover{background:#00a2e8;color:white} .learndash-wrapper .btn-join:hover,.learndash-wrapper #btn-join:hover{opacity:.75;background-color:#00a2e8} .learndash-wrapper .btn-join:focus,.learndash-wrapper #btn-join:focus{outline:0;opacity:.75} .learndash-wrapper .ld-button{margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;text-align:center;text-decoration:none;cursor:pointer;width:100%;max-width:385px;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:auto;padding:.75em 1.5em} .learndash-wrapper .ld-button .ld-icon{font-size:.875em}.learndash-wrapper .ld-button .ld-text{padding:0 1em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center} .learndash-wrapper .ld-button+.ld-button{margin-right:1em}.learndash-wrapper .ld-button.ld-compact{padding:0;width:24px;height:24px;border-radius:100%;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .ld-button.ld-compact .ld-icon{margin-left:0;font-size:.75em} .learndash-wrapper .ld-button.ld-compact .ld-text{padding:0}.learndash-wrapper .ld-button.ld-button-alternate{background:transparent;color:#00a2e8;padding:0} .learndash-wrapper .ld-button.ld-button-alternate .ld-icon{background:#00a2e8;color:white;border-radius:100%;width:18px;height:18px;-webkit-box-flex:0;-ms-flex:0 0 18px;flex:0 0 18px;padding:2px;line-height:16px;text-align:center;font-weight:bold;-webkit-transition:color .3s ease,background .3s ease;transition:color .3s ease,background .3s ease} .learndash-wrapper .ld-button.ld-button-alternate .ld-text{padding-right:.5em}.learndash-wrapper .ld-button.ld-button-alternate:hover{background:transparent} .learndash-wrapper .ld-button.ld-button-transparent{color:#00a2e8;background:transparent} .learndash-wrapper .ld-button.ld-button-transparent.ld-status-complete{color:#019e7c} .learndash-wrapper .ld-button.ld-button-transparent:hover{background:transparent} .learndash-wrapper .ld-button.ld-button-reverse{background:white;color:#00a2e8}.learndash-wrapper .ld-button.ld-button-reverse:hover{background:#00a2e8;color:white} .learndash-wrapper .ld-button:hover{opacity:.75;background-color:#00a2e8}.learndash-wrapper .ld-button:focus{outline:0;opacity:.75} .learndash-wrapper .ld-button .ld-icon{-webkit-transition:all ease-in-out 250ms;transition:all ease-in-out 250ms} .learndash-wrapper .ld-button:hover .ld-icon-arrow-right{-webkit-transform:translateX(-3px);-ms-transform:translateX(-3px);transform:translateX(-3px)} .learndash-wrapper .ld-button:hover .ld-icon-arrow-left{-webkit-transform:translateX(3px);-ms-transform:translateX(3px);transform:translateX(3px)} .learndash-wrapper a{text-decoration:none;text-shadow:none;border-bottom:none !important;-webkit-box-shadow:none !important;box-shadow:none !important} .learndash-wrapper a:hover{text-decoration:none}.learndash-wrapper.ld-container{display:-webkit-box;display:-ms-flexbox;display:flex;padding:0 2em;max-width:1280px;margin:auto} .learndash-wrapper .ld-page-content{-webkit-box-flex:1;-ms-flex:1 auto;flex:1 auto;padding-left:2.5%} .learndash-wrapper .ld-sidebar-content{-webkit-box-flex:0;-ms-flex:0 0 250px;flex:0 0 250px;padding-right:2.5%} .learndash-wrapper .ld-profile-avatar{border-radius:100%;overflow:hidden}.learndash-wrapper .ld-profile-avatar img{width:100%;height:auto} .learndash-wrapper .sfwd-mark-complete,.learndash-wrapper #sfwd-mark-complete{position:relative;display:block;overflow:hidden} .learndash-wrapper .sfwd-mark-complete::after,.learndash-wrapper #sfwd-mark-complete::after{font-family:'ld-icons' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;content:"\e906";position:absolute;left:1em;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);color:white} .learndash-wrapper .learndash_mark_complete_button,.learndash-wrapper #learndash_mark_complete_button{margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;text-align:center;text-decoration:none;cursor:pointer;width:100%;max-width:385px;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:auto;padding:.75em 1.5em;background-color:#019e7c;padding:1em;padding-left:3em} .learndash-wrapper .learndash_mark_complete_button .ld-icon,.learndash-wrapper #learndash_mark_complete_button .ld-icon{font-size:.875em} .learndash-wrapper .learndash_mark_complete_button .ld-text,.learndash-wrapper #learndash_mark_complete_button .ld-text{padding:0 1em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center} .learndash-wrapper .learndash_mark_complete_button+.ld-button,.learndash-wrapper #learndash_mark_complete_button+.ld-button{margin-right:1em} .learndash-wrapper .learndash_mark_complete_button.ld-compact,.learndash-wrapper #learndash_mark_complete_button.ld-compact{padding:0;width:24px;height:24px;border-radius:100%;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .learndash_mark_complete_button.ld-compact .ld-icon,.learndash-wrapper #learndash_mark_complete_button.ld-compact .ld-icon{margin-left:0;font-size:.75em} .learndash-wrapper .learndash_mark_complete_button.ld-compact .ld-text,.learndash-wrapper #learndash_mark_complete_button.ld-compact .ld-text{padding:0} .learndash-wrapper .learndash_mark_complete_button.ld-button-alternate,.learndash-wrapper #learndash_mark_complete_button.ld-button-alternate{background:transparent;color:#00a2e8;padding:0} .learndash-wrapper .learndash_mark_complete_button.ld-button-alternate .ld-icon,.learndash-wrapper #learndash_mark_complete_button.ld-button-alternate .ld-icon{background:#00a2e8;color:white;border-radius:100%;width:18px;height:18px;-webkit-box-flex:0;-ms-flex:0 0 18px;flex:0 0 18px;padding:2px;line-height:16px;text-align:center;font-weight:bold;-webkit-transition:color .3s ease,background .3s ease;transition:color .3s ease,background .3s ease} .learndash-wrapper .learndash_mark_complete_button.ld-button-alternate .ld-text,.learndash-wrapper #learndash_mark_complete_button.ld-button-alternate .ld-text{padding-right:.5em} .learndash-wrapper .learndash_mark_complete_button.ld-button-alternate:hover,.learndash-wrapper #learndash_mark_complete_button.ld-button-alternate:hover{background:transparent} .learndash-wrapper .learndash_mark_complete_button.ld-button-transparent,.learndash-wrapper #learndash_mark_complete_button.ld-button-transparent{color:#00a2e8;background:transparent} .learndash-wrapper .learndash_mark_complete_button.ld-button-transparent.ld-status-complete,.learndash-wrapper #learndash_mark_complete_button.ld-button-transparent.ld-status-complete{color:#019e7c} .learndash-wrapper .learndash_mark_complete_button.ld-button-transparent:hover,.learndash-wrapper #learndash_mark_complete_button.ld-button-transparent:hover{background:transparent} .learndash-wrapper .learndash_mark_complete_button.ld-button-reverse,.learndash-wrapper #learndash_mark_complete_button.ld-button-reverse{background:white;color:#00a2e8} .learndash-wrapper .learndash_mark_complete_button.ld-button-reverse:hover,.learndash-wrapper #learndash_mark_complete_button.ld-button-reverse:hover{background:#00a2e8;color:white} .learndash-wrapper .learndash_mark_complete_button:hover,.learndash-wrapper #learndash_mark_complete_button:hover{opacity:.75;background-color:#00a2e8} .learndash-wrapper .learndash_mark_complete_button:focus,.learndash-wrapper #learndash_mark_complete_button:focus{outline:0;opacity:.75} .learndash-wrapper .learndash_mark_complete_button:disabled,.learndash-wrapper #learndash_mark_complete_button:disabled{cursor:pointer;-webkit-filter:grayscale(100%);filter:grayscale(100%)} .learndash-wrapper .ld-content-actions{clear:both;border-top:2px solid #e2e7ed;padding:1em 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-content-actions .ld-content-action{-webkit-box-flex:0;-ms-flex:0 0 185px;flex:0 0 185px;position:relative} .learndash-wrapper .ld-content-actions>a{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;font-size:.75em} .learndash-wrapper .ld-content-actions .learndash_timer,.learndash-wrapper .ld-content-actions #learndash_timer{position:absolute;top:100%;text-align:center;display:block;padding:1em;right:0;left:0;color:#728188;font-weight:bold} .learndash-wrapper .ld-mobile-only{display:none !important}.learndash-wrapper .ld-loading{position:relative} .learndash-wrapper .ld-loading::after{position:absolute;content:'';display:block;z-index:99;top:0;right:0;left:0;bottom:0;background:rgba(255,255,255,0.5)} .learndash-wrapper .ld-loading::before{content:'';display:block;position:absolute;border-radius:50%;width:40px;z-index:100;height:40px;right:50%;top:50%;margin:-20px -20px 0 0;border:3px solid rgba(0,0,0,0.5);border-top:3px solid #00a2e8;-webkit-animation:ldrotating 1.2s infinite linear;animation:ldrotating 1.2s infinite linear} .learndash-wrapper .ld-group-list{margin-bottom:2em}.learndash-wrapper .ld-item-list{margin:2em 0 1em 0} .learndash-wrapper .ld-item-list .ld-table-list.ld-no-pagination{border-bottom:0 !important} .learndash-wrapper .ld-item-list .ld-item-list-content{padding:1.5em}.learndash-wrapper .ld-item-list .ld-section-heading{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;align-items:center} .learndash-wrapper .ld-item-list .ld-section-heading h3{font-weight:bold}.learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%} .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-progress{-webkit-box-flex:1;-ms-flex:1;flex:1} .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-progress .ld-progress-stats{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end} .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-progress .ld-progress-label{text-transform:none;font-size:1.5em} .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-progress .ld-progress-bar{background-color:#e2e7ed} .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-expand-button{margin-right:1em} .learndash-wrapper .ld-item-list .ld-section-heading .ld-search-prompt{display:-webkit-box;display:-ms-flexbox;display:flex;color:#728188;cursor:pointer;font-weight:800;font-size:.875em;-webkit-transition:color .3s ease;transition:color .3s ease} .learndash-wrapper .ld-item-list .ld-section-heading .ld-search-prompt .ld-icon{width:20px;height:20px;margin-right:5px;font-size:1.4em} .learndash-wrapper .ld-item-list .ld-section-heading .ld-search-prompt:hover{color:#00a2e8} .learndash-wrapper .ld-item-list .ld-item-search{height:auto;max-height:0;-webkit-transition:max-height .3s ease;transition:max-height .3s ease;overflow:hidden} .learndash-wrapper .ld-item-list .ld-item-search h4{margin:0;margin-bottom:.5em;font-weight:bold} .learndash-wrapper .ld-item-list .ld-item-search .ld-closer{position:absolute;top:10px;left:15px;cursor:pointer;font-weight:700;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.625em} .learndash-wrapper .ld-item-list .ld-item-search .ld-closer:before{content:'x';margin-left:.25em} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-wrapper{padding:12px;position:relative;background:#e2e7ed;border-radius:6px;margin:1em 0;overflow:visible} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-wrapper:before{content:'';position:absolute;width:16px;height:16px;top:-8px;right:66px;background:white;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);z-index:9} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-wrapper:before{background:#e2e7ed;z-index:9;right:auto;left:130px} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields>*{-webkit-box-flex:1;-ms-flex:1;flex:1;padding-left:1em} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields label{display:block;margin-bottom:.5em;font-size:.875em;color:#728188} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields input,.learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields select{height:30px;border:2px solid #ccd2d9;background:white;border-radius:0;width:100%;padding:0 .5em} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-name{position:relative} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-name .ld-reset-button{position:absolute;left:18px;bottom:2px;font-weight:700;font-size:12px;background:#fff;height:26px;padding:0 1em;line-height:26px;color:#728188;text-decoration:none;display:inline-block} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-name .ld-reset-button::before{content:'x';margin-left:.25em;display:inline-block} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-name input[type=text]{width:100%} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit{-webkit-box-flex:0;-ms-flex:0 0 100px;flex:0 0 100px;padding-left:0} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button{height:30px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:0;margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;text-align:center;text-decoration:none;cursor:pointer;width:100%;max-width:385px;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:auto;padding:.75em 1.5em;margin:0} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button .ld-icon{font-size:.875em} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button .ld-text{padding:0 1em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button+.ld-button{margin-right:1em} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-compact{padding:0;width:24px;height:24px;border-radius:100%;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-compact .ld-icon{margin-left:0;font-size:.75em} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-compact .ld-text{padding:0} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-alternate{background:transparent;color:#00a2e8;padding:0} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-alternate .ld-icon{background:#00a2e8;color:white;border-radius:100%;width:18px;height:18px;-webkit-box-flex:0;-ms-flex:0 0 18px;flex:0 0 18px;padding:2px;line-height:16px;text-align:center;font-weight:bold;-webkit-transition:color .3s ease,background .3s ease;transition:color .3s ease,background .3s ease} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-alternate .ld-text{padding-right:.5em} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-alternate:hover{background:transparent} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-transparent{color:#00a2e8;background:transparent} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-transparent.ld-status-complete{color:#019e7c} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-transparent:hover{background:transparent} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-reverse{background:white;color:#00a2e8} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-reverse:hover{background:#00a2e8;color:white} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button:hover{opacity:.75;background-color:#00a2e8} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button:focus{outline:0;opacity:.75} .learndash-wrapper .ld-item-list .ld-item-list-item{border:2px solid #e2e7ed;border-radius:6px;margin-bottom:12px;background:#fff} .learndash-wrapper .ld-item-list .ld-item-list-item.ld-is-next{border-color:#00a2e8} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview{padding:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-status-icon{margin-left:.5em;margin-top:.35em} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-name{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%;-webkit-box-align:top;-ms-flex-align:top;align-items:top;color:#495255} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-sep{color:#e2e7ed;padding:0 .5em} .learndash-wrapper .ld-item-list .ld-item-list-item a.ld-item-name:hover{color:#00a2e8} .learndash-wrapper .ld-item-list .ld-item-list-item a.ld-item-name:hover .ld-item-title .ld-item-components{color:#728188} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-title .ld-item-components{font-weight:700;display:block;font-size:.825em;margin-top:.5em;color:#728188} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-title .ld-status{display:inline-block;font-size:.825em} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-title .ld-item-component+.ld-status{margin-right:.5em} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-details{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-details .ld-expand-button{margin-right:1em} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-details .ld-certificate-link{margin-left:15px;font-size:26px;color:#019e7c} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded{position:relative;height:auto;max-height:0;overflow:hidden;-webkit-transition:max-height .5s ease;transition:max-height .5s ease} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded:before{content:'';position:absolute;width:16px;height:16px;top:-8px;right:66px;background:white;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);z-index:9} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded:before{right:64px} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-progress{background:#e2e7ed;padding:2em 4.125em} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-item-contents{padding:2em 4.125em} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-progress{margin-top:0} .learndash-wrapper .ld-table-list{border-radius:6px;overflow:hidden;margin:1.5em 0} .learndash-wrapper .ld-table-list .ld-table-list-header,.learndash-wrapper .ld-table-list .ld-table-list-item-preview{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:20px 0;overflow-wrap:break-word} .learndash-wrapper .ld-table-list .ld-table-list-header a,.learndash-wrapper .ld-table-list .ld-table-list-item-preview a{color:#333} .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-title,.learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-title{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-title a,.learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-title a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-columns,.learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:2;-ms-flex:2;flex:2;padding-right:1em} .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-columns .ld-table-list-column,.learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding-right:.25em;padding-left:.25em} .learndash-wrapper .ld-table-list a.ld-table-list-item-preview{color:#333}.learndash-wrapper .ld-table-list a.ld-table-list-item-preview:hover{color:#00a2e8} .learndash-wrapper .ld-table-list .ld-table-list-header{background-color:#00a2e8;color:white;font-weight:800;padding:20px 22px} .learndash-wrapper .ld-table-list .ld-table-list-items{padding:0 20px;border:2px solid #e2e7ed;border-top:0;border-bottom:0;font-size:.875em;overflow:hidden} .learndash-wrapper .ld-table-list .ld-table-list-item{border-bottom:1px solid #e2e7ed;padding-right:0;padding-left:0} .learndash-wrapper .ld-table-list .ld-table-list-item:last-child{border-bottom:0} .learndash-wrapper .ld-table-list .ld-table-list-item .ld-table-list-title a{color:#333} .learndash-wrapper .ld-table-list .ld-table-list-item .ld-table-list-title a:hover{color:#00a2e8} .learndash-wrapper .ld-table-list .ld-table-list-item .ld-comments-column{color:#728188;font-weight:700;font-size:1.2em} .learndash-wrapper .ld-table-list .ld-table-list-item .ld-comments-column a{color:#728188} .learndash-wrapper .ld-table-list .ld-table-list-item .ld-comments-column .ld-icon-comments{font-size:1.5em;-webkit-transform:translateY(0.2em);-ms-transform:translateY(0.2em);transform:translateY(0.2em)} .learndash-wrapper .ld-table-list .ld-table-list-item-expanded{padding:.75em 2em} .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list{position:relative} .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list:before{content:'';position:absolute;width:16px;height:16px;top:-8px;right:66px;background:white;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);z-index:9} .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list:before{right:32px} .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-header{background-color:#e2e7ed;color:#495255} .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-items{padding-top:0;background:#e2e7ed} .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-item:first-child{border-top:2px solid #495255} .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-item{border-bottom:1px solid rgba(73,82,85,0.2)} .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-item:last-child{border-bottom:0} .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-item-preview{padding:10px;padding-right:0;padding-left:0} .learndash-wrapper .ld-table-list .ld-table-list-footer{background:#e2e7ed;padding:20px} .learndash-wrapper .ld-table-list .ld-table-list-footer .ld-pagination{margin-bottom:0} .learndash-wrapper .ld-table-list.ld-no-pagination{border-bottom:2px solid #e2e7ed} .learndash-wrapper .ld-table-list.ld-no-pagination .ld-table-list-footer{background:transparent;padding:0} .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-columns .ld-table-list-column{font-size:.75em;-webkit-box-flex:0;-ms-flex:0 1 150px;flex:0 1 150px} .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-columns .ld-table-list-column.ld-assignment-column-approved{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:left} .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column{font-size:.875em;-webkit-box-flex:0;-ms-flex:0 1 150px;flex:0 1 150px;line-height:1.4em} .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column .ld-column-label{display:none} .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column.ld-statuscolumn{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:left} .learndash-wrapper .ld-table-list.ld-assignment-list .ld-table-list-item-preview .ld-table-list-title{overflow:hidden} .learndash-wrapper .ld-progress{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:1em 0} .learndash-wrapper .ld-progress .ld-progress-heading{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:.75em;line-height:1em} .learndash-wrapper .ld-progress .ld-progress-heading .ld-progress-label{text-transform:uppercase;font-weight:800} .learndash-wrapper .ld-progress .ld-progress-heading .ld-progress-stats{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start} .learndash-wrapper .ld-progress .ld-progress-heading .ld-progress-stats .ld-progress-percentage{text-transform:uppercase;font-weight:800;color:#019e7c;margin-left:1.5em} .learndash-wrapper .ld-progress .ld-progress-bar{height:7px;background-color:white;border-radius:7px;margin:5px 0;overflow:hidden} .learndash-wrapper .ld-progress .ld-progress-bar .ld-progress-bar-percentage{height:7px;background:#019e7c} .learndash-wrapper .ld-progress.ld-progress-inline{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-progress.ld-progress-inline .ld-progress-bar{-webkit-box-flex:1;-ms-flex:1 auto;flex:1 auto;margin-left:1em} .learndash-wrapper .ld-progress.ld-progress-inline .ld-status{margin-right:1em}.learndash-wrapper .ld-breadcrumbs+.ld-topic-status{padding:0} .learndash-wrapper.learndash-widget .ld-progress{-ms-flex-wrap:wrap;flex-wrap:wrap} .learndash-wrapper.learndash-widget .ld-progress .ld-progress-heading{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:.25em 0} .learndash-wrapper.learndash-widget .ld-progress .ld-progress-bar{background-color:#e2e7ed;width:100%;margin-left:0} .learndash-pager{color:#728188;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;color:#728188;text-transform:uppercase;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:12px;font-weight:700;background-color:#e2e7ed;padding:6px 12px;border-radius:17px;margin:10px 0} .learndash-pager a{font-size:18px;color:#728188;text-decoration:none !important;border:none !important;cursor:pointer;-webkit-box-shadow:none !important;box-shadow:none !important;line-height:1em} .learndash-pager a::before,.learndash-pager a::after{display:none}.learndash-pager a.disabled{opacity:.5;cursor:default} .learndash-pager .pager-left{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1} .learndash-pager .pager-legend{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;padding:0 8px} .learndash-pager .pager-right{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3} .learndash-wrapper .ld-pagination{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;color:#728188;text-transform:uppercase;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:.75em;font-weight:700;margin-bottom:1em} .learndash-wrapper .ld-pagination .ld-pages{background-color:#e2e7ed;-webkit-box-flex:0;-ms-flex:0 0 180px;flex:0 0 180px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5em;border-radius:17px;overflow:hidden;line-height:1} .learndash-wrapper .ld-pagination .ld-pages i{display:block;background-size:contain;background-position:center;background-repeat:no-repeat;color:#728188;cursor:pointer;-webkit-transition:color .3s ease;transition:color .3s ease} .learndash-wrapper .ld-pagination .ld-pages i:hover{color:#00a2e8}.learndash-wrapper .ld-pagination .ld-pages a{color:#728188;-webkit-transition:all ease-in-out 250ms;transition:all ease-in-out 250ms} .learndash-wrapper .ld-pagination .ld-pages a:hover{color:#333}.learndash-wrapper .ld-pagination .ld-pages a.disabled{pointer-events:none;opacity:.25} .learndash-wrapper .ld-item-list-item-expanded .ld-pagination .ld-pages{-webkit-box-flex:0;-ms-flex:0 0 100px;flex:0 0 100px;padding:0 10px} .learndash-wrapper .ld-table-list-footer .ld-pagination .ld-pages{-webkit-box-flex:0;-ms-flex:0 0 120px;flex:0 0 120px} .learndash-wrapper .ld-section-heading h3{font-size:24px;margin:.5em 0}.learndash-wrapper .ld-score{font-weight:700} .learndash-wrapper .ld-score.score-low{color:#ff3c00}.learndash-wrapper .ld-score.score-high{color:#019e7c} .learndash-wrapper .ld-expand-button{margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;text-align:center;text-decoration:none;cursor:pointer;width:100%;max-width:385px;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:auto;padding:.75em 1.5em;display:flex;align-items:center} .learndash-wrapper .ld-expand-button .ld-icon{font-size:.875em}.learndash-wrapper .ld-expand-button .ld-text{padding:0 1em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center} .learndash-wrapper .ld-expand-button+.ld-button{margin-right:1em}.learndash-wrapper .ld-expand-button.ld-compact{padding:0;width:24px;height:24px;border-radius:100%;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .ld-expand-button.ld-compact .ld-icon{margin-left:0;font-size:.75em} .learndash-wrapper .ld-expand-button.ld-compact .ld-text{padding:0}.learndash-wrapper .ld-expand-button.ld-button-alternate{background:transparent;color:#00a2e8;padding:0} .learndash-wrapper .ld-expand-button.ld-button-alternate .ld-icon{background:#00a2e8;color:white;border-radius:100%;width:18px;height:18px;-webkit-box-flex:0;-ms-flex:0 0 18px;flex:0 0 18px;padding:2px;line-height:16px;text-align:center;font-weight:bold;-webkit-transition:color .3s ease,background .3s ease;transition:color .3s ease,background .3s ease} .learndash-wrapper .ld-expand-button.ld-button-alternate .ld-text{padding-right:.5em} .learndash-wrapper .ld-expand-button.ld-button-alternate:hover{background:transparent} .learndash-wrapper .ld-expand-button.ld-button-transparent{color:#00a2e8;background:transparent} .learndash-wrapper .ld-expand-button.ld-button-transparent.ld-status-complete{color:#019e7c} .learndash-wrapper .ld-expand-button.ld-button-transparent:hover{background:transparent} .learndash-wrapper .ld-expand-button.ld-button-reverse{background:white;color:#00a2e8} .learndash-wrapper .ld-expand-button.ld-button-reverse:hover{background:#00a2e8;color:white} .learndash-wrapper .ld-expand-button:hover{opacity:.75;background-color:#00a2e8}.learndash-wrapper .ld-expand-button:focus{outline:0;opacity:.75} .learndash-wrapper .ld-expand-button.ld-expanded .ld-icon{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)} .learndash-wrapper .ld-expand-button.ld-button-alternate .ld-text{text-align:right} .learndash-wrapper .ld-status{border-radius:12px;background-color:#e2e7ed;text-align:center;padding:5px 12px;text-transform:uppercase;font-weight:700;letter-spacing:.5px;font-size:11px;line-height:1.1;color:#728188;display:block} .learndash-wrapper .ld-status-icon{-ms-flex-preferred-size:26px;flex-basis:26px;-ms-flex-negative:0;flex-shrink:0;height:26px;width:26px;border-radius:100%;display:inline-block;position:relative;text-align:center} .learndash-wrapper .ld-status-icon .ld-icon{font-size:1.5em}.learndash-wrapper .ld-status-icon .ld-icon:before{position:absolute;top:50%;right:50%;-webkit-transform:translateY(-50%) translateX(50%);-ms-transform:translateY(-50%) translateX(50%);transform:translateY(-50%) translateX(50%)} .learndash-wrapper .ld-status-icon.ld-status-complete .ld-icon{font-size:1em}.learndash-wrapper .ld-status-icon.ld-quiz-complete{color:#019e7c} .learndash-wrapper .ld-status-complete{background-color:#019e7c;color:white}.learndash-wrapper a.ld-status-complete:link,.learndash-wrapper a.ld-status-complete:visited,.learndash-wrapper a.ld-status-complete:focus{color:white} .learndash-wrapper .ld-status-waiting{background-color:#ffd200;color:rgba(0,0,0,0.65)} .learndash-wrapper .ld-status-unlocked{background-color:#ebf8fd;color:#00a2e8}.learndash-wrapper .ld-status-incomplete.ld-status-icon{border:4px solid #e2e7ed;background-color:white} .learndash-wrapper .ld-status-in-progress{border:4px solid #e2e7ed;border-right-color:#019e7c;border-top-color:#019e7c;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);background-color:white} .learndash-wrapper .ld-certificate-icon{width:40px;height:30px;background:#019e7c;display:block;margin:auto} .learndash-wrapper .ld-item-icon{margin-left:.25em;-ms-flex-negative:0;flex-shrink:0;font-size:1.4em} .learndash-wrapper .ld-item-icon.quiz-failure{color:#ff3c00}.learndash-wrapper .ld-item-icon.ld-quiz-complete{color:#019e7c} .learndash-wrapper .ld-item-icon.ld-quiz-incomplete{color:#333}.learndash-wrapper .ld-icon-delete{font-size:1.8em;color:#7b8990;margin-left:.25em} .learndash-wrapper .ld-icon-delete:hover{color:#333}.learndash-wrapper .ld-home-link{color:#495255;font-size:.75em;margin:0 0 .75em 0;text-decoration:underline} .learndash-wrapper .ld-home-link:hover{text-decoration:none}.learndash-wrapper .ld-text-content{color:#666;line-height:1.6;margin:1.5em 0} .learndash-wrapper .ld-select-field{position:relative}.learndash-wrapper .ld-select-field:after{font-family:'ld-icons' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;content:"\e90e";position:absolute;top:50%;left:.5em;z-index:9;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);pointer-events:none} .learndash-wrapper .ld-select-field select{-webkit-appearance:none;-moz-appearance:none;appearance:none} .learndash-wrapper .ld-file-upload{padding:1.5em;background-color:#f0f3f6;border-radius:6px;margin:1em 0} .learndash-wrapper .ld-file-upload .ld-file-upload-heading{color:#728188;font-size:1.2em;font-weight:700} .learndash-wrapper .ld-file-upload .ld-file-upload-heading span{font-weight:300;font-size:.8em} .learndash-wrapper .ld-file-upload .ld-file-upload-form{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:1em;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input+label{font-weight:700;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;background-color:white;border-top-right-radius:12px;border-bottom-right-radius:12px;overflow:hidden;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input+label strong{background-color:#728188;font-weight:700;color:white;padding:.5em 2em;font-size:.875em} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input+label span{color:#333;font-size:.875em;font-style:italic;border-top-left-radius:12px;border-bottom-left-radius:12px;padding:.5em 2em;white-space:nowrap;text-overflow:ellipsis;overflow:hidden} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-button{-webkit-box-flex:0;-ms-flex:0 0 150px;flex:0 0 150px;height:35px;text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:.875em;opacity:.5} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-selected+.ld-button{opacity:1} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input+label{cursor:pointer;border-top-left-radius:12px;border-bottom-left-radius:12px;margin-left:.5em} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input:focus+label,.learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input.has-focus+label{outline:1px dotted #000;outline:-webkit-focus-ring-color auto 5px} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-upload-message{font-size:.8em;margin-top:1em;line-height:1.5em} .learndash-wrapper .ld-hide{display:none}.learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading,.learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading{margin-bottom:1.5em} .learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading h2,.learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading h2{margin:0;padding:0;font-size:24px} .learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading .ld-item-list-actions,.learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading .ld-item-list-actions{width:auto;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end} .learndash-wrapper .ld-item-list.ld-course-list .ld-lesson-section-heading,.learndash-wrapper .ld-item-list.ld-lesson-list .ld-lesson-section-heading{font-size:18px;display:block;margin:1em 0 .5em 0;font-weight:bold} .learndash-wrapper .ld-lesson-list.ld-item-list .ld-item-list-item .ld-table-list{border-radius:0;margin-top:0;margin:0} .learndash-wrapper .ld-lesson-list.ld-item-list .ld-item-list-item .ld-table-list .ld-table-list-items{border:0} .learndash-wrapper .ld-item-list.ld-lesson-list .ld-topic-list .ld-table-list-header{padding:20px 60px} .learndash-wrapper .ld-item-list.ld-lesson-list .ld-topic-list .ld-table-list-item{margin:0 2.8em} .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-lesson-details{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:.75em;line-height:1em} .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-lesson-details .ld-lesson-list-progress{text-transform:uppercase;padding-left:10px;margin-left:10px;border-left:1px solid rgba(255,255,255,0.5)} .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-lesson-details .ld-lesson-list-steps{font-weight:normal} .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-preview{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start} .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-preview .ld-status-icon{margin-left:.5em} .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-expanded{padding-top:0} .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-expanded .ld-status{display:inline-block} .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-item.unavailable .ld-table-list-item-preview{opacity:.5} .learndash-wrapper .ld-topic-status{border-radius:6px;background:#f0f3f6;overflow:hidden} .learndash-wrapper .ld-topic-status .ld-progress{padding:0 1em}.learndash-wrapper .quiz_continue_link{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around;margin:10px} .learndash-wrapper .ld-quiz-actions{border-top:2px solid #f0f3f6;margin-top:30px;padding-top:30px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:20px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse} .learndash-wrapper .ld-quiz-actions .quiz_continue_link{margin:0 10px}.learndash-wrapper .ld-quiz-actions .wpProQuiz_button{margin:0 10px;background:#495255} .learndash-wrapper .ld-quiz-actions input[type='button']{margin:0 10px} .learndash-wrapper .ld-quiz-actions input[name="reShowQuestion"],.learndash-wrapper .ld-quiz-actions input[name="restartQuiz"]{background:#495255} .learndash-wrapper #quiz_continue_link{background:#019e7c}.learndash-wrapper #quiz_continue_link:hover{background:#019e7c} .learndash-wrapper .course_progress{height:7px;max-width:100%;background-color:#f0f3f6;border-radius:7px;margin:1em 0;overflow:hidden} .learndash-wrapper .course_progress .sending_progress_bar{height:7px;background:#019e7c} .learndash-wrapper .wpProQuiz_content .wpProQuiz_lock,.learndash-wrapper .wpProQuiz_content .wpProQuiz_loadQuiz,.learndash-wrapper .wpProQuiz_content .wpProQuiz_prerequisite,.learndash-wrapper .wpProQuiz_content .wpProQuiz_startOnlyRegisteredUser{padding:25px 75px 25px 15px;background-color:#f0f3f6;border-radius:6px;margin:1em 0;border:2px solid #e2e7ed;color:#728188;position:relative;min-height:85px} .learndash-wrapper .wpProQuiz_content .wpProQuiz_lock p,.learndash-wrapper .wpProQuiz_content .wpProQuiz_loadQuiz p,.learndash-wrapper .wpProQuiz_content .wpProQuiz_prerequisite p,.learndash-wrapper .wpProQuiz_content .wpProQuiz_startOnlyRegisteredUser p{margin:0;padding:0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable{border:5px solid #f0f3f6;border-radius:4px;padding:0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable table,.learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable table tbody{border:0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable table tbody td{padding:15px;border:0 !important} .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable .wpProQuiz_resultValue div{-webkit-box-shadow:none;box-shadow:none} .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable .wpProQuiz_resultName{line-height:1.2em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_certificate{text-align:center}.learndash-wrapper .wpProQuiz_content .wpProQuiz_certificate a.btn-blue{margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;display:inline-block;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;display:inline-block;padding:.5em 1em;text-align:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-decoration:none;cursor:pointer;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2{margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;text-align:center;text-decoration:none;cursor:pointer;width:100%;max-width:385px;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:auto;padding:.75em 1.5em;width:auto} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button .ld-icon,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2 .ld-icon{font-size:.875em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button .ld-text,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2 .ld-text{padding:0 1em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button+.ld-button,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2+.ld-button{margin-right:1em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-compact,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-compact{padding:0;width:24px;height:24px;border-radius:100%;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-compact .ld-icon,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-compact .ld-icon{margin-left:0;font-size:.75em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-compact .ld-text,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-compact .ld-text{padding:0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-alternate,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-alternate{background:transparent;color:#00a2e8;padding:0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-alternate .ld-icon,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-alternate .ld-icon{background:#00a2e8;color:white;border-radius:100%;width:18px;height:18px;-webkit-box-flex:0;-ms-flex:0 0 18px;flex:0 0 18px;padding:2px;line-height:16px;text-align:center;font-weight:bold;-webkit-transition:color .3s ease,background .3s ease;transition:color .3s ease,background .3s ease} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-alternate .ld-text,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-alternate .ld-text{padding-right:.5em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-alternate:hover,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-alternate:hover{background:transparent} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-transparent,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-transparent{color:#00a2e8;background:transparent} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-transparent.ld-status-complete,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-transparent.ld-status-complete{color:#019e7c} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-transparent:hover,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-transparent:hover{background:transparent} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-reverse,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-reverse{background:white;color:#00a2e8} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-reverse:hover,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-reverse:hover{background:#00a2e8;color:white} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button:hover,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2:hover{opacity:.75;background-color:#00a2e8} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button:focus,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2:focus{outline:0;opacity:.75} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link{margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;text-align:center;text-decoration:none;cursor:pointer;width:100%;max-width:385px;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:auto;padding:.75em 1.5em;text-align:center;-ms-flex-pack:distribute;justify-content:space-around;background:#019e7c} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link .ld-icon{font-size:.875em} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link .ld-text{padding:0 1em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link+.ld-button{margin-right:1em} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-compact{padding:0;width:24px;height:24px;border-radius:100%;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-compact .ld-icon{margin-left:0;font-size:.75em} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-compact .ld-text{padding:0} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-alternate{background:transparent;color:#00a2e8;padding:0} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-alternate .ld-icon{background:#00a2e8;color:white;border-radius:100%;width:18px;height:18px;-webkit-box-flex:0;-ms-flex:0 0 18px;flex:0 0 18px;padding:2px;line-height:16px;text-align:center;font-weight:bold;-webkit-transition:color .3s ease,background .3s ease;transition:color .3s ease,background .3s ease} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-alternate .ld-text{padding-right:.5em} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-alternate:hover{background:transparent} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-transparent{color:#00a2e8;background:transparent} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-transparent.ld-status-complete{color:#019e7c} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-transparent:hover{background:transparent} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-reverse{background:white;color:#00a2e8} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-reverse:hover{background:#00a2e8;color:white} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link:hover{opacity:.75;background-color:#00a2e8} .learndash-wrapper .wpProQuiz_content a#quiz_continue_link:focus{outline:0;opacity:.75} .learndash-wrapper .wpProQuiz_content .wpProQuiz_question{padding-bottom:1em}.learndash-wrapper .wpProQuiz_content ul.wpProQuiz_questionList{margin:1em 0;background:transparent;border:0;padding:0;list-style:none;padding-right:0 !important;margin-right:0 !important} .learndash-wrapper .wpProQuiz_content ul.wpProQuiz_questionList[data-type="essay"] li.wpProQuiz_questionListItem{-ms-flex-wrap:wrap;flex-wrap:wrap} .learndash-wrapper .wpProQuiz_content ul.wpProQuiz_questionList input.wpProQuiz_questionInput{max-width:100%;width:2%} .learndash-wrapper .wpProQuiz_content ul.wpProQuiz_questionList span{margin-left:0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewQuestion{padding:5px}.learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewQuestion ol{margin:0 !important;padding:0 !important;line-height:1.5em !important} .learndash-wrapper .wpProQuiz_content .graded-disclaimer{margin-top:1em;font-size:.85em;font-style:italic} .learndash-wrapper .wpProQuiz_content .wpProQuiz_matrixSortString{margin:1em 0;background:transparent;border:0;padding:0} .learndash-wrapper .wpProQuiz_content ul.wpProQuiz_sortStringList{padding:0;margin:1em 0 !important;padding:0 !important} .learndash-wrapper .wpProQuiz_content .wpProQuiz_sortStringItem{display:inline-block;border:0;background:#f0f3f6;border-radius:6px;margin:0 0 .5em .5em;padding:.5em 1em;-webkit-box-shadow:none;box-shadow:none} .learndash-wrapper .wpProQuiz_content .wpProQuiz_mextrixTr .wpProQuiz_sortStringItem{margin:.5em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_tipp>div{background-color:#f0f3f6;padding:1em;border-radius:6px;margin:1em 0;width:auto;-webkit-box-shadow:0 0;box-shadow:0 0;border:0;margin-right:1em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_tipp>div:before{content:'';position:absolute;width:16px;height:16px;top:-8px;right:66px;background:white;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);z-index:9} .learndash-wrapper .wpProQuiz_content .wpProQuiz_tipp>div:before{right:1em;bottom:-4px;top:auto;background-color:#f0f3f6} .learndash-wrapper .wpProQuiz_content .wpProQuiz_tipp>div h5{padding-bottom:0;font-weight:bold;text-transform:uppercase;font-size:.8em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="cloze_answer"] p{padding-bottom:0;padding-left:.25em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem{margin-bottom:.5em;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem p{text-align:right} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem .wpProQuiz_sortable{border:2px solid #e2e7ed;border-radius:6px;background:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;padding:1em;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-shadow:none;box-shadow:none;width:100%} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem .wpProQuiz_sortable:before{font-family:'ld-icons' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;content:"\e904";margin-left:1em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem span.wpProQuiz_cloze{margin:0 5px} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:2px solid #e2e7ed;border-radius:6px;padding:1em;width:100%} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label input{margin-left:1em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label input.wpProQuiz_questionInput[type='text']{border:0;-webkit-box-shadow:none;box-shadow:none;width:100%} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label.is-selected,.learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label:focus-within{border-color:#00a2e8} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem textarea.wpProQuiz_questionEssay{border:2px solid #e2e7ed;border-radius:6px;width:100%;padding:1em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect{background:transparent} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect label{background:#019e7c;color:white} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect .wpProQuiz_sortable{background:#019e7c;color:white} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerIncorrect{background:transparent} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerIncorrect label{border-color:red} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerIncorrect .wpProQuiz_sortable{border-color:red} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrectIncomplete{background:transparent;border:1px solid transparent !important} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrectIncomplete label{border-color:#019e7c} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrectIncomplete .wpProQuiz_sortable{border-color:#019e7c} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem .wpProQuiz_cloze{display:inline-block;background:#e2e7ed;border-radius:6px;padding:2px .5em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem .wpProQuiz_cloze input{border:0;background-color:transparent} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem>table{border-collapse:separate;border:0;border:2px solid #e2e7ed;border-radius:6px} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem>table td{border:0;padding:0 !important;vertical-align:top} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem>table td:first-child{border-left:2px solid #e2e7ed} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem>table td .wpProQuiz_maxtrixSortText{display:block;padding:1em;border-top-left-radius:0;border-bottom-left-radius:0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem>table td .wpProQuiz_maxtrixSortCriterion{padding:.5em;border-right:0;height:100%;border-top-right-radius:0;border-bottom-right-radius:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect>table{border-color:#019e7c} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect>table td{background-color:#019e7c;border-color:#019e7c} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect>table td .wpProQuiz_maxtrixSortText{background-color:none;color:none} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect>table td .wpProQuiz_maxtrixSortCriterion .wpProQuiz_sortStringItem{background-color:none;color:none} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerIncorrect>table{border-color:red} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerIncorrect>table td{border-color:red} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="assessment_answer"] .wpProQuiz_questionListItem{border:2px solid #e2e7ed;border-radius:6px;padding:1em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="assessment_answer"] .wpProQuiz_questionListItem p{margin:0;padding:0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="assessment_answer"] label{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;color:#728188;padding:0;border:0;margin:0 .25em;width:auto;font-weight:bold} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="assessment_answer"] label input{margin-left:.5em;height:.8em;width:.8em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="cloze_answer"] .wpProQuiz_questionListItem .wpProQuiz_cloze .wpProQuiz_answerCorrect{background-color:#019e7c} .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="cloze_answer"] .wpProQuiz_questionListItem .wpProQuiz_cloze .wpProQuiz_answerIncorrect{background-color:red} .learndash-wrapper .wpProQuiz_content .wpProQuiz_header{font-weight:bold;margin:.5em 0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_response{padding:25px 75px 25px 15px;background-color:#f0f3f6;border-radius:6px;margin:1em 0;border:2px solid #e2e7ed;color:#728188;position:relative;min-height:85px;padding:25px;background-color:#f0f3f6;text-align:center;-webkit-box-shadow:none;box-shadow:none;min-height:none} .learndash-wrapper .wpProQuiz_content .wpProQuiz_response p{margin:0;padding:0}.learndash-wrapper .wpProQuiz_content .wpProQuiz_response img{max-width:100%;height:auto} .learndash-wrapper .wpProQuiz_content .wpProQuiz_listItem .wpProQuiz_question ul.wpProQuiz_questionList{margin:0;padding:0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_listItem[data-type="cloze_answer"] .wpProQuiz_questionListItem{display:block} .learndash-wrapper .wpProQuiz_content .wpProQuiz_time_limit{margin:1em 0;background-color:#e2e7ed;border-radius:6px;position:relative;padding:1em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_time_limit:before{content:'';position:absolute;bottom:1em;right:1em;left:1em;height:7px;z-index:8;background:white} .learndash-wrapper .wpProQuiz_content .wpProQuiz_time_limit .time{color:#728188}.learndash-wrapper .wpProQuiz_content .wpProQuiz_time_limit .wpProQuiz_progress{z-index:9;position:relative;background-color:#019e7c;height:7px;margin-bottom:0} .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table{width:100%}.learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td:first-child{width:150px;font-size:.9em;font-weight:700} .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td input[type=text],.learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td select,.learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td textarea{width:100%} .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='5'] label,.learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='8'] label{display:inline-block;margin-right:.5em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='6']{display:-webkit-box;display:-ms-flexbox;display:flex} .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='6'] select{margin-left:1%} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay]{padding:1.5em;background-color:#f0f3f6;border-radius:6px;margin:1em 0;margin:1em 0;-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=file]{background:white;padding:1em;border-radius:6px;-webkit-box-flex:1;-ms-flex:1;flex:1;margin-left:1em} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit]{margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;text-align:center;text-decoration:none;cursor:pointer;width:100%;max-width:385px;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:auto;padding:.75em 1.5em;max-width:100px} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit] .ld-icon{font-size:.875em} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit] .ld-text{padding:0 1em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit]+.ld-button{margin-right:1em} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-compact{padding:0;width:24px;height:24px;border-radius:100%;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-compact .ld-icon{margin-left:0;font-size:.75em} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-compact .ld-text{padding:0} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-alternate{background:transparent;color:#00a2e8;padding:0} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-alternate .ld-icon{background:#00a2e8;color:white;border-radius:100%;width:18px;height:18px;-webkit-box-flex:0;-ms-flex:0 0 18px;flex:0 0 18px;padding:2px;line-height:16px;text-align:center;font-weight:bold;-webkit-transition:color .3s ease,background .3s ease;transition:color .3s ease,background .3s ease} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-alternate .ld-text{padding-right:.5em} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-alternate:hover{background:transparent} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-transparent{color:#00a2e8;background:transparent} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-transparent.ld-status-complete{color:#019e7c} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-transparent:hover{background:transparent} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-reverse{background:white;color:#00a2e8} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-reverse:hover{background:#00a2e8;color:white} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit]:hover{opacity:.75;background-color:#00a2e8} .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit]:focus{outline:0;opacity:.75} .learndash-wrapper .wpProQuiz_quiz_time{color:#728188;font-weight:bold;font-size:.8em} .learndash-wrapper .wpProQuiz_graded_points,.learndash-wrapper .wpProQuiz_points{padding:1em;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#f0f3f6;border-radius:6px;margin:1em 0;border:2px solid #e2e7ed;color:#728188} .learndash-wrapper .wpProQuiz_content .wpProQuiz_box{background:#f0f3f6;border:0;border-radius:3px;overflow:auto} .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li{-webkit-box-shadow:0 0;box-shadow:0 0;border:0;border-radius:2px} .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionTarget{-webkit-box-shadow:0 0;box-shadow:0 0;background-color:#00a2e8;color:#fff} .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionSolved{color:#fff} .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionReview{color:#fff} .learndash-wrapper .wpProQuiz_reviewDiv{margin-bottom:2em;padding-bottom:2em;border-bottom:2px solid #f0f3f6} .learndash-wrapper .wpProQuiz_reviewDiv .wpProQuiz_reviewQuestion{background:#f0f3f6;border:0;border-radius:3px} .learndash-wrapper .wpProQuiz_reviewDiv .wpProQuiz_reviewQuestion li{-webkit-box-shadow:0 0;box-shadow:0 0;border:0;border-radius:2px} .learndash-wrapper .wpProQuiz_reviewDiv .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionTarget{-webkit-box-shadow:0 0;box-shadow:0 0;background-color:#00a2e8;color:#fff} .learndash-wrapper .wpProQuiz_reviewDiv .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionSolved{color:#fff} .learndash-wrapper .wpProQuiz_reviewDiv .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionReview{color:#fff} .learndash-wrapper .ld-course-navigation .ld-course-navigation-heading{border-bottom:4px solid #e2e7ed;padding-bottom:12px} .learndash-wrapper .ld-course-navigation .ld-course-navigation-heading h3{margin-top:0} .learndash-wrapper .ld-course-navigation .ld-course-navigation-actions .ld-home-link{display:block} .learndash-wrapper .ld-course-navigation .ld-course-navigation-actions .ld-expand-button{margin-right:0;font-size:12px} .learndash-wrapper .ld-course-navigation .ld-course-navigation-actions .ld-expand-button .ld-icon{font-size:10px} .learndash-wrapper .ld-course-navigation .ld-status-icon{width:15px;height:15px;-webkit-box-flex:0;-ms-flex:0 0 15px;flex:0 0 15px;border:0;text-align:center;margin-left:10px;margin-top:.15em} .learndash-wrapper .ld-course-navigation .ld-status-icon .ld-icon-checkmark{font-size:.825em;margin-top:1px} .learndash-wrapper .ld-course-navigation .ld-status-icon.ld-status-in-progress{border:2px solid #e2e7ed;border-right-color:#019e7c;border-top-color:#019e7c} .learndash-wrapper .ld-course-navigation .ld-status-icon.ld-status-incomplete{border:2px solid #e2e7ed} .learndash-wrapper .ld-course-navigation .ld-status-icon .ld-icon-quiz{font-size:1.1em;margin-top:-2px} .learndash-wrapper .ld-course-navigation .ld-item-icon{width:14px;height:20px;font-size:1em} .learndash-wrapper .ld-course-navigation .ld-pagination{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:1em 0} .learndash-wrapper .ld-course-navigation .ld-pagination .ld-pages{-webkit-box-flex:0;-ms-flex:0 0 120px;flex:0 0 120px;background-color:#728188} .learndash-wrapper .ld-course-navigation .ld-pagination .ld-pages i,.learndash-wrapper .ld-course-navigation .ld-pagination .ld-pages span{color:white} .learndash-wrapper .ld-course-navigation .ld-lesson-item{border-bottom:1px solid #e2e7ed} .learndash-wrapper .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-lesson-item-preview-heading,.learndash-wrapper .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-lesson-title{color:#00a2e8;font-weight:bold} .learndash-wrapper .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-lesson-item-preview-heading .ld-status-incomplete,.learndash-wrapper .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-lesson-title .ld-status-incomplete{border:2px solid #00a2e8} .learndash-wrapper .ld-course-navigation .ld-sep{color:#e2e7ed;padding:0 .25em}.learndash-wrapper .ld-course-navigation .ld-lesson-item-section-heading{margin-top:1em} .learndash-wrapper .ld-course-navigation .ld-lesson-item-section-heading .ld-lesson-section-heading{font-size:1em;font-weight:bold;margin-bottom:.25em;text-align:right;display:block} .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview{padding:10px 0}.learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-lesson-item-preview-heading{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;line-height:1.25em} .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview a.ld-lesson-item-preview-heading{color:#495255} .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview a.ld-lesson-item-preview-heading:hover{color:#00a2e8} .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-lesson-title{font-size:.875em;font-weight:400;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex} .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-lesson-title .ld-status-icon{margin-right:.5em} .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-lesson-title .ld-status-icon .ld-icon{font-size:.825em;margin-top:1px} .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-expand-button{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;padding-right:2em;padding-top:.5em;color:#728188} .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-expand-button .ld-icon{font-size:.625em} .learndash-wrapper .ld-course-navigation .ld-lesson-item-expanded{height:auto;max-height:0;-webkit-transition:max-height .3s ease;transition:max-height .3s ease;overflow:hidden;background:#f0f3f6;border-radius:8px;margin:0 20px 0 20px;position:relative} .learndash-wrapper .ld-course-navigation .ld-lesson-item-expanded::before{content:'';display:block;right:50px;top:0;position:absolute;width:0;height:0;border-right:8px solid transparent;border-left:8px solid transparent;border-top:8px solid #fff} .learndash-wrapper .ld-course-navigation .ld-lesson-item-expanded.ld-expanded{max-height:20000px;margin-bottom:1em} .learndash-wrapper .ld-course-navigation .ld-lesson-item-expanded .ld-table-list-items{padding:1em .5em} .learndash-wrapper .ld-course-navigation .ld-table-list-header{display:none}.learndash-wrapper .ld-course-navigation .ld-table-list-footer{background:transparent;padding:.25em !important} .learndash-wrapper .ld-course-navigation .ld-table-list.ld-topic-list{margin:0}.learndash-wrapper .ld-course-navigation .ld-table-list.ld-topic-list .ld-table-list-items{border:0;padding-left:0} .learndash-wrapper .ld-course-navigation .ld-table-list.ld-topic-list .ld-table-list-item{font-size:.9em;border-bottom:0;line-height:1.5em} .learndash-wrapper .ld-course-navigation .ld-table-list.ld-topic-list .ld-table-list-item .ld-table-list-item-preview{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:.5em} .learndash-wrapper .ld-course-navigation .ld-table-list.ld-topic-list .ld-table-list-item .ld-table-list-item-preview.ld-is-current-item{font-weight:bold} .learndash-wrapper .widget_course_return{margin-top:1em;font-size:.8em}.learndash-wrapper .ld-profile-summary{margin:2em 0} .learndash-wrapper .ld-profile-summary .ld-profile-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;margin:1.5em 0} .learndash-wrapper .ld-profile-summary .ld-profile-card .ld-profile-avatar{width:150px;height:150px;border:5px solid #e2e7ed} .learndash-wrapper .ld-profile-summary .ld-profile-card .ld-profile-heading{font-size:2em;font-weight:800;margin:5px 0} .learndash-wrapper .ld-profile-summary .ld-profile-card .ld-profile-edit-link{color:#728188;font-size:14px} .learndash-wrapper .ld-profile-summary .ld-profile-stats{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .ld-profile-summary .ld-profile-stats .ld-profile-stat{-webkit-box-flex:0;-ms-flex:0 0 90px;flex:0 0 90px;text-align:center;border-left:1px solid #e2e7ed;padding:0 12px} .learndash-wrapper .ld-profile-summary .ld-profile-stats .ld-profile-stat strong{display:block;font-size:36px;margin-bottom:8px;font-weight:800} .learndash-wrapper .ld-profile-summary .ld-profile-stats .ld-profile-stat span{color:#728188;font-size:14px} .learndash-wrapper .ld-profile-summary .ld-profile-stats .ld-profile-stat:last-child{border-left:0} .learndash-wrapper #ld-profile .ld-section-heading{margin-bottom:0}.learndash-wrapper #ld-profile .ld-quiz-list .ld-table-list-item-preview+.ld-table-list-item-expanded{margin-top:-20px} .learndash-wrapper #ld-profile .ld-quiz-list .ld-table-list-item-preview+.ld-table-list-item-expanded .ld-essay-list{margin-top:0} .learndash-wrapper #ld-profile .ld-item-list-item-preview .ld-status{white-space:nowrap} #wpProQuiz_overlay_close{margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;text-align:center;text-decoration:none;cursor:pointer;width:100%;max-width:385px;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:auto;padding:.75em 1.5em;max-width:180px} #wpProQuiz_overlay_close .ld-icon{font-size:.875em}#wpProQuiz_overlay_close .ld-text{padding:0 1em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center} #wpProQuiz_overlay_close+.ld-button{margin-right:1em}#wpProQuiz_overlay_close.ld-compact{padding:0;width:24px;height:24px;border-radius:100%;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} #wpProQuiz_overlay_close.ld-compact .ld-icon{margin-left:0;font-size:.75em}#wpProQuiz_overlay_close.ld-compact .ld-text{padding:0} #wpProQuiz_overlay_close.ld-button-alternate{background:transparent;color:#00a2e8;padding:0} #wpProQuiz_overlay_close.ld-button-alternate .ld-icon{background:#00a2e8;color:white;border-radius:100%;width:18px;height:18px;-webkit-box-flex:0;-ms-flex:0 0 18px;flex:0 0 18px;padding:2px;line-height:16px;text-align:center;font-weight:bold;-webkit-transition:color .3s ease,background .3s ease;transition:color .3s ease,background .3s ease} #wpProQuiz_overlay_close.ld-button-alternate .ld-text{padding-right:.5em}#wpProQuiz_overlay_close.ld-button-alternate:hover{background:transparent} #wpProQuiz_overlay_close.ld-button-transparent{color:#00a2e8;background:transparent} #wpProQuiz_overlay_close.ld-button-transparent.ld-status-complete{color:#019e7c}#wpProQuiz_overlay_close.ld-button-transparent:hover{background:transparent} #wpProQuiz_overlay_close.ld-button-reverse{background:white;color:#00a2e8}#wpProQuiz_overlay_close.ld-button-reverse:hover{background:#00a2e8;color:white} #wpProQuiz_overlay_close:hover{opacity:.75;background-color:#00a2e8}#wpProQuiz_overlay_close:focus{outline:0;opacity:.75} #wpProQuiz_user_content h2{border-bottom:2px solid #f0f3f6;font-size:24px;padding:.5em 0} #wpProQuiz_user_content h2+h2{font-size:18px;border-bottom:0}#wpProQuiz_user_content table.wp-list-table{border-radius:8px;border-collapse:collapse;background:transparent;border:0} #wpProQuiz_user_content table.wp-list-table tr,#wpProQuiz_user_content table.wp-list-table td,#wpProQuiz_user_content table.wp-list-table th{background:transparent} #wpProQuiz_user_content table.wp-list-table thead th{background:#00a2e8;color:#fff;border-bottom:0;padding:25px 15px;font-size:14px;line-height:1;white-space:nowrap} #wpProQuiz_user_content table.wp-list-table thead th:first-child{border-radius:0 8px 0 0} #wpProQuiz_user_content table.wp-list-table thead th:last-child{border-radius:8px 0 0 0} #wpProQuiz_user_content table.wp-list-table tbody tr.categoryTr th{background:#f0f3f6;padding:15px;border-bottom:1px solid #f0f3f6;line-height:1;white-space:nowrap;text-align:center} #wpProQuiz_user_content table.wp-list-table tbody tr.categoryTr th:first-child,#wpProQuiz_user_content table.wp-list-table tbody tr.categoryTr th:only-child{text-align:right} #wpProQuiz_user_content table.wp-list-table tbody tr th{padding:15px;font-weight:normal;font-size:16px;text-align:center} #wpProQuiz_user_content table.wp-list-table tbody tr th p{margin:0 0 5px 0}#wpProQuiz_user_content table.wp-list-table tbody tr th:first-child{-webkit-box-shadow:inset -3px 0 0 0 #f0f3f6;box-shadow:inset -3px 0 0 0 #f0f3f6} #wpProQuiz_user_content table.wp-list-table tbody tr th:last-child{-webkit-box-shadow:inset 3px 0 0 0 #f0f3f6;box-shadow:inset 3px 0 0 0 #f0f3f6} #wpProQuiz_user_content table.wp-list-table tbody tr th:nth-child(2){text-align:right} #wpProQuiz_user_content table.wp-list-table tbody tr th:only-child{-webkit-box-shadow:inset 3px 0 0 0 #f0f3f6,inset -3px 0 0 0 #f0f3f6;box-shadow:inset 3px 0 0 0 #f0f3f6,inset -3px 0 0 0 #f0f3f6} #wpProQuiz_user_content table.wp-list-table tbody tr.categoryTr th:nth-child(2){text-align:center} #wpProQuiz_user_content table.wp-list-table tfoot tr{border-bottom:0}#wpProQuiz_user_content table.wp-list-table tfoot tr th{background:#f0f3f6;border:0;padding:15px;font-weight:normal;font-size:16px;text-align:center} #wpProQuiz_user_content table.wp-list-table tfoot tr th:first-child{border-radius:0 0 8px 0} #wpProQuiz_user_content table.wp-list-table tfoot tr th:last-child{border-radius:0 0 0 8px} .learndash-wrapper .ld-tabs{margin:1em 0}.learndash-wrapper .ld-tabs .ld-tabs-navigation{position:relative;margin:0;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-tabs .ld-tabs-navigation:after{content:'';height:6px;background:#e2e7ed;position:absolute;bottom:0;right:0;left:0;z-index:8} .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab{display:-webkit-box;display:-ms-flexbox;display:flex;padding:1.5em;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-weight:700;color:#728188;cursor:pointer;-webkit-transition:color .3s ease;transition:color .3s ease;white-space:nowrap} .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab .ld-icon{font-size:1.4em;margin-left:.25em} .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab:after{content:'';height:6px;background:transparent;position:absolute;bottom:0;right:0;left:0;z-index:9;z-index:9;-webkit-transition:background .3s ease;transition:background .3s ease} .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab.ld-active{color:#00a2e8}.learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab.ld-active:after{background:#00a2e8} .learndash-wrapper .ld-tabs .ld-tabs-content .ld-tab-content{display:none;padding:2em 0} .learndash-wrapper .ld-tabs .ld-tabs-content .ld-tab-content.ld-visible{display:block} .learndash-wrapper .ld-tabs.ld-tab-count-1 .ld-tab-content{padding:0}.learndash-wrapper .ld-breadcrumbs{background:#f0f3f6;border-radius:6px;padding:.5em 1em;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments{font-size:.75em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-left:1em} .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments span{display:inline}.learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments span a{font-weight:700} .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments span:after{content:'>'} .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments span:last-child:after{display:none} .learndash-wrapper .ld-breadcrumbs .ld-status{white-space:nowrap}.learndash-wrapper .ld-breadcrumbs .ld-status.ld-status-progress{background:#00a2e8;color:#fff} .learndash-wrapper .ld-breadcrumbs .ld-status.ld-status-complete{background:#019e7c;color:#fff} .rtl .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments span:after{content:'<'} .learndash-wrapper .ld-alert-content{width:100%}.learndash-wrapper .ld-alert{padding:25px 75px 25px 15px;background-color:#f0f3f6;border-radius:6px;margin:1em 0;border:2px solid #e2e7ed;color:#728188;position:relative;min-height:85px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-alert .ld-alert-icon{background-color:#e2e7ed;border-radius:100%;padding:.5em;margin-left:.5em;font-size:24px;position:absolute;right:15px;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)} .learndash-wrapper .ld-alert .ld-alert-icon.ld-icon-alert{padding:3px;font-size:42px} .learndash-wrapper .ld-alert .ld-alert-text{font-size:1em;font-weight:700}.learndash-wrapper .ld-alert .ld-button{margin-right:1em;min-width:7.5em;display:inline-block;height:auto;padding:5px 30px 5px 20px;position:relative;max-width:185px} .learndash-wrapper .ld-alert .ld-button .ld-icon{position:absolute;right:15px;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)} .learndash-wrapper .ld-alert .ld-alert-content a,.learndash-wrapper .ld-alert .ld-text a{text-decoration:underline;color:rgba(0,0,0,0.8)} .learndash-wrapper .ld-alert-warning{color:rgba(0,0,0,0.65);border-color:#ffd200;background-color:#fff6cd} .learndash-wrapper .ld-alert-warning .ld-alert-icon{background-color:#ffd200}.learndash-wrapper .ld-alert-warning .ld-button{background-color:#ffd200;color:rgba(0,0,0,0.65)} .learndash-wrapper .ld-alert-certificate .ld-button{padding-right:40px;min-width:unset;max-width:unset;width:auto;text-decoration:none !important} .learndash-wrapper .ld-alert-certificate.ld-alert-success{color:#495255}.learndash-wrapper .ld-alert-success{color:white;border-color:#019e7c;background-color:rgba(1,158,124,0.2)} .learndash-wrapper .ld-alert-success .ld-alert-icon{background-color:#019e7c;color:white} .learndash-wrapper .ld-alert-success .ld-button{background-color:#019e7c}.learndash-wrapper .ld-alert-success .ld-button .ld-icon-download{margin-left:5px;font-size:18px} .learndash-wrapper .ld-focus{display:-webkit-box;display:-ms-flexbox;display:flex} .learndash-wrapper .ld-focus .ld-tab-content ul:not(.blocks-gallery-grid):not(.wp-block-gallery),.learndash-wrapper .ld-focus .ld-tab-content ol:not(.blocks-gallery-grid):not(.wp-block-gallery){display:block;list-style:disc outside none;margin:1em 0;padding-right:40px} .learndash-wrapper .ld-focus .ld-tab-content ol:not(.blocks-gallery-grid):not(.wp-block-gallery){list-style-type:decimal} .learndash-wrapper .ld-focus .ld-tab-content li:not(.blocks-gallery-item){display:list-item} .learndash-wrapper .ld-focus .ld-tab-content ul:not(.blocks-gallery-grid) ul,.learndash-wrapper .ld-focus .ld-tab-content ol:not(.blocks-gallery-grid) ul{margin:0;list-style-type:circle} .learndash-wrapper .ld-focus .ld-tab-content ol:not(.blocks-gallery-grid) ol,.learndash-wrapper .ld-focus .ld-tab-content ul:not(.blocks-gallery-grid) ol{margin:0;list-style-type:lower-latin} .learndash-wrapper .ld-focus .ld-focus-sidebar{position:fixed;right:0;top:0;bottom:0;width:350px;background-color:white;border-left:1px solid #e2e7ed;padding-top:50px;padding-bottom:150px;-webkit-transition:all .3s ease;transition:all .3s ease;z-index:99} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-focus-sidebar-wrapper{overflow-x:visible;overflow-y:auto;height:100%} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-focus-sidebar-trigger{position:absolute;height:75px;width:50px;left:0;top:0;bottom:0;background:#00a2e8;z-index:99;cursor:pointer;color:white} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-focus-sidebar-trigger .ld-icon{position:absolute;border-radius:100%;background:inherit;left:0;top:50%;-webkit-transform:translateY(-50%) translateX(-25%);-ms-transform:translateY(-50%) translateX(-25%);transform:translateY(-50%) translateX(-25%);font-size:.8em;padding:8px;z-index:9} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-focus-sidebar-trigger:hover .ld-icon:before{opacity:.5} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading{background-color:#00a2e8;color:white;border-bottom:0;min-height:75px;overflow:visible;width:350px;position:relative;z-index:9;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:.75em 1em .75em 3.125em} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading a{color:#fff} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading h3{font-size:1em;margin:0;line-height:1.35em;padding:0 1.6em 0 0;font-weight:bold;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;color:white;position:relative;z-index:100} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading h3 a{color:white} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading h3 .ld-icon{position:absolute;right:1px;top:3px} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading .ld-expand-button{color:white;display:none} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading .ld-home-link{color:white;padding:0;border-right:0;margin-right:0} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation{position:relative;overflow:visible} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-course-navigation-list{opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-expanded{margin:0;border-radius:0;background:transparent} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-expanded .ld-table-list-items{padding:.5em} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-section-heading{padding:0 1em} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-section-heading .ld-lesson-section-heading{margin-bottom:0} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list{background-color:#f0f3f6;border-radius:0;padding:1em 1em;position:relative;margin:0} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list:before{content:'';position:absolute;width:16px;height:16px;top:-8px;right:66px;background:white;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);z-index:9} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list:before{background-color:white;right:43px;width:13px;height:13px;top:-7px} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list .ld-table-list-item{font-size:.875em} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-preview{padding:.5em;padding-right:1.6em} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item{border-bottom:1px solid #e2e7ed;background-color:white;padding:0} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item .ld-lesson-item-preview{padding:1em} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-pagination{margin:1em 0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-pagination .ld-pages{background-color:#728188;-webkit-box-flex:0;-ms-flex:0 0 120px;flex:0 0 120px} .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-pagination .ld-pages i,.learndash-wrapper .ld-focus .ld-focus-sidebar .ld-pagination .ld-pages span{color:white} .learndash-wrapper .ld-focus .ld-focus-main{-webkit-box-flex:1;-ms-flex:1 auto;flex:1 auto;margin-right:350px;width:-webkit-calc(100% - 350px);width:calc(100% - 350px);-webkit-transition:margin-right .3s ease;transition:margin-right .3s ease} .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content{padding:5em;margin:0 auto;max-width:960px} .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content h1{margin:0;padding:0;margin-bottom:.5em} .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content .ld-topic-status .ld-progress{display:none} .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content .ld-topic-status,.learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content .ld-lesson-status{margin-bottom:1em} .learndash-wrapper .ld-focus .ld-focus-header{position:fixed;background:white;top:0;right:0;left:0;height:51px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border-bottom:1px solid #e2e7ed;z-index:99} .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav{width:55px;display:none} .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav a{display:block;padding:0 15px} .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav span{display:block;width:25px;height:4px;margin:4px 0;background-color:#333;-webkit-transition:all ease-in-out 250ms;transition:all ease-in-out 250ms} .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav.expanded .bar-1{-webkit-transform:rotate(45deg) translate(4px,8px);-ms-transform:rotate(45deg) translate(4px,8px);transform:rotate(45deg) translate(4px,8px)} .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav.expanded .bar-2{opacity:0} .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav.expanded .bar-3{-webkit-transform:rotate(-45deg) translate(3px,-7px);-ms-transform:rotate(-45deg) translate(3px,-7px);transform:rotate(-45deg) translate(3px,-7px)} .learndash-wrapper .ld-focus .ld-focus-header .ld-brand-logo{background-color:white;-webkit-box-flex:0;-ms-flex:0 0 350px;flex:0 0 350px;height:100%;-webkit-transition:-webkit-box-flex .3s ease;transition:-webkit-box-flex .3s ease;transition:flex .3s ease;transition:flex .3s ease,-webkit-box-flex .3s ease,-ms-flex .3s ease;padding:.5em 1em} .learndash-wrapper .ld-focus .ld-focus-header .ld-brand-logo img{height:100%;width:auto} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-actions{-webkit-box-flex:0;-ms-flex:0 1;flex:0 1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;border-top:0} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action{position:relative} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action .learndash_timer,.learndash-wrapper .ld-focus .ld-focus-header .ld-content-action #learndash_timer{position:absolute;right:0;bottom:1px;left:0;text-align:center;top:0;background:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action,.learndash-wrapper .ld-focus .ld-focus-header .ld-progress{height:50px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-focus .ld-focus-header .ld-progress{border-left:1px solid #e2e7ed} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action{border-left:1px solid #e2e7ed} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action:last-child,.learndash-wrapper .ld-focus .ld-focus-header .ld-content-action.ld-empty{border:0} .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete:after,.learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete:after{color:#019e7c} .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete:disabled:after,.learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete:disabled:after{color:#728188} .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete .learndash_mark_complete_button,.learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete #learndash_mark_complete_button,.learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete .learndash_mark_complete_button,.learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete #learndash_mark_complete_button{color:#00a2e8;background:transparent;color:#019e7c;background:transparent !important} .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete .learndash_mark_complete_button.ld-status-complete,.learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete #learndash_mark_complete_button.ld-status-complete,.learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete .learndash_mark_complete_button.ld-status-complete,.learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete #learndash_mark_complete_button.ld-status-complete{color:#019e7c} .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete .learndash_mark_complete_button:hover,.learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete #learndash_mark_complete_button:hover,.learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete .learndash_mark_complete_button:hover,.learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete #learndash_mark_complete_button:hover{background:transparent} .learndash-wrapper .ld-focus .ld-focus-header .ld-progress{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end} .learndash-wrapper .ld-focus .ld-focus-header .ld-progress-wrap{width:100%;max-width:500px} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action{-webkit-box-flex:0;-ms-flex:0 1;flex:0 1} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action .sfwd-mark-complete,.learndash-wrapper .ld-focus .ld-focus-header .ld-content-action #sfwd-mark-complete{margin:0 1em} .learndash-wrapper .ld-focus .ld-focus-header .ld-progress{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;padding-left:1em;padding:0;margin:0;padding-top:.5em;padding-left:1em} .learndash-wrapper .ld-focus .ld-focus-header .ld-progress .ld-progress-bar{background:#e2e7ed} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;height:50px;padding-left:1em;border-right:1px solid #e2e7ed} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-text{color:#728188;font-size:.75em} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-profile-avatar{width:40px;height:40px;margin-right:1em} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items{position:absolute;top:100%;left:0;z-index:9;opacity:0;visibility:hidden;margin-left:1em} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items:before{content:'';position:absolute;top:-5px;left:1em;width:0;height:0;border-right:5px solid transparent;border-left:5px solid transparent;border-bottom:5px solid #00a2e8;z-index:-1} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items a{position:relative;display:block;white-space:nowrap;background-color:#00a2e8;color:white;font-weight:700;padding:.75em 2.5em;font-size:.875em;border-bottom:1px solid rgba(255,255,255,0.1)} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items a:hover{opacity:.8} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items a:last-child{border-bottom:0} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu:hover .ld-user-menu-items{opacity:1;visibility:visible} .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-sidebar{background-color:transparent;-webkit-transform:translateX(-webkit-calc(-1*(-100% + 50px)));-ms-transform:translateX(calc(-1*(-100% + 50px)));transform:translateX(calc(-1*(-100% + 50px)))} .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-sidebar-wrapper .ld-focus-sidebar-trigger .ld-icon{-webkit-transform:translateY(-50%) translateX(-45%) rotate(-180deg);-ms-transform:translateY(-50%) translateX(-45%) rotate(-180deg);transform:translateY(-50%) translateX(-45%) rotate(-180deg)} .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-course-navigation .ld-course-navigation-heading{top:0} .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-course-navigation .ld-course-navigation-heading h3{opacity:0} .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-course-navigation .ld-course-navigation-list{opacity:0} .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-main{margin-right:50px;width:-webkit-calc(100% - 50px);width:calc(100% - 50px)} body.admin-bar .learndash-wrapper .ld-focus-header{top:32px}body.admin-bar .learndash-wrapper .ld-focus-sidebar{top:32px} body.ld-in-focus-mode{margin:0;padding:0;background:#fff}body.ld-in-focus-mode::before,body.ld-in-focus-mode::after{display:none} body.ld-in-focus-mode .learndash-wrapper{background:#fff}body.ld-in-focus-mode.admin-bar{padding-top:32px} #learndash-tooltips{font-family:'Open Sans','Arial','Helvetica',sans-serif;position:absolute;top:0;left:0;right:0;bottom:0;height:100%;z-index:999;font-size:16px;pointer-events:none} #learndash-tooltips .ld-tooltip{position:absolute;background-color:#00a2e8;color:white;font-weight:700;border-radius:6px;padding:.25em 1em;-webkit-transform:translateX(-1%) translateY(-25px);-ms-transform:translateX(-1%) translateY(-25px);transform:translateX(-1%) translateY(-25px);-webkit-box-shadow:0 -1px 0 2px rgba(255,255,255,0.75);box-shadow:0 -1px 0 2px rgba(255,255,255,0.75);font-size:.75em;opacity:0;-webkit-transition:opacity .1s linear;transition:opacity .1s linear;text-align:center;min-width:150px;max-width:300px} #learndash-tooltips .ld-tooltip:after{content:'';height:5px;width:5px;background:#00a2e8;position:absolute;bottom:-4px;-webkit-transform:rotate(-45deg) translateX(50%);-ms-transform:rotate(-45deg) translateX(50%);transform:rotate(-45deg) translateX(50%);right:5%} #learndash-tooltips .ld-tooltip.ld-shifted-left:after{right:10%}#learndash-tooltips .ld-tooltip.ld-shifted-right{-webkit-transform:translateX(100%) translateY(-30px);-ms-transform:translateX(100%) translateY(-30px);transform:translateX(100%) translateY(-30px)} #learndash-tooltips .ld-tooltip.ld-shifted-right:after{right:auto;left:10%}#learndash-tooltips .ld-tooltip.ld-visible{opacity:1} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled{display:-webkit-box;display:-ms-flexbox;display:flex;background:#f0f3f6;padding:1em 0;margin:1em 0;border-radius:6px} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled>*{-webkit-box-flex:1;-ms-flex:1 auto;flex:1 auto;width:33%;-ms-flex-pack:distribute;justify-content:space-around;text-align:center;border-left:2px solid #bec5cb;padding:0 1em} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled>*:last-child{border-left:0} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-button{margin:0} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-status{display:inline-block;width:auto} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around;text-align:center;margin-bottom:.5em;line-height:1.25em} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-price{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center;-ms-flex-pack:distribute;justify-content:space-around;font-size:32px;font-weight:bold;color:#728188;margin-top:-3px;line-height:1} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-price .ld-text{font-size:14px;margin-right:8px;font-weight:normal} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-price .ld-currency{font-size:16px;margin-left:.25em} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-label{display:block;color:#728188;font-size:.75em;font-weight:bold;margin-bottom:1em} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around;-ms-flex-wrap:wrap;flex-wrap:wrap} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .ppalholder{position:absolute} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .ld-text{font-size:14px;color:#728188;display:inline-block;white-space:nowrap;margin-left:.5em} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .ld-text .ld-login-text{display:inline-block;margin-right:5px;text-decoration:underline;font-weight:bold} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .learndash_checkout_buttons{margin:0 .5em} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-seg-action.status-closed .ld-text{white-space:normal} .learndash-wrapper .ld-course-status.ld-course-status-enrolled{background-color:#f0f3f6;border-radius:6px;padding:.5em 1em;display:-webkit-box;display:-ms-flexbox;display:flex} .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress{margin:0;padding:0;-webkit-box-flex:1;-ms-flex:1;flex:1;padding-left:1em} .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-status{width:auto;display:inline-block;margin:0 auto} .learndash-wrapper .ld-course-status .ld-status{line-height:1.3}.learndash-wrapper .ld-course-status .ld-status.ld-status-progress{background:#00a2e8;color:#fff} .learndash-wrapper .ld-course-status .ld-status.ld-status-complete{background:#019e7c;color:#fff} .learndash-wrapper .ld-course-certificate{text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:1em 0} .learndash-wrapper .ld-course-certificate .ld-button{display:inline-block;max-width:inherit;font-size:14px} .learndash-wrapper .ld-course-certificate .ld-icon-certificate{font-size:24px;margin-left:5px} .jq-dropdown-menu{-webkit-box-shadow:0 0 0 1px #ddd !important;box-shadow:0 0 0 1px #ddd !important} .jq-dropdown-menu input[type='button'],.jq-dropdown-menu input[type='submit']{margin:0;padding:0;-webkit-transition:none;transition:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1.5em;font-size:16px;border-radius:0;border:0;display:block !important;width:100% !important;color:#00a2e8;padding:.5em 1em;text-align:center;font-size:14px !important} .jq-dropdown-menu input[type='button']:hover,.jq-dropdown-menu input[type='submit']:hover{background:#fafafa !important;color:#495255 !important} .jq-dropdown-menu .ppalholder{display:none}.learndash-wrapper .learndash-wrapper-login-modal{position:relative} .learndash-wrapper .ld-modal{position:absolute;-webkit-transform:translateY(-50%) translateX(50%);-ms-transform:translateY(-50%) translateX(50%);transform:translateY(-50%) translateX(50%);z-index:999;width:100%;z-index:9000;max-width:1024px;min-height:300px;background:white;border-radius:6px;overflow:hidden;overflow-y:auto;-webkit-box-shadow:3px -3px 20px rgba(0,0,0,0.14);box-shadow:3px -3px 20px rgba(0,0,0,0.14);opacity:0;visibility:hidden;-webkit-transition:all .3s ease;transition:all .3s ease} .learndash-wrapper .ld-modal .ld-modal-closer{position:absolute;top:.5em;left:0;z-index:9;color:#728188;cursor:pointer;line-height:.5;padding:1em;font-size:1.5em} .learndash-wrapper .ld-modal.ld-can-register .ld-modal-closer{color:#fff}.learndash-wrapper.ld-modal-closed{display:none !important} .learndash-wrapper.ld-modal-open .ld-modal{opacity:1;visibility:visible}.learndash-wrapper .ld-login-modal{display:-webkit-box;display:-ms-flexbox;display:flex;text-align:center;margin:25% 50% 20px 50%} .learndash-wrapper .ld-login-modal .ld-modal-heading{font-weight:300;font-size:2.25em;margin:0;margin:.5em 0} .learndash-wrapper .ld-login-modal .ld-login-modal-wrapper{padding:20px;max-width:350px;min-width:80%;margin:0 auto} .learndash-wrapper .ld-login-modal .ld-login-modal-login{-webkit-box-flex:1;-ms-flex:1;flex:1;background:white;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .ld-login-modal .ld-login-modal-login .ld-modal-heading{color:#00a2e8} .learndash-wrapper .ld-login-modal .ld-login-modal-login .ld-modal-text{color:#728188;font-size:.875em} .learndash-wrapper .ld-login-modal .ld-login-modal-register{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#00a2e8;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:white} .learndash-wrapper .ld-login-modal .ld-login-modal-register .ld-button:hover{opacity:1;-webkit-box-shadow:0 0 0 5px #fff !important;box-shadow:0 0 0 5px #fff !important} .learndash-wrapper .ld-login-modal .ld-login-modal-register label{display:block;font-weight:bold;margin-bottom:.5em;font-size:14px} .learndash-wrapper .ld-login-modal .ld-login-modal-register #ld-user-register{margin:2em 0} .learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='text'],.learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='password'],.learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='email']{border:2px solid #fff;margin:0;margin-bottom:1em;padding:0;padding:.5em;background-color:#f9f9f9;padding-right:2em;font-size:1.2em;width:100%;-webkit-transition:all ease-in-out 250ms;transition:all ease-in-out 250ms} .learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='text']:focus,.learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='password']:focus,.learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='email']:focus{background:#fff} .learndash-wrapper .ld-login-modal .ld-login-modal-register #reg_passmail{font-size:.825em} .learndash-wrapper .ld-login-modal .ld-login-modal-register #wp-submit{margin:0 auto;min-width:150px;text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:0;padding:7px 35px;border-radius:20px;font-weight:bold;font-size:14px;border:5px solid #fff} .learndash-wrapper .ld-login-modal .ld-login-modal-form{margin:2em 0}.learndash-wrapper .ld-login-modal .ld-login-modal-form form{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-login-modal .ld-login-modal-form p{margin:0}.learndash-wrapper .ld-login-modal .ld-login-modal-form p.login-submit{text-align:center} .learndash-wrapper .ld-login-modal .ld-login-modal-form label{display:block;color:#728188;font-weight:bold;margin-bottom:.5em;font-size:14px} .learndash-wrapper .ld-login-modal .ld-login-modal-form .login-username{position:relative} .learndash-wrapper .ld-login-modal .ld-login-modal-form .login-username:before{font-family:'ld-icons' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;content:"\e90c";position:absolute;color:#728188;top:2.5em;right:.5em} .learndash-wrapper .ld-login-modal .ld-login-modal-form .login-password{position:relative} .learndash-wrapper .ld-login-modal .ld-login-modal-form .login-password:before{font-family:'ld-icons' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;content:"\e900";position:absolute;color:#728188;top:2.5em;right:.5em} .learndash-wrapper .ld-login-modal .ld-login-modal-form .ld-login-modal-branding{position:relative;padding-top:2em;margin-top:1em} .learndash-wrapper .ld-login-modal .ld-login-modal-form .ld-login-modal-branding:before{content:'';display:block;position:absolute;width:50px;height:3px;background-color:#e2e7ed;right:50%;top:0;-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%)} .learndash-wrapper .ld-login-modal .ld-login-modal-form .ld-login-modal-branding img{max-width:100%;max-height:250px;height:auto} .learndash-wrapper .ld-login-modal input[type='text'],.learndash-wrapper .ld-login-modal input[type='password'],.learndash-wrapper .ld-login-modal input[type='email'],.learndash-wrapper .ld-login-modal .ld-login-field,.learndash-wrapper .ld-login-modal .ld-password-field{border:2px solid #e2e7ed;margin:0;margin-bottom:1em;padding:0;padding:.5em;background-color:#f0f3f6;color:#728188;padding-right:2em;font-size:.875em;width:100%;-webkit-transition:all ease-in-out 250ms;transition:all ease-in-out 250ms} .learndash-wrapper .ld-login-modal input[type='text']:focus,.learndash-wrapper .ld-login-modal input[type='password']:focus,.learndash-wrapper .ld-login-modal input[type='email']:focus,.learndash-wrapper .ld-login-modal .ld-login-field:focus,.learndash-wrapper .ld-login-modal .ld-password-field:focus{border-color:#495255} .learndash-wrapper .ld-login-modal ::-webkit-input-placeholder{font-family:'Open Sans','Arial','Helvetica',sans-serif} .learndash-wrapper .ld-login-modal :-ms-input-placeholder{font-family:'Open Sans','Arial','Helvetica',sans-serif} .learndash-wrapper .ld-login-modal ::placeholder{font-family:'Open Sans','Arial','Helvetica',sans-serif} .learndash-wrapper .ld-login-modal .ld-forgot-password-link{color:#333;text-decoration:underline;font-size:.875em} .learndash-wrapper .ld-login-modal .ld-button,.learndash-wrapper .ld-login-modal input[type='submit']{margin:2em auto;min-width:150px;text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:0;border-radius:20px;font-weight:bold;font-size:14px} .learndash-wrapper .ld-login-modal input[type='submit']{background:#00a2e8;color:#fff;cursor:pointer;padding:.75em 5em;-webkit-transition:all ease-in-out 250ms;transition:all ease-in-out 250ms} .learndash-wrapper .ld-login-modal input[type='submit']:hover{opacity:.8} .learndash-wrapper .ld-button.ld-login-button{display:-webkit-box;display:-ms-flexbox;display:flex} .learndash-wrapper .ld-button.ld-login-button.ld-logout{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between} .learndash-wrapper .ld-button.ld-login-button.ld-login{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start} .learndash-wrapper .ld-button.ld-login-button.ld-login .ld-icon{margin-left:10px} .learndash-not-available .ld-table-list-item-preview,.learndash-not-available .ld-lesson-item-preview,.learndash-not-available .ld-item-list-item-preview,.user_has_no_access .ld-table-list-item-preview,.user_has_no_access .ld-lesson-item-preview,.user_has_no_access .ld-item-list-item-preview{cursor:not-allowed;pointer-events:none} .learndash-not-available .ld-table-list-item-preview a.ld-lesson-item-preview-heading,.learndash-not-available .ld-table-list-item-preview a.ld-item-name,.learndash-not-available .ld-lesson-item-preview a.ld-lesson-item-preview-heading,.learndash-not-available .ld-lesson-item-preview a.ld-item-name,.learndash-not-available .ld-item-list-item-preview a.ld-lesson-item-preview-heading,.learndash-not-available .ld-item-list-item-preview a.ld-item-name,.user_has_no_access .ld-table-list-item-preview a.ld-lesson-item-preview-heading,.user_has_no_access .ld-table-list-item-preview a.ld-item-name,.user_has_no_access .ld-lesson-item-preview a.ld-lesson-item-preview-heading,.user_has_no_access .ld-lesson-item-preview a.ld-item-name,.user_has_no_access .ld-item-list-item-preview a.ld-lesson-item-preview-heading,.user_has_no_access .ld-item-list-item-preview a.ld-item-name{cursor:not-allowed;pointer-events:none} .learndash-not-available .ld-table-list-item-preview a.ld-lesson-item-preview-heading .ld-status-icon,.learndash-not-available .ld-table-list-item-preview a.ld-item-name .ld-status-icon,.learndash-not-available .ld-lesson-item-preview a.ld-lesson-item-preview-heading .ld-status-icon,.learndash-not-available .ld-lesson-item-preview a.ld-item-name .ld-status-icon,.learndash-not-available .ld-item-list-item-preview a.ld-lesson-item-preview-heading .ld-status-icon,.learndash-not-available .ld-item-list-item-preview a.ld-item-name .ld-status-icon,.user_has_no_access .ld-table-list-item-preview a.ld-lesson-item-preview-heading .ld-status-icon,.user_has_no_access .ld-table-list-item-preview a.ld-item-name .ld-status-icon,.user_has_no_access .ld-lesson-item-preview a.ld-lesson-item-preview-heading .ld-status-icon,.user_has_no_access .ld-lesson-item-preview a.ld-item-name .ld-status-icon,.user_has_no_access .ld-item-list-item-preview a.ld-lesson-item-preview-heading .ld-status-icon,.user_has_no_access .ld-item-list-item-preview a.ld-item-name .ld-status-icon{pointer-events:all} .learndash-not-available .ld-table-list-item-preview .ld-expand-button,.learndash-not-available .ld-lesson-item-preview .ld-expand-button,.learndash-not-available .ld-item-list-item-preview .ld-expand-button,.user_has_no_access .ld-table-list-item-preview .ld-expand-button,.user_has_no_access .ld-lesson-item-preview .ld-expand-button,.user_has_no_access .ld-item-list-item-preview .ld-expand-button{pointer-events:all} .learndash-not-available a.ld-topic-row,.user_has_no_access a.ld-topic-row{cursor:not-allowed;pointer-events:none} .learndash-not-available.is_sample .ld-lesson-item-preview,.learndash-not-available.is_sample .ld-item-list-item-preview,.user_has_no_access.is_sample .ld-lesson-item-preview,.user_has_no_access.is_sample .ld-item-list-item-preview{cursor:pointer;pointer-events:all} .learndash-not-available.is_sample .ld-lesson-item-preview a.ld-lesson-item-preview-heading,.learndash-not-available.is_sample .ld-lesson-item-preview a.ld-item-name,.learndash-not-available.is_sample .ld-item-list-item-preview a.ld-lesson-item-preview-heading,.learndash-not-available.is_sample .ld-item-list-item-preview a.ld-item-name,.user_has_no_access.is_sample .ld-lesson-item-preview a.ld-lesson-item-preview-heading,.user_has_no_access.is_sample .ld-lesson-item-preview a.ld-item-name,.user_has_no_access.is_sample .ld-item-list-item-preview a.ld-lesson-item-preview-heading,.user_has_no_access.is_sample .ld-item-list-item-preview a.ld-item-name{cursor:pointer;pointer-events:all} .user_has_no_access .wpProQuiz_resultsList .ld-item-list-item-preview a.ld-item-name{cursor:pointer;pointer-events:all} .ld-topic-list.is_sample .ld-table-list-item-preview,.ld-topic-list.is_sample .ld-lesson-item-preview,.ld-topic-list.is_sample .ld-item-list-item-preview,.ld-lesson-item.is_sample .ld-table-list-item-preview,.ld-lesson-item.is_sample .ld-lesson-item-preview,.ld-lesson-item.is_sample .ld-item-list-item-preview,.ld-item-list-item.is_sample .ld-table-list-item-preview,.ld-item-list-item.is_sample .ld-lesson-item-preview,.ld-item-list-item.is_sample .ld-item-list-item-preview{cursor:pointer;pointer-events:all} .ld-topic-list.is_sample .ld-table-list-item-preview a.ld-lesson-item-preview-heading,.ld-topic-list.is_sample .ld-table-list-item-preview a.ld-item-name,.ld-topic-list.is_sample .ld-lesson-item-preview a.ld-lesson-item-preview-heading,.ld-topic-list.is_sample .ld-lesson-item-preview a.ld-item-name,.ld-topic-list.is_sample .ld-item-list-item-preview a.ld-lesson-item-preview-heading,.ld-topic-list.is_sample .ld-item-list-item-preview a.ld-item-name,.ld-lesson-item.is_sample .ld-table-list-item-preview a.ld-lesson-item-preview-heading,.ld-lesson-item.is_sample .ld-table-list-item-preview a.ld-item-name,.ld-lesson-item.is_sample .ld-lesson-item-preview a.ld-lesson-item-preview-heading,.ld-lesson-item.is_sample .ld-lesson-item-preview a.ld-item-name,.ld-lesson-item.is_sample .ld-item-list-item-preview a.ld-lesson-item-preview-heading,.ld-lesson-item.is_sample .ld-item-list-item-preview a.ld-item-name,.ld-item-list-item.is_sample .ld-table-list-item-preview a.ld-lesson-item-preview-heading,.ld-item-list-item.is_sample .ld-table-list-item-preview a.ld-item-name,.ld-item-list-item.is_sample .ld-lesson-item-preview a.ld-lesson-item-preview-heading,.ld-item-list-item.is_sample .ld-lesson-item-preview a.ld-item-name,.ld-item-list-item.is_sample .ld-item-list-item-preview a.ld-lesson-item-preview-heading,.ld-item-list-item.is_sample .ld-item-list-item-preview a.ld-item-name{cursor:pointer;pointer-events:all} .ld-topic-list.is_sample a.ld-lesson-item-preview,.ld-topic-list.is_sample a.ld-table-list-item-preview,.ld-topic-list.is_sample a.ld-topic-row,.ld-lesson-item.is_sample a.ld-lesson-item-preview,.ld-lesson-item.is_sample a.ld-table-list-item-preview,.ld-lesson-item.is_sample a.ld-topic-row,.ld-item-list-item.is_sample a.ld-lesson-item-preview,.ld-item-list-item.is_sample a.ld-table-list-item-preview,.ld-item-list-item.is_sample a.ld-topic-row{cursor:pointer !important;pointer-events:all !important} .learndash-wrapper .ld-user-status.ld-is-widget{margin:30px 0}.learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item{border:0;border-bottom:2px solid #f0f3f6;border-radius:0;padding:10px 0;margin:10px 0} .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item:last-child{border-bottom:0} .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item .ld-item-list-item-preview{padding:0} .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-title{font-size:14px;line-height:1.5em} .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-components{margin-top:10px} .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-components span{display:block;margin:0 0 5px 0;font-size:12px;line-height:1.5em} .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-components span.ld-sep{display:none} .learndash-wrapper .ld-user-status.ld-is-widget .ld-pagination{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start} .learndash-wrapper .ld-focus-comments{margin:2em 0}.learndash-wrapper .ld-focus-comments p.comment-form-comment{margin:0;width:100% !important;max-width:100% !important} .learndash-wrapper .ld-focus-comments p.comment-form-comment textarea{width:100%} .learndash-wrapper .ld-focus-comments #ld-comments{margin-bottom:50px}.learndash-wrapper .ld-focus-comments #commentform .logged-in-as{margin:0;font-size:.875em;font-weight:normal;float:left} .learndash-wrapper .ld-focus-comments #commentform textarea#comment{font-family:inherit;padding:.875em;background:#e2e7ed;border:5px solid #e2e7ed;border-radius:6px;font-size:1em} .learndash-wrapper .ld-focus-comments #commentform textarea#comment:focus{background:transparent;outline:0;-webkit-box-shadow:none;box-shadow:none} .learndash-wrapper .ld-focus-comments .comment-navigation .nav-links{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row} .learndash-wrapper .ld-focus-comments .comment-navigation .nav-links .nav-previous{margin:0;text-align:right;min-width:50%;width:100%;font-weight:bold} .learndash-wrapper .ld-focus-comments .comment-navigation .nav-links .nav-next{margin:0;text-align:left;min-width:50%;width:100%;font-weight:bold} .learndash-wrapper .ld-focus-comments .form-submit{width:100% !important;max-width:100% !important} .learndash-wrapper .ld-focus-comments .form-submit #submit{margin:0;border-radius:20px;background-color:#00a2e8;color:white;-webkit-box-shadow:none;box-shadow:none;text-transform:none;font-family:inherit;font-weight:800;font-size:.75em;text-align:center;text-decoration:none;cursor:pointer;width:100%;max-width:385px;white-space:nowrap;text-shadow:none;border:0;opacity:1;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:auto;padding:.75em 1.5em;font-size:1em;display:inline-block;padding:.75em 3em;margin-top:0;height:auto;margin-top:1em;min-width:unset;max-width:unset;width:unset;text-decoration:none !important} .learndash-wrapper .ld-focus-comments .form-submit #submit .ld-icon{font-size:.875em} .learndash-wrapper .ld-focus-comments .form-submit #submit .ld-text{padding:0 1em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center} .learndash-wrapper .ld-focus-comments .form-submit #submit+.ld-button{margin-right:1em} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-compact{padding:0;width:24px;height:24px;border-radius:100%;-ms-flex-preferred-size:24px;flex-basis:24px;-ms-flex-negative:0;flex-shrink:0;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-compact .ld-icon{margin-left:0;font-size:.75em} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-compact .ld-text{padding:0} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-alternate{background:transparent;color:#00a2e8;padding:0} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-alternate .ld-icon{background:#00a2e8;color:white;border-radius:100%;width:18px;height:18px;-webkit-box-flex:0;-ms-flex:0 0 18px;flex:0 0 18px;padding:2px;line-height:16px;text-align:center;font-weight:bold;-webkit-transition:color .3s ease,background .3s ease;transition:color .3s ease,background .3s ease} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-alternate .ld-text{padding-right:.5em} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-alternate:hover{background:transparent} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-transparent{color:#00a2e8;background:transparent} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-transparent.ld-status-complete{color:#019e7c} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-transparent:hover{background:transparent} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-reverse{background:white;color:#00a2e8} .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-reverse:hover{background:#00a2e8;color:white} .learndash-wrapper .ld-focus-comments .form-submit #submit:hover{opacity:.75;background-color:#00a2e8} .learndash-wrapper .ld-focus-comments .form-submit #submit:focus{outline:0;opacity:.75} .learndash-wrapper .ld-focus-comments__heading{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom:4px solid #e2e7ed;margin-bottom:.5em} .learndash-wrapper .ld-focus-comments__heading .ld-expand-button .ld-text{padding-left:.5em;font-size:1em} .learndash-wrapper .ld-focus-comments__heading .ld-expand-button .ld-icon{font-size:.75em} .learndash-wrapper .ld-focus-comments__header{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:2em;font-weight:normal;margin-bottom:10px} .learndash-wrapper .ld-focus-comments__comments{overflow:hidden;-webkit-transition:max-height .3s ease;transition:max-height .3s ease;font-size:1em;font-weight:normal} .learndash-wrapper .ld-focus-comments .comment-respond{position:relative;padding-top:0} .learndash-wrapper .ld-focus-comments .comment-respond #reply-title{font-size:1.5em;font-weight:normal;margin-bottom:.75em} .learndash-wrapper .ld-focus-comments .comment-respond small{margin-right:1em;font-size:.75em} .learndash-wrapper .ld-focus-comments .comment-form label{display:none}.learndash-wrapper .ld-focus-comments #ld-comments-post-button.ld-open{display:none} .learndash-wrapper .ld-focus-comments #ld-comments-form.ld-collapsed{display:none} .learndash-wrapper .ld-focus-comment{margin:2em 0}.learndash-wrapper .ld-focus-comment:last-child{margin-bottom:5em} .learndash-wrapper .ld-focus-comment.depth-1{margin-right:0}.learndash-wrapper .ld-focus-comment.depth-2,.learndash-wrapper .ld-focus-comment.depth-3,.learndash-wrapper .ld-focus-comment.depth-4,.learndash-wrapper .ld-focus-comment.depth-5{margin-right:74px} .learndash-wrapper .ld-focus-comment .ld-comment-avatar{position:relative;margin-bottom:1em;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-focus-comment .ld-comment-avatar img{-webkit-box-sizing:border-box;box-sizing:border-box;max-width:58px;height:auto;border-radius:100%;margin-left:16px;border:4px solid transparent} .learndash-wrapper .ld-focus-comment .ld-comment-avatar .ld-comment-avatar-author .ld-comment-author-name{color:black;font-size:1.125em;margin-bottom:5px;display:block;font-weight:bold} .learndash-wrapper .ld-focus-comment .ld-comment-avatar .ld-comment-avatar-author a.ld-comment-permalink{color:#728188;font-size:.875em;text-decoration:none;display:block} .learndash-wrapper .ld-focus-comment .ld-comment-body{overflow:hidden;position:relative;margin-right:74px} .learndash-wrapper .ld-focus-comment .ld-comment-reply{margin:1em 0}.learndash-wrapper .ld-focus-comment .ld-comment-reply a.comment-reply-link{border:0;display:inline-block;padding:.5em 1.75em;color:black;font-weight:bold;font-size:.875em;position:relative;z-index:9;background-color:#e2e7ed;border-radius:18px} .learndash-wrapper .ld-focus-comment.bypostauthor>.ld-comment-wrapper,.learndash-wrapper .ld-focus-comment.role-group_leader>.ld-comment-wrapper,.learndash-wrapper .ld-focus-comment.role-administrator>.ld-comment-wrapper{border-radius:6px;background:#f2fafd;padding:1em} .learndash-wrapper .ld-focus-comment.bypostauthor>.ld-comment-wrapper>.ld-comment-avatar img,.learndash-wrapper .ld-focus-comment.role-group_leader>.ld-comment-wrapper>.ld-comment-avatar img,.learndash-wrapper .ld-focus-comment.role-administrator>.ld-comment-wrapper>.ld-comment-avatar img{border-color:#00a2e8} .learndash-wrapper .ld-focus-comment.bypostauthor.ptype-sfwd-assignment>.ld-comment-wrapper{border-radius:0;background:transparent;padding:0} .learndash-wrapper .ld-focus-comment.bypostauthor.ptype-sfwd-assignment>.ld-comment-wrapper>.ld-comment-avatar img{border-color:transparent} .learndash-wrapper .ld-focus-comment.ld-no-avatar-image .ld-comment-body{margin-right:0} @media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.learndash-wrapper .ld-expand-button{min-width:120px} .learndash-wrapper .ld-expand-button.ld-button-alternate .ld-icon{-ms-flex-preferred-size:15px;flex-basis:15px} .learndash-wrapper .ld-status-icon.ld-status-incomplete,.learndash-wrapper .ld-status-icon.ld-status-in-progress{-ms-flex-preferred-size:18px;flex-basis:18px} .learndash-wrapper .ld-course-navigation .ld-status-icon.ld-status-incomplete,.learndash-wrapper .ld-course-navigation .ld-status-icon.ld-status-in-progress{-ms-flex-preferred-size:10px;flex-basis:10px} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-details .ld-expand-button{min-width:80px} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-details .ld-expand-button.ld-compact{min-width:0;margin-left:1em} .learndash-wrapper .ld-item-list .ld-section-heading .ld-search-prompt{margin-left:3em} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-actions{-webkit-box-flex:1;-ms-flex:1;flex:1} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action{-webkit-box-flex:1;-ms-flex:1;flex:1} .learndash-wrapper .ld-login-modal .ld-login-modal-wrapper{width:100%}}@media(max-width:1280px){.learndash-wrapper .ld-focus .ld-focus-header .ld-progress{-webkit-box-flex:1;-ms-flex:1;flex:1} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu{-webkit-box-flex:0;-ms-flex:0 1;flex:0 1} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-text{display:none} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .learndash_checkout_buttons,.learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .learndash_checkout_button{margin-left:0} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .learndash_checkout_button{margin-bottom:.5em} }@media(max-width:1024px){.learndash-wrapper.ld-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-page-content{margin-bottom:3em}.learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-text{display:none} .learndash-wrapper .ld-focus .ld-focus-header .ld-brand-logo{-webkit-box-flex:0;-ms-flex:0 0 150px;flex:0 0 150px} .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content{padding-right:3em}.learndash-wrapper .ld-login-modal{top:100px;width:80%;-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%)} .learndash-wrapper .ld-login-modal.ld-can-register .ld-modal-closer{color:#728188} }@media(max-width:768px){.learndash-wrapper .ld-content-actions{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start} .learndash-wrapper .ld-content-actions .ld-content-action{-webkit-box-flex:1;-ms-flex:1;flex:1} .learndash-wrapper .ld-content-actions>*{margin-bottom:2em;margin-right:0}.learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-columns{display:none} .learndash-wrapper .ld-table-list .ld-table-list-item-preview{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start} .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-title{width:100%} .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns{width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding-top:.5em} .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column{-webkit-box-flex:1;-ms-flex:1 auto;flex:1 auto;margin:0 0 .5em 0} .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column .ld-column-label{display:inline-block;margin:0 0 .5em 0} .learndash-wrapper .ld-table-list.ld-assignment-list .ld-table-list-item-preview .ld-table-list-title{-webkit-box-flex:1;-ms-flex:1;flex:1} .learndash-wrapper .ld-item-list.ld-lesson-list .ld-topic-list .ld-table-list-header{padding-right:1em;padding-left:1em} .learndash-wrapper .ld-item-list.ld-lesson-list .ld-topic-list .ld-table-list-item{margin:0 1em} .learndash-wrapper .ld-quiz-actions{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-quiz-actions .quiz_continue_link,.learndash-wrapper .ld-quiz-actions .wpProQuiz_button,.learndash-wrapper .ld-quiz-actions input[type='button']{margin-bottom:1em;margin-right:auto;margin-left:auto;width:auto} .learndash-wrapper .ld-alert{display:block;text-align:center;padding:75px 15px 15px} .learndash-wrapper .ld-alert .ld-alert-content{margin:0 0 1em 0}.learndash-wrapper .ld-alert .ld-icon{right:50%;margin:0;-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%);top:10%} .learndash-wrapper .ld-alert .ld-button{margin-right:0}.learndash-wrapper .ld-focus .ld-focus-header{position:relative;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;height:auto} .learndash-wrapper .ld-focus .ld-focus-header .ld-brand-logo{display:none}.learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav{display:block;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1} .learndash-wrapper .ld-focus .ld-focus-header .ld-progress{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;padding:0 1em;margin:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-left:0} .learndash-wrapper .ld-focus .ld-focus-header .ld-progress .ld-progress-stats{text-align:center;display:block} .learndash-wrapper .ld-focus .ld-focus-header .ld-progress .ld-progress-percentage{line-height:1em;margin-bottom:.3em} .learndash-wrapper .ld-focus .ld-focus-header .ld-progress .ld-progress-steps{display:none} .learndash-wrapper .ld-focus .ld-focus-header .ld-progress .ld-progress-bar{margin:0} .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3;border-right:0} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-actions{border-top:1px solid #efefef;background:#fff;padding:0;-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:100%;-ms-flex:100%;flex:100%} .learndash-wrapper .ld-focus .ld-focus-header .ld-content-actions>*{margin:0}.learndash-wrapper .ld-focus .ld-focus-header .ld-content-actions .ld-content-action{height:auto;-webkit-box-flex:50%;-ms-flex:50%;flex:50%} .learndash-wrapper .ld-focus .ld-focus-content{margin-top:30px}.learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-sidebar{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)} .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-sidebar .ld-focus-sidebar-trigger{display:none} .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-main{margin-right:0;width:100%} .learndash-wrapper .ld-focus .ld-focus-main{margin-right:0;width:100%}.learndash-wrapper .ld-focus .ld-course-navigation-heading{position:static} .learndash-wrapper .ld-focus .ld-course-navigation{padding-top:0}.learndash-wrapper .ld-focus .ld-focus-sidebar{top:0;padding-top:0;z-index:1000;position:absolute} body.admin-bar .learndash-wrapper .ld-focus-header{top:0}body.admin-bar .learndash-wrapper .ld-focus-sidebar{top:93px} body.ld-in-focus-mode.admin-bar{padding-top:0}body.ld-in-focus-mode.admin-bar .ld-focus-sidebar{top:97px} .learndash-wrapper .ld-login-modal{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-focus-comment.depth-2,.learndash-wrapper .ld-focus-comment.depth-3,.learndash-wrapper .ld-focus-comment.depth-4,.learndash-wrapper .ld-focus-comment.depth-5{margin-right:20px} }@media(max-width:640px){.learndash-wrapper .ld-mobile-only{display:inherit !important} .learndash-wrapper .ld-not-mobile{display:none !important}.learndash-wrapper .ld-item-list .ld-section-heading h2,.learndash-wrapper .ld-item-list .ld-section-heading h3{text-align:center;margin-bottom:10px} .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-expand-button{margin:10px auto} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-wrapper:before{right:20px;left:auto} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-name .ld-reset-button{left:2px} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields>*{width:100%;margin-bottom:1em;padding-left:0} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-flex:1;-ms-flex:1;flex:1} .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button{margin:auto} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-name{-webkit-box-flex:1;-ms-flex:1;flex:1} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-details{margin-top:1em;margin-right:2em} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-details .ld-status{margin-right:0;margin-left:1em} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-details .ld-expand-button{margin-right:0} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-progress,.learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-item-contents{padding:2em 1em} .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-item-contents{padding-top:0} .learndash-wrapper .ld-table-list .ld-table-list-items{padding:0 20px}.learndash-wrapper .ld-lesson-list .ld-table-list-items{padding:0} .learndash-wrapper #ld-profile .ld-table-list .ld-table-list-item-expanded{padding:0} .learndash-wrapper .ld-progress .ld-progress-heading{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-progress .ld-progress-heading.ld-progress-inline{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-pagination{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center} .learndash-wrapper .ld-file-upload .ld-file-upload-form{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input+label{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border-radius:0;text-align:center;width:100%} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input+label strong,.learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input+label span{width:100%} .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-button{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-top:1em} .learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading,.learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading{margin-bottom:.5em;margin-top:.5em;-ms-flex-wrap:wrap;flex-wrap:wrap} .learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading h2,.learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading .ld-item-list-actions,.learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading h2,.learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading .ld-item-list-actions{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between} .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-header{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch} .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-lesson-details{margin:1em 2.9em} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2{margin-left:auto !important;margin-right:auto !important;margin-bottom:1em;float:none !important} .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.wpProQuiz_TipButton,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.wpProQuiz_TipButton{display:inline;margin:auto;padding:.25em .5em;width:auto} .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='6']{-ms-flex-wrap:wrap;flex-wrap:wrap} .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='6'] select{margin-bottom:1em;-webkit-box-flex:1;-ms-flex:1 0 50%;flex:1 0 50%} .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='6'] select:first-child{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%} .learndash-wrapper #ld-profile .ld-section-heading .ld-item-list-actions{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between} .learndash-wrapper #ld-profile .ld-section-heading .ld-expand-button{margin:10px 0;max-width:120px} .learndash-wrapper #ld-profile .ld-profile-stats{-ms-flex-wrap:wrap;flex-wrap:wrap} .learndash-wrapper #ld-profile .ld-profile-stats .ld-profile-stat{width:50%;border:0;-webkit-box-flex:1;-ms-flex:1;flex:1;margin:0 0 2em 0 !important;padding:0 1em !important} .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab{padding:1em}.learndash-wrapper .ld-breadcrumbs{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start} .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments{width:100%}.learndash-wrapper .ld-breadcrumbs .ld-status{width:100%;margin-top:1em} .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-main,.learndash-wrapper .ld-focus .ld-focus-main{margin-right:0} .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-main .ld-focus-content,.learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content{margin:30px auto 50px;padding:5% 1.5em} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled>*{border-left:0;border-bottom:1px solid #e2e7ed;padding:1em 0;width:auto} .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled>*:last-child{border-bottom:0} .learndash-wrapper .ld-course-status.ld-course-status-enrolled{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start} .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress .ld-progress-heading{display:block;width:100%;text-align:center} .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress .ld-progress-stats{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column} .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress .ld-progress-stats .ld-progress-steps{margin-right:0} .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress .ld-progress-bar{width:100%;margin:1em 0} .learndash-wrapper .ld-login-modal{width:100%}}@-webkit-keyframes ldrotating{100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)} }@keyframes ldrotating{100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)} }PKc\MM/themes/ld30/assets/css/learndash.quiz.front.cssnuW+A/* Override legacy WPProQuiz styles from themes/legacy/templates/learndash_quiz_front.css */ .learndash-wrapper .wpProQuiz_content .wpProQuiz_addToplist { margin-top: 10px; background-color: rgb(0,162,232, 0.1); padding: 10px; border: 1px solid #00a2e8; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_toplistTable th { background: #00a2e8; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_toplistTrOdd { background-color: rgba(0,162,232, 0.1); } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link:hover { opacity: 0.75; background-color: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button_reShowQuestion:hover, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button_restartQuiz:hover { background-color: #019e7c; opacity: 0.75; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewColor { height: 15px; width: 15px; display: inline-block; margin-right: 2px; } /* .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewDiv li.wpProQuiz_reviewQuestionTarget { background-color: #00a2e8; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewDiv li.wpProQuiz_reviewQuestionSolved { background-color: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewDiv li.wpProQuiz_reviewQuestionReview { background-color: #ffd200; } */ .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewLegend span.wpProQuiz_reviewColor_Answer { background-color: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewLegend span.wpProQuiz_reviewColor_Review { background-color: #ffd200; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewDiv li.wpProQuiz_reviewQuestionTarget { background-color: #00a2e8; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionSolved, .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionSolved { background-color: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionReview, .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionReview { background-color: #ffd200; } PKc\OLL3themes/ld30/assets/css/learndash.quiz.front-rtl.cssnuW+A/* Override legacy WPProQuiz styles from themes/legacy/templates/learndash_quiz_front.css */ .learndash-wrapper .wpProQuiz_content .wpProQuiz_addToplist { margin-top: 10px; background-color: rgb(0,162,232, 0.1); padding: 10px; border: 1px solid #00a2e8; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_toplistTable th { background: #00a2e8; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_toplistTrOdd { background-color: rgba(0,162,232, 0.1); } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link:hover { opacity: 0.75; background-color: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button_reShowQuestion:hover, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button_restartQuiz:hover { background-color: #019e7c; opacity: 0.75; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewColor { height: 15px; width: 15px; display: inline-block; margin-left: 2px; } /* .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewDiv li.wpProQuiz_reviewQuestionTarget { background-color: #00a2e8; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewDiv li.wpProQuiz_reviewQuestionSolved { background-color: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewDiv li.wpProQuiz_reviewQuestionReview { background-color: #ffd200; } */ .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewLegend span.wpProQuiz_reviewColor_Answer { background-color: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewLegend span.wpProQuiz_reviewColor_Review { background-color: #ffd200; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewDiv li.wpProQuiz_reviewQuestionTarget { background-color: #00a2e8; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionSolved, .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionSolved { background-color: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionReview, .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionReview { background-color: #ffd200; } PKc\ّ(themes/ld30/assets/css/learndash-rtl.cssnuW+A/* rgb(255, 186, 186); */ @font-face { font-family: 'ld-icons'; src: url("../fonts/ld-icons.eot?e0vk6b"); src: url("../fonts/ld-icons.eot?e0vk6b#iefix") format("embedded-opentype"), url("../fonts/ld-icons.ttf?e0vk6b") format("truetype"), url("../fonts/ld-icons.woff?e0vk6b") format("woff"), url("../fonts/ld-icons.svg?e0vk6b#ld-icons") format("svg"); font-weight: normal; font-style: normal; } .ld-icon { /* use !important to prevent issues with browser extensions that change fonts */ font-family: 'ld-icons' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; display: inline-block; } .ld-icon-alert:before { content: "\e90d"; } .ld-icon-unlocked:before { content: "\e900"; } .ld-icon-quiz:before { content: "\e901"; } .ld-icon-materials:before { content: "\e902"; } .ld-icon-download:before { content: "\e903"; } .ld-icon-course-outline:before { content: "\e904"; } .ld-icon-content:before { content: "\e905"; } .ld-icon-complete:before, .ld-icon-checkmark:before { content: "\e906"; } .ld-icon-clock:before { content: "\e907"; } .ld-icon-certificate:before { content: "\e908"; } .ld-icon-calendar:before { content: "\e909"; } .ld-icon-assignment:before { content: "\e90a"; } .ld-icon-arrow-up:before { content: "\e912"; } .ld-icon-arrow-right:before { content: "\e913"; } .ld-icon-arrow-left:before { content: "\e914"; } .ld-icon-arrow-down:before { content: "\e915"; } .ld-icon-login:before { content: "\e90c"; } .ld-icon-remove:before, .ld-icon-delete:before { content: "\e90b"; } .ld-icon-comments:before { content: "\e917"; } .ld-icon-search:before { content: "\e916"; } .learndash-wrapper * { -webkit-box-sizing: border-box; box-sizing: border-box; } .learndash-wrapper .learndash_checkout_buttons { margin: 0 0 0 0.5em; } .learndash-wrapper .btn-join, .learndash-wrapper #btn-join { margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; text-transform: none; font-family: inherit; font-weight: 800; font-size: 0.75em; text-align: center; text-decoration: none; cursor: pointer; width: 100%; max-width: 385px; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; height: auto; padding: .75em 1.5em; margin-right: 0; } .learndash-wrapper .btn-join .ld-icon, .learndash-wrapper #btn-join .ld-icon { font-size: 0.875em; } .learndash-wrapper .btn-join .ld-text, .learndash-wrapper #btn-join .ld-text { padding: 0 1em; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } .learndash-wrapper .btn-join + .ld-button, .learndash-wrapper #btn-join + .ld-button { margin-right: 1em; } .learndash-wrapper .btn-join.ld-compact, .learndash-wrapper #btn-join.ld-compact { padding: 0; width: 24px; height: 24px; border-radius: 100%; -ms-flex-preferred-size: 24px; flex-basis: 24px; -ms-flex-negative: 0; flex-shrink: 0; padding: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .btn-join.ld-compact .ld-icon, .learndash-wrapper #btn-join.ld-compact .ld-icon { margin-left: 0; font-size: 0.75em; } .learndash-wrapper .btn-join.ld-compact .ld-text, .learndash-wrapper #btn-join.ld-compact .ld-text { padding: 0; } .learndash-wrapper .btn-join.ld-button-alternate, .learndash-wrapper #btn-join.ld-button-alternate { background: transparent; color: #00a2e8; padding: 0; } .learndash-wrapper .btn-join.ld-button-alternate .ld-icon, .learndash-wrapper #btn-join.ld-button-alternate .ld-icon { background: #00a2e8; color: white; border-radius: 100%; width: 18px; height: 18px; -webkit-box-flex: 0; -ms-flex: 0 0 18px; flex: 0 0 18px; padding: 2px; line-height: 16px; text-align: center; font-weight: bold; -webkit-transition: color 0.3s ease, background 0.3s ease; transition: color 0.3s ease, background 0.3s ease; } .learndash-wrapper .btn-join.ld-button-alternate .ld-text, .learndash-wrapper #btn-join.ld-button-alternate .ld-text { padding-right: 0.5em; } .learndash-wrapper .btn-join.ld-button-alternate:hover, .learndash-wrapper #btn-join.ld-button-alternate:hover { background: transparent; } .learndash-wrapper .btn-join.ld-button-transparent, .learndash-wrapper #btn-join.ld-button-transparent { color: #00a2e8; background: transparent; } .learndash-wrapper .btn-join.ld-button-transparent.ld-status-complete, .learndash-wrapper #btn-join.ld-button-transparent.ld-status-complete { color: #019e7c; } .learndash-wrapper .btn-join.ld-button-transparent:hover, .learndash-wrapper #btn-join.ld-button-transparent:hover { background: transparent; } .learndash-wrapper .btn-join.ld-button-reverse, .learndash-wrapper #btn-join.ld-button-reverse { background: white; color: #00a2e8; } .learndash-wrapper .btn-join.ld-button-reverse:hover, .learndash-wrapper #btn-join.ld-button-reverse:hover { background: #00a2e8; color: white; } .learndash-wrapper .btn-join:hover, .learndash-wrapper #btn-join:hover { opacity: 0.75; background-color: #00a2e8; } .learndash-wrapper .btn-join:focus, .learndash-wrapper #btn-join:focus { outline: none; opacity: 0.75; } .learndash-wrapper .ld-button { margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; text-transform: none; font-family: inherit; font-weight: 800; font-size: 0.75em; text-align: center; text-decoration: none; cursor: pointer; width: 100%; max-width: 385px; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; height: auto; padding: .75em 1.5em; } .learndash-wrapper .ld-button .ld-icon { font-size: 0.875em; } .learndash-wrapper .ld-button .ld-text { padding: 0 1em; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } .learndash-wrapper .ld-button + .ld-button { margin-right: 1em; } .learndash-wrapper .ld-button.ld-compact { padding: 0; width: 24px; height: 24px; border-radius: 100%; -ms-flex-preferred-size: 24px; flex-basis: 24px; -ms-flex-negative: 0; flex-shrink: 0; padding: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .ld-button.ld-compact .ld-icon { margin-left: 0; font-size: 0.75em; } .learndash-wrapper .ld-button.ld-compact .ld-text { padding: 0; } .learndash-wrapper .ld-button.ld-button-alternate { background: transparent; color: #00a2e8; padding: 0; } .learndash-wrapper .ld-button.ld-button-alternate .ld-icon { background: #00a2e8; color: white; border-radius: 100%; width: 18px; height: 18px; -webkit-box-flex: 0; -ms-flex: 0 0 18px; flex: 0 0 18px; padding: 2px; line-height: 16px; text-align: center; font-weight: bold; -webkit-transition: color 0.3s ease, background 0.3s ease; transition: color 0.3s ease, background 0.3s ease; } .learndash-wrapper .ld-button.ld-button-alternate .ld-text { padding-right: 0.5em; } .learndash-wrapper .ld-button.ld-button-alternate:hover { background: transparent; } .learndash-wrapper .ld-button.ld-button-transparent { color: #00a2e8; background: transparent; } .learndash-wrapper .ld-button.ld-button-transparent.ld-status-complete { color: #019e7c; } .learndash-wrapper .ld-button.ld-button-transparent:hover { background: transparent; } .learndash-wrapper .ld-button.ld-button-reverse { background: white; color: #00a2e8; } .learndash-wrapper .ld-button.ld-button-reverse:hover { background: #00a2e8; color: white; } .learndash-wrapper .ld-button:hover { opacity: 0.75; background-color: #00a2e8; } .learndash-wrapper .ld-button:focus { outline: none; opacity: 0.75; } .learndash-wrapper .ld-button .ld-icon { -webkit-transition: all ease-in-out 250ms; transition: all ease-in-out 250ms; } .learndash-wrapper .ld-button:hover .ld-icon-arrow-right { -webkit-transform: translateX(-3px); -ms-transform: translateX(-3px); transform: translateX(-3px); } .learndash-wrapper .ld-button:hover .ld-icon-arrow-left { -webkit-transform: translateX(3px); -ms-transform: translateX(3px); transform: translateX(3px); } .learndash-wrapper a { text-decoration: none; text-shadow: none; border-bottom: none !important; -webkit-box-shadow: none !important; box-shadow: none !important; } .learndash-wrapper a:hover { text-decoration: none; } .learndash-wrapper.ld-container { display: -webkit-box; display: -ms-flexbox; display: flex; padding: 0 2em; max-width: 1280px; margin: auto; } .learndash-wrapper .ld-page-content { -webkit-box-flex: 1; -ms-flex: 1 auto; flex: 1 auto; padding-left: 2.5%; } .learndash-wrapper .ld-sidebar-content { -webkit-box-flex: 0; -ms-flex: 0 0 250px; flex: 0 0 250px; padding-right: 2.5%; } .learndash-wrapper .ld-profile-avatar { border-radius: 100%; overflow: hidden; } .learndash-wrapper .ld-profile-avatar img { width: 100%; height: auto; } @media (max-width: 1024px) { .learndash-wrapper.ld-container { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .learndash-wrapper .ld-page-content { margin-bottom: 3em; } } .learndash-wrapper .sfwd-mark-complete, .learndash-wrapper #sfwd-mark-complete { position: relative; display: block; overflow: hidden; } .learndash-wrapper .sfwd-mark-complete::after, .learndash-wrapper #sfwd-mark-complete::after { font-family: 'ld-icons' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; display: inline-block; content: "\e906"; position: absolute; left: 1em; top: 50%; -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); color: white; } .learndash-wrapper .learndash_mark_complete_button, .learndash-wrapper #learndash_mark_complete_button { margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; text-transform: none; font-family: inherit; font-weight: 800; font-size: 0.75em; text-align: center; text-decoration: none; cursor: pointer; width: 100%; max-width: 385px; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; height: auto; padding: .75em 1.5em; background-color: #019e7c; padding: 1em; padding-left: 3em; } .learndash-wrapper .learndash_mark_complete_button .ld-icon, .learndash-wrapper #learndash_mark_complete_button .ld-icon { font-size: 0.875em; } .learndash-wrapper .learndash_mark_complete_button .ld-text, .learndash-wrapper #learndash_mark_complete_button .ld-text { padding: 0 1em; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } .learndash-wrapper .learndash_mark_complete_button + .ld-button, .learndash-wrapper #learndash_mark_complete_button + .ld-button { margin-right: 1em; } .learndash-wrapper .learndash_mark_complete_button.ld-compact, .learndash-wrapper #learndash_mark_complete_button.ld-compact { padding: 0; width: 24px; height: 24px; border-radius: 100%; -ms-flex-preferred-size: 24px; flex-basis: 24px; -ms-flex-negative: 0; flex-shrink: 0; padding: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .learndash_mark_complete_button.ld-compact .ld-icon, .learndash-wrapper #learndash_mark_complete_button.ld-compact .ld-icon { margin-left: 0; font-size: 0.75em; } .learndash-wrapper .learndash_mark_complete_button.ld-compact .ld-text, .learndash-wrapper #learndash_mark_complete_button.ld-compact .ld-text { padding: 0; } .learndash-wrapper .learndash_mark_complete_button.ld-button-alternate, .learndash-wrapper #learndash_mark_complete_button.ld-button-alternate { background: transparent; color: #00a2e8; padding: 0; } .learndash-wrapper .learndash_mark_complete_button.ld-button-alternate .ld-icon, .learndash-wrapper #learndash_mark_complete_button.ld-button-alternate .ld-icon { background: #00a2e8; color: white; border-radius: 100%; width: 18px; height: 18px; -webkit-box-flex: 0; -ms-flex: 0 0 18px; flex: 0 0 18px; padding: 2px; line-height: 16px; text-align: center; font-weight: bold; -webkit-transition: color 0.3s ease, background 0.3s ease; transition: color 0.3s ease, background 0.3s ease; } .learndash-wrapper .learndash_mark_complete_button.ld-button-alternate .ld-text, .learndash-wrapper #learndash_mark_complete_button.ld-button-alternate .ld-text { padding-right: 0.5em; } .learndash-wrapper .learndash_mark_complete_button.ld-button-alternate:hover, .learndash-wrapper #learndash_mark_complete_button.ld-button-alternate:hover { background: transparent; } .learndash-wrapper .learndash_mark_complete_button.ld-button-transparent, .learndash-wrapper #learndash_mark_complete_button.ld-button-transparent { color: #00a2e8; background: transparent; } .learndash-wrapper .learndash_mark_complete_button.ld-button-transparent.ld-status-complete, .learndash-wrapper #learndash_mark_complete_button.ld-button-transparent.ld-status-complete { color: #019e7c; } .learndash-wrapper .learndash_mark_complete_button.ld-button-transparent:hover, .learndash-wrapper #learndash_mark_complete_button.ld-button-transparent:hover { background: transparent; } .learndash-wrapper .learndash_mark_complete_button.ld-button-reverse, .learndash-wrapper #learndash_mark_complete_button.ld-button-reverse { background: white; color: #00a2e8; } .learndash-wrapper .learndash_mark_complete_button.ld-button-reverse:hover, .learndash-wrapper #learndash_mark_complete_button.ld-button-reverse:hover { background: #00a2e8; color: white; } .learndash-wrapper .learndash_mark_complete_button:hover, .learndash-wrapper #learndash_mark_complete_button:hover { opacity: 0.75; background-color: #00a2e8; } .learndash-wrapper .learndash_mark_complete_button:focus, .learndash-wrapper #learndash_mark_complete_button:focus { outline: none; opacity: 0.75; } .learndash-wrapper .learndash_mark_complete_button:disabled, .learndash-wrapper #learndash_mark_complete_button:disabled { cursor: pointer; -webkit-filter: grayscale(100%); /* Safari 6.0 - 9.0 */ filter: grayscale(100%); } .learndash-wrapper .ld-content-actions { clear: both; border-top: 2px solid #e2e7ed; padding: 1em 0; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-content-actions .ld-content-action { -webkit-box-flex: 0; -ms-flex: 0 0 185px; flex: 0 0 185px; position: relative; } .learndash-wrapper .ld-content-actions > a { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; font-size: .75em; } .learndash-wrapper .ld-content-actions .learndash_timer, .learndash-wrapper .ld-content-actions #learndash_timer { position: absolute; top: 100%; text-align: center; display: block; padding: 1em; right: 0; left: 0; color: #728188; font-weight: bold; } @media (max-width: 768px) { .learndash-wrapper .ld-content-actions { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } .learndash-wrapper .ld-content-actions .ld-content-action { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } .learndash-wrapper .ld-content-actions > * { margin-bottom: 2em; margin-right: 0; } } .learndash-wrapper .ld-mobile-only { display: none !important; } @media (max-width: 640px) { .learndash-wrapper .ld-mobile-only { display: inherit !important; } } @media (max-width: 640px) { .learndash-wrapper .ld-not-mobile { display: none !important; } } .learndash-wrapper .ld-loading { position: relative; } .learndash-wrapper .ld-loading::after { position: absolute; content: ''; display: block; z-index: 99; top: 0; right: 0; left: 0; bottom: 0; background: rgba(255, 255, 255, 0.5); } .learndash-wrapper .ld-loading::before { content: ''; display: block; position: absolute; border-radius: 50%; width: 40px; z-index: 100; height: 40px; right: 50%; top: 50%; margin: -20px -20px 0 0; border: 3px solid rgba(0, 0, 0, 0.5); border-top: 3px solid #00a2e8; -webkit-animation: ldrotating 1.2s infinite linear; animation: ldrotating 1.2s infinite linear; } @-webkit-keyframes ldrotating { 100% { -webkit-transform: rotate(-360deg); transform: rotate(-360deg); } } @keyframes ldrotating { 100% { -webkit-transform: rotate(-360deg); transform: rotate(-360deg); } } /* Targets IE10/IE11 */ @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { .learndash-wrapper .ld-expand-button { min-width: 120px; } .learndash-wrapper .ld-expand-button.ld-button-alternate .ld-icon { -ms-flex-preferred-size: 15px; flex-basis: 15px; } .learndash-wrapper .ld-status-icon.ld-status-incomplete, .learndash-wrapper .ld-status-icon.ld-status-in-progress { -ms-flex-preferred-size: 18px; flex-basis: 18px; } .learndash-wrapper .ld-course-navigation .ld-status-icon.ld-status-incomplete, .learndash-wrapper .ld-course-navigation .ld-status-icon.ld-status-in-progress { -ms-flex-preferred-size: 10px; flex-basis: 10px; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-details .ld-expand-button { min-width: 80px; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-details .ld-expand-button.ld-compact { min-width: 0; margin-left: 1em; } .learndash-wrapper .ld-item-list .ld-section-heading .ld-search-prompt { margin-left: 3em; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-actions { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } .learndash-wrapper .ld-login-modal .ld-login-modal-wrapper { width: 100%; } } .learndash-wrapper .ld-group-list { margin-bottom: 2em; } .learndash-wrapper .ld-item-list { margin: 2em 0 1em 0; } .learndash-wrapper .ld-item-list .ld-table-list.ld-no-pagination { border-bottom: 0 !important; } .learndash-wrapper .ld-item-list .ld-item-list-content { padding: 1.5em; } .learndash-wrapper .ld-item-list .ld-section-heading { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; -webkit-box-align: center; -ms-flex-align: center; align-items: center; align-items: center; } .learndash-wrapper .ld-item-list .ld-section-heading h3 { font-weight: bold; } .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; width: 100%; } .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-progress { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-progress .ld-progress-stats { -webkit-box-align: end; -ms-flex-align: end; align-items: flex-end; } .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-progress .ld-progress-label { text-transform: none; font-size: 1.5em; } .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-progress .ld-progress-bar { background-color: #e2e7ed; } .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-expand-button { margin-right: 1em; } @media (max-width: 640px) { .learndash-wrapper .ld-item-list .ld-section-heading h2, .learndash-wrapper .ld-item-list .ld-section-heading h3 { text-align: center; margin-bottom: 10px; } .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-expand-button { margin: 10px auto; } } .learndash-wrapper .ld-item-list .ld-section-heading .ld-search-prompt { display: -webkit-box; display: -ms-flexbox; display: flex; color: #728188; cursor: pointer; font-weight: 800; font-size: 0.875em; -webkit-transition: color 0.3s ease; transition: color 0.3s ease; } .learndash-wrapper .ld-item-list .ld-section-heading .ld-search-prompt .ld-icon { width: 20px; height: 20px; margin-right: 5px; font-size: 1.4em; } .learndash-wrapper .ld-item-list .ld-section-heading .ld-search-prompt:hover { color: #00a2e8; } .learndash-wrapper .ld-item-list .ld-item-search { height: auto; max-height: 0px; -webkit-transition: max-height 0.3s ease; transition: max-height 0.3s ease; overflow: hidden; } .learndash-wrapper .ld-item-list .ld-item-search h4 { margin: 0; margin-bottom: 0.5em; font-weight: bold; } .learndash-wrapper .ld-item-list .ld-item-search .ld-closer { position: absolute; top: 10px; left: 15px; cursor: pointer; font-weight: 700; display: -webkit-box; display: -ms-flexbox; display: flex; font-size: 0.625em; } .learndash-wrapper .ld-item-list .ld-item-search .ld-closer:before { content: 'x'; margin-left: 0.25em; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-wrapper { padding: 12px; position: relative; background: #e2e7ed; border-radius: 6px; margin: 1em 0; overflow: visible; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-wrapper:before { content: ''; position: absolute; width: 16px; height: 16px; top: -8px; right: 66px; background: white; -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); z-index: 9; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-wrapper:before { background: #e2e7ed; z-index: 9; right: auto; left: 130px; } @media (max-width: 640px) { .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-wrapper:before { right: 20px; left: auto; } } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: end; -ms-flex-align: end; align-items: flex-end; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields > * { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; padding-left: 1em; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields label { display: block; margin-bottom: 0.5em; font-size: 0.875em; color: #728188; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields input, .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields select { height: 30px; border: 2px solid #ccd2d9; background: white; border-radius: 0; width: 100%; padding: 0 0.5em; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-name { position: relative; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-name .ld-reset-button { position: absolute; left: 18px; bottom: 2px; font-weight: 700; font-size: 12px; background: #fff; height: 26px; padding: 0 1em; line-height: 26px; color: #728188; text-decoration: none; display: inline-block; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-name .ld-reset-button::before { content: 'x'; margin-left: 0.25em; display: inline-block; } @media (max-width: 640px) { .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-name .ld-reset-button { left: 2px; } } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-name input[type=text] { width: 100%; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit { -webkit-box-flex: 0; -ms-flex: 0 0 100px; flex: 0 0 100px; padding-left: 0; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button { height: 30px; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; border: 0; margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; text-transform: none; font-family: inherit; font-weight: 800; font-size: 0.75em; text-align: center; text-decoration: none; cursor: pointer; width: 100%; max-width: 385px; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; display: -webkit-box; display: -ms-flexbox; display: flex; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; height: auto; padding: .75em 1.5em; margin: 0; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button .ld-icon { font-size: 0.875em; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button .ld-text { padding: 0 1em; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button + .ld-button { margin-right: 1em; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-compact { padding: 0; width: 24px; height: 24px; border-radius: 100%; -ms-flex-preferred-size: 24px; flex-basis: 24px; -ms-flex-negative: 0; flex-shrink: 0; padding: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-compact .ld-icon { margin-left: 0; font-size: 0.75em; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-compact .ld-text { padding: 0; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-alternate { background: transparent; color: #00a2e8; padding: 0; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-alternate .ld-icon { background: #00a2e8; color: white; border-radius: 100%; width: 18px; height: 18px; -webkit-box-flex: 0; -ms-flex: 0 0 18px; flex: 0 0 18px; padding: 2px; line-height: 16px; text-align: center; font-weight: bold; -webkit-transition: color 0.3s ease, background 0.3s ease; transition: color 0.3s ease, background 0.3s ease; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-alternate .ld-text { padding-right: 0.5em; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-alternate:hover { background: transparent; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-transparent { color: #00a2e8; background: transparent; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-transparent.ld-status-complete { color: #019e7c; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-transparent:hover { background: transparent; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-reverse { background: white; color: #00a2e8; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-reverse:hover { background: #00a2e8; color: white; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button:hover { opacity: 0.75; background-color: #00a2e8; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button:focus { outline: none; opacity: 0.75; } @media (max-width: 640px) { .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields > * { width: 100%; margin-bottom: 1em; padding-left: 0; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit { -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button { margin: auto; } } .learndash-wrapper .ld-item-list .ld-item-list-item { border: 2px solid #e2e7ed; border-radius: 6px; margin-bottom: 12px; background: #fff; } .learndash-wrapper .ld-item-list .ld-item-list-item.ld-is-next { border-color: #00a2e8; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview { padding: 20px; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-status-icon { margin-left: 0.5em; margin-top: 0.35em; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-name { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-flex: 1; -ms-flex: 1 1 100%; flex: 1 1 100%; -webkit-box-align: top; -ms-flex-align: top; align-items: top; color: #495255; } @media (max-width: 640px) { .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-name { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-sep { color: #e2e7ed; padding: 0 0.5em; } .learndash-wrapper .ld-item-list .ld-item-list-item a.ld-item-name:hover { color: #00a2e8; } .learndash-wrapper .ld-item-list .ld-item-list-item a.ld-item-name:hover .ld-item-title .ld-item-components { color: #728188; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-title .ld-item-components { font-weight: 700; display: block; font-size: 0.825em; margin-top: 0.5em; color: #728188; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-title .ld-status { display: inline-block; font-size: 0.825em; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-title .ld-item-component + .ld-status { margin-right: 0.5em; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-details { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: end; -ms-flex-pack: end; justify-content: flex-end; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-details .ld-expand-button { margin-right: 1em; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-details .ld-certificate-link { margin-left: 15px; font-size: 26px; color: #019e7c; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded { position: relative; height: auto; max-height: 0px; overflow: hidden; -webkit-transition: max-height 0.5s ease; transition: max-height 0.5s ease; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded:before { content: ''; position: absolute; width: 16px; height: 16px; top: -8px; right: 66px; background: white; -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); z-index: 9; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded:before { right: 64px; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-progress { background: #e2e7ed; padding: 2em 4.125em; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-item-contents { padding: 2em 4.125em; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-progress { margin-top: 0; } @media (max-width: 640px) { .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-details { margin-top: 1em; margin-right: 2em; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-details .ld-status { margin-right: 0; margin-left: 1em; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-details .ld-expand-button { margin-right: 0; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-progress, .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-item-contents { padding: 2em 1em; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-item-contents { padding-top: 0; } } .learndash-wrapper .ld-table-list { border-radius: 6px; overflow: hidden; margin: 1.5em 0; } .learndash-wrapper .ld-table-list .ld-table-list-header, .learndash-wrapper .ld-table-list .ld-table-list-item-preview { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; -webkit-box-align: center; -ms-flex-align: center; align-items: center; padding: 20px 0; overflow-wrap: break-word; } .learndash-wrapper .ld-table-list .ld-table-list-header a, .learndash-wrapper .ld-table-list .ld-table-list-item-preview a { color: #333333; } .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-title, .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-title { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-title a, .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-title a { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-columns, .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-flex: 2; -ms-flex: 2; flex: 2; padding-right: 1em; } .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-columns .ld-table-list-column, .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; padding-right: 0.25em; padding-left: 0.25em; } .learndash-wrapper .ld-table-list a.ld-table-list-item-preview { color: #333333; } .learndash-wrapper .ld-table-list a.ld-table-list-item-preview:hover { color: #00a2e8; } .learndash-wrapper .ld-table-list .ld-table-list-header { background-color: #00a2e8; color: white; font-weight: 800; padding: 20px 22px; } .learndash-wrapper .ld-table-list .ld-table-list-items { padding: 0 20px; border: 2px solid #e2e7ed; border-top: 0; border-bottom: 0; font-size: 0.875em; overflow: hidden; } @media (max-width: 640px) { .learndash-wrapper .ld-table-list .ld-table-list-items { padding: 0 20px; } } .learndash-wrapper .ld-table-list .ld-table-list-item { border-bottom: 1px solid #e2e7ed; padding-right: 0; padding-left: 0; } .learndash-wrapper .ld-table-list .ld-table-list-item:last-child { border-bottom: 0; } .learndash-wrapper .ld-table-list .ld-table-list-item .ld-table-list-title a { color: #333333; } .learndash-wrapper .ld-table-list .ld-table-list-item .ld-table-list-title a:hover { color: #00a2e8; } .learndash-wrapper .ld-table-list .ld-table-list-item .ld-comments-column { color: #728188; font-weight: 700; font-size: 1.2em; } .learndash-wrapper .ld-table-list .ld-table-list-item .ld-comments-column a { color: #728188; } .learndash-wrapper .ld-table-list .ld-table-list-item .ld-comments-column .ld-icon-comments { font-size: 1.5em; -webkit-transform: translateY(0.2em); -ms-transform: translateY(0.2em); transform: translateY(0.2em); } .learndash-wrapper .ld-table-list .ld-table-list-item-expanded { padding: 0.75em 2em; } .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list { position: relative; } .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list:before { content: ''; position: absolute; width: 16px; height: 16px; top: -8px; right: 66px; background: white; -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); z-index: 9; } .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list:before { right: 32px; } .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-header { background-color: #e2e7ed; color: #495255; } .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-items { padding-top: 0; background: #e2e7ed; } .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-item:first-child { border-top: 2px solid #495255; } .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-item { border-bottom: 1px solid rgba(73, 82, 85, 0.2); } .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-item:last-child { border-bottom: 0; } .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-item-preview { padding: 10px; padding-right: 0; padding-left: 0; } .learndash-wrapper .ld-table-list .ld-table-list-footer { background: #e2e7ed; padding: 20px; } .learndash-wrapper .ld-table-list .ld-table-list-footer .ld-pagination { margin-bottom: 0; } .learndash-wrapper .ld-table-list.ld-no-pagination { border-bottom: 2px solid #e2e7ed; } .learndash-wrapper .ld-table-list.ld-no-pagination .ld-table-list-footer { background: transparent; padding: 0; } .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-columns .ld-table-list-column { font-size: 0.75em; -webkit-box-flex: 0; -ms-flex: 0 1 150px; flex: 0 1 150px; } .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-columns .ld-table-list-column.ld-assignment-column-approved { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: left; } .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column { font-size: 0.875em; -webkit-box-flex: 0; -ms-flex: 0 1 150px; flex: 0 1 150px; line-height: 1.4em; } .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column .ld-column-label { display: none; } .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column.ld-statuscolumn { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: left; } .learndash-wrapper .ld-table-list.ld-assignment-list .ld-table-list-item-preview .ld-table-list-title { overflow: hidden; } @media (max-width: 768px) { .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-columns { display: none; } .learndash-wrapper .ld-table-list .ld-table-list-item-preview { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-title { width: 100%; } .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns { width: 100%; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; /*padding-left:2em;*/ padding-top: 0.5em; } .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column { -webkit-box-flex: 1; -ms-flex: 1 auto; flex: 1 auto; margin: 0 0 0.5em 0; } .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column .ld-column-label { display: inline-block; margin: 0 0 0.5em 0; } .learndash-wrapper .ld-table-list.ld-assignment-list .ld-table-list-item-preview .ld-table-list-title { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } } @media (max-width: 640px) { .learndash-wrapper .ld-lesson-list .ld-table-list-items { padding: 0; } .learndash-wrapper #ld-profile .ld-table-list .ld-table-list-item-expanded { padding: 0; } } .learndash-wrapper .ld-progress { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; margin: 1em 0; } .learndash-wrapper .ld-progress .ld-progress-heading { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; font-size: 0.75em; line-height: 1em; } .learndash-wrapper .ld-progress .ld-progress-heading .ld-progress-label { text-transform: uppercase; font-weight: 800; } .learndash-wrapper .ld-progress .ld-progress-heading .ld-progress-stats { display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } .learndash-wrapper .ld-progress .ld-progress-heading .ld-progress-stats .ld-progress-percentage { text-transform: uppercase; font-weight: 800; color: #019e7c; margin-left: 1.5em; } .learndash-wrapper .ld-progress .ld-progress-bar { height: 7px; background-color: white; border-radius: 7px; margin: 5px 0; overflow: hidden; } .learndash-wrapper .ld-progress .ld-progress-bar .ld-progress-bar-percentage { height: 7px; background: #019e7c; } .learndash-wrapper .ld-progress.ld-progress-inline { -webkit-box-orient: horizontal; -webkit-box-direction: reverse; -ms-flex-direction: row-reverse; flex-direction: row-reverse; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-progress.ld-progress-inline .ld-progress-bar { -webkit-box-flex: 1; -ms-flex: 1 auto; flex: 1 auto; margin-left: 1em; } .learndash-wrapper .ld-progress.ld-progress-inline .ld-status { margin-right: 1em; } @media (max-width: 640px) { .learndash-wrapper .ld-progress .ld-progress-heading { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .learndash-wrapper .ld-progress .ld-progress-heading.ld-progress-inline { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } } .learndash-wrapper .ld-breadcrumbs + .ld-topic-status { padding: 0; } .learndash-wrapper.learndash-widget .ld-progress { -ms-flex-wrap: wrap; flex-wrap: wrap; } .learndash-wrapper.learndash-widget .ld-progress .ld-progress-heading { -webkit-box-ordinal-group: 2; -ms-flex-order: 1; order: 1; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; margin: 0.25em 0; } .learndash-wrapper.learndash-widget .ld-progress .ld-progress-bar { background-color: #e2e7ed; width: 100%; margin-left: 0; } .learndash-pager { color: #728188; display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; color: #728188; text-transform: uppercase; -webkit-box-align: center; -ms-flex-align: center; align-items: center; font-size: 12px; font-weight: 700; background-color: #e2e7ed; padding: 6px 12px; border-radius: 17px; margin: 10px 0; } .learndash-pager a { font-size: 18px; color: #728188; text-decoration: none !important; border: none !important; cursor: pointer; -webkit-box-shadow: none !important; box-shadow: none !important; line-height: 1em; } .learndash-pager a::before, .learndash-pager a::after { display: none; } .learndash-pager a.disabled { opacity: 0.5; cursor: default; } .learndash-pager .pager-left { -webkit-box-ordinal-group: 2; -ms-flex-order: 1; order: 1; } .learndash-pager .pager-legend { -webkit-box-ordinal-group: 3; -ms-flex-order: 2; order: 2; padding: 0 8px; } .learndash-pager .pager-right { -webkit-box-ordinal-group: 4; -ms-flex-order: 3; order: 3; } .learndash-wrapper .ld-pagination { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: end; -ms-flex-pack: end; justify-content: flex-end; color: #728188; text-transform: uppercase; -webkit-box-align: center; -ms-flex-align: center; align-items: center; font-size: 0.75em; font-weight: 700; margin-bottom: 1em; } .learndash-wrapper .ld-pagination .ld-pages { background-color: #e2e7ed; -webkit-box-flex: 0; -ms-flex: 0 0 180px; flex: 0 0 180px; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; -webkit-box-align: center; -ms-flex-align: center; align-items: center; padding: 0.5em; border-radius: 17px; overflow: hidden; line-height: 1; } .learndash-wrapper .ld-pagination .ld-pages i { display: block; background-size: contain; background-position: center; background-repeat: no-repeat; color: #728188; cursor: pointer; -webkit-transition: color 0.3s ease; transition: color 0.3s ease; } .learndash-wrapper .ld-pagination .ld-pages i:hover { color: #00a2e8; } .learndash-wrapper .ld-pagination .ld-pages a { color: #728188; -webkit-transition: all ease-in-out 250ms; transition: all ease-in-out 250ms; } .learndash-wrapper .ld-pagination .ld-pages a:hover { color: #333; } .learndash-wrapper .ld-pagination .ld-pages a.disabled { pointer-events: none; opacity: 0.25; } @media (max-width: 640px) { .learndash-wrapper .ld-pagination { -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } } .learndash-wrapper .ld-item-list-item-expanded .ld-pagination .ld-pages { -webkit-box-flex: 0; -ms-flex: 0 0 100px; flex: 0 0 100px; padding: 0 10px; } .learndash-wrapper .ld-table-list-footer .ld-pagination .ld-pages { -webkit-box-flex: 0; -ms-flex: 0 0 120px; flex: 0 0 120px; } .learndash-wrapper .ld-section-heading h3 { font-size: 24px; margin: 0.5em 0; } .learndash-wrapper .ld-score { font-weight: 700; } .learndash-wrapper .ld-score.score-low { color: #ff3c00; } .learndash-wrapper .ld-score.score-high { color: #019e7c; } .learndash-wrapper .ld-expand-button { margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; text-transform: none; font-family: inherit; font-weight: 800; font-size: 0.75em; text-align: center; text-decoration: none; cursor: pointer; width: 100%; max-width: 385px; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; height: auto; padding: .75em 1.5em; display: flex; align-items: center; } .learndash-wrapper .ld-expand-button .ld-icon { font-size: 0.875em; } .learndash-wrapper .ld-expand-button .ld-text { padding: 0 1em; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } .learndash-wrapper .ld-expand-button + .ld-button { margin-right: 1em; } .learndash-wrapper .ld-expand-button.ld-compact { padding: 0; width: 24px; height: 24px; border-radius: 100%; -ms-flex-preferred-size: 24px; flex-basis: 24px; -ms-flex-negative: 0; flex-shrink: 0; padding: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .ld-expand-button.ld-compact .ld-icon { margin-left: 0; font-size: 0.75em; } .learndash-wrapper .ld-expand-button.ld-compact .ld-text { padding: 0; } .learndash-wrapper .ld-expand-button.ld-button-alternate { background: transparent; color: #00a2e8; padding: 0; } .learndash-wrapper .ld-expand-button.ld-button-alternate .ld-icon { background: #00a2e8; color: white; border-radius: 100%; width: 18px; height: 18px; -webkit-box-flex: 0; -ms-flex: 0 0 18px; flex: 0 0 18px; padding: 2px; line-height: 16px; text-align: center; font-weight: bold; -webkit-transition: color 0.3s ease, background 0.3s ease; transition: color 0.3s ease, background 0.3s ease; } .learndash-wrapper .ld-expand-button.ld-button-alternate .ld-text { padding-right: 0.5em; } .learndash-wrapper .ld-expand-button.ld-button-alternate:hover { background: transparent; } .learndash-wrapper .ld-expand-button.ld-button-transparent { color: #00a2e8; background: transparent; } .learndash-wrapper .ld-expand-button.ld-button-transparent.ld-status-complete { color: #019e7c; } .learndash-wrapper .ld-expand-button.ld-button-transparent:hover { background: transparent; } .learndash-wrapper .ld-expand-button.ld-button-reverse { background: white; color: #00a2e8; } .learndash-wrapper .ld-expand-button.ld-button-reverse:hover { background: #00a2e8; color: white; } .learndash-wrapper .ld-expand-button:hover { opacity: 0.75; background-color: #00a2e8; } .learndash-wrapper .ld-expand-button:focus { outline: none; opacity: 0.75; } .learndash-wrapper .ld-expand-button.ld-expanded .ld-icon { -webkit-transform: rotate(180deg); -ms-transform: rotate(180deg); transform: rotate(180deg); } .learndash-wrapper .ld-expand-button.ld-button-alternate .ld-text { text-align: right; } .learndash-wrapper .ld-status { border-radius: 12px; background-color: #e2e7ed; text-align: center; padding: 5px 12px; text-transform: uppercase; font-weight: 700; letter-spacing: 0.5px; font-size: 11px; line-height: 1.1; color: #728188; display: block; } .learndash-wrapper .ld-status-icon { -ms-flex-preferred-size: 26px; flex-basis: 26px; -ms-flex-negative: 0; flex-shrink: 0; height: 26px; width: 26px; border-radius: 100%; display: inline-block; position: relative; text-align: center; } .learndash-wrapper .ld-status-icon .ld-icon { font-size: 1.5em; } .learndash-wrapper .ld-status-icon .ld-icon:before { position: absolute; top: 50%; right: 50%; -webkit-transform: translateY(-50%) translateX(50%); -ms-transform: translateY(-50%) translateX(50%); transform: translateY(-50%) translateX(50%); } .learndash-wrapper .ld-status-icon.ld-status-complete .ld-icon { font-size: 1em; } .learndash-wrapper .ld-status-icon.ld-quiz-complete { color: #019e7c; } .learndash-wrapper .ld-status-complete { background-color: #019e7c; color: white; } .learndash-wrapper a.ld-status-complete:link, .learndash-wrapper a.ld-status-complete:visited, .learndash-wrapper a.ld-status-complete:focus { color: white; } .learndash-wrapper .ld-status-waiting { background-color: #ffd200; color: rgba(0, 0, 0, 0.65); } .learndash-wrapper .ld-status-unlocked { background-color: #ebf8fd; color: #00a2e8; } .learndash-wrapper .ld-status-incomplete.ld-status-icon { border: 4px solid #e2e7ed; background-color: white; } .learndash-wrapper .ld-status-in-progress { border: 4px solid #e2e7ed; border-right-color: #019e7c; border-top-color: #019e7c; -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); background-color: white; } .learndash-wrapper .ld-certificate-icon { width: 40px; height: 30px; background: #019e7c; display: block; margin: auto; } .learndash-wrapper .ld-item-icon { margin-left: 0.25em; -ms-flex-negative: 0; flex-shrink: 0; font-size: 1.4em; } .learndash-wrapper .ld-item-icon.quiz-failure { /*background:rgba($orange, 0.6);*/ color: #ff3c00; } .learndash-wrapper .ld-item-icon.ld-quiz-complete { /*background:rgba($green, 0.6);*/ color: #019e7c; } .learndash-wrapper .ld-item-icon.ld-quiz-incomplete { color: #333333; } .learndash-wrapper .ld-icon-delete { font-size: 1.8em; color: #7b8990; margin-left: 0.25em; } .learndash-wrapper .ld-icon-delete:hover { color: #333333; } .learndash-wrapper .ld-home-link { color: #495255; font-size: 0.75em; margin: 0 0 0.75em 0; text-decoration: underline; } .learndash-wrapper .ld-home-link:hover { text-decoration: none; } .learndash-wrapper .ld-text-content { color: #666666; line-height: 1.6; margin: 1.5em 0; } .learndash-wrapper .ld-select-field { position: relative; } .learndash-wrapper .ld-select-field:after { font-family: 'ld-icons' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; display: inline-block; content: "\e90e"; position: absolute; top: 50%; left: 0.5em; z-index: 9; -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); pointer-events: none; } .learndash-wrapper .ld-select-field select { -webkit-appearance: none; -moz-appearance: none; appearance: none; } .learndash-wrapper .ld-file-upload { padding: 1.5em; background-color: #f0f3f6; border-radius: 6px; margin: 1em 0; } .learndash-wrapper .ld-file-upload .ld-file-upload-heading { color: #728188; font-size: 1.2em; font-weight: 700; } .learndash-wrapper .ld-file-upload .ld-file-upload-heading span { font-weight: 300; font-size: 0.8em; } .learndash-wrapper .ld-file-upload .ld-file-upload-form { display: -webkit-box; display: -ms-flexbox; display: flex; margin-top: 1em; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input { width: 0.1px; height: 0.1px; opacity: 0; overflow: hidden; position: absolute; z-index: -1; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input + label { font-weight: 700; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; background-color: white; border-top-right-radius: 12px; border-bottom-right-radius: 12px; overflow: hidden; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input + label strong { background-color: #728188; font-weight: 700; color: white; padding: 0.5em 2em; font-size: 0.875em; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input + label span { color: #333333; font-size: 0.875em; font-style: italic; border-top-left-radius: 12px; border-bottom-left-radius: 12px; padding: 0.5em 2em; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-button { -webkit-box-flex: 0; -ms-flex: 0 0 150px; flex: 0 0 150px; height: 35px; text-align: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; font-size: 0.875em; opacity: 0.5; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-selected + .ld-button { opacity: 1; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input + label { cursor: pointer; border-top-left-radius: 12px; border-bottom-left-radius: 12px; margin-left: 0.5em; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input:focus + label, .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input.has-focus + label { outline: 1px dotted #000; outline: -webkit-focus-ring-color auto 5px; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-upload-message { font-size: 0.8em; margin-top: 1em; line-height: 1.5em; } @media (max-width: 640px) { .learndash-wrapper .ld-file-upload .ld-file-upload-form { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input + label { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; border-radius: 0; text-align: center; width: 100%; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input + label strong, .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input + label span { width: 100%; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-button { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; margin-top: 1em; } } .learndash-wrapper .ld-hide { display: none; } .learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading, .learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading { margin-bottom: 1.5em; } .learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading h2, .learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading h2 { margin: 0; padding: 0; font-size: 24px; } .learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading .ld-item-list-actions, .learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading .ld-item-list-actions { width: auto; -webkit-box-pack: end; -ms-flex-pack: end; justify-content: flex-end; } @media (max-width: 640px) { .learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading, .learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading { margin-bottom: 0.5em; margin-top: 0.5em; -ms-flex-wrap: wrap; flex-wrap: wrap; } .learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading h2, .learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading .ld-item-list-actions, .learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading h2, .learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading .ld-item-list-actions { -webkit-box-flex: 0; -ms-flex: 0 0 100%; flex: 0 0 100%; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; } } .learndash-wrapper .ld-item-list.ld-course-list .ld-lesson-section-heading, .learndash-wrapper .ld-item-list.ld-lesson-list .ld-lesson-section-heading { font-size: 18px; display: block; margin: 1em 0 0.5em 0; font-weight: bold; } .learndash-wrapper { /* Lesson list in table format */ } .learndash-wrapper .ld-lesson-list.ld-item-list .ld-item-list-item .ld-table-list { border-radius: 0; margin-top: 0; margin: 0; } .learndash-wrapper .ld-lesson-list.ld-item-list .ld-item-list-item .ld-table-list .ld-table-list-items { border: 0; } .learndash-wrapper .ld-item-list.ld-lesson-list .ld-topic-list .ld-table-list-header { padding: 20px 60px; } .learndash-wrapper .ld-item-list.ld-lesson-list .ld-topic-list .ld-table-list-item { margin: 0 2.8em; } @media (max-width: 768px) { .learndash-wrapper .ld-item-list.ld-lesson-list .ld-topic-list .ld-table-list-header { padding-right: 1em; padding-left: 1em; } .learndash-wrapper .ld-item-list.ld-lesson-list .ld-topic-list .ld-table-list-item { margin: 0 1em; } } .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-lesson-details { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; font-size: 0.75em; line-height: 1em; } .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-lesson-details .ld-lesson-list-progress { text-transform: uppercase; padding-left: 10px; margin-left: 10px; border-left: 1px solid rgba(255, 255, 255, 0.5); } .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-lesson-details .ld-lesson-list-steps { font-weight: normal; } .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-preview { -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-preview .ld-status-icon { margin-left: 0.5em; } .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-expanded { padding-top: 0; } .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-expanded .ld-status { display: inline-block; } .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-item.unavailable .ld-table-list-item-preview { opacity: 0.5; } @media (max-width: 640px) { .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-header { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-align: stretch; -ms-flex-align: stretch; align-items: stretch; } .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-lesson-details { margin: 1em 2.9em; } } .learndash-wrapper .ld-topic-status { border-radius: 6px; background: #f0f3f6; overflow: hidden; } .learndash-wrapper .ld-topic-status .ld-progress { padding: 0 1em; } .learndash-wrapper .quiz_continue_link { display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-pack: distribute; justify-content: space-around; margin: 10px; } .learndash-wrapper .ld-quiz-actions { border-top: 2px solid #f0f3f6; margin-top: 30px; padding-top: 30px; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; margin: 20px 0; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: horizontal; -webkit-box-direction: reverse; -ms-flex-direction: row-reverse; flex-direction: row-reverse; } .learndash-wrapper .ld-quiz-actions .quiz_continue_link { margin: 0 10px; } .learndash-wrapper .ld-quiz-actions .wpProQuiz_button { margin: 0 10px; background: #495255; } .learndash-wrapper .ld-quiz-actions input[type='button'] { margin: 0 10px; } .learndash-wrapper .ld-quiz-actions input[name="reShowQuestion"], .learndash-wrapper .ld-quiz-actions input[name="restartQuiz"] { background: #495255; } @media (max-width: 768px) { .learndash-wrapper .ld-quiz-actions { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .learndash-wrapper .ld-quiz-actions .quiz_continue_link, .learndash-wrapper .ld-quiz-actions .wpProQuiz_button, .learndash-wrapper .ld-quiz-actions input[type='button'] { margin-bottom: 1em; margin-right: auto; margin-left: auto; width: auto; } } .learndash-wrapper #quiz_continue_link { background: #019e7c; } .learndash-wrapper #quiz_continue_link:hover { background: #019e7c; } .learndash-wrapper .course_progress { height: 7px; max-width: 100%; background-color: #f0f3f6; border-radius: 7px; margin: 1em 0; overflow: hidden; } .learndash-wrapper .course_progress .sending_progress_bar { height: 7px; background: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_lock, .learndash-wrapper .wpProQuiz_content .wpProQuiz_loadQuiz, .learndash-wrapper .wpProQuiz_content .wpProQuiz_prerequisite, .learndash-wrapper .wpProQuiz_content .wpProQuiz_startOnlyRegisteredUser { padding: 25px 75px 25px 15px; /* padding: 10px; */ background-color: #f0f3f6; border-radius: 6px; margin: 1em 0; border: 2px solid #e2e7ed; color: #728188; position: relative; min-height: 85px; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_lock p, .learndash-wrapper .wpProQuiz_content .wpProQuiz_loadQuiz p, .learndash-wrapper .wpProQuiz_content .wpProQuiz_prerequisite p, .learndash-wrapper .wpProQuiz_content .wpProQuiz_startOnlyRegisteredUser p { margin: 0; padding: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable { border: 5px solid #f0f3f6; border-radius: 4px; padding: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable table, .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable table tbody { border: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable table tbody td { padding: 15px; border: 0 !important; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable .wpProQuiz_resultValue div { -webkit-box-shadow: none; box-shadow: none; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable .wpProQuiz_resultName { line-height: 1.2em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_certificate { text-align: center; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_certificate a.btn-blue { margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; display: inline-block; text-transform: none; font-family: inherit; font-weight: 800; font-size: .75em; display: inline-block; padding: 0.5em 1em; text-align: center; -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; -webkit-box-align: center; -ms-flex-align: center; align-items: center; text-decoration: none; cursor: pointer; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity .3s ease; transition: opacity .3s ease; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2 { margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; text-transform: none; font-family: inherit; font-weight: 800; font-size: 0.75em; text-align: center; text-decoration: none; cursor: pointer; width: 100%; max-width: 385px; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; height: auto; padding: .75em 1.5em; /* max-width:185px; */ width: auto; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button .ld-icon, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2 .ld-icon { font-size: 0.875em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button .ld-text, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2 .ld-text { padding: 0 1em; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button + .ld-button, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2 + .ld-button { margin-right: 1em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-compact, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-compact { padding: 0; width: 24px; height: 24px; border-radius: 100%; -ms-flex-preferred-size: 24px; flex-basis: 24px; -ms-flex-negative: 0; flex-shrink: 0; padding: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-compact .ld-icon, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-compact .ld-icon { margin-left: 0; font-size: 0.75em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-compact .ld-text, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-compact .ld-text { padding: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-alternate, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-alternate { background: transparent; color: #00a2e8; padding: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-alternate .ld-icon, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-alternate .ld-icon { background: #00a2e8; color: white; border-radius: 100%; width: 18px; height: 18px; -webkit-box-flex: 0; -ms-flex: 0 0 18px; flex: 0 0 18px; padding: 2px; line-height: 16px; text-align: center; font-weight: bold; -webkit-transition: color 0.3s ease, background 0.3s ease; transition: color 0.3s ease, background 0.3s ease; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-alternate .ld-text, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-alternate .ld-text { padding-right: 0.5em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-alternate:hover, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-alternate:hover { background: transparent; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-transparent, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-transparent { color: #00a2e8; background: transparent; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-transparent.ld-status-complete, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-transparent.ld-status-complete { color: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-transparent:hover, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-transparent:hover { background: transparent; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-reverse, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-reverse { background: white; color: #00a2e8; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-reverse:hover, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-reverse:hover { background: #00a2e8; color: white; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button:hover, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2:hover { opacity: 0.75; background-color: #00a2e8; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button:focus, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2:focus { outline: none; opacity: 0.75; } @media (max-width: 640px) { .learndash-wrapper .wpProQuiz_content .wpProQuiz_button, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2 { margin-left: auto !important; margin-right: auto !important; margin-bottom: 1em; float: none !important; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.wpProQuiz_TipButton, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.wpProQuiz_TipButton { display: inline; margin: auto; padding: 0.25em 0.5em; width: auto; } } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link { margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; text-transform: none; font-family: inherit; font-weight: 800; font-size: 0.75em; text-align: center; text-decoration: none; cursor: pointer; width: 100%; max-width: 385px; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; height: auto; padding: .75em 1.5em; text-align: center; -ms-flex-pack: distribute; justify-content: space-around; background: #019e7c; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link .ld-icon { font-size: 0.875em; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link .ld-text { padding: 0 1em; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link + .ld-button { margin-right: 1em; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-compact { padding: 0; width: 24px; height: 24px; border-radius: 100%; -ms-flex-preferred-size: 24px; flex-basis: 24px; -ms-flex-negative: 0; flex-shrink: 0; padding: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-compact .ld-icon { margin-left: 0; font-size: 0.75em; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-compact .ld-text { padding: 0; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-alternate { background: transparent; color: #00a2e8; padding: 0; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-alternate .ld-icon { background: #00a2e8; color: white; border-radius: 100%; width: 18px; height: 18px; -webkit-box-flex: 0; -ms-flex: 0 0 18px; flex: 0 0 18px; padding: 2px; line-height: 16px; text-align: center; font-weight: bold; -webkit-transition: color 0.3s ease, background 0.3s ease; transition: color 0.3s ease, background 0.3s ease; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-alternate .ld-text { padding-right: 0.5em; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-alternate:hover { background: transparent; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-transparent { color: #00a2e8; background: transparent; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-transparent.ld-status-complete { color: #019e7c; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-transparent:hover { background: transparent; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-reverse { background: white; color: #00a2e8; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-reverse:hover { background: #00a2e8; color: white; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link:hover { opacity: 0.75; background-color: #00a2e8; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link:focus { outline: none; opacity: 0.75; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_question { padding-bottom: 1em; } .learndash-wrapper .wpProQuiz_content ul.wpProQuiz_questionList { margin: 1em 0; background: transparent; border: 0; padding: 0; list-style: none; padding-right: 0 !important; margin-right: 0 !important; /* .MathJax span { display: inline; } */ } .learndash-wrapper .wpProQuiz_content ul.wpProQuiz_questionList[data-type="essay"] li.wpProQuiz_questionListItem { -ms-flex-wrap: wrap; flex-wrap: wrap; } .learndash-wrapper .wpProQuiz_content ul.wpProQuiz_questionList input.wpProQuiz_questionInput { max-width: 100%; width: 2%; } .learndash-wrapper .wpProQuiz_content ul.wpProQuiz_questionList span { margin-left: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewQuestion { padding: 5px; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewQuestion ol { margin: 0 !important; padding: 0 !important; line-height: 1.5em !important; } .learndash-wrapper .wpProQuiz_content .graded-disclaimer { margin-top: 1em; font-size: 0.85em; font-style: italic; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_matrixSortString { margin: 1em 0; background: transparent; border: 0; padding: 0; } .learndash-wrapper .wpProQuiz_content ul.wpProQuiz_sortStringList { padding: 0; margin: 1em 0 !important; padding: 0 !important; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_sortStringItem { display: inline-block; border: 0; background: #f0f3f6; border-radius: 6px; margin: 0 0 0.5em 0.5em; padding: 0.5em 1em; -webkit-box-shadow: none; box-shadow: none; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_mextrixTr .wpProQuiz_sortStringItem { margin: 0.5em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_tipp > div { background-color: #f0f3f6; padding: 1em; border-radius: 6px; margin: 1em 0; width: auto; -webkit-box-shadow: 0; box-shadow: 0; border: 0; margin-right: 1em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_tipp > div:before { content: ''; position: absolute; width: 16px; height: 16px; top: -8px; right: 66px; background: white; -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); z-index: 9; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_tipp > div:before { right: 1em; bottom: -4px; top: auto; background-color: #f0f3f6; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_tipp > div h5 { padding-bottom: 0; font-weight: bold; text-transform: uppercase; font-size: 0.8em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="cloze_answer"] p { padding-bottom: 0; padding-left: 0.25em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem { margin-bottom: 0.5em; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem p { text-align: right; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem .wpProQuiz_sortable { border: 2px solid #e2e7ed; border-radius: 6px; background: transparent; display: -webkit-box; display: -ms-flexbox; display: flex; padding: 1em; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-shadow: none; box-shadow: none; width: 100%; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem .wpProQuiz_sortable:before { font-family: 'ld-icons' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; display: inline-block; content: "\e904"; margin-left: 1em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem span.wpProQuiz_cloze { margin: 0 5px; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; border: 2px solid #e2e7ed; border-radius: 6px; padding: 1em; width: 100%; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label input { margin-left: 1em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label input.wpProQuiz_questionInput[type='text'] { border: 0; -webkit-box-shadow: none; box-shadow: none; width: 100%; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label.is-selected, .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label:focus-within { border-color: #00a2e8; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem textarea.wpProQuiz_questionEssay { border: 2px solid #e2e7ed; border-radius: 6px; width: 100%; padding: 1em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect { background: transparent; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect label { background: #019e7c; color: white; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect .wpProQuiz_sortable { background: #019e7c; color: white; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerIncorrect { background: transparent; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerIncorrect label { border-color: red; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerIncorrect .wpProQuiz_sortable { border-color: red; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrectIncomplete { background: transparent; border: 1px solid transparent !important; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrectIncomplete label { border-color: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrectIncomplete .wpProQuiz_sortable { border-color: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem .wpProQuiz_cloze { display: inline-block; background: #e2e7ed; border-radius: 6px; padding: 2px 0.5em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem .wpProQuiz_cloze input { border: 0; background-color: transparent; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem > table { border-collapse: separate; border: 0; /* height:100%; */ border: 2px solid #e2e7ed; border-radius: 6px; /* tr { height:100%; } */ } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem > table td { border: 0; padding: 0 !important; /* height:100%; */ vertical-align: top; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem > table td:first-child { border-left: 2px solid #e2e7ed; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem > table td .wpProQuiz_maxtrixSortText { display: block; /* border:2px solid $border-grey; border-radius:$border-radius; */ padding: 1em; border-top-left-radius: 0; border-bottom-left-radius: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem > table td .wpProQuiz_maxtrixSortCriterion { padding: 0.5em; /* border:2px solid $border-grey; border-radius:$border-radius; */ border-right: 0; height: 100%; border-top-right-radius: 0; border-bottom-right-radius: 0; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect > table { border-color: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect > table td { background-color: #019e7c; border-color: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect > table td .wpProQuiz_maxtrixSortText { background-color: none; color: none; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect > table td .wpProQuiz_maxtrixSortCriterion .wpProQuiz_sortStringItem { background-color: none; color: none; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerIncorrect > table { border-color: red; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerIncorrect > table td { border-color: red; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="assessment_answer"] .wpProQuiz_questionListItem { border: 2px solid #e2e7ed; border-radius: 6px; padding: 1em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="assessment_answer"] .wpProQuiz_questionListItem p { margin: 0; padding: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="assessment_answer"] label { display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; color: #728188; padding: 0; border: 0; margin: 0 0.25em; width: auto; font-weight: bold; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="assessment_answer"] label input { margin-left: 0.5em; height: 0.8em; width: 0.8em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="cloze_answer"] .wpProQuiz_questionListItem .wpProQuiz_cloze .wpProQuiz_answerCorrect { background-color: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="cloze_answer"] .wpProQuiz_questionListItem .wpProQuiz_cloze .wpProQuiz_answerIncorrect { background-color: red; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_header { font-weight: bold; margin: 0.5em 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_response { padding: 25px 75px 25px 15px; /* padding: 10px; */ background-color: #f0f3f6; border-radius: 6px; margin: 1em 0; border: 2px solid #e2e7ed; color: #728188; position: relative; min-height: 85px; padding: 25px; background-color: #f0f3f6; text-align: center; -webkit-box-shadow: none; box-shadow: none; min-height: none; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_response p { margin: 0; padding: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_response img { max-width: 100%; height: auto; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_listItem .wpProQuiz_question ul.wpProQuiz_questionList { margin: 0; padding: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_listItem[data-type="cloze_answer"] .wpProQuiz_questionListItem { display: block; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_time_limit { margin: 1em 0; background-color: #e2e7ed; border-radius: 6px; position: relative; padding: 1em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_time_limit:before { content: ''; position: absolute; bottom: 1em; right: 1em; left: 1em; height: 7px; z-index: 8; background: white; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_time_limit .time { color: #728188; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_time_limit .wpProQuiz_progress { z-index: 9; position: relative; background-color: #019e7c; height: 7px; margin-bottom: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table { width: 100%; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td:first-child { width: 150px; font-size: 0.9em; font-weight: 700; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td input[type=text], .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td select, .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td textarea { width: 100%; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='5'] label, .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='8'] label { display: inline-block; margin-right: 0.5em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='6'] { display: -webkit-box; display: -ms-flexbox; display: flex; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='6'] select { margin-left: 1%; } @media (max-width: 640px) { .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='6'] { -ms-flex-wrap: wrap; flex-wrap: wrap; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='6'] select { margin-bottom: 1em; -webkit-box-flex: 1; -ms-flex: 1 0 50%; flex: 1 0 50%; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='6'] select:first-child { -webkit-box-flex: 0; -ms-flex: 0 0 100%; flex: 0 0 100%; } } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] { padding: 1.5em; background-color: #f0f3f6; border-radius: 6px; margin: 1em 0; margin: 1em 0; -webkit-box-flex: 0; -ms-flex: 0 0 100%; flex: 0 0 100%; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=file] { background: white; padding: 1em; border-radius: 6px; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; margin-left: 1em; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit] { margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; text-transform: none; font-family: inherit; font-weight: 800; font-size: 0.75em; text-align: center; text-decoration: none; cursor: pointer; width: 100%; max-width: 385px; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; height: auto; padding: .75em 1.5em; max-width: 100px; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit] .ld-icon { font-size: 0.875em; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit] .ld-text { padding: 0 1em; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit] + .ld-button { margin-right: 1em; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-compact { padding: 0; width: 24px; height: 24px; border-radius: 100%; -ms-flex-preferred-size: 24px; flex-basis: 24px; -ms-flex-negative: 0; flex-shrink: 0; padding: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-compact .ld-icon { margin-left: 0; font-size: 0.75em; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-compact .ld-text { padding: 0; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-alternate { background: transparent; color: #00a2e8; padding: 0; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-alternate .ld-icon { background: #00a2e8; color: white; border-radius: 100%; width: 18px; height: 18px; -webkit-box-flex: 0; -ms-flex: 0 0 18px; flex: 0 0 18px; padding: 2px; line-height: 16px; text-align: center; font-weight: bold; -webkit-transition: color 0.3s ease, background 0.3s ease; transition: color 0.3s ease, background 0.3s ease; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-alternate .ld-text { padding-right: 0.5em; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-alternate:hover { background: transparent; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-transparent { color: #00a2e8; background: transparent; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-transparent.ld-status-complete { color: #019e7c; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-transparent:hover { background: transparent; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-reverse { background: white; color: #00a2e8; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-reverse:hover { background: #00a2e8; color: white; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit]:hover { opacity: 0.75; background-color: #00a2e8; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit]:focus { outline: none; opacity: 0.75; } .learndash-wrapper .wpProQuiz_quiz_time { color: #728188; font-weight: bold; font-size: 0.8em; } .learndash-wrapper .wpProQuiz_graded_points, .learndash-wrapper .wpProQuiz_points { padding: 1em; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; background-color: #f0f3f6; border-radius: 6px; margin: 1em 0; border: 2px solid #e2e7ed; color: #728188; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_box { background: #f0f3f6; border: 0; border-radius: 3px; overflow: auto; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li { -webkit-box-shadow: 0; box-shadow: 0; border: 0; border-radius: 2px; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionTarget { -webkit-box-shadow: 0; box-shadow: 0; background-color: #00a2e8; color: #fff; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionSolved { color: #fff; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionReview { color: #fff; } .learndash-wrapper .wpProQuiz_reviewDiv { margin-bottom: 2em; padding-bottom: 2em; border-bottom: 2px solid #f0f3f6; } .learndash-wrapper .wpProQuiz_reviewDiv .wpProQuiz_reviewQuestion { background: #f0f3f6; border: 0; border-radius: 3px; } .learndash-wrapper .wpProQuiz_reviewDiv .wpProQuiz_reviewQuestion li { -webkit-box-shadow: 0; box-shadow: 0; border: 0; border-radius: 2px; } .learndash-wrapper .wpProQuiz_reviewDiv .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionTarget { -webkit-box-shadow: 0; box-shadow: 0; background-color: #00a2e8; color: #fff; } .learndash-wrapper .wpProQuiz_reviewDiv .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionSolved { color: #fff; } .learndash-wrapper .wpProQuiz_reviewDiv .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionReview { color: #fff; } .learndash-wrapper { /* Lesson list in course navigation */ /* Topic list in course navigation */ } .learndash-wrapper .ld-course-navigation .ld-course-navigation-heading { border-bottom: 4px solid #e2e7ed; padding-bottom: 12px; } .learndash-wrapper .ld-course-navigation .ld-course-navigation-heading h3 { margin-top: 0; } .learndash-wrapper .ld-course-navigation .ld-course-navigation-actions .ld-home-link { display: block; } .learndash-wrapper .ld-course-navigation .ld-course-navigation-actions .ld-expand-button { margin-right: 0; font-size: 12px; } .learndash-wrapper .ld-course-navigation .ld-course-navigation-actions .ld-expand-button .ld-icon { font-size: 10px; } .learndash-wrapper .ld-course-navigation .ld-status-icon { width: 15px; height: 15px; -webkit-box-flex: 0; -ms-flex: 0 0 15px; flex: 0 0 15px; border: 0; text-align: center; margin-left: 10px; margin-top: 0.15em; } .learndash-wrapper .ld-course-navigation .ld-status-icon .ld-icon-checkmark { font-size: 0.825em; margin-top: 1px; } .learndash-wrapper .ld-course-navigation .ld-status-icon.ld-status-in-progress { border: 2px solid #e2e7ed; border-right-color: #019e7c; border-top-color: #019e7c; } .learndash-wrapper .ld-course-navigation .ld-status-icon.ld-status-incomplete { border: 2px solid #e2e7ed; } .learndash-wrapper .ld-course-navigation .ld-status-icon .ld-icon-quiz { font-size: 1.1em; margin-top: -2px; } .learndash-wrapper .ld-course-navigation .ld-item-icon { width: 14px; height: 20px; font-size: 1em; } .learndash-wrapper .ld-course-navigation .ld-pagination { -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; margin: 1em 0; } .learndash-wrapper .ld-course-navigation .ld-pagination .ld-pages { -webkit-box-flex: 0; -ms-flex: 0 0 120px; flex: 0 0 120px; background-color: #728188; } .learndash-wrapper .ld-course-navigation .ld-pagination .ld-pages i, .learndash-wrapper .ld-course-navigation .ld-pagination .ld-pages span { color: white; } .learndash-wrapper .ld-course-navigation .ld-lesson-item { border-bottom: 1px solid #e2e7ed; } .learndash-wrapper .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-lesson-item-preview-heading, .learndash-wrapper .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-lesson-title { color: #00a2e8; font-weight: bold; } .learndash-wrapper .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-lesson-item-preview-heading .ld-status-incomplete, .learndash-wrapper .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-lesson-title .ld-status-incomplete { border: 2px solid #00a2e8; } .learndash-wrapper .ld-course-navigation .ld-sep { color: #e2e7ed; padding: 0 0.25em; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-section-heading { margin-top: 1em; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-section-heading .ld-lesson-section-heading { font-size: 1em; font-weight: bold; margin-bottom: 0.25em; text-align: right; display: block; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview { padding: 10px 0; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-lesson-item-preview-heading { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-flow: row wrap; flex-flow: row wrap; line-height: 1.25em; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview a.ld-lesson-item-preview-heading { color: #495255; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview a.ld-lesson-item-preview-heading:hover { color: #00a2e8; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-lesson-title { font-size: 0.875em; font-weight: 400; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; display: -webkit-box; display: -ms-flexbox; display: flex; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-lesson-title .ld-status-icon { margin-right: 0.5em; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-lesson-title .ld-status-icon .ld-icon { font-size: 0.825em; margin-top: 1px; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-expand-button { -ms-flex-preferred-size: 100%; flex-basis: 100%; -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; padding-right: 2em; padding-top: 0.5em; color: #728188; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-expand-button .ld-icon { font-size: 0.625em; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-expanded { height: auto; max-height: 0px; -webkit-transition: max-height 0.3s ease; transition: max-height 0.3s ease; overflow: hidden; background: #f0f3f6; border-radius: 8px; margin: 0 20px 0 20px; position: relative; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-expanded::before { content: ''; display: block; right: 50px; top: 0px; position: absolute; width: 0; height: 0; border-right: 8px solid transparent; border-left: 8px solid transparent; border-top: 8px solid #fff; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-expanded.ld-expanded { max-height: 20000px; margin-bottom: 1em; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-expanded .ld-table-list-items { padding: 1em 0.5em; } .learndash-wrapper .ld-course-navigation .ld-table-list-header { display: none; } .learndash-wrapper .ld-course-navigation .ld-table-list-footer { background: transparent; padding: 0.25em !important; } .learndash-wrapper .ld-course-navigation .ld-table-list.ld-topic-list { margin: 0; } .learndash-wrapper .ld-course-navigation .ld-table-list.ld-topic-list .ld-table-list-items { border: 0; padding-left: 0; } .learndash-wrapper .ld-course-navigation .ld-table-list.ld-topic-list .ld-table-list-item { font-size: 0.9em; border-bottom: 0; line-height: 1.5em; } .learndash-wrapper .ld-course-navigation .ld-table-list.ld-topic-list .ld-table-list-item .ld-table-list-item-preview { -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; padding: 0.5em; } .learndash-wrapper .ld-course-navigation .ld-table-list.ld-topic-list .ld-table-list-item .ld-table-list-item-preview.ld-is-current-item { font-weight: bold; } .learndash-wrapper .widget_course_return { margin-top: 1em; font-size: 0.8em; } .learndash-wrapper .ld-profile-summary { margin: 2em 0; } .learndash-wrapper .ld-profile-summary .ld-profile-card { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-align: center; -ms-flex-align: center; align-items: center; width: 100%; margin: 1.5em 0; } .learndash-wrapper .ld-profile-summary .ld-profile-card .ld-profile-avatar { width: 150px; height: 150px; border: 5px solid #e2e7ed; } .learndash-wrapper .ld-profile-summary .ld-profile-card .ld-profile-heading { font-size: 2em; font-weight: 800; margin: 5px 0; } .learndash-wrapper .ld-profile-summary .ld-profile-card .ld-profile-edit-link { color: #728188; font-size: 14px; } .learndash-wrapper .ld-profile-summary .ld-profile-stats { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .ld-profile-summary .ld-profile-stats .ld-profile-stat { -webkit-box-flex: 0; -ms-flex: 0 0 90px; flex: 0 0 90px; text-align: center; border-left: 1px solid #e2e7ed; padding: 0 12px; } .learndash-wrapper .ld-profile-summary .ld-profile-stats .ld-profile-stat strong { display: block; font-size: 36px; margin-bottom: 8px; font-weight: 800; } .learndash-wrapper .ld-profile-summary .ld-profile-stats .ld-profile-stat span { color: #728188; font-size: 14px; } .learndash-wrapper .ld-profile-summary .ld-profile-stats .ld-profile-stat:last-child { border-left: 0; } .learndash-wrapper #ld-profile .ld-section-heading { margin-bottom: 0em; } .learndash-wrapper #ld-profile .ld-quiz-list .ld-table-list-item-preview + .ld-table-list-item-expanded { margin-top: -20px; } .learndash-wrapper #ld-profile .ld-quiz-list .ld-table-list-item-preview + .ld-table-list-item-expanded .ld-essay-list { margin-top: 0; } .learndash-wrapper #ld-profile .ld-item-list-item-preview .ld-status { white-space: nowrap; } @media (max-width: 640px) { .learndash-wrapper #ld-profile .ld-section-heading .ld-item-list-actions { -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; } .learndash-wrapper #ld-profile .ld-section-heading .ld-expand-button { margin: 10px 0; max-width: 120px; } .learndash-wrapper #ld-profile .ld-profile-stats { -ms-flex-wrap: wrap; flex-wrap: wrap; } .learndash-wrapper #ld-profile .ld-profile-stats .ld-profile-stat { width: 50%; border: 0; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; margin: 0 0 2em 0 !important; padding: 0 1em !important; } } #wpProQuiz_overlay_close { margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; text-transform: none; font-family: inherit; font-weight: 800; font-size: 0.75em; text-align: center; text-decoration: none; cursor: pointer; width: 100%; max-width: 385px; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; height: auto; padding: .75em 1.5em; max-width: 180px; } #wpProQuiz_overlay_close .ld-icon { font-size: 0.875em; } #wpProQuiz_overlay_close .ld-text { padding: 0 1em; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } #wpProQuiz_overlay_close + .ld-button { margin-right: 1em; } #wpProQuiz_overlay_close.ld-compact { padding: 0; width: 24px; height: 24px; border-radius: 100%; -ms-flex-preferred-size: 24px; flex-basis: 24px; -ms-flex-negative: 0; flex-shrink: 0; padding: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } #wpProQuiz_overlay_close.ld-compact .ld-icon { margin-left: 0; font-size: 0.75em; } #wpProQuiz_overlay_close.ld-compact .ld-text { padding: 0; } #wpProQuiz_overlay_close.ld-button-alternate { background: transparent; color: #00a2e8; padding: 0; } #wpProQuiz_overlay_close.ld-button-alternate .ld-icon { background: #00a2e8; color: white; border-radius: 100%; width: 18px; height: 18px; -webkit-box-flex: 0; -ms-flex: 0 0 18px; flex: 0 0 18px; padding: 2px; line-height: 16px; text-align: center; font-weight: bold; -webkit-transition: color 0.3s ease, background 0.3s ease; transition: color 0.3s ease, background 0.3s ease; } #wpProQuiz_overlay_close.ld-button-alternate .ld-text { padding-right: 0.5em; } #wpProQuiz_overlay_close.ld-button-alternate:hover { background: transparent; } #wpProQuiz_overlay_close.ld-button-transparent { color: #00a2e8; background: transparent; } #wpProQuiz_overlay_close.ld-button-transparent.ld-status-complete { color: #019e7c; } #wpProQuiz_overlay_close.ld-button-transparent:hover { background: transparent; } #wpProQuiz_overlay_close.ld-button-reverse { background: white; color: #00a2e8; } #wpProQuiz_overlay_close.ld-button-reverse:hover { background: #00a2e8; color: white; } #wpProQuiz_overlay_close:hover { opacity: 0.75; background-color: #00a2e8; } #wpProQuiz_overlay_close:focus { outline: none; opacity: 0.75; } #wpProQuiz_user_content h2 { border-bottom: 2px solid #f0f3f6; font-size: 24px; padding: 0.5em 0; } #wpProQuiz_user_content h2 + h2 { font-size: 18px; border-bottom: 0; } #wpProQuiz_user_content table.wp-list-table { border-radius: 8px; border-collapse: collapse; background: transparent; border: 0; } #wpProQuiz_user_content table.wp-list-table tr, #wpProQuiz_user_content table.wp-list-table td, #wpProQuiz_user_content table.wp-list-table th { background: transparent; } #wpProQuiz_user_content table.wp-list-table thead th { background: #00a2e8; color: #fff; border-bottom: 0; padding: 25px 15px; font-size: 14px; line-height: 1; white-space: nowrap; } #wpProQuiz_user_content table.wp-list-table thead th:first-child { border-radius: 0 8px 0 0; } #wpProQuiz_user_content table.wp-list-table thead th:last-child { border-radius: 8px 0 0 0; } #wpProQuiz_user_content table.wp-list-table tbody tr.categoryTr th { background: #f0f3f6; padding: 15px; border-bottom: 1px solid #f0f3f6; line-height: 1; white-space: nowrap; text-align: center; } #wpProQuiz_user_content table.wp-list-table tbody tr.categoryTr th:first-child, #wpProQuiz_user_content table.wp-list-table tbody tr.categoryTr th:only-child { text-align: right; } #wpProQuiz_user_content table.wp-list-table tbody tr th { padding: 15px; font-weight: normal; font-size: 16px; text-align: center; } #wpProQuiz_user_content table.wp-list-table tbody tr th p { margin: 0 0 5px 0; } #wpProQuiz_user_content table.wp-list-table tbody tr th:first-child { -webkit-box-shadow: inset -3px 0 0 0 #f0f3f6; box-shadow: inset -3px 0 0 0 #f0f3f6; } #wpProQuiz_user_content table.wp-list-table tbody tr th:last-child { -webkit-box-shadow: inset 3px 0 0 0 #f0f3f6; box-shadow: inset 3px 0 0 0 #f0f3f6; } #wpProQuiz_user_content table.wp-list-table tbody tr th:nth-child(2) { text-align: right; } #wpProQuiz_user_content table.wp-list-table tbody tr th:only-child { -webkit-box-shadow: inset 3px 0 0 0 #f0f3f6, inset -3px 0 0 0 #f0f3f6; box-shadow: inset 3px 0 0 0 #f0f3f6, inset -3px 0 0 0 #f0f3f6; } #wpProQuiz_user_content table.wp-list-table tbody tr.categoryTr th:nth-child(2) { text-align: center; } #wpProQuiz_user_content table.wp-list-table tfoot tr { border-bottom: 0; } #wpProQuiz_user_content table.wp-list-table tfoot tr th { background: #f0f3f6; border: 0; padding: 15px; font-weight: normal; font-size: 16px; text-align: center; } #wpProQuiz_user_content table.wp-list-table tfoot tr th:first-child { border-radius: 0 0 8px 0; } #wpProQuiz_user_content table.wp-list-table tfoot tr th:last-child { border-radius: 0 0 0 8px; } .learndash-wrapper .ld-tabs { margin: 1em 0; } .learndash-wrapper .ld-tabs .ld-tabs-navigation { position: relative; margin: 0; padding: 0; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-tabs .ld-tabs-navigation:after { content: ''; height: 6px; background: #e2e7ed; position: absolute; bottom: 0; right: 0; left: 0; z-index: 8; } .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab { display: -webkit-box; display: -ms-flexbox; display: flex; padding: 1.5em; -webkit-box-align: center; -ms-flex-align: center; align-items: center; position: relative; font-weight: 700; color: #728188; cursor: pointer; -webkit-transition: color 0.3s ease; transition: color 0.3s ease; white-space: nowrap; } .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab .ld-icon { font-size: 1.4em; margin-left: 0.25em; } .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab:after { content: ''; height: 6px; background: transparent; position: absolute; bottom: 0; right: 0; left: 0; z-index: 9; z-index: 9; -webkit-transition: background 0.3s ease; transition: background 0.3s ease; } .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab.ld-active { color: #00a2e8; } .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab.ld-active:after { background: #00a2e8; } @media (max-width: 640px) { .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab { padding: 1em; } } .learndash-wrapper .ld-tabs .ld-tabs-content .ld-tab-content { display: none; padding: 2em 0; } .learndash-wrapper .ld-tabs .ld-tabs-content .ld-tab-content.ld-visible { display: block; } .learndash-wrapper .ld-tabs.ld-tab-count-1 .ld-tab-content { padding: 0; } .learndash-wrapper .ld-breadcrumbs { background: #f0f3f6; border-radius: 6px; padding: 0.5em 1em; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments { font-size: 0.75em; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; padding-left: 1em; } .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments span { display: inline; } .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments span a { font-weight: 700; } .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments span:after { content: '>'; } .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments span:last-child:after { display: none; } .learndash-wrapper .ld-breadcrumbs .ld-status { white-space: nowrap; } .learndash-wrapper .ld-breadcrumbs .ld-status.ld-status-progress { background: #00a2e8; color: #fff; } .learndash-wrapper .ld-breadcrumbs .ld-status.ld-status-complete { background: #019e7c; color: #fff; } @media (max-width: 640px) { .learndash-wrapper .ld-breadcrumbs { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments { width: 100%; } .learndash-wrapper .ld-breadcrumbs .ld-status { width: 100%; margin-top: 1em; } } .rtl .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments span:after { content: '<'; } .learndash-wrapper .ld-alert-content { width: 100%; } .learndash-wrapper .ld-alert { padding: 25px 75px 25px 15px; /* padding: 10px; */ background-color: #f0f3f6; border-radius: 6px; margin: 1em 0; border: 2px solid #e2e7ed; color: #728188; position: relative; min-height: 85px; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-alert .ld-alert-icon { background-color: #e2e7ed; border-radius: 100%; padding: 0.5em; margin-left: 0.5em; font-size: 24px; position: absolute; right: 15px; top: 50%; -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); } .learndash-wrapper .ld-alert .ld-alert-icon.ld-icon-alert { padding: 3px; font-size: 42px; } .learndash-wrapper .ld-alert .ld-alert-text { font-size: 1em; font-weight: 700; } .learndash-wrapper .ld-alert .ld-button { margin-right: 1em; min-width: 7.5em; display: inline-block; height: auto; padding: 5px 30px 5px 20px; position: relative; max-width: 185px; } .learndash-wrapper .ld-alert .ld-button .ld-icon { position: absolute; right: 15px; top: 50%; -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); } .learndash-wrapper .ld-alert .ld-alert-content a, .learndash-wrapper .ld-alert .ld-text a { text-decoration: underline; color: rgba(0, 0, 0, 0.8); } @media (max-width: 768px) { .learndash-wrapper .ld-alert { display: block; text-align: center; padding: 75px 15px 15px; } .learndash-wrapper .ld-alert .ld-alert-content { margin: 0 0 1em 0; } .learndash-wrapper .ld-alert .ld-icon { right: 50%; margin: 0; -webkit-transform: translateX(50%); -ms-transform: translateX(50%); transform: translateX(50%); top: 10%; } .learndash-wrapper .ld-alert .ld-button { margin-right: 0; } } .learndash-wrapper .ld-alert-warning { color: rgba(0, 0, 0, 0.65); border-color: #ffd200; background-color: #fff6cd; } .learndash-wrapper .ld-alert-warning .ld-alert-icon { background-color: #ffd200; } .learndash-wrapper .ld-alert-warning .ld-button { background-color: #ffd200; color: rgba(0, 0, 0, 0.65); } .learndash-wrapper .ld-alert-certificate .ld-button { padding-right: 40px; min-width: unset; max-width: unset; width: auto; text-decoration: none !important; } .learndash-wrapper .ld-alert-certificate.ld-alert-success { color: #495255; } .learndash-wrapper .ld-alert-success { color: white; border-color: #019e7c; background-color: rgba(1, 158, 124, 0.2); } .learndash-wrapper .ld-alert-success .ld-alert-icon { background-color: #019e7c; color: white; } .learndash-wrapper .ld-alert-success .ld-button { background-color: #019e7c; } .learndash-wrapper .ld-alert-success .ld-button .ld-icon-download { margin-left: 5px; font-size: 18px; } .learndash-wrapper .ld-focus { display: -webkit-box; display: -ms-flexbox; display: flex; } .learndash-wrapper .ld-focus .ld-tab-content ul:not(.blocks-gallery-grid):not(.wp-block-gallery), .learndash-wrapper .ld-focus .ld-tab-content ol:not(.blocks-gallery-grid):not(.wp-block-gallery) { display: block; list-style: disc outside none; margin: 1em 0; padding-right: 40px; } .learndash-wrapper .ld-focus .ld-tab-content ol:not(.blocks-gallery-grid):not(.wp-block-gallery) { list-style-type: decimal; } .learndash-wrapper .ld-focus .ld-tab-content li:not(.blocks-gallery-item) { display: list-item; } .learndash-wrapper .ld-focus .ld-tab-content ul:not(.blocks-gallery-grid) ul, .learndash-wrapper .ld-focus .ld-tab-content ol:not(.blocks-gallery-grid) ul { margin: 0; list-style-type: circle; } .learndash-wrapper .ld-focus .ld-tab-content ol:not(.blocks-gallery-grid) ol, .learndash-wrapper .ld-focus .ld-tab-content ul:not(.blocks-gallery-grid) ol { margin: 0; list-style-type: lower-latin; } .learndash-wrapper .ld-focus .ld-focus-sidebar { position: fixed; right: 0; top: 0px; bottom: 0; width: 350px; background-color: white; border-left: 1px solid #e2e7ed; padding-top: 50px; padding-bottom: 150px; -webkit-transition: all 0.3s ease; transition: all 0.3s ease; z-index: 99; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-focus-sidebar-wrapper { overflow-x: visible; overflow-y: auto; height: 100%; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-focus-sidebar-trigger { position: absolute; height: 75px; width: 50px; left: 0; top: 0; bottom: 0; background: #00a2e8; z-index: 99; cursor: pointer; color: white; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-focus-sidebar-trigger .ld-icon { position: absolute; border-radius: 100%; background: inherit; left: 0; top: 50%; -webkit-transform: translateY(-50%) translateX(-25%); -ms-transform: translateY(-50%) translateX(-25%); transform: translateY(-50%) translateX(-25%); font-size: 0.8em; padding: 8px; z-index: 9; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-focus-sidebar-trigger:hover .ld-icon:before { opacity: 0.5; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading { background-color: #00a2e8; color: white; border-bottom: 0; min-height: 75px; overflow: visible; width: 350px; position: relative; z-index: 9; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; padding: 0.75em 1em 0.75em 3.125em; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading a { color: #fff; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading h3 { font-size: 1em; margin: 0; line-height: 1.35em; padding: 0 1.6em 0 0; font-weight: bold; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; color: white; position: relative; z-index: 100; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading h3 a { color: white; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading h3 .ld-icon { position: absolute; right: 1px; top: 3px; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading .ld-expand-button { color: white; /* TODO: Should this be hidden? */ display: none; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading .ld-home-link { color: white; padding: 0; border-right: 0; margin-right: 0; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation { position: relative; overflow: visible; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-course-navigation-list { opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-expanded { margin: 0; border-radius: 0; background: transparent; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-expanded .ld-table-list-items { padding: 0.5em; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-section-heading { padding: 0 1em; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-section-heading .ld-lesson-section-heading { margin-bottom: 0; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list { background-color: #f0f3f6; border-radius: 0; padding: 1em 1em; position: relative; margin: 0; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list:before { content: ''; position: absolute; width: 16px; height: 16px; top: -8px; right: 66px; background: white; -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); z-index: 9; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list:before { background-color: white; right: 43px; width: 13px; height: 13px; top: -7px; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list .ld-table-list-item { font-size: 0.875em; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-preview { padding: 0.5em; padding-right: 1.6em; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item { border-bottom: 1px solid #e2e7ed; background-color: white; padding: 0; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item .ld-lesson-item-preview { padding: 1em; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-pagination { margin: 1em 0; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-pagination .ld-pages { background-color: #728188; -webkit-box-flex: 0; -ms-flex: 0 0 120px; flex: 0 0 120px; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-pagination .ld-pages i, .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-pagination .ld-pages span { color: white; } .learndash-wrapper .ld-focus .ld-focus-main { -webkit-box-flex: 1; -ms-flex: 1 auto; flex: 1 auto; margin-right: 350px; width: -webkit-calc(100% - 350px); width: calc(100% - 350px); -webkit-transition: margin-right 0.3s ease; transition: margin-right 0.3s ease; } .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content { padding: 5em; margin: 0px auto; max-width: 960px; } .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content h1 { margin: 0; padding: 0; margin-bottom: 0.5em; } .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content .ld-topic-status .ld-progress { display: none; } .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content .ld-topic-status, .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content .ld-lesson-status { margin-bottom: 1em; } .learndash-wrapper .ld-focus .ld-focus-header { position: fixed; background: white; top: 0; right: 0; left: 0; height: 51px; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; border-bottom: 1px solid #e2e7ed; z-index: 99; } .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav { width: 55px; display: none; } .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav a { display: block; padding: 0 15px; } .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav span { display: block; width: 25px; height: 4px; margin: 4px 0; background-color: #333; -webkit-transition: all ease-in-out 250ms; transition: all ease-in-out 250ms; } .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav.expanded .bar-1 { -webkit-transform: rotate(45deg) translate(4px, 8px); -ms-transform: rotate(45deg) translate(4px, 8px); transform: rotate(45deg) translate(4px, 8px); } .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav.expanded .bar-2 { opacity: 0; } .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav.expanded .bar-3 { -webkit-transform: rotate(-45deg) translate(3px, -7px); -ms-transform: rotate(-45deg) translate(3px, -7px); transform: rotate(-45deg) translate(3px, -7px); } .learndash-wrapper .ld-focus .ld-focus-header .ld-brand-logo { background-color: white; -webkit-box-flex: 0; -ms-flex: 0 0 350px; flex: 0 0 350px; height: 100%; -webkit-transition: -webkit-box-flex 0.3s ease; transition: -webkit-box-flex 0.3s ease; transition: flex 0.3s ease; transition: flex 0.3s ease, -webkit-box-flex 0.3s ease, -ms-flex 0.3s ease; padding: 0.5em 1em; } .learndash-wrapper .ld-focus .ld-focus-header .ld-brand-logo img { height: 100%; width: auto; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-actions { -webkit-box-flex: 0; -ms-flex: 0 1; flex: 0 1; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: end; -ms-flex-pack: end; justify-content: flex-end; border-top: none; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action { position: relative; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action .learndash_timer, .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action #learndash_timer { position: absolute; right: 0; bottom: 1px; left: 0; text-align: center; top: 0; background: #fff; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action, .learndash-wrapper .ld-focus .ld-focus-header .ld-progress { height: 50px; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .learndash-wrapper .ld-focus .ld-focus-header .ld-progress { border-left: 1px solid #e2e7ed; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action { border-left: 1px solid #e2e7ed; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action:last-child, .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action.ld-empty { border: 0; } .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete:after, .learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete:after { color: #019e7c; } .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete:disabled:after, .learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete:disabled:after { color: #728188; } .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete .learndash_mark_complete_button, .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete #learndash_mark_complete_button, .learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete .learndash_mark_complete_button, .learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete #learndash_mark_complete_button { color: #00a2e8; background: transparent; color: #019e7c; background: transparent !important; } .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete .learndash_mark_complete_button.ld-status-complete, .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete #learndash_mark_complete_button.ld-status-complete, .learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete .learndash_mark_complete_button.ld-status-complete, .learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete #learndash_mark_complete_button.ld-status-complete { color: #019e7c; } .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete .learndash_mark_complete_button:hover, .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete #learndash_mark_complete_button:hover, .learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete .learndash_mark_complete_button:hover, .learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete #learndash_mark_complete_button:hover { background: transparent; } .learndash-wrapper .ld-focus .ld-focus-header .ld-progress { -webkit-box-align: end; -ms-flex-align: end; align-items: flex-end; } .learndash-wrapper .ld-focus .ld-focus-header .ld-progress-wrap { width: 100%; max-width: 500px; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action { -webkit-box-flex: 0; -ms-flex: 0 1; flex: 0 1; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action .sfwd-mark-complete, .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action #sfwd-mark-complete { margin: 0 1em; } .learndash-wrapper .ld-focus .ld-focus-header .ld-progress { -webkit-box-flex: 1; -ms-flex: 1 0 auto; flex: 1 0 auto; padding-left: 1em; padding: 0; margin: 0; padding-top: 0.5em; padding-left: 1em; } .learndash-wrapper .ld-focus .ld-focus-header .ld-progress .ld-progress-bar { background: #e2e7ed; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu { -webkit-box-flex: 0; -ms-flex: 0 0 200px; flex: 0 0 200px; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: end; -ms-flex-pack: end; justify-content: flex-end; -webkit-box-align: center; -ms-flex-align: center; align-items: center; position: relative; height: 50px; padding-left: 1em; border-right: 1px solid #e2e7ed; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-text { color: #728188; font-size: 0.75em; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-profile-avatar { width: 40px; height: 40px; margin-right: 1em; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items { position: absolute; top: 100%; left: 0; z-index: 9; opacity: 0; visibility: hidden; margin-left: 1em; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items:before { content: ''; position: absolute; top: -5px; left: 1em; width: 0; height: 0; border-right: 5px solid transparent; border-left: 5px solid transparent; border-bottom: 5px solid #00a2e8; z-index: -1; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items a { position: relative; display: block; white-space: nowrap; background-color: #00a2e8; color: white; font-weight: 700; padding: 0.75em 2.5em; font-size: 0.875em; border-bottom: 1px solid rgba(255, 255, 255, 0.1); } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items a:hover { opacity: 0.8; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items a:last-child { border-bottom: 0; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu:hover .ld-user-menu-items { opacity: 1; visibility: visible; } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed { /* .ld-focus-header { .ld-brand-logo { flex: 0 0 50px; } }*/ } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-sidebar { background-color: transparent; -webkit-transform: translateX(-webkit-calc(-1*(-100% + 50px))); -ms-transform: translateX(calc(-1*(-100% + 50px))); transform: translateX(calc(-1*(-100% + 50px))); } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-sidebar-wrapper .ld-focus-sidebar-trigger .ld-icon { -webkit-transform: translateY(-50%) translateX(-45%) rotate(-180deg); -ms-transform: translateY(-50%) translateX(-45%) rotate(-180deg); transform: translateY(-50%) translateX(-45%) rotate(-180deg); } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-course-navigation .ld-course-navigation-heading { top: 0; } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-course-navigation .ld-course-navigation-heading h3 { opacity: 0; } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-course-navigation .ld-course-navigation-list { opacity: 0; } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-main { margin-right: 50px; width: -webkit-calc(100% - 50px); width: calc(100% - 50px); } @media (max-width: 1280px) { .learndash-wrapper .ld-focus .ld-focus-header .ld-progress { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu { -webkit-box-flex: 0; -ms-flex: 0 1; flex: 0 1; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-text { display: none; } } @media (max-width: 1024px) { .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-text { display: none; } .learndash-wrapper .ld-focus .ld-focus-header .ld-brand-logo { -webkit-box-flex: 0; -ms-flex: 0 0 150px; flex: 0 0 150px; } .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content { padding-right: 3em; } } @media (max-width: 768px) { .learndash-wrapper .ld-focus .ld-focus-header { position: relative; -ms-flex-wrap: wrap; flex-wrap: wrap; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; height: auto; } .learndash-wrapper .ld-focus .ld-focus-header .ld-brand-logo { display: none; } .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav { display: block; -webkit-box-ordinal-group: 2; -ms-flex-order: 1; order: 1; } .learndash-wrapper .ld-focus .ld-focus-header .ld-progress { -webkit-box-ordinal-group: 3; -ms-flex-order: 2; order: 2; padding: 0 1em; margin: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; border-left: 0; } .learndash-wrapper .ld-focus .ld-focus-header .ld-progress .ld-progress-stats { text-align: center; display: block; } .learndash-wrapper .ld-focus .ld-focus-header .ld-progress .ld-progress-percentage { line-height: 1em; margin-bottom: 0.3em; } .learndash-wrapper .ld-focus .ld-focus-header .ld-progress .ld-progress-steps { display: none; } .learndash-wrapper .ld-focus .ld-focus-header .ld-progress .ld-progress-bar { margin: 0; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu { -webkit-box-ordinal-group: 4; -ms-flex-order: 3; order: 3; border-right: 0; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-actions { border-top: 1px solid #efefef; background: #fff; padding: 0; -webkit-box-ordinal-group: 5; -ms-flex-order: 4; order: 4; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; -webkit-box-flex: 100%; -ms-flex: 100%; flex: 100%; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-actions > * { margin: 0; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-actions .ld-content-action { height: auto; -webkit-box-flex: 50%; -ms-flex: 50%; flex: 50%; } .learndash-wrapper .ld-focus .ld-focus-content { margin-top: 30px; } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-sidebar { -webkit-transform: translateX(100%); -ms-transform: translateX(100%); transform: translateX(100%); } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-sidebar .ld-focus-sidebar-trigger { display: none; } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-main { margin-right: 0px; width: 100%; } .learndash-wrapper .ld-focus .ld-focus-main { margin-right: 0; width: 100%; } .learndash-wrapper .ld-focus .ld-course-navigation-heading { position: static; } .learndash-wrapper .ld-focus .ld-course-navigation { padding-top: 0; } .learndash-wrapper .ld-focus .ld-focus-sidebar { top: 0px; padding-top: 0; z-index: 1000; position: absolute; } } @media (max-width: 640px) { .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-main, .learndash-wrapper .ld-focus .ld-focus-main { margin-right: 0; } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-main .ld-focus-content, .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content { margin: 30px auto 50px; padding: 5% 1.5em; } } body.admin-bar .learndash-wrapper .ld-focus-header { top: 32px; } @media (max-width: 768px) { body.admin-bar .learndash-wrapper .ld-focus-header { top: 0; } } body.admin-bar .learndash-wrapper .ld-focus-sidebar { top: 32px; } @media (max-width: 768px) { body.admin-bar .learndash-wrapper .ld-focus-sidebar { top: 93px; } } body.ld-in-focus-mode { margin: 0; padding: 0; background: #fff; } body.ld-in-focus-mode::before, body.ld-in-focus-mode::after { display: none; } body.ld-in-focus-mode .learndash-wrapper { background: #fff; } body.ld-in-focus-mode.admin-bar { padding-top: 32px; } @media (max-width: 768px) { body.ld-in-focus-mode.admin-bar { padding-top: 0; } body.ld-in-focus-mode.admin-bar .ld-focus-sidebar { top: 97px; } } #learndash-tooltips { font-family: 'Open Sans', 'Arial','Helvetica', sans-serif; position: absolute; top: 0; left: 0; right: 0; bottom: 0; height: 100%; z-index: 999; font-size: 16px; pointer-events: none; } #learndash-tooltips .ld-tooltip { position: absolute; background-color: #00a2e8; color: white; font-weight: 700; border-radius: 6px; padding: 0.25em 1em; -webkit-transform: translateX(-1%) translateY(-25px); -ms-transform: translateX(-1%) translateY(-25px); transform: translateX(-1%) translateY(-25px); -webkit-box-shadow: 0 -1px 0 2px rgba(255, 255, 255, 0.75); box-shadow: 0 -1px 0 2px rgba(255, 255, 255, 0.75); font-size: 0.75em; opacity: 0; -webkit-transition: opacity 0.1s linear; transition: opacity 0.1s linear; text-align: center; min-width: 150px; max-width: 300px; } #learndash-tooltips .ld-tooltip:after { content: ''; height: 5px; width: 5px; background: #00a2e8; position: absolute; bottom: -4px; -webkit-transform: rotate(-45deg) translateX(50%); -ms-transform: rotate(-45deg) translateX(50%); transform: rotate(-45deg) translateX(50%); right: 5%; } #learndash-tooltips .ld-tooltip.ld-shifted-left:after { right: 10%; } #learndash-tooltips .ld-tooltip.ld-shifted-right { -webkit-transform: translateX(100%) translateY(-30px); -ms-transform: translateX(100%) translateY(-30px); transform: translateX(100%) translateY(-30px); } #learndash-tooltips .ld-tooltip.ld-shifted-right:after { right: auto; left: 10%; } #learndash-tooltips .ld-tooltip.ld-visible { opacity: 1; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled { display: -webkit-box; display: -ms-flexbox; display: flex; background: #f0f3f6; padding: 1em 0; margin: 1em 0; border-radius: 6px; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled > * { -webkit-box-flex: 1; -ms-flex: 1 auto; flex: 1 auto; width: 33%; -ms-flex-pack: distribute; justify-content: space-around; text-align: center; border-left: 2px solid #bec5cb; padding: 0 1em; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled > *:last-child { border-left: 0; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-button { margin: 0; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-status { display: inline-block; width: auto; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-content { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -ms-flex-pack: distribute; justify-content: space-around; text-align: center; margin-bottom: 0.5em; line-height: 1.25em; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-price { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; text-align: center; -ms-flex-pack: distribute; justify-content: space-around; font-size: 32px; font-weight: bold; color: #728188; margin-top: -3px; line-height: 1; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-price .ld-text { font-size: 14px; margin-right: 8px; font-weight: normal; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-price .ld-currency { font-size: 16px; margin-left: 0.25em; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-label { display: block; color: #728188; font-size: 0.75em; font-weight: bold; margin-bottom: 1em; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -ms-flex-pack: distribute; justify-content: space-around; -ms-flex-wrap: wrap; flex-wrap: wrap; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .ppalholder { position: absolute; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .ld-text { font-size: 14px; color: #728188; display: inline-block; white-space: nowrap; margin-left: 0.5em; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .ld-text .ld-login-text { display: inline-block; margin-right: 5px; text-decoration: underline; font-weight: bold; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .learndash_checkout_buttons { margin: 0 .5em; } @media (max-width: 1280px) { .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .learndash_checkout_buttons, .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .learndash_checkout_button { margin-left: 0; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .learndash_checkout_button { margin-bottom: 0.5em; } } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-seg-action.status-closed .ld-text { white-space: normal; } @media (max-width: 640px) { .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled > * { border-left: 0; border-bottom: 1px solid #e2e7ed; padding: 1em 0; width: auto; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled > *:last-child { border-bottom: 0; } } .learndash-wrapper .ld-course-status.ld-course-status-enrolled { background-color: #f0f3f6; border-radius: 6px; padding: 0.5em 1em; display: -webkit-box; display: -ms-flexbox; display: flex; } .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress { margin: 0; padding: 0; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; padding-left: 1em; } @media (max-width: 640px) { .learndash-wrapper .ld-course-status.ld-course-status-enrolled { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; padding-left: 0; -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress .ld-progress-heading { display: block; width: 100%; text-align: center; } .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress .ld-progress-stats { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress .ld-progress-stats .ld-progress-steps { margin-right: 0; } .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress .ld-progress-bar { width: 100%; margin: 1em 0; } } .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-status { width: auto; display: inline-block; margin: 0 auto; } .learndash-wrapper .ld-course-status .ld-status { line-height: 1.3; } .learndash-wrapper .ld-course-status .ld-status.ld-status-progress { background: #00a2e8; color: #fff; } .learndash-wrapper .ld-course-status .ld-status.ld-status-complete { background: #019e7c; color: #fff; } .learndash-wrapper .ld-course-certificate { text-align: center; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; margin: 1em 0; } .learndash-wrapper .ld-course-certificate .ld-button { display: inline-block; max-width: inherit; font-size: 14px; } .learndash-wrapper .ld-course-certificate .ld-icon-certificate { font-size: 24px; margin-left: 5px; } /** /// This is inserted outside our wrapper and with a generic name **/ .jq-dropdown-menu { -webkit-box-shadow: 0 0 0 1px #ddd !important; box-shadow: 0 0 0 1px #ddd !important; } .jq-dropdown-menu input[type='button'], .jq-dropdown-menu input[type='submit'] { margin: 0; padding: 0; -webkit-transition: none; transition: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1.5em; font-size: 16px; border-radius: 0; border: 0; display: block !important; width: 100% !important; color: #00a2e8; padding: 0.5em 1em; text-align: center; font-size: 14px !important; } .jq-dropdown-menu input[type='button']:hover, .jq-dropdown-menu input[type='submit']:hover { background: #fafafa !important; color: #495255 !important; } .jq-dropdown-menu .ppalholder { display: none; } .learndash-wrapper .learndash-wrapper-login-modal { position: relative; } .learndash-wrapper .ld-modal { position: absolute; -webkit-transform: translateY(-50%) translateX(50%); -ms-transform: translateY(-50%) translateX(50%); transform: translateY(-50%) translateX(50%); z-index: 999; width: 100%; z-index: 9000; max-width: 1024px; min-height: 300px; background: white; border-radius: 6px; overflow: hidden; overflow-y: auto; -webkit-box-shadow: 3px -3px 20px rgba(0, 0, 0, 0.14); box-shadow: 3px -3px 20px rgba(0, 0, 0, 0.14); opacity: 0; visibility: hidden; -webkit-transition: all 0.3s ease; transition: all 0.3s ease; } .learndash-wrapper .ld-modal .ld-modal-closer { position: absolute; top: 0.5em; left: 0; z-index: 9; color: #728188; cursor: pointer; line-height: 0.5; padding: 1em; font-size: 1.5em; } .learndash-wrapper .ld-modal.ld-can-register .ld-modal-closer { color: #fff; } .learndash-wrapper.ld-modal-closed { display: none !important; } .learndash-wrapper.ld-modal-open .ld-modal { opacity: 1; visibility: visible; } .learndash-wrapper .ld-login-modal { display: -webkit-box; display: -ms-flexbox; display: flex; text-align: center; margin: 25% 50% 20px 50%; /* .ld-alert { padding: 10px; margin: 10 auto; .ld-alert-icon { position: relative; left: 0; top: 0; } } */ } .learndash-wrapper .ld-login-modal .ld-modal-heading { font-weight: 300; font-size: 2.25em; margin: 0; margin: 0.5em 0; } .learndash-wrapper .ld-login-modal .ld-login-modal-wrapper { padding: 20px; max-width: 350px; min-width: 80%; margin: 0 auto; } .learndash-wrapper .ld-login-modal .ld-login-modal-login { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; background: white; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .ld-login-modal .ld-login-modal-login .ld-modal-heading { color: #00a2e8; } .learndash-wrapper .ld-login-modal .ld-login-modal-login .ld-modal-text { color: #728188; font-size: 0.875em; } .learndash-wrapper .ld-login-modal .ld-login-modal-register { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; background: #00a2e8; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; color: white; } .learndash-wrapper .ld-login-modal .ld-login-modal-register .ld-button:hover { opacity: 1; -webkit-box-shadow: 0 0 0 5px #fff !important; box-shadow: 0 0 0 5px #fff !important; } .learndash-wrapper .ld-login-modal .ld-login-modal-register label { display: block; font-weight: bold; margin-bottom: 0.5em; font-size: 14px; } .learndash-wrapper .ld-login-modal .ld-login-modal-register #ld-user-register { margin: 2em 0; } .learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='text'], .learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='password'], .learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='email'] { border: 2px solid #fff; margin: 0; margin-bottom: 1em; padding: 0; padding: 0.5em; background-color: #f9f9f9; padding-right: 2em; font-size: 1.2em; width: 100%; -webkit-transition: all ease-in-out 250ms; transition: all ease-in-out 250ms; } .learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='text']:focus, .learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='password']:focus, .learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='email']:focus { background: #fff; } .learndash-wrapper .ld-login-modal .ld-login-modal-register #reg_passmail { font-size: 0.825em; } .learndash-wrapper .ld-login-modal .ld-login-modal-register #wp-submit { margin: 0 auto; min-width: 150px; text-align: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; border: 0; padding: 7px 35px; border-radius: 20px; font-weight: bold; font-size: 14px; border: 5px solid #fff; } .learndash-wrapper .ld-login-modal .ld-login-modal-form { margin: 2em 0; } .learndash-wrapper .ld-login-modal .ld-login-modal-form form { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .learndash-wrapper .ld-login-modal .ld-login-modal-form p { margin: 0; } .learndash-wrapper .ld-login-modal .ld-login-modal-form p.login-submit { text-align: center; } .learndash-wrapper .ld-login-modal .ld-login-modal-form label { display: block; color: #728188; font-weight: bold; margin-bottom: 0.5em; font-size: 14px; } .learndash-wrapper .ld-login-modal .ld-login-modal-form .login-username { position: relative; } .learndash-wrapper .ld-login-modal .ld-login-modal-form .login-username:before { font-family: 'ld-icons' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; display: inline-block; content: "\e90c"; position: absolute; color: #728188; top: 2.5em; right: 0.5em; } .learndash-wrapper .ld-login-modal .ld-login-modal-form .login-password { position: relative; } .learndash-wrapper .ld-login-modal .ld-login-modal-form .login-password:before { font-family: 'ld-icons' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; display: inline-block; content: "\e900"; position: absolute; color: #728188; top: 2.5em; right: 0.5em; } .learndash-wrapper .ld-login-modal .ld-login-modal-form .ld-login-modal-branding { position: relative; padding-top: 2em; margin-top: 1em; } .learndash-wrapper .ld-login-modal .ld-login-modal-form .ld-login-modal-branding:before { content: ''; display: block; position: absolute; width: 50px; height: 3px; background-color: #e2e7ed; right: 50%; top: 0; -webkit-transform: translateX(50%); -ms-transform: translateX(50%); transform: translateX(50%); } .learndash-wrapper .ld-login-modal .ld-login-modal-form .ld-login-modal-branding img { max-width: 100%; max-height: 250px; height: auto; } .learndash-wrapper .ld-login-modal input[type='text'], .learndash-wrapper .ld-login-modal input[type='password'], .learndash-wrapper .ld-login-modal input[type='email'], .learndash-wrapper .ld-login-modal .ld-login-field, .learndash-wrapper .ld-login-modal .ld-password-field { border: 2px solid #e2e7ed; margin: 0; margin-bottom: 1em; padding: 0; padding: 0.5em; background-color: #f0f3f6; color: #728188; padding-right: 2em; font-size: 0.875em; width: 100%; -webkit-transition: all ease-in-out 250ms; transition: all ease-in-out 250ms; } .learndash-wrapper .ld-login-modal input[type='text']:focus, .learndash-wrapper .ld-login-modal input[type='password']:focus, .learndash-wrapper .ld-login-modal input[type='email']:focus, .learndash-wrapper .ld-login-modal .ld-login-field:focus, .learndash-wrapper .ld-login-modal .ld-password-field:focus { border-color: #495255; } .learndash-wrapper .ld-login-modal ::-webkit-input-placeholder { font-family: 'Open Sans', 'Arial','Helvetica', sans-serif; } .learndash-wrapper .ld-login-modal :-ms-input-placeholder { font-family: 'Open Sans', 'Arial','Helvetica', sans-serif; } .learndash-wrapper .ld-login-modal ::placeholder { font-family: 'Open Sans', 'Arial','Helvetica', sans-serif; } .learndash-wrapper .ld-login-modal .ld-forgot-password-link { color: #333333; text-decoration: underline; font-size: 0.875em; } .learndash-wrapper .ld-login-modal .ld-button, .learndash-wrapper .ld-login-modal input[type='submit'] { margin: 2em auto; min-width: 150px; text-align: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; border: 0; border-radius: 20px; font-weight: bold; font-size: 14px; } .learndash-wrapper .ld-login-modal input[type='submit'] { background: #00a2e8; color: #fff; cursor: pointer; padding: 0.75em 5em; -webkit-transition: all ease-in-out 250ms; transition: all ease-in-out 250ms; } .learndash-wrapper .ld-login-modal input[type='submit']:hover { opacity: 0.8; } @media (max-width: 1024px) { .learndash-wrapper .ld-login-modal { top: 100px; width: 80%; -webkit-transform: translateX(50%); -ms-transform: translateX(50%); transform: translateX(50%); } .learndash-wrapper .ld-login-modal.ld-can-register .ld-modal-closer { color: #728188; } } @media (max-width: 768px) { .learndash-wrapper .ld-login-modal { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } } @media (max-width: 640px) { .learndash-wrapper .ld-login-modal { width: 100%; } } .learndash-wrapper .ld-button.ld-login-button { display: -webkit-box; display: -ms-flexbox; display: flex; } .learndash-wrapper .ld-button.ld-login-button.ld-logout { -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; } .learndash-wrapper .ld-button.ld-login-button.ld-login { -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } .learndash-wrapper .ld-button.ld-login-button.ld-login .ld-icon { margin-left: 10px; } /** No Access */ .learndash-not-available .ld-table-list-item-preview, .learndash-not-available .ld-lesson-item-preview, .learndash-not-available .ld-item-list-item-preview, .user_has_no_access .ld-table-list-item-preview, .user_has_no_access .ld-lesson-item-preview, .user_has_no_access .ld-item-list-item-preview { cursor: not-allowed; pointer-events: none; } .learndash-not-available .ld-table-list-item-preview a.ld-lesson-item-preview-heading, .learndash-not-available .ld-table-list-item-preview a.ld-item-name, .learndash-not-available .ld-lesson-item-preview a.ld-lesson-item-preview-heading, .learndash-not-available .ld-lesson-item-preview a.ld-item-name, .learndash-not-available .ld-item-list-item-preview a.ld-lesson-item-preview-heading, .learndash-not-available .ld-item-list-item-preview a.ld-item-name, .user_has_no_access .ld-table-list-item-preview a.ld-lesson-item-preview-heading, .user_has_no_access .ld-table-list-item-preview a.ld-item-name, .user_has_no_access .ld-lesson-item-preview a.ld-lesson-item-preview-heading, .user_has_no_access .ld-lesson-item-preview a.ld-item-name, .user_has_no_access .ld-item-list-item-preview a.ld-lesson-item-preview-heading, .user_has_no_access .ld-item-list-item-preview a.ld-item-name { cursor: not-allowed; pointer-events: none; } .learndash-not-available .ld-table-list-item-preview a.ld-lesson-item-preview-heading .ld-status-icon, .learndash-not-available .ld-table-list-item-preview a.ld-item-name .ld-status-icon, .learndash-not-available .ld-lesson-item-preview a.ld-lesson-item-preview-heading .ld-status-icon, .learndash-not-available .ld-lesson-item-preview a.ld-item-name .ld-status-icon, .learndash-not-available .ld-item-list-item-preview a.ld-lesson-item-preview-heading .ld-status-icon, .learndash-not-available .ld-item-list-item-preview a.ld-item-name .ld-status-icon, .user_has_no_access .ld-table-list-item-preview a.ld-lesson-item-preview-heading .ld-status-icon, .user_has_no_access .ld-table-list-item-preview a.ld-item-name .ld-status-icon, .user_has_no_access .ld-lesson-item-preview a.ld-lesson-item-preview-heading .ld-status-icon, .user_has_no_access .ld-lesson-item-preview a.ld-item-name .ld-status-icon, .user_has_no_access .ld-item-list-item-preview a.ld-lesson-item-preview-heading .ld-status-icon, .user_has_no_access .ld-item-list-item-preview a.ld-item-name .ld-status-icon { pointer-events: all; } .learndash-not-available .ld-table-list-item-preview .ld-expand-button, .learndash-not-available .ld-lesson-item-preview .ld-expand-button, .learndash-not-available .ld-item-list-item-preview .ld-expand-button, .user_has_no_access .ld-table-list-item-preview .ld-expand-button, .user_has_no_access .ld-lesson-item-preview .ld-expand-button, .user_has_no_access .ld-item-list-item-preview .ld-expand-button { pointer-events: all; } .learndash-not-available a.ld-topic-row, .user_has_no_access a.ld-topic-row { cursor: not-allowed; pointer-events: none; } .learndash-not-available.is_sample .ld-lesson-item-preview, .learndash-not-available.is_sample .ld-item-list-item-preview, .user_has_no_access.is_sample .ld-lesson-item-preview, .user_has_no_access.is_sample .ld-item-list-item-preview { cursor: pointer; pointer-events: all; } .learndash-not-available.is_sample .ld-lesson-item-preview a.ld-lesson-item-preview-heading, .learndash-not-available.is_sample .ld-lesson-item-preview a.ld-item-name, .learndash-not-available.is_sample .ld-item-list-item-preview a.ld-lesson-item-preview-heading, .learndash-not-available.is_sample .ld-item-list-item-preview a.ld-item-name, .user_has_no_access.is_sample .ld-lesson-item-preview a.ld-lesson-item-preview-heading, .user_has_no_access.is_sample .ld-lesson-item-preview a.ld-item-name, .user_has_no_access.is_sample .ld-item-list-item-preview a.ld-lesson-item-preview-heading, .user_has_no_access.is_sample .ld-item-list-item-preview a.ld-item-name { cursor: pointer; pointer-events: all; } /** Make ld_course_list links clickable in Quiz results messages */ .user_has_no_access .wpProQuiz_resultsList .ld-item-list-item-preview a.ld-item-name { cursor: pointer; pointer-events: all; } /** Force open sample content **/ .ld-topic-list.is_sample .ld-table-list-item-preview, .ld-topic-list.is_sample .ld-lesson-item-preview, .ld-topic-list.is_sample .ld-item-list-item-preview, .ld-lesson-item.is_sample .ld-table-list-item-preview, .ld-lesson-item.is_sample .ld-lesson-item-preview, .ld-lesson-item.is_sample .ld-item-list-item-preview, .ld-item-list-item.is_sample .ld-table-list-item-preview, .ld-item-list-item.is_sample .ld-lesson-item-preview, .ld-item-list-item.is_sample .ld-item-list-item-preview { cursor: pointer; pointer-events: all; } .ld-topic-list.is_sample .ld-table-list-item-preview a.ld-lesson-item-preview-heading, .ld-topic-list.is_sample .ld-table-list-item-preview a.ld-item-name, .ld-topic-list.is_sample .ld-lesson-item-preview a.ld-lesson-item-preview-heading, .ld-topic-list.is_sample .ld-lesson-item-preview a.ld-item-name, .ld-topic-list.is_sample .ld-item-list-item-preview a.ld-lesson-item-preview-heading, .ld-topic-list.is_sample .ld-item-list-item-preview a.ld-item-name, .ld-lesson-item.is_sample .ld-table-list-item-preview a.ld-lesson-item-preview-heading, .ld-lesson-item.is_sample .ld-table-list-item-preview a.ld-item-name, .ld-lesson-item.is_sample .ld-lesson-item-preview a.ld-lesson-item-preview-heading, .ld-lesson-item.is_sample .ld-lesson-item-preview a.ld-item-name, .ld-lesson-item.is_sample .ld-item-list-item-preview a.ld-lesson-item-preview-heading, .ld-lesson-item.is_sample .ld-item-list-item-preview a.ld-item-name, .ld-item-list-item.is_sample .ld-table-list-item-preview a.ld-lesson-item-preview-heading, .ld-item-list-item.is_sample .ld-table-list-item-preview a.ld-item-name, .ld-item-list-item.is_sample .ld-lesson-item-preview a.ld-lesson-item-preview-heading, .ld-item-list-item.is_sample .ld-lesson-item-preview a.ld-item-name, .ld-item-list-item.is_sample .ld-item-list-item-preview a.ld-lesson-item-preview-heading, .ld-item-list-item.is_sample .ld-item-list-item-preview a.ld-item-name { cursor: pointer; pointer-events: all; } .ld-topic-list.is_sample a.ld-lesson-item-preview, .ld-topic-list.is_sample a.ld-table-list-item-preview, .ld-topic-list.is_sample a.ld-topic-row, .ld-lesson-item.is_sample a.ld-lesson-item-preview, .ld-lesson-item.is_sample a.ld-table-list-item-preview, .ld-lesson-item.is_sample a.ld-topic-row, .ld-item-list-item.is_sample a.ld-lesson-item-preview, .ld-item-list-item.is_sample a.ld-table-list-item-preview, .ld-item-list-item.is_sample a.ld-topic-row { cursor: pointer !important; pointer-events: all !important; } .learndash-wrapper { /* .ld-course-info { .ld-section-heading { font-size: 0.8em; font-style: italic; display: block; margin: 0.5em 0; } .ld-item-list-item { border: 0; padding: 0 0 10px 0; margin: 0 0 10px 0; border-bottom: 1px solid $border-grey; &:last-child { border-bottom: 0; } .ld-item-list-item-preview { flex-wrap: wrap; padding: 0; } a.item-name { width: 100%; } .ld-course-title { font-size: .875em; line-height: 1.3em; } .ld-item-details { margin-top: 10px; display: block; text-align: left; .ld-progress-steps { font-size: 12px; color: $text-grey; margin-bottom: 5px; } } } .ld-table-list-item-preview { display: flex; } }*/ } .learndash-wrapper .ld-user-status.ld-is-widget { margin: 30px 0; } .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item { border: 0; border-bottom: 2px solid #f0f3f6; border-radius: 0; padding: 10px 0; margin: 10px 0; } .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item:last-child { border-bottom: 0; } .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item .ld-item-list-item-preview { padding: 0; } .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-title { font-size: 14px; line-height: 1.5em; } .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-components { margin-top: 10px; } .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-components span { display: block; margin: 0 0 5px 0; font-size: 12px; line-height: 1.5em; } .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-components span.ld-sep { display: none; } .learndash-wrapper .ld-user-status.ld-is-widget .ld-pagination { -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } .learndash-wrapper .ld-focus-comments { margin: 2em 0; } .learndash-wrapper .ld-focus-comments p.comment-form-comment { margin: 0; width: 100% !important; max-width: 100% !important; } .learndash-wrapper .ld-focus-comments p.comment-form-comment textarea { width: 100%; } .learndash-wrapper .ld-focus-comments #ld-comments { margin-bottom: 50px; } .learndash-wrapper .ld-focus-comments #commentform .logged-in-as { margin: 0; font-size: 0.875em; font-weight: normal; float: left; } .learndash-wrapper .ld-focus-comments #commentform textarea#comment { font-family: inherit; padding: 0.875em; background: #e2e7ed; border: 5px solid #e2e7ed; border-radius: 6px; font-size: 1em; } .learndash-wrapper .ld-focus-comments #commentform textarea#comment:focus { background: transparent; outline: 0; -webkit-box-shadow: none; box-shadow: none; } .learndash-wrapper .ld-focus-comments .comment-navigation .nav-links { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; } .learndash-wrapper .ld-focus-comments .comment-navigation .nav-links .nav-previous { margin: 0; text-align: right; min-width: 50%; width: 100%; font-weight: bold; } .learndash-wrapper .ld-focus-comments .comment-navigation .nav-links .nav-next { margin: 0; text-align: left; min-width: 50%; width: 100%; font-weight: bold; } .learndash-wrapper .ld-focus-comments .form-submit { width: 100% !important; max-width: 100% !important; } .learndash-wrapper .ld-focus-comments .form-submit #submit { margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; text-transform: none; font-family: inherit; font-weight: 800; font-size: 0.75em; text-align: center; text-decoration: none; cursor: pointer; width: 100%; max-width: 385px; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; height: auto; padding: .75em 1.5em; font-size: 1em; display: inline-block; padding: 0.75em 3em; margin-top: 0; height: auto; margin-top: 1em; min-width: unset; max-width: unset; width: unset; text-decoration: none !important; } .learndash-wrapper .ld-focus-comments .form-submit #submit .ld-icon { font-size: 0.875em; } .learndash-wrapper .ld-focus-comments .form-submit #submit .ld-text { padding: 0 1em; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } .learndash-wrapper .ld-focus-comments .form-submit #submit + .ld-button { margin-right: 1em; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-compact { padding: 0; width: 24px; height: 24px; border-radius: 100%; -ms-flex-preferred-size: 24px; flex-basis: 24px; -ms-flex-negative: 0; flex-shrink: 0; padding: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-compact .ld-icon { margin-left: 0; font-size: 0.75em; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-compact .ld-text { padding: 0; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-alternate { background: transparent; color: #00a2e8; padding: 0; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-alternate .ld-icon { background: #00a2e8; color: white; border-radius: 100%; width: 18px; height: 18px; -webkit-box-flex: 0; -ms-flex: 0 0 18px; flex: 0 0 18px; padding: 2px; line-height: 16px; text-align: center; font-weight: bold; -webkit-transition: color 0.3s ease, background 0.3s ease; transition: color 0.3s ease, background 0.3s ease; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-alternate .ld-text { padding-right: 0.5em; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-alternate:hover { background: transparent; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-transparent { color: #00a2e8; background: transparent; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-transparent.ld-status-complete { color: #019e7c; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-transparent:hover { background: transparent; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-reverse { background: white; color: #00a2e8; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-reverse:hover { background: #00a2e8; color: white; } .learndash-wrapper .ld-focus-comments .form-submit #submit:hover { opacity: 0.75; background-color: #00a2e8; } .learndash-wrapper .ld-focus-comments .form-submit #submit:focus { outline: none; opacity: 0.75; } .learndash-wrapper .ld-focus-comments__heading { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; -webkit-box-align: center; -ms-flex-align: center; align-items: center; border-bottom: 4px solid #e2e7ed; margin-bottom: 0.5em; } .learndash-wrapper .ld-focus-comments__heading .ld-expand-button .ld-text { padding-left: 0.5em; font-size: 1em; } .learndash-wrapper .ld-focus-comments__heading .ld-expand-button .ld-icon { font-size: 0.75em; } .learndash-wrapper .ld-focus-comments__header { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; font-size: 2em; font-weight: normal; margin-bottom: 10px; } .learndash-wrapper .ld-focus-comments__comments { overflow: hidden; -webkit-transition: max-height 0.3s ease; transition: max-height 0.3s ease; font-size: 1em; font-weight: normal; } .learndash-wrapper .ld-focus-comments .comment-respond { position: relative; padding-top: 0; } .learndash-wrapper .ld-focus-comments .comment-respond #reply-title { font-size: 1.5em; font-weight: normal; margin-bottom: 0.75em; } .learndash-wrapper .ld-focus-comments .comment-respond small { margin-right: 1em; font-size: 0.75em; } .learndash-wrapper .ld-focus-comments .comment-form label { display: none; } .learndash-wrapper .ld-focus-comments #ld-comments-post-button.ld-open { display: none; } .learndash-wrapper .ld-focus-comments #ld-comments-form.ld-collapsed { display: none; } .learndash-wrapper .ld-focus-comment { margin: 2em 0; } .learndash-wrapper .ld-focus-comment:last-child { margin-bottom: 5em; } .learndash-wrapper .ld-focus-comment.depth-1 { margin-right: 0; } .learndash-wrapper .ld-focus-comment.depth-2, .learndash-wrapper .ld-focus-comment.depth-3, .learndash-wrapper .ld-focus-comment.depth-4, .learndash-wrapper .ld-focus-comment.depth-5 { margin-right: 74px; } @media (max-width: 768px) { .learndash-wrapper .ld-focus-comment.depth-2, .learndash-wrapper .ld-focus-comment.depth-3, .learndash-wrapper .ld-focus-comment.depth-4, .learndash-wrapper .ld-focus-comment.depth-5 { margin-right: 20px; } } .learndash-wrapper .ld-focus-comment .ld-comment-avatar { position: relative; margin-bottom: 1em; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-focus-comment .ld-comment-avatar img { -webkit-box-sizing: border-box; box-sizing: border-box; max-width: 58px; height: auto; border-radius: 100%; margin-left: 16px; border: 4px solid transparent; } .learndash-wrapper .ld-focus-comment .ld-comment-avatar .ld-comment-avatar-author .ld-comment-author-name { color: black; font-size: 1.125em; margin-bottom: 5px; display: block; font-weight: bold; } .learndash-wrapper .ld-focus-comment .ld-comment-avatar .ld-comment-avatar-author a.ld-comment-permalink { color: #728188; font-size: 0.875em; text-decoration: none; display: block; } .learndash-wrapper .ld-focus-comment .ld-comment-body { overflow: hidden; position: relative; margin-right: 74px; } .learndash-wrapper .ld-focus-comment .ld-comment-reply { margin: 1em 0; } .learndash-wrapper .ld-focus-comment .ld-comment-reply a.comment-reply-link { border: 0; display: inline-block; padding: 0.5em 1.75em; color: black; font-weight: bold; font-size: 0.875em; position: relative; z-index: 9; background-color: #e2e7ed; border-radius: 18px; } .learndash-wrapper .ld-focus-comment.bypostauthor > .ld-comment-wrapper, .learndash-wrapper .ld-focus-comment.role-group_leader > .ld-comment-wrapper, .learndash-wrapper .ld-focus-comment.role-administrator > .ld-comment-wrapper { border-radius: 6px; background: #f2fafd; padding: 1em; } .learndash-wrapper .ld-focus-comment.bypostauthor > .ld-comment-wrapper > .ld-comment-avatar img, .learndash-wrapper .ld-focus-comment.role-group_leader > .ld-comment-wrapper > .ld-comment-avatar img, .learndash-wrapper .ld-focus-comment.role-administrator > .ld-comment-wrapper > .ld-comment-avatar img { border-color: #00a2e8; } .learndash-wrapper .ld-focus-comment.bypostauthor.ptype-sfwd-assignment > .ld-comment-wrapper { border-radius: 0; background: transparent; padding: 0; } .learndash-wrapper .ld-focus-comment.bypostauthor.ptype-sfwd-assignment > .ld-comment-wrapper > .ld-comment-avatar img { border-color: transparent; } .learndash-wrapper .ld-focus-comment.ld-no-avatar-image .ld-comment-body { margin-right: 0; } /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNldHVwL192YXJpYWJsZXMuc2NzcyIsInNldHVwL19pY29ucy5zY3NzIiwic2V0dXAvX2dsb2JhbC5zY3NzIiwic2V0dXAvX21peGlucy5zY3NzIiwic2V0dXAvX2llLnNjc3MiLCJsZWFybmRhc2guY3NzIiwiY29tcG9uZW50cy9faXRlbS1saXN0LnNjc3MiLCJjb21wb25lbnRzL190YWJsZS1saXN0LnNjc3MiLCJjb21wb25lbnRzL19wcm9ncmVzcy5zY3NzIiwiY29tcG9uZW50cy9fcGFnaW5hdGlvbi5zY3NzIiwiY29tcG9uZW50cy9fdWkuc2NzcyIsImNvbXBvbmVudHMvX2NvdXJzZS1saXN0LnNjc3MiLCJjb21wb25lbnRzL2xlc3Nvbi1saXN0LnNjc3MiLCJjb21wb25lbnRzL190b3BpYy1saXN0LnNjc3MiLCJjb21wb25lbnRzL190b3BpYy5zY3NzIiwiY29tcG9uZW50cy9fcXVpei5zY3NzIiwiY29tcG9uZW50cy9fY291cnNlLW5hdmlnYXRpb24uc2NzcyIsImNvbXBvbmVudHMvX3Byb2ZpbGUuc2NzcyIsImNvbXBvbmVudHMvX3RhYnMuc2NzcyIsImNvbXBvbmVudHMvX2JyZWFkY3J1bWJzLnNjc3MiLCJjb21wb25lbnRzL19hbGVydHMuc2NzcyIsImNvbXBvbmVudHMvX2ZvY3VzLW1vZGUuc2NzcyIsImNvbXBvbmVudHMvX3Rvb2x0aXBzLnNjc3MiLCJjb21wb25lbnRzL19jb3Vyc2Utc3RhdHVzLnNjc3MiLCJjb21wb25lbnRzL19tb2RhbC5zY3NzIiwiY29tcG9uZW50cy9fbm8tYWNjZXNzLnNjc3MiLCJjb21wb25lbnRzL19jb3Vyc2UtaW5mby5zY3NzIiwiY29tcG9uZW50cy9fY29tbWVudHMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEyQjZCLHlCQUF5QjtBQzNCdEQsYUFDRSx3QkFBd0IsQ0FDeEIseUNBQVMsQ0FDVCxvUEFHcUQsQ0FDckQsb0JBQW9CLENBQ3BCLG1CQUFtQixFQUFBOztBQUdyQixXQUNFLGdGQUFnRixDQUNoRixtQ0FBbUMsQ0FDbkMsWUFBWSxDQUNaLG1CQUFtQixDQUNuQixvQkFBb0IsQ0FDcEIscUJBQXFCLENBQ3JCLHFCQUFxQixDQUNyQixlQUFlLENBRWYsdUNBQXVDLENBQ3ZDLG9DQUFvQyxDQUNwQyxtQ0FBbUMsQ0FFbkMsc0JBQXFCLEVBQ3RCOztBQUdELHdCQUNFLGlCQUFpQixFQUNsQjs7QUFDRCwyQkFDRSxpQkFBaUIsRUFDbEI7O0FBQ0QsdUJBQ0UsaUJBQWlCLEVBQ2xCOztBQUNELDRCQUNFLGlCQUFpQixFQUNsQjs7QUFDRCwyQkFDRSxpQkFBaUIsRUFDbEI7O0FBQ0QsaUNBQ0UsaUJBQWlCLEVBQ2xCOztBQUNELDBCQUNFLGlCQUFpQixFQUNsQjs7QUFDRCxzREFFRSxpQkFBaUIsRUFDbEI7O0FBQ0Qsd0JBQ0UsaUJBQWlCLEVBQ2xCOztBQUNELDhCQUNFLGlCQUFpQixFQUNsQjs7QUFDRCwyQkFDRSxpQkFBaUIsRUFDbEI7O0FBQ0QsNkJBQ0UsaUJBQWlCLEVBQ2xCOztBQUNELDJCQUNFLGlCQUFpQixFQUNsQjs7QUFDRCw4QkFDRSxpQkFBaUIsRUFDbEI7O0FBQ0QsNkJBQ0UsaUJBQWlCLEVBQ2xCOztBQUNELDZCQUNFLGlCQUFpQixFQUNsQjs7QUFDRCx3QkFDRSxpQkFBaUIsRUFDbEI7O0FBQ0QsaURBRUUsaUJBQWlCLEVBQ2xCOztBQUNELDJCQUNFLGlCQUFpQixFQUNsQjs7QUFDRCx5QkFDRSxpQkFBaUIsRUFDbEI7O0FDMUZELHVCQUdFLCtCQUNBLENBQUEsdUJBQUEsRUFBQTs7QUFKRixpREFNRSxvQkFBb0IsRUFDcEI7O0FBUEYsNkRDMERDLFVBQVMsQ0FDVCxvQkFBbUIsQ0FDbkIsMEJIM0NhLENHNENiLGFIN0NZLENHOENaLHlCQUNBLENBQUEsaUJBQ0EsQ0FBQSxxQkFDQSxDQUFBLHFCQUNBLENBQUEsaUJBQ0EsQ0FBQSxrQkFDQSxDQUFBLG1CQUNBLENBQUEsc0JBQ00sQ0FBQSxnQkFDSSxDQUFBLFlBQ1YsQ0FBQSxpQkFDQSxDQUFBLG9CQUNNLENBQUEsa0JBRU4sQ0FBQSxVQUFXLENBQUEsV0FBQSxDQUFBLHNDQUVLLENBQUEsOEJBRWhCLENBQUEscUJBQ1MsQ0FBQSxxQkR0RUcsQ0FBQSxjQUNYLENBQUEseUJBQUEsQ0FBQSxzQkFBQSxDQUFBLHdCQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEsYUFBQSxDQUFBLHFCQUFBLENBQUEsZ0JBQUEsRUFBQTs7QUNzRUQsK0VBQ0MsbUJBQWtCLEVBQ2xCOztBQUNELCtFQUNDLGVBQWMsQ0FDZCxvQkFDVSxDQUFDLFlBQ1gsQ0FBQSxRQUFBLENBQUEsbUJBQUEsRUFBQTs7QUFDRSx1RkFDRixrQkFBZ0IsRUFDaEI7O0FENUZGLG1GQzhGRSxXQUFVLENBQ1YsWUFBVyxDQUNYLGFBQVksQ0FDWixvQkFBbUIsQ0FDbkIsOEJBQ1csQ0FBQyxpQkFFWixDQUFBLHFCQUNBLENBQUEsZUFBZ0IsQ0FBQSxXQVFoQixDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxFQUFBOztBQVBBLHFHQUNDLGVBQWUsQ0FDZixrQkFBaUIsRUFDakI7O0FBQ0QscUdBQ0MsV0FBVSxFQUNWOztBRDdHSCxxR0NnSEUsd0JBQXVCLENBQ3ZCLGVIaEdZLENHaUdaLFdBQVUsRUFvQlY7O0FBbkJBLHVIQUNDLG9CSG5HVyxDR29HWCxhSHJHVSxDR3NHVixvQkFBbUIsQ0FDbkIsWUFBWSxDQUNaLGFBQWEsQ0FDYixvQkFDQSxDQUFBLG1CQUNBLENBQVcsZUFDWCxDQUFBLGFBQ0EsQ0FBQSxrQkFDQSxDQUFBLG1CQUFXLENBQUEsa0JBQUEsQ0FBQSwwREFDWCxDQUFBLGtEQUFBLEVBQUE7O0FBQ0QsdUhBQ0MscUJBQW9CLEVBQ3BCOztBRGxJSCxpSENvSUcsd0JBQXVCLEVBQ3ZCOztBRHJJSCx5R0MrQ0MsZUg5QmEsQ0crQmIsd0JBQXVCLEVBeUZ0Qjs7QUR6SUYsK0lDa0RFLGVIMUJhLEVHMkJiOztBRG5ERixxSENxREUsd0JBQXVCLEVBQ3ZCOztBRHRERixpR0MySUUsa0JIM0hXLENHNEhYLGVIM0hZLEVHZ0laOztBRGpKRiw2R0M4SUcsb0JIN0hXLENHOEhYLGFIL0hVLEVHZ0lWOztBRGhKSCx5RUNtSkUsY0FBYSxDQUNiLDBCSG5JWSxFR29JWjs7QURySkYseUVDdUpFLGNBQWMsQ0FDZCxjQUFjLEVBQ2Q7O0FEekpGLGdDQzBEQyxVQUFTLENBQ1Qsb0JBQW1CLENBQ25CLDBCSDNDYSxDRzRDYixhSDdDWSxDRzhDWix5QkFDQSxDQUFBLGlCQUNBLENBQUEscUJBQ0EsQ0FBQSxxQkFDQSxDQUFBLGlCQUNBLENBQUEsa0JBQ0EsQ0FBQSxtQkFDQSxDQUFBLHNCQUNNLENBQUEsZ0JBQ0ksQ0FBQSxZQUNWLENBQUEsaUJBQ0EsQ0FBQSxvQkFDTSxDQUFBLGtCQUVOLENBQUEsVUFBVyxDQUFBLFdBQUEsQ0FBQSxzQ0FFSyxDQUFBLDhCQUVoQixDQUFBLHFCQUNTLENBQUEscUJEdkRSLENBQUEsY0FBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGFBQUEsQ0FBQSxxQkFBQSxFQUFBOztBQ3dERCx5Q0FDQyxtQkFBa0IsRUFDbEI7O0FBQ0QseUNBQ0MsZUFBYyxDQUNkLG9CQUNVLENBQUMsWUFDWCxDQUFBLFFBQUEsQ0FBQSxtQkFBQSxFQUFBOztBQUNFLDZDQUNGLGtCQUFnQixFQUNoQjs7QUQ1RkYsMkNDOEZFLFdBQVUsQ0FDVixZQUFXLENBQ1gsYUFBWSxDQUNaLG9CQUFtQixDQUNuQiw4QkFDVyxDQUFDLGlCQUVaLENBQUEscUJBQ0EsQ0FBQSxlQUFnQixDQUFBLFdBUWhCLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEseUJBQUEsQ0FBQSxzQkFBQSxDQUFBLHdCQUFBLEVBQUE7O0FBUEEsb0RBQ0MsZUFBZSxDQUNmLGtCQUFpQixFQUNqQjs7QUFDRCxvREFDQyxXQUFVLEVBQ1Y7O0FEN0dILG9EQ2dIRSx3QkFBdUIsQ0FDdkIsZUhoR1ksQ0dpR1osV0FBVSxFQW9CVjs7QUFuQkEsNkRBQ0Msb0JIbkdXLENHb0dYLGFIckdVLENHc0dWLG9CQUFtQixDQUNuQixZQUFZLENBQ1osYUFBYSxDQUNiLG9CQUNBLENBQUEsbUJBQ0EsQ0FBVyxlQUNYLENBQUEsYUFDQSxDQUFBLGtCQUNBLENBQUEsbUJBQVcsQ0FBQSxrQkFBQSxDQUFBLDBEQUNYLENBQUEsa0RBQUEsRUFBQTs7QUFDRCw2REFDQyxxQkFBb0IsRUFDcEI7O0FEbElILDBEQ29JRyx3QkFBdUIsRUFDdkI7O0FEcklILHNEQytDQyxlSDlCYSxDRytCYix3QkFBdUIsRUF5RnRCOztBRHpJRix5RUNrREUsZUgxQmEsRUcyQmI7O0FEbkRGLDREQ3FERSx3QkFBdUIsRUFDdkI7O0FEdERGLGtEQzJJRSxrQkgzSFcsQ0c0SFgsZUgzSFksRUdnSVo7O0FEakpGLHdEQzhJRyxvQkg3SFcsQ0c4SFgsYUgvSFUsRUdnSVY7O0FEaEpILHNDQ21KRSxjQUFhLENBQ2IsMEJIbklZLEVHb0laOztBRHJKRixzQ0N1SkUsY0FBYyxDQUNkLGNBQWMsRUFDZDs7QUR6SkYseUNBZ0JHLDBDQUNBLENBQUEsa0NBQUEsRUFBQTs7QUFqQkgsMkRBb0JJLG9DQUNBLENBQUEsZ0NBQUEsQ0FBQSw0QkFBQSxFQUFBOztBQXJCSiwwREF1QkksbUNBQ0EsQ0FBQSwrQkFBQSxDQUFBLDJCQUFBLEVBQUE7O0FBeEJKLHVCQTRCRSxzQkFBc0IsQ0FDdEIsa0JBQWtCLENBQ2xCLCtCQUErQixDQUMvQixvQ0FJQSxDQUFBLDRCQUFBLEVBQUE7O0FBbkNGLDZCQWlDRyxzQkFBcUIsRUFDckI7O0FBbENILGtDQXFDRSxxQkFDQSxDQUFPLHFCQUNHLENBQUEsY0FDSCxDQUFBLGVBQ1AsQ0FBQSxrQkFBQSxDQUFBLGFBQUEsRUFBQTs7QUF6Q0Ysc0NBMkNFLG9CQUNBLENBQUEsaUJBQ0EsQ0FBQSxhQUFBLENBQUEsbUJBQUEsRUFBQTs7QUE3Q0YseUNBK0NFLG9CQUNBLENBQUEsb0JBQ0EsQ0FBQSxnQkFBQSxDQUFBLG9CQUFBLEVBQUE7O0FBakRGLHdDQW1ERSxvQkFBbUIsQ0FDbkIsaUJBQWdCLEVBTWhCOztBQTFERiw0Q0FzREcsWUFBVyxDQUNYLGFBQVksRUFFWjs7QUM1Q0QsNkJEYkYsa0NBNkRHLDZCQUNBLENBQUEsOEJBQUEsQ0FBQSwyQkFBQSxDQUFBLHVCQUFBLEVBQUE7RUE5REgsc0NBZ0VHLG1CQUFrQixFQUNsQixFQUFBOztBQWpFSCxpRkFxRUUsbUJBQWtCLENBQ2xCLGVBQWMsQ0FDZCxpQkFBZ0IsRUFVaEI7O0FBakZGLCtGQ3lLRSxtQ0FBbUMsQ0FDbkMsWUFBWSxDQUNaLG1CQUFtQixDQUNuQixvQkFBb0IsQ0FDcEIscUJBQXFCLENBQ3JCLHFCQUFxQixDQUNyQixlQUFlLENBRWYsdUNBQXVDLENBQ3ZDLG9DQUFvQyxDQUNwQyxtQ0FBbUMsQ0FFbkMsc0JBQXFCLENEM0dwQixpQkFBaUIsQ0FDakIsbUJBQWtCLENBQ2xCLFVBQVUsQ0FDVixTQUFRLENBQ1Isb0NGOURLLENBQUEsZ0NFZ0VMLENBQUEsNEJBQUEsQ0FBQSxhQUFBLEVBQUE7O0FBaEZILHlHQzBEQyxVQUFTLENBQ1Qsb0JBQW1CLENBQ25CLDBCSDNDYSxDRzRDYixhSDdDWSxDRzhDWix5QkFDQSxDQUFBLGlCQUNBLENBQUEscUJBQ0EsQ0FBQSxxQkFDQSxDQUFBLGlCQUNBLENBQUEsa0JBQ0EsQ0FBQSxtQkFDQSxDQUFBLHNCQUNNLENBQUEsZ0JBQ0ksQ0FBQSxZQUNWLENBQUEsaUJBQ0EsQ0FBQSxvQkFDTSxDQUFBLGtCQUVOLENBQUEsVUFBVyxDQUFBLFdBQUEsQ0FBQSxzQ0FFSyxDQUFBLDhCQUVoQixDQUFBLHFCQUNTLENBQUEscUJESVIsQ0FBQSxjRjdEYSxDRThEYix5QkFDQSxDQUFBLHNCQU1BLENBQUEsd0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxhQUFBLENBQUEscUJBQUEsQ0FBQSwwQkFBQSxDQUFBLGFBQUEsQ0FBQSxrQkFBQSxFQUFBOztBQ1hELDJIQUNDLG1CQUFrQixFQUNsQjs7QUFDRCwySEFDQyxlQUFjLENBQ2Qsb0JBQ1UsQ0FBQyxZQUNYLENBQUEsUUFBQSxDQUFBLG1CQUFBLEVBQUE7O0FBQ0UsbUlBQ0Ysa0JBQWdCLEVBQ2hCOztBRDVGRiwrSEM4RkUsV0FBVSxDQUNWLFlBQVcsQ0FDWCxhQUFZLENBQ1osb0JBQW1CLENBQ25CLDhCQUNXLENBQUMsaUJBRVosQ0FBQSxxQkFDQSxDQUFBLGVBQWdCLENBQUEsV0FRaEIsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsRUFBQTs7QUFQQSxpSkFDQyxlQUFlLENBQ2Ysa0JBQWlCLEVBQ2pCOztBQUNELGlKQUNDLFdBQVUsRUFDVjs7QUQ3R0gsaUpDZ0hFLHdCQUF1QixDQUN2QixlSGhHWSxDR2lHWixXQUFVLEVBb0JWOztBQW5CQSxtS0FDQyxvQkhuR1csQ0dvR1gsYUhyR1UsQ0dzR1Ysb0JBQW1CLENBQ25CLFlBQVksQ0FDWixhQUFhLENBQ2Isb0JBQ0EsQ0FBQSxtQkFDQSxDQUFXLGVBQ1gsQ0FBQSxhQUNBLENBQUEsa0JBQ0EsQ0FBQSxtQkFBVyxDQUFBLGtCQUFBLENBQUEsMERBQ1gsQ0FBQSxrREFBQSxFQUFBOztBQUNELG1LQUNDLHFCQUFvQixFQUNwQjs7QURsSUgsNkpDb0lHLHdCQUF1QixFQUN2Qjs7QURySUgscUpDK0NDLGVIOUJhLENHK0JiLHdCQUF1QixFQXlGdEI7O0FEeklGLDJMQ2tERSxlSDFCYSxFRzJCYjs7QURuREYsaUtDcURFLHdCQUF1QixFQUN2Qjs7QUR0REYsNklDMklFLGtCSDNIVyxDRzRIWCxlSDNIWSxFR2dJWjs7QURqSkYseUpDOElHLG9CSDdIVyxDRzhIWCxhSC9IVSxFR2dJVjs7QURoSkgscUhDbUpFLGNBQWEsQ0FDYiwwQkhuSVksRUdvSVo7O0FEckpGLHFIQ3VKRSxjQUFjLENBQ2QsY0FBYyxFQUNkOztBRHpKRiwySEF5RkcsZ0JBQWdCLENBQ2hCLGdDQUF5QixDQUFRLHNCQUFzQixDQUN2RCx3QkFBaUIsRUFDakI7O0FBNUZILHlDQStGRSxZQUFZLENBQ1osOEJGNUZtQixDRTZGbkIsZUFBYyxDQUNkLHFCQUNBLENBQUEscUJBQWdCLENBQUEsY0FDTCxDQUFBLDBCQWtDWCxDQUFBLHVCQUFBLENBQUEsK0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsRUFBQTs7QUF0SUYsNERBc0dHLG9CQUNBLENBQUEsb0JBQ0EsQ0FBQSxnQkFBQSxDQUFBLG1CQUFBLEVBQUE7O0FBeEdILDZDQTBHRyxvQkFDVSxDQUFDLFlBQ1gsQ0FBQSxRQUFXLENBQUEsbUJBQ1gsQ0FBQSxpQkFBQSxFQUFBOztBQTdHSCxtSEFnSEcsbUJBQW1CLENBQ25CLFVBQVUsQ0FDVixtQkFBbUIsQ0FDbkIsZUFBZSxDQUNmLGFBQWEsQ0FDYixTQUFRLENBQ1IsUUFBUyxDQUNULGVGOUdnQixDRStHaEIsa0JBQWtCLEVBQ2xCOztBQ3RHRCw0QkRuQkYseUNBMkhHLDZCQUNBLENBQUEsOEJBVUQsQ0FBQSwyQkFBQSxDQUFBLHVCQUFBLENBQUEsd0JBQUEsQ0FBQSxxQkFBQSxDQUFBLDRCQUFBLEVBQUE7RUF0SUYsNERBOEhJLG9CQUNBLENBQUEsWUFBQSxDQUFBLFFBQUEsRUFBQTtFQS9ISiw2Q0FrSUksbUJBQWtCLENBQ2xCLGdCQUFjLEVBQ2QsRUFBQTs7QUFwSUoscUNBd0lFLHlCQUF5QixFQUl6Qjs7QUNuSEEsNEJEekJGLHFDQTBJRyw0QkFBNEIsRUFFN0IsRUFBQTs7QUNuSEEsNEJEekJGLG9DQStJRyx5QkFBeUIsRUFFMUIsRUFBQTs7QUFqSkYsaUNBbUpFLG1CQUFtQixFQTJCbkI7O0FBOUtGLHdDQXFKRyxtQkFBbUIsQ0FDbkIsWUFBWSxDQUNaLGVBQWUsQ0FDZixZQUFZLENBQ1osT0FBTyxDQUNQLFNBQVEsQ0FDUixRQUFTLENBQ1QsVUFBVSxDQUNWLHFDQUFnQixFQUNoQjs7QUE5SkgseUNBZ0tHLFlBQVksQ0FDWixlQUFlLENBQ2YsbUJBQW1CLENBQ25CLG1CQUFtQixDQUNuQixZQUFZLENBQ1osYUFBYSxDQUNiLGFBQWEsQ0FDYixXQUFVLENBQ1YsU0FBUyxDQUNULHdCQUF3QixDQUN4QixxQ0FBc0IsQ0FDdEIsOEJGMUpXLENFMkpYLG1EQUNBLENBQUEsMkNBQUEsRUFBQTs7QUFJSCxnQ0FFRSxPQUFBLG1DQUFpQixDQUFBLDJCQUFBLEVBQUEsRUFBQTs7QUVsTG5CLHdCQUF1QixPQUFBLG1DQUFBLENBQUEsMkJBQUEsRUFBQSxFQUFBOztBQ3FOdkIsdUJEak5FO0FDa05GLHdFRG5OQyx1Q0FhZ0IsaUJBR0gsRUFBQztFQWhCZCxvRUFzQmlCLDhCQURoQixDQUFBLGlCQUFBLEVBQUE7RUFyQkQsb0hBd0NLLDhCQUFBLENBQUEsaUJBQUEsRUFBQTtFQXhDTCxnS0F1Q00sOEJBQUEsQ0FBQSxpQkFBQSxFQUFBO0VBdkNOLHlGQTZDaUIsZ0JBQ2IsRUFBQTtFQTlDSixvR0F3REksYUFBQSxDQUFBLGlCQUFBLEVBQUE7RUF4REoseUVBMERTLGlCQUNMLEVBQUE7RUEzREosb0VBZ0VRLG9CQUNOLENBQUEsWUFBQSxDQUFBLFFBQUEsRUFBQTtFQzBKRCxtRUFBbUUsb0JBQW9CLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRTtFQy9OakgsNkRBR0UsWUFBQSxFQUFBLEVBQUE7O0FBSEYsb0NBS0UsbUJBQW9CLEVBbVVwQjs7QUF4VUYsbUNBTUUsb0JBQWMsRUFBQTs7QUFOaEIsbUVBVVksNEJBQ1QsRUFBQTs7QUFYSCx5REFhRyxlQUNBLEVBQUE7O0FBZEgsdURBaUJLLHFCQUNnQixDQUFBLHFCQUNqQixDQUFBLGNBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsK0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxvQkFBQSxFQUFBOztBQW5CSiwwREFvQkcsa0JBQXNCLEVBQ3JCOztBQXJCSiw2RUF3QkkscUJBQ1EsQ0FBQSxxQkFZUCxDQUFBLGNBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxZQUFBLEVBQUE7O0FBckNMLDBGQTBCSyxvQkFDQyxDQUFBLFlBQVksQ0FBQSxRQUFTLEVBQ3JCOztBQTVCTiw2R0E4Qk0sdUJBQ0EsQ0FBQSxvQkFDQSxDQUFBLHNCQUFBLEVBQUE7O0FBaENOLDZHQWtDTSxxQk45QlEsQ0FBQSxpQk0rQlIsRUFBQTs7QUFuQ04sMkdBdUNnQiwwQkFDWCxFQUFBOztBSGZILCtGR3pCRixrQkFJQyxFQUFBOztBRHNQRCw0QkFBNEIsbUhBQW1ILG1CQUFtQixDQUFDLG9CQUFvQixFQUFFO0VDMVB6TCwrRk5TWSxrQk0rQ0QsRUFBQSxFQUFROztBQXhEbkIseUVBNERJLHFCQUNZLENBQ1gscUJBQ0EsQ0FBQSxjQUNBLENBQUEsZUFDQSxDQUFBLGdCQUFBLENBQUEsaUJBQUEsQ0FBQSxtQkFBQSxDQUFBLG9DQUFBLENBQUEsNEJBQUEsRUFBQTs7QUFqRUwsa0ZBbUVLLFlObERTLENBQUEsYU1tRFQsQ0FBQSxrQkFBQSxDQUFBLGlCQUFBLEVBQUE7O0FBcEVMLCtFQXlFYyxlQUNBLEVBQUE7O0FBMUVkLG1EQTRFSyxhQUNRLENBQ1QsZ0JBQWMsQ0FBQSx5Q0FFZCxDQUFBLGlDQUFBLENBQUEsaUJBQUEsRUFBQTs7QUFoRkosc0RBaUZHLFVBQ0MsQ0FBQSxxQkFDRyxDQUFDLGtCQUNPLEVBQ1g7O0FBckZKLDhEQWlGYSxtQkFTSSxDQUFBLFVBQ1osQ0FBQSxXQUFvQixDQUNwQixnQkFBQSxDQUFBLGlCQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGNBQUEsQ0FBQSxtQkFBQSxFQUFBOztBQTVGTCxxRUE4RkcsYUFDUSxDQUFBLG9CQUNFLEVBQUE7O0FBaEdiLDJFSGlDRSxjQUNPLENBQUEsbUJBQ0UsQ0FBQSxvQkFFVCxDQUFBLG1CQUNJLENBQUssY0FFVCxDQUFBLGtCQUNBLEVBQUE7O0FHekNGLGtGQXVHSyxZTm5HUyxDQUFBLG1CTW9HQyxDQUNWLFlBQ0EsQ0FBQSxhQUFZLENBRVosVUFBQSxDQUFBLFlBQUEsQ0FBQSxrQkFBQSxDQUFBLGlDQUFBLENBQUEsNkJBQUEsQ0FBQSx5QkFBQSxDQUFBLFdBQUEsRUFBQTs7QUhuRkgsa0ZHcUVDLG9CQUF1QixDQUFBLFdBaUJoQixDQUFBLFlBQ0osQ0FBSyxZQUNMLEVBQUE7O0FBakhOLDRCQUlDLGtGQWtId0IsWUFDckIsQ0FBQSxXQUFnQixFQUFBLEVBQUE7O0FBdkhwQiwwRUF3SE0scUJBRUQsQ0FBQSxxQkFDQSxDQUFBLGNBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEsc0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsK0JBQUEsRUFBQTs7QUEzSEwsOEVBNEhVLG9CQUVMLENBQUEsWUFBYyxDQUFBLFFBQ2QsQ0FBQSxrQkFDQSxFQUFBOztBQWhJTCxnRkFBQSxlQUFBLENBQUEscUJBdUVFLENBQUEsbUJBNkNDLENBQUEsZUFlQyxFQUFBOztBQW5JSixnS0FzS0ssYUFBQSxDQUFBLDBCQUFBLENBQUEsa0JBQUEsQ0FBQSxpQkFBQSxDQUFBLFlBQUEsQ0FBQSxpQkFBQSxFQUFBOztBQXRLTCwrRkE2SUssbUJBQ0MsRUFBQTs7QUE5SU4sZ0hBNklxQixtQkFjTCxDQUFJLFdBQ2IsQ0FBQSxZQUNBLENBQUEsaUJBQVMsQ0FBQSxnQkFDVCxDQUFBLGlCQUFBLENBQUEsYUFBQSxDQUFBLGVBQUEsQ0FBQSxrQkFBQSxDQUFBLGVBQUEsQ0FBQSxzQkFBQSxDQUFBLHNCQUFBLEVBQUE7O0FIcklMLHdIR2tIc0IsYUFFbkIsQ0FBQSxvQkFxQkMsQ0FBQSxzQkFBQSxFQUFBOztBQWxLTiw0QkFJQyxnSEFpS0ssVUFBQSxFQUFBLEVBQUE7O0FBcktOLGdIQTJLb0IsWUFDZixFQUFBOztBQTVLTCxpR0E4S0ssb0JBQ1EsQ0FBQSxvQkFDUSxDQUFDLGdCQUNSLENBQUUsZ0JIdEhmLEVBQUE7O0FBdUJBLDRHQUFBLGFBQ0MsQ0FBQSx5QkFDQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsQ0FBQSxVQUFBLENBQUEsVUFBQSxDQUFBLG9CQUFBLENBQUEsMEJBQUEsQ0FBQSxhQUFBLENBQUEseUJBQUEsQ0FBQSxpQkFBQSxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxpQkFBQSxDQUFBLGtCQUFBLENBQUEsbUJBQUEsQ0FBQSxzQkFBQSxDQUFBLGdCQUFBLENBQUEsWUFBQSxDQUFBLGlCQUFBLENBQUEsb0JBQUEsQ0FBQSxrQkFBQSxDQUFBLFVBQUEsQ0FBQSxXQUFBLENBQUEsc0NBQUEsQ0FBQSw4QkFBQSxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxjQUFBLENBQUEsd0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxhQUFBLENBQUEscUJBQUEsQ0FBQSxVQUFBLEVBQUE7O0FBQ0QscUhBQ0MsbUJBQ0EsRUFBSTs7QUFHRixxSEFBQSxlQUNTLENBQUEsb0JBQ1gsQ0FBQSxZQUFBLENBQUEsUUFBQSxDQUFBLG1CQUFBLEVBQUE7O0FHNUZGLHlISDhGRSxrQkFDTSxFQUFBOztBQVFOLHVIQUFBLFdBQ0MsQ0FBQSxZQUFlLENBQUEsYUFDTCxDQUFBLG9CQUNWLENBQUEsOEJBQUEsQ0FBQSxpQkFBQSxDQUFBLHFCQUFBLENBQUEsZUFBQSxDQUFBLFdBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsRUFBQTs7QUFDRCxnSUFDQyxlQUNBLENBQUEsa0JBQUEsRUFBQTs7QUc3R0gsZ0lIZ0hFLFdBQVUsRUFBQzs7QUFHWCxnSUFBQSx3QkhsR0ssQ0FBQSxlQURDLENBQUEsV0dzR0wsRUFBQTs7QUFVRCx5SUFDQyxvQkFBb0IsQ0FBQSxhQUNwQixDQUFBLG9CQUFBLENBQUEsWUFBQSxDQUFBLGFBQUEsQ0FBQSxvQkFBQSxDQUFBLG1CQUFBLENBQUEsZUFBQSxDQUFBLGFBQUEsQ0FBQSxrQkFBQSxDQUFBLG1CQUFBLENBQUEsa0JBQUEsQ0FBQSwwREFBQSxDQUFBLGtEQUFBLEVBQUE7O0FHbElILHlJSG9JRyxxQkFBdUIsRUFBQTs7QUdwSTFCLHNJSCtDQyx3QkFDVyxFQUFBOztBR2hEWixrSUhpREUsZUFBQSxDQUFtQix3QkFFbkIsRUFBQTs7QUduREYscUpIcURhLGVBQ1gsRUFBQTs7QUd0REYsd0lIMklZLHdCSDFIRSxFR2dJWjs7QUdqSkYsOEhIMElvQixrQkh6SGIsQ0FBQSxlQURDLEVBQUE7O0FNaEJSLG9JSG9KRSxvQkhuSUssQ0FBQSxhR29JTCxFQUFBOztBR3JKRixrSEh1SkUsY0FBYyxDQUNkLDBCQUNBLEVBQUE7O0FBaElBLGtIRzhKRyxjQWNELENBQUEsY0FBQSxFQUFBOztBRHNJSiw0QkN2VUMsMEVBMExLLDZCQUNPLENBQUEsOEJBSVAsQ0FBQSwyQkFBQSxDQUFBLHVCQUFBLEVBQUE7RUFuTU4sOEVBNkxLLFlBQUEsQ0FBQSxtQkFJRSxDQUFBLGdCQUNBLEVBQUE7RUQySUwsaUdBQWlHLHlCQUF5QixDQUFDLHNCQUFzQixDQUFDLHdCQUF3QixDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUU7RUM3VXpOLDRHQTBNRyxhQUNBLEVBQUEsRUFBQTs7QUEzTUgsc0RBdU1vQiwwQk50TGIsQ0FBQSxtQk02TEgsQ0FBQSxvQkFBQSxDQUFBLGlCQUFBLEVBQUE7O0FBOU1KLGlFQStNRyxzQkFDQyxFQUFPOztBQWhOWCxpRkFvTkksY0FBZ0IsQ0FBQSxxQkFDSSxDQUNuQixxQkFDQSxDQUFBLGNBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsK0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsRUFBQTs7QUF2TkwsaUdBMk5tQixtQkFFZixDQUFBLG1CQUlBLEVBQUE7O0FIeE1GLG9FRzhLQSxxQkFrQkMsQ0FBQSxxQkFRQyxDQUFBLGNBQUEsQ0FBQSxvQkFBQSxDQUFBLG1CQUFBLENBQUEsZUFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxpQkFBQSxDQUFBLGVBQUEsRUFBQTs7QUFqT0osNEJBSUMsb0VBZ09vQixvQkFDakIsQ0FBQSxZQUFBLENBQUEsUUFBQSxFQUFBLEVBQUE7O0FBck9KLDhEQXNPSSxlQUVDLENBQUEsaUJBT0EsRUFBQTs7QUEvT0wsMkVBeU9LLGVBQ0MsRUFBQTs7QUExT04sOEdBcVBLLGVBQ0EsRUFBQTs7QUF0UEwseUZBMlBhLGlCQUNSLENBQUEsZUFBbUIsQ0FBQSxtQkFDbkIsQ0FBQSxrQkFBQSxDQUFBLGVBQUEsRUFBQTs7QUE3UEwsZ0ZBOFBJLHNCQUNDLENBQUEsbUJBQ0EsRUFBQTs7QUFoUUwscUdBcVFnQixvQkFDWixFQUFlOztBQXRRbkIsdUVBdVFJLHFCQUNDLENBQUEscUJBQ0EsQ0FBQSxjQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEsc0JBQUEsQ0FBQSxtQkFBQSxDQUFBLDBCQUFBLEVBQUE7O0FBelFMLHlGQTBRd0Isa0JBQ0wsRUFBQTs7QUEzUW5CLDRGQWtSYSxrQkFDRixDQUFBLGdCQUNJLENBQUEsZUFDRixFQUFBOztBQXJSYixrRkhpQ0UsbUJBQ1csQ0FDWCxhQUFTLENBQUEsZ0JBQ0gsQ0FBSyxpQkFFWCxDQUFBLHlDQUdBLENBQUEsaUNBQ08sRUFBRzs7QUcxQ1oseUZBeVJLLFlBQVUsQ0FDVixtQkFBQSxDQUFBLFlBQUEsQ0FBQSxhQUFBLENBQUEsVUFBQSxDQUFBLFlBQUEsQ0FBQSxrQkFBQSxDQUFBLGlDQUFBLENBQUEsNkJBQUEsQ0FBQSx5QkFBQSxDQUFBLFdBQUEsRUFBQTs7QUExUkwseUZBMlJJLFlBQ0MsRUFBQTs7QUE1UkwsK0ZBK1JJLG9CQUNTLENBQUEscUJBQ1IsRUFBQTs7QUFqU0wsb0dBbVNLLHFCQUNBLEVBQUE7O0FIM1FILCtGR2tSRSxjQUNDLEVBQUE7O0FEOEVMLDRCQ3RYQyxpRkE2U2dCLDZCQUVWLENBQVksOEJBQ1osQ0FBQSwyQkFBQSxDQUFBLHVCQUFBLENBQUEseUJBQUEsQ0FBQSxzQkFBQSxDQUFBLHdCQUFBLEVBQUE7RUFwVFAsa0dBcVRNLGdCQUFrQixDQUFBLGtCQUNILEVBQ2Q7RUF2VFAsNkdBQUEsZ0JBSUMsQ0FBQSxpQkFzU0UsRUFBa0I7RUExU3JCLG9IQW1Vb0IsZ0JBQ2QsRUFBQTtFRDBESixrTUFBa00saUJBQWlCLEVBQUU7RUU5WHZOLG9HQTBLRSxlQUFBLEVBQUEsRUFBQTs7QUExS0Ysb0NBS0UsbUJBQXFCLENBQUEsaUJBTHZCLENBQUEsZ0JBQ2UsRUFLYjs7QUFORix5SEFZRyxxQkFFQyxDQUFBLHFCQUFBLENBQUEsY0FBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSwrQkFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGdCQUFBLENBQUEsMEJBQUEsRUFBQTs7QUFkSiw2SEFNRSxlQVNDLEVBQUE7O0FBZkgsbUtBbUJJLG9CQUVDLENBQUEsWUFBWSxDQUFBLFFBQ1osQ0FBQSxxQkFBQSxDQUFBLHFCQUFBLENBQUEsY0FBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxFQUFBOztBQXRCTCx1S0F5QkkscUJBQ0EsQ0FBQSxxQkFBZ0IsQ0FBQSxjQUNMLENBQUEsMEJBRVgsQ0FBQSx1QkFPQSxDQUFBLG9CQUFBLEVBQUE7O0FBcENKLHVLQXdCRyxxQkFNQyxDQUFBLHFCQUFzQixDQUNyQixjQUNBLENBQUEsMEJBQ1ksQ0FBQSx1QkFDQyxDQUFFLCtCQUNmLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEsb0JBQUEsQ0FBQSxZQUFBLENBQUEsUUFBQSxDQUFBLG1CQUFBLEVBQUE7O0FBbkNMLG1OQTJDRyxvQkFBQSxDQUFBLFlBQUEsQ0FBQSxRQUFBLENBQUEsbUJBQUEsQ0FBQSxzQkFBQSxDQUFBLHFCQUFBLEVBQUE7O0FBM0NILGlFQXNDOEIsZVByQnZCLEVBQUE7O0FPakJQLHVFQTZDRyxlQUNBLEVBQUE7O0FBOUNILDBEQW1ERywwQkFDTyxDQUFHLGFQaERDLENBQU8saUJPa0RsQixDQUFBLG1CQUNBLEVBQUE7O0FKOUJELHlESXhCRCxnQkFpREMsQ0FBQSwwQkFRa0IsQ0FBQSxjQUVqQixDQUFBLGlCQUFBLENBQUEsbUJBQUEsQ0FBQSxpQkFBQSxFQUFBOztBQTVESCw0QkFDQyx5RFBHYSxnQk8yRFgsRUFBWSxFQUFHOztBQS9EbEIsd0RBNkRxQixpQ0FNakIsQ0FBQSxpQkFBQSxDQUFBLGdCQUFBLEVBQUE7O0FBbkVKLG1FQW9FRyxpQkFFTyxFUGhFRzs7QU9OYiwrRUFxRUssZVBwREUsRUFBQTs7QU9qQlAscUZQU1ksZU9xRVIsRUFBQTs7QUE5RUosNEVBZ0ZNLGVQdkVNLENBQU8saUJPeUVkLENBQUEsaUJBQUEsRUFBQTs7QUFsRkwsOEVBbUZJLGVBQWtCLEVBQ2pCOztBQXBGTCw4RkF3SEcsaUJBQUEsQ0FBQSxxQ0FBQSxDQUFBLGlDQUFBLENBQUEsNkJBQUEsRUFBQTs7QUF4SEgsaUVBMkZHLG9CQUNDLEVBQUE7O0FBNUZKLGdGSmlDRSxtQkFDVyxFQUNYOztBSW5DRix1RkErRkssWUFBVSxDQUNWLG1CQUFBLENBQUEsWUFBQSxDQUFBLGFBQUEsQ0FBQSxVQUFBLENBQUEsWUFBQSxDQUFBLGtCQUFBLENBQUEsaUNBQUEsQ0FBQSw2QkFBQSxDQUFBLHlCQUFBLENBQUEsV0FBQSxFQUFBOztBQWhHTCx1RkFpR0ksWUFBQSxFQUFzQjs7QUFqRzFCLHNHQXNHSywwQkFDVSxDUG5HRCxlT29HVCxFQUFBOztBQXhHTCxxR0F5R3VCLGVBQ2xCLENBQUEsb0JQL0ZZLEVBQUE7O0FPWGpCLGdIQTZHSyw4QlBsR1ksRUFBQTs7QU9YakIsb0dBNEd1QiwrQ0FJakIsRUFBQTs7QUFoSE4sK0dBbUhLLGlCQUNBLEVBQUE7O0FBcEhMLDRHQStIRyxjQUFBLENBQUEsaUJBQUEsQ0FBQSxnQkFBQSxFQUFBOztBQS9ISCwwREE0SEcsb0JBQ0MsQ0FBQSxjQUNBLEVBQUE7O0FBOUhKLHlFQXFJc0IsaUJBQ25CLEVBQUE7O0FBdElILHFEQWlJRyxpQ0FDVyxFQUFFOztBQWxJaEIsMkVBd0lHLHdCQUNDLENBQXFCLFdBQ3BCLEVBQVM7O0FBMUlkLHVHQXlJeUIsa0JBQUEsQ0FBQSxvQkFLbkIsQ0FBQSxvQkFDQSxDQUFBLGdCQUFBLEVBQUE7O0FBL0lOLHFJQXVKUyxvQkFDSixDQUFBLFlBQW1CLENBUW5CLFFBQUEsQ0FBQSxpQkFBQSxFQUFBOztBQWhLTCw2R0F5SkssbUJBQ0MsQ0FBQSxvQkFDQSxDQUFBLG9CQUFBLENBQUEsZ0JBQUEsQ0FBQSxtQkFBQSxFQUFBOztBQTNKTiw4SEE2Sk0sY0FDQSxFQUFBOztBQTlKTiw2SEF1S0ssb0JBQUEsQ0FBQSxZQUFBLENBQUEsUUFBQSxDQUFBLGlCQUFBLEVBQUE7O0FKcEpILHdHSTRKRSxpQkFDUyxFQUFLOztBRitSbEIsNEJFbFNFLGlGQVlHLGNBQUEsRUFBQTtFQXpMTCxnRUEwTEksNkJBQ00sQ0FBQyw4QkFFTixDQUFBLDJCQUNBLENBQUEsdUJBQ0EsQ0FBQSx5QkFTQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsRUFBQTtFQXhNTCxxRkFnTUssWUFBQSxFQUFBO0VBaE1MLHVGQWdNSyxZQUFBLENBQUEsNkJBSUUsQ0FBQSw4QkFDUSxDQUFBLDJCQUNSLENBQUEsdUJBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsQ0FBQSxxQkFBQSxDQUFBLG1CQUFBLEVBQUE7RUF0TVAsNkdBNk1VLG9CQUNKLENBQUEsaUJBQUEsQ0FBQSxhQUFBLENBQUEsb0JBQUEsRUFBQTtFRnNRSiw4SEFBOEgsc0JBQXNCLENBQUMsb0JBQW9CLEVBQUU7RUYzYjNLLHdHSStMRSxvQkFBQSxDQUFBLFlBQUEsQ0FBQSxRQUFBLEVBQUEsRUFBQTs7QUYrUEosNEJBQTRCLDBEQUEwRCxXQUFXLEVBQUU7RUd2ZG5HLDZFQUlRLFdBeUROLEVBQUEsRUFBQTs7QUE3REYsa0NBS0UscUJBQ0MsQ0FBQSxxQkFDQSxDQUFBLGNBQWdCLENBQUEsNkJBRWhCLENBQUEsOEJBaUJBLENBQUEsMkJBQUEsQ0FBQSx1QkFBQSxDQUFBLGNBQUEsRUFBQTs7QUExQkgsdURBVUcscUJBQ0MsQ0FBQSxxQkFBZSxDQUFVLGNBQ2QsQ0FBQywwQkFFWixDQUFBLHVCQUFBLENBQUEsK0JBQUEsQ0FBQSxrQkFBQSxDQUFBLGlCQUFBLEVBQUE7O0FBZEosMEVBZ0JJLDBCQUNXLENBQUEsaUJBQ1gsRUFBQTs7QUFsQkosMEVBbUJJLHFCQUF1QixDQUFDLHFCQUNSLENBQUEsY0FDZixDQUFBLG9CUkdHLENBQUEsZ0JRREgsQ0FBWSx3QkFDWixDQUFBLHFCQUFBLENBQUEsNEJBQUEsRUFBQTs7QUF4Qkwsa0dBOEJHLDBCQUVBLENBQUEsaUJBQWdCLENBS2hCLGVBQUEsQ0FBQSxtQkFBQSxFQUFBOztBQXJDSCxtREFpQ0csWUFBQSxDQUFBLHdCQUNRLENBQUEsbUJSVkgsQ0FBQSxjUVlKLENBQUEsaUJBQUEsRUFBQTs7QUFwQ0osK0VBdUNrQixZQUNmLENBQUEsb0JBV0EsRUFBQTs7QUFuREgscURBNENHLCtCQUVDLENBQUEsK0JBQ0EsQ0FBQSxnQ0FBQSxDQUFBLDRCQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLEVBQUE7O0FBL0NKLHNFQWlESSxvQkFDQSxDQUFBLGlCQUFBLENBQUEsYUFBQSxDQUFBLGlCQUFBLEVBQUE7O0FMekJGLGdFSzRCQyxrQkFBcUIsRUFDcEI7O0FId2JKLDRCQUE0Qix1REFBdUQsNkJBQTZCLENBQUMsOEJBQThCLENBQUMsMkJBQTJCLENBQUMsdUJBQXVCLEVBQUU7RUc5ZXJNLDBFQWdFRSw2QkFBQSxDQUFBLDhCQUFBLENBQUEsMkJBQUEsQ0FBQSx1QkFBQSxFQUFBLEVBQUE7O0FBaEVGLHdEQW1FRyxXQUFnQixFQVdoQjs7QUE5RUgsbURBb0VHLG9CQUFxQixDQUNwQixnQkFDQSxFQUFBOztBQXRFSix3RUEwRUksNkJBQ0ssQ0FBRSxrQkFDSyxDQUFBLFNBQ1osQ0FBQSw2QkFBQSxDQUFBLDhCQUFBLENBQUEsMkJBQUEsQ0FBQSx1QkFBQSxDQUFBLGlCQUFBLEVBQUE7O0FDNUVKLG9FQUdDLDBCQUNLLENBQUEsWUFDTCxDQUFBLGVBQWUsRUFBQTs7QUFMaEIsbUJBYUcsZUFDVSxDQUFBLDRCQUVYLENBQUEsNEJBQ0EsQ0FBQSxxQkFDQSxDQUFBLDBCQUNVLENBQUUsdUJBQ1osQ0FBQSwrQkFTQSxDQUFBLGVBQUEsQ0FBQSwwQkFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGdCQUFBLENBQUEsaUJBQUEsQ0FBQSwwQkFBQSxDQUFBLGtCQUFBLENBQUEsb0JBQUEsQ0FBQSxlQUFBLEVBQUE7O0FBN0JGLHFCQWFFLGdCQWJGLENBQUEsZUFzQlUsQ0FBQyxpQ0FFUixDQUFBLHdCQUFBLENBQUEsZ0JBQUEsQ0FBQSxvQ0FBQSxDQUFBLDRCQUFBLENBQUEsaUJBQUEsRUFBQTs7QUF4Qkgsd0RBMkJXLGNBQ1IsRUFBQTs7QUE1QkgsOEJBOEJhLGFBRVgsQ0FBQSxnQkFBQSxFQUFBOztBQWhDRiwrQkFpQ2UsNkJBR2IsQ0FBQSxrQkFBQSxDQUFBLFNBQUEsRUFBQTs7QUFwQ0YsaUNBc0NFLDZCQUNBLENBQUEsa0JBQUEsQ0FBQSxTQUFBLENBQUEsZUFBQSxFQUFBOztBQUdGLGdDQUVDLDZCQUVDLENBQUEsa0JBQ0EsQ0FBQSxTVHZDVSxFQUFPOztBU2tDbkIsb0NBV0UscUJBQ0MsQ0FBQSxxQkFDSyxDQUFBLGNBQ0wsQ0FBQSxzQkFDQSxDQUFBLG1CQUNBLENBQUEsMEJBQ0EsQ0FBTyxlQUNQLENBQUEsMEJBQ1MsQ0FBQSwwQkF5QlQsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEsa0JBQUEsQ0FBQSxpQkFBQSxDQUFBLG1CQUFBLEVBQUE7O0FBNUNILDhDQXFCSywwQkFFRCxDQUFBLG9CQUNBLENBQUEsb0JBQW9CLENBQUEsZ0JBQ3BCLENBQUEscUJBQ0EsQ0FBSyxxQkFDRSxDQUFBLGNBQ1AsQ0FBQSwwQkFJQSxDQUFBLHVCQUFBLENBQUEsK0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxlQUFBLENBQUEsb0JBQUEsQ0FBQSxpQkFBQSxDQUFBLGVBQUEsRUFBQTs7QUFoQ0osZ0RBcUJJLGVUL0NHLENBQUEseUJTeURGLENBQUEsNEJBQUEsQ0FBQSw2QkFBQSxDQUFBLGVBQUEsQ0FBQSxnQkFBQSxDQUFBLG9DQUFBLENBQUEsNEJBQUEsRUFBQTs7QUEvQkwsc0RBa0NTLGVBQ0wsRUFBQTs7QUFuQ0osZ0RBaUNJLGVBSVEsQ0FBQSwwQ0FDUCxDQUFBLGtDQUFBLEVBQUE7O0FBdENMLHNEQXVDYyxZQUNULEVBQUE7O0FOMURILHlETW9CRCxxQkE0Q0UsQ0FBZSxjQUVoQixFQUFBOztBQWhERiw0QkFpREMsb0NBRUUseUJBQ2dCLENBQUEsc0JBRWYsQ0FBQSx3QkFBQSxFQUFBLEVBQUE7O0FBdERKLDBFQTREUyxvQkFDTCxDQUFBLG9CQUFBLENBQUEsZ0JBQUEsQ0FBQSxnQkFBQSxFQUFBOztBQ3hHSixvRUFLUyxvQkFDTixDQUFBLG9CQUFBLENBQUEsZ0JBQUEsRUFBQTs7QUFOSCw0Q0FXYyxnQkFPWixDQUFBLGdCQUFBLEVBQUE7O0FBbEJGLCtCQVVVLGlCVllELEVBQUE7O0FVdEJULHlDQWVlLGVWU0EsRUFBQTs7QVV4QmYsMENQMERDLGVBQ0EsRUFBQTs7QUF1QkEsdUNBQUEsVUFDQyxDQUFBLG9CQUNBLENBQUEsMEJBQUEsQ0FBQSxhQUFBLENBQUEseUJBQUEsQ0FBQSxpQkFBQSxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxpQkFBQSxDQUFBLGtCQUFBLENBQUEsbUJBQUEsQ0FBQSxzQkFBQSxDQUFBLGdCQUFBLENBQUEsWUFBQSxDQUFBLGlCQUFBLENBQUEsb0JBQUEsQ0FBQSxrQkFBQSxDQUFBLFVBQUEsQ0FBQSxXQUFBLENBQUEsc0NBQUEsQ0FBQSw4QkFBQSxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxjQUFBLENBQUEseUJBQUEsQ0FBQSxzQkFBQSxDQUFBLHdCQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEsYUFBQSxDQUFBLHFCQUFBLENBQUEsY0FBQSxDQUFBLG9CQUFBLEVBQUE7O0FBQ0QsZ0RBQ0MsbUJBQ0EsRUFBSTs7QUFHRixnREFBQSxlQUNTLENBQUEsb0JBQ1gsQ0FBQSxZQUFBLENBQUEsUUFBQSxDQUFBLG1CQUFBLEVBQUE7O0FPNUZGLG9EUDhGRSxrQkFDTSxFQUFBOztBQVFOLGtEQUFBLFdBQ0MsQ0FBQSxZQUFlLENBQUEsYUFDTCxDQUFBLG9CQUNWLENBQUEsOEJBQUEsQ0FBQSxpQkFBQSxDQUFBLHFCQUFBLENBQUEsZUFBQSxDQUFBLFdBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsRUFBQTs7QUFDRCwyREFDQyxlQUNBLENBQUEsa0JBQUEsRUFBQTs7QU83R0gsMkRQZ0hFLFdBQVUsRUFBQzs7QUFHWCwyREFBQSx3QkhsR0ssQ0FBQSxlQURDLENBQUEsV0dzR0wsRUFBQTs7QUFVRCxvRUFDQyxvQkFBb0IsQ0FBQSxhQUNwQixDQUFBLG9CQUFBLENBQUEsWUFBQSxDQUFBLGFBQUEsQ0FBQSxvQkFBQSxDQUFBLG1CQUFBLENBQUEsZUFBQSxDQUFBLGFBQUEsQ0FBQSxrQkFBQSxDQUFBLG1CQUFBLENBQUEsa0JBQUEsQ0FBQSwwREFBQSxDQUFBLGtEQUFBLEVBQUE7O0FPbElILG9FUG9JRyxxQkFBdUIsRUFBQTs7QU9wSTFCLGlFUCtDQyx3QkFDVyxFQUFBOztBT2hEWiw2RFBpREUsZUFBQSxDQUFtQix3QkFFbkIsRUFBQTs7QU9uREYsZ0ZQcURhLGVBQ1gsRUFBQTs7QU90REYsbUVQMklZLHdCSDFIRSxFR2dJWjs7QU9qSkYseURQMElvQixrQkh6SGIsQ0FBQSxlQURDLEVBQUE7O0FVaEJSLCtEUG9KRSxvQkhuSUssQ0FBQSxhR29JTCxFQUFBOztBT3JKRiw2Q1B1SkUsY0FBYyxDQUNkLDBCQUNBLEVBQUE7O0FPekpGLDZDQW9Ca0IsY0FLTixDQUNSLGNBQVUsRUFBQTs7QUExQmQsNERBOEJHLGtDQUVDLENBQUEsOEJBQUEsQ0FBQSwwQkFBQSxFQUFBOztBQWhDSixvRUF1Q0Usa0JBQ0EsRUFBQTs7QUF4Q0YsZ0NBbURDLG9CQUNZLENBQUssMEJBRVQsQ0FBQSxtQkFFUCxDQUFBLGtCQUFtQixDQUNuQiwwQkFDQSxDQUFBLGlCQUNBLENBQUEsc0JBbUJBLENBQUEsZ0JBQUEsQ0FBQSxpQkFBQSxDQUFBLGVBQUEsQ0FBQSxlQUFBLEVBQUE7O0FBOUVGLHFDQTRERSw4QkFRQyxDQUFBLGlCQUFBLENBQUEscUJBQUEsQ0FBQSxlQUFBLENBQUEsYUFBQSxDQUFBLFlBQUEsQ0FBQSxvQkFBQSxDQUFBLHNCQUFBLENBQUEsbUJBQUEsQ0FBQSxtQkFBQSxFQUFBOztBQXBFSCw4Q0E0RFUsaUJBR0csRUFBQTs7QUEvRGIscURBcUVzQixtQkFFbEIsQ0FBQSxTQUNBLENBQUEsV0FBQSxDQUFBLG9EQUFBLENBQUEsZ0RBQUEsQ0FBQSw0Q0FBQSxFQUFBOztBQXhFSixpRVZ3QlEsZVVvREwsRUFBQTs7QUE1RUgsc0RBa0ZFLGVBQ0EsRUFBQTs7QUFuRkYseUNBc0ZxQiwwQkFDbkIsQ0FBQSxhQUFBLEVBQUE7O0FBdkZGLCtJQWdHRSxhQUFBLEVBQUE7O0FBaEdGLHdDQWlHcUIsMEJWbEVELENBQUEsMkJVcUVsQixFQUFBOztBQXBHRix5Q0FzR3NCLDBCQUNiLENBQUEsZVZuR1ksRVVvR25COztBQXhHRiwwREE0R2EsMEJBQ1gsQ0FBQSx3QkFDQSxFQUFBOztBQTlHRiw0Q0FvSEUsMEJBRUEsQ0FBQSw0QkFDTyxDQUFDLDBCQUVSLENBQUEsaUNBQUEsQ0FBQSw2QkFBQSxDQUFBLHlCQUFBLENBQUEsd0JBQUEsRUFBQTs7QUF6SEYsMENBNEhFLFlBQWEsQ0FBTyxhQUNULENBQUEsb0JBQ0ssQ0FBQSxlQVloQixDQUFBLGFBQUEsRUFBQTs7QUExSUYsbUNBMkhjLG9CQUtYLENBQUEscUJBQUEsQ0FBQSxlVjFHTSxDQUFBLGlCVTRHTixFQUFBOztBQWxJSCxnREEySGMsa0NBU1gsQ0FBQSxlVjVHSyxFQUFPOztBVXhCZixvREF1SXVCLGlDQUVwQixDQUFBLGVBQUEsRUFBQTs7QUF6SUgsc0RBNklrQixlVm5JUSxFVXFJeEI7O0FBL0lGLHFDQTRJZ0IsaUJWdElILENBQUEsZVU0SVYsQ0FBQSxvQkFBQSxFQUFBOztBQWxKSCwyQ1ZXaUIsZVU0SWYsRUFBUzs7QUF2SlgsbUNBcUpjLGVBTVgsQ0FBQSxrQkFDQSxDQUFBLHFCQUFBLENBQUEsMkJBQUEsRUFBQTs7QUE1SkgseUNBaUtFLHNCQUNBLEVBQVc7O0FBbEtiLHNDQXVLRSxlQUFTLENBQUEsaUJBY1QsQ0FBQSxnQkFBQSxFQUFBOztBQXJMRixzQ0FzS2lCLG1CUEdGLEVBQUE7O0FPektmLDRDQWtMUyxtQ0FFTixDQUFBLFlBQUEsQ0FBQSxtQkFBQSxDQUFBLG9CQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGVBQUEsQ0FBQSx1Q0FBQSxDQUFBLG9DQUFBLENBQUEsbUNBQUEsQ0FBQSxzQkFBQSxDQUFBLGlCQUFBLENBQUEsbUJBQUEsQ0FBQSxTQUFBLENBQUEsWUFBQSxDQUFBLFdBQUEsQ0FBQSxvQ0FBQSxDQUFBLGdDQUFBLENBQUEsNEJBQUEsQ0FBQSxxQkFBQSxFQUFBOztBQXBMSCw2Q0F5TFMseUJBQ1MsQ1ZyTEwsc0JVc0xFLENBQUEsaUJBQ04sRUFBTTs7QUE1TGYscUNBNkxFLGVBQUEsQ0FBQSwwQkFFQyxDQUFBLG1CQUNBLENBQUEsY0FLQSxFQUFBOztBQXJNSCw2REFpTUcsZUFDQyxDQUFXLGlCQUNGLENBQUMsaUJBQ1YsRUFBQTs7QUFwTUosa0VBdU1VLGlCQUNHLENBQUEsaUJBQ0MsRUFBQzs7QUF6TWYsMERBME1HLHFCQUNNLENBQUUscUJBQ08sQ0FDZCxjQUNBLENBQUEsZ0JBQ0EsQ0FBQSwwQkFDTyxDQUFFLHVCQUNULENBQUEsb0JBQUEsRUFBQTs7QUFqTkoseUVBa05vQixhQUNiLENBQUEsY0FDQSxDQUFBLFdBQWEsQ0FDYixpQkFDQSxDQUFBLG1CQUNBLENBQUEsWUFBQSxFQUFBOztBQXZOUCxpRkE0Tk8saUJBQ0MsQ0FBQSxxQkFDQSxDQUFBLHFCVjlNQSxDQUFBLGNVZ05RLENBQUEsb0JBQ0UsQ0FBQSxZQUNWLENBQUEsUUFBQSxDQUFBLHdCQUFBLENBQUEsOEJBQUEsQ0FBQSxpQ0FBQSxDQUFBLGlCQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLEVBQUE7O0FBbE9SLHdGQW9PUSwwQkFDVSxDQUFBLGlCQUNBLENBQUEsYUFDYixDQUFBLG1CQUF1QixDQUFDLG1CQUN4QixFQUFBOztBQXhPTCxzRkFpUEksZUFDQSxDQUFBLG1CQUNBLENBQUEsbUJBQWdCLENBQUEsNkJBRVQsQ0FBQSxnQ0FDUCxDQUFBLG1CQUFBLENBQUEsb0JBQUEsQ0FBQSx3QkFBQSxDQUFBLGlCQUFBLEVBQUE7O0FBdFBKLHFFQXVQRyxvQkFDQyxDQUFBLG9CQUVBLENBQUEsZ0JBQUEsQ0FBQSxhQUFBLENBQUEsbUJBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsQ0FBQSxtQkFBQSxDQUFBLGFBQUEsRUFBQTs7QUExUEoseUZBZ1FZLFdBQ1IsRUFBQTs7QUFqUUosaUZBcVEwQixnQkFyUTFCLENBQUEsNkJBc01FLENBQUEsZ0NBZ0VlLENBQUEsbUJBQ2IsRUFBTzs7QUF2UVgsaUxBOFFJLHlCQUFBLENBQUEsMkNBQUEsRUFBQTs7QVByUEYsa0ZPeVBDLGlCQUNDLENBQWMsZ0JBZWQsQ0FBQSxtQkFBQSxFQUFBOztBTHFYSiw0QksvZEMsMERBaUdJLDZCQWpHSixDQUFBLDhCQTRGRyxDQUFBLDJCQU1NLENBQ0osdUJBQ0EsRUFBQTtFQTVSTixpRkFnU0ssNkJBQ0EsQ0FBQSw4QkFBQSxDQUFBLDJCQUFBLENBQUEsdUJBQUEsQ0FBQSxpQkFBQSxDQUFBLG1CQUFBLENBQUEsWUFBQSxFQUFBO0VMd1hILDZLQUE2SyxZQUFZLEVBQUU7RUt6cEI3TCxxRUF5U0Usb0JBQUEsQ0FBQSxZQUFBLENBQUEsUUFBQSxDQUFBLGdCQUFBLEVBQUEsRUFBQTs7QUN6U0YsOEJBQ0MsY0FBYSxFQUFBOztBQURkLDJJQUdxQixxQkFJakIsRUFBQTs7QUFQSixpSkFHRSxVQUFBLENBQUEsV0FPQyxDQUFBLGdCQUNDLEVBQUE7O0FSY0YsdUxRVmdCLFlBQ2QsQ0FBQSxzQkFDUyxDQUFDLG1CQVFYLENBQUEsMEJBQUEsRUFBQTs7QU4yb0JILDRCQUE0QiwySUFBMkkscUJBQXFCLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLEVBQUU7RU1wcUJ2UCx1VUErQkcsb0JBQUEsQ0FBQSxtQkFBQSxDQUFBLGVBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsK0JBQUEsRUFBQSxFQUFBOztBQy9CSCx5SkEyQkMsZ0JBQUEsQ0FBQSxlQUFBLENBQUEsc0JBQUEsQ0FBQSxrQkFBQSxFQUFBOztBQTNCRCxxQkFLQyxpQ0FFQyxFQUFBOztBQVBGLG9GQWNJLGlCQUFBLENBQW9CLGNBQ1YsQ0FFVCxVQUFBLEVBQUE7O0FDakJMLHlHQUtzQixVQUNsQixFQUFBOztBQU5KLHVGQVFJLG1CQUNBLEVBQUE7O0FWVUYscUZVaEJBLGdCQVFFLEVBQUE7O0FSd3FCSiw0QkFBNEIsdUZBQXVGLG1CQUFrQixDQUFDLGtCQUFtQixFQUFFO0VRbnJCM0oscUZBMEJVLGNBQ1AsRUFBQSxFQUFBOztBQTNCSCxnRkE4QkcscUJBQUEsQ0FBd0IscUJBQ1IsQ0FBQSxjQUNmLENBQUEsMEJBQ1ksQ0FBQSx1QkFDQyxDQUFHLG9CQUFPLENBQUEsa0JBQ3ZCLENBQUEsaUJBQUEsRUFBQTs7QUFuQ0oseUdBcUNJLDBCQUNBLENBQUEsbUJBQUEsQ0FBQSxrQkFBQSxDQUFBLGdEQUFBLEVBQUE7O0FBdENKLHNHQTBDSSxvQkFBZ0IsRUFBQTs7QUExQ3BCLGtHQTZDSSx3QkFDQyxDQUFBLHFCQUNBLENBQUEsNEJBQUEsQ0FBQSwrQkFBQSxDQUFBLDhCQUFBLENBQUEsd0JBQUEsQ0FBQSxvQkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxFQUFBOztBQS9DTCxrSEFrRGtCLG1CQUlkLEVBQUE7O0FBdERKLG1HQW1ESSxlQUNDLEVBQUE7O0FBcERMLDhHQTRESyxzQkFFQSxFQUFBOztBVnJDSCw4R1UwQ0UsYUFBc0IsRUFDdEI7O0FSa29CSiw0QkFBNEIsd0VBQXdFLDZCQUE2QixDQUFDLDhCQUE4QixDQUFDLDJCQUEyQixDQUFDLHVCQUF1QixDQUFDLDJCQUEyQixDQUFDLHdCQUF3QixDQUFDLHFCQUFxQixFQUFFO0VTdHNCalMsZ0ZBSUUsa0JBSUEsRUFBQSxFQUFBOztBQVJGLHNDQUtFLG1CQUNDLENBQU8sb0JBQ1AsQ0FBQSxpQkFBQSxFQUFBOztBQ1BILG1EQUVXLGVBQ1QsRUFBQTs7QUFIRix5Q0FPRSxxQmZGVyxDQUFBLHFCZUdDLENBQUssY0FDTixDQUFFLDBCQUNJLENBQUEsOEJBRWpCLENBQU0sYUFDTixFQUFBOztBQWJGLHNDQWVFLDhCQUNTLENBQUEsaUJBQ1IsQ0FBQSxrQkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGVBQUEsQ0FBQSxxQkFBQSxDQUFBLHFCQUFBLENBQUEsY0FBQSxDQUFBLCtCQUFBLENBQUEsK0JBQUEsQ0FBQSxnQ0FBQSxDQUFBLDRCQUFBLEVBQUE7O0FBakJILDBEQW1CRyxlQUNBLEVBQUE7O0FBcEJILHdEQXNCUSxlQUNHLENBQUEsb0JBQ1IsRUFBQTs7QUF4QkgsMkRBeUJhLGVBekJiLEVBQUE7O0FabUJFLGtJWXFCQSxvQkFBQSxFQUFBOztBVmlyQkYsNEJBQTRCLHNDQUFzQyw2QkFBNkIsQ0FBQyw4QkFBOEIsQ0FBQywyQkFBMkIsQ0FBQyx1QkFBdUIsRUFBRTtFVXp0QnBMLDJLQStDRSxtQkFBQSxDQUFBLG1CQUFBLENBQUEsa0JBQUEsQ0FBQSxZQUFBLEVBQUEsRUFBQTs7QUEvQ0YseUNBMENvQixvQmZsQlosRUFBQTs7QWV4QlIsK0NBaURTLG9CQUNTLEVBQ2hCOztBQW5ERixzQ0F1REUsWUFBQSxDQUFBLGdCQUNPLENBQUMsMEJmaENLLENla0NaLG1CQUFBLENBQUEsY0FBQSxDQUFBLGlCQUFBLEVBQUE7O0FBMURILDREQUFBLFlBQUEsQ0FBa0Isb0JBOERoQixFQUFBOztBQTlERiw0UEFnRUUsNkJBSVksQ0FBQSxvQkFDVixDQUFBLDBCQUFBLENBQUEsbUJBQUEsQ0FBQSxjQUFBLENBQUEsMEJBQUEsQ0FBQSxlQUFBLENBQUEsbUJBQUEsQ0FBQSxpQkFBQSxFQUFBOztBQXJFSixvUUEwRkcsVUFBQSxDQUFBLFdBQUEsRUFBQTs7QUExRkgsK0RBNEVHLDBCQWhCRixDQUFBLG1CQVlDLENBQUEsV0FBQSxFQUFBOztBQXhFRiwrSUFtRkksVUFBQSxFQUFBOztBQW5GSiw4RUFvRkcsY0FDQyxDQUFBLHFCQUNBLEVBQUE7O0FBdEZKLDBGQXdGSSx5QkFDQSxDQUFBLGlCQUFBLEVBQUE7O0FBekZKLHFGQTJIRyxtQkFBQSxFQUFBOztBQTNISCwrREE2RkksbUJBQ1EsRUFBRTs7QUE5RmQsMEVBQUEsVUE0REMsQ0FBQSxvQkFpRUMsQ0FBQSwwQlpsRUQsQ0FBQSxhQUFtQixDQUFBLHlCSDFDYixDQUFPLGlCRzZDYixDQUFBLHNCQUNBLENBQUEscUJBQ0EsQ0FBQSxxQkFDQSxDQUFBLGlCQUNBLENBQUEsaUJBQ0EsQ0FBQSxzQkFDQSxDQUFBLG1CQUNBLENBQU0sbUJBQ0EsQ0FBQSx3QkFFTixDQUFBLHFCQUNBLENBQUEsNEJBRUEsQ0FBQSwwQkFDVyxDQUFBLHVCQUNILENBQUEsb0JBQ08sQ0FBQyxzQkFDSixDQUFBLGdCQUNMLENBQUEsb0JBQ0UsQ0FBQSxrQlk4Q1AsQ0FBQSxVQUNBLENBQUEsV0FhQSxDQUFBLHFDQUFBLENBQUEsNkJBQUEsRUFBQTs7QVozREYsb0hZMkNDLFVaM0NELENBQUEsb0JBQ1csQ0FBQSwwQkFDVixDQUFBLGFBQUEsQ0FBQSx5QkFBQSxDQUFBLGlCQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGlCQUFBLENBQUEsa0JBQUEsQ0FBQSxtQkFBQSxDQUFBLHNCQUFBLENBQUEsZ0JBQUEsQ0FBQSxZQUFBLENBQUEsaUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGtCQUFBLENBQUEsVUFBQSxDQUFBLFdBQUEsQ0FBQSxzQ0FBQSxDQUFBLDhCQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGNBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxhQUFBLENBQUEscUJBQUEsQ0FBQSxzQkFBQSxDQUFBLFlBQUEsRUFBQTs7QUFDRCxzSUFDQyxtQkFDQSxFQUFJOztBQUdGLHNJQUFBLGVBQ0YsQ0FBQSxvQkFDQSxDQUFBLFlBQUEsQ0FBQSxRQUFBLENBQUEsbUJBQUEsRUFBQTs7QVk1RkYsOElaOEZFLGtCQUNNLEVBQUs7O0FBUVgsMElBVkEsV0FVQSxDQUFBLFlBQ0MsQ0FBQSxhQUNBLENBQUEsb0JBQ0EsQ0FBQSw4QkFBQSxDQUFBLGlCQUFBLENBQUEscUJBQUEsQ0FBQSxlQUFBLENBQUEsV0FBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxFQUFBOztBQUNELDRKQUNDLGVBQ0EsQ0FBQSxrQkFBQSxFQUFBOztBWTdHSCw0SlpnSEUsV0FBVSxFQUFDOztBQUdYLDRKQUpBLHdCQUtDLENBQUEsZUFDQSxDQUFBLFdIckdVLEVHc0dWOztBQVVELDhLQUNDLG9CQUFvQixDQUFBLGFBQ3BCLENBQUEsb0JBQUEsQ0FBQSxZQUFBLENBQUEsYUFBQSxDQUFBLG9CQUFBLENBQUEsbUJBQUEsQ0FBQSxlQUFBLENBQUEsYUFBQSxDQUFBLGtCQUFBLENBQUEsbUJBQUEsQ0FBQSxrQkFBQSxDQUFBLDBEQUFBLENBQUEsa0RBQUEsRUFBQTs7QVlsSUgsOEtab0lHLHFCQUNBLEVBQUE7O0FZcklILHdLZmlCTyx3QkcrQkssRUFBQTs7QVloRFosZ0tadUlFLGVBQUEsQ0F0RkEsd0JBQ0EsRUFBQTs7QVlsREYsc01ac0RFLGVBQUEsRUFBQTs7QVl0REYsNEtaNElFLHdCQUtBLEVBQUE7O0FZakpGLHdKWjBJRSxrQkFJQyxDQUFBLGVBQ0EsRUFBQTs7QVkvSUgsb0tmaUJPLG9CR29JTCxDQUFBLGFBQUEsRUFBQTs7QVlySkYsZ0ladUpFLGNBQWMsQ0FDZCwwQkFDQSxFQUFBOztBQWhJQSxnSVlvR0EsY0FBbUIsQ0FBQSxjQUtGLEVBQUM7O0FWd3BCcEIsNEJBQTRCLG9IQUFvSCw2QkFBOEIsQ0FBQyw4QkFBNkIsQ0FBQyxtQkFBbUIsQ0FBQyx1QkFBdUIsRUFBRTtFVTF4QjFQLDRKWitEQyxnQkFDQSxDQUFBLGFBQWEsQ0FBQSxzQkFDRCxDQUFJLFlBQ1AsRUFBQyxFQUFBOztBQWdCViw2REFBQSxVQUNDLENBQUEsb0JBQ0EsQ0FBQSwwQkFBQSxDQUFBLGFBQUEsQ0FBQSx5QkFBQSxDQUFBLGlCQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGlCQUFBLENBQUEsa0JBQUEsQ0FBQSxtQkFBQSxDQUFBLHNCQUFBLENBQUEsZ0JBQUEsQ0FBQSxZQUFBLENBQUEsaUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGtCQUFBLENBQUEsVUFBQSxDQUFBLFdBQUEsQ0FBQSxzQ0FBQSxDQUFBLDhCQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGNBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxhQUFBLENBQUEscUJBQUEsQ0FBQSxtQkFBQSxDQUFBLDBCQUFBLENBQUEsOEJBQUEsQ0FBQSxvQkFBQSxFQUFBOztBQUNELHNFQUNDLG1CQUNBLEVBQUk7O0FBR0Ysc0VBQUEsZUFDUyxDQUFBLG9CQUNYLENBQUEsWUFBQSxDQUFBLFFBQUEsQ0FBQSxtQkFBQSxFQUFBOztBWTVGRiwwRVo4RkUsa0JBQ00sRUFBQTs7QUFRTix3RUFBQSxXQUNDLENBQUEsWUFBZSxDQUFBLGFBQ0wsQ0FBQSxvQkFDVixDQUFBLDhCQUFBLENBQUEsaUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGVBQUEsQ0FBQSxXQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEseUJBQUEsQ0FBQSxzQkFBQSxDQUFBLHdCQUFBLEVBQUE7O0FBQ0QsaUZBQ0MsZUFDQSxDQUFBLGtCQUFBLEVBQUE7O0FZN0dILGlGWmdIRSxXQUFVLEVBQUM7O0FBR1gsaUZBQUEsd0JIbEdLLENBQUEsZUFEQyxDQUFBLFdHc0dMLEVBQUE7O0FBVUQsMEZBQ0Msb0JBQW9CLENBQUEsYUFDcEIsQ0FBQSxvQkFBQSxDQUFBLFlBQUEsQ0FBQSxhQUFBLENBQUEsb0JBQUEsQ0FBQSxtQkFBQSxDQUFBLGVBQUEsQ0FBQSxhQUFBLENBQUEsa0JBQUEsQ0FBQSxtQkFBQSxDQUFBLGtCQUFBLENBQUEsMERBQUEsQ0FBQSxrREFBQSxFQUFBOztBWWxJSCwwRlpvSUcscUJBQXVCLEVBQUE7O0FZcEkxQix1RlorQ0Msd0JBQ1csRUFBQTs7QVloRFosbUZaaURFLGVBQUEsQ0FBbUIsd0JBRW5CLEVBQUE7O0FZbkRGLHNHWnFEYSxlQUNYLEVBQUE7O0FZdERGLHlGWjJJWSx3QkgxSEUsRUdnSVo7O0FZakpGLCtFWjBJb0Isa0JIekhiLENBQUEsZUFEQyxFQUFBOztBZWhCUixxRlpvSkUsb0JIbklLLENBQUEsYUdvSUwsRUFBQTs7QVlySkYsbUVadUpFLGNBQWMsQ0FDZCwwQkFDQSxFQUFBOztBWXpKRixtRUFxSkcsY0FBbUIsQ0FDbkIsY0FBQSxFQUFBOztBQXRKSCw0REF1Skksb0JBQ1ksRUFDYjs7QUF6Skgsa0VBK0pJLGNBQVcsQ0FBVix3QkFDQyxDQUFBLFVBQ0QsQ0FBQSxXQUFXLENBQUEsaUJBQ1gsQ0FBQSw0QkFBQSxDQUFBLDJCQUFBLENBQUEsd0NBQUEsRUFBQTs7QUFsS0wsbUhBMktJLG9CQUNBLENBQUEsZ0JBQUEsRUFBQTs7QUE1S0osZ0dBK0tJLGdCQUFBLENBQUEsVUFBQSxFQUFBOztBQS9LSix1RUFtTEcsZUFNQSxFQUFBOztBQXpMSCxrRUFvTEssYUFDTyxFQUFBOztBQXJMWixxRUEyTGEscUJBQ0MsQ0FBQSxzQkFDUSxDQUFBLDhCQUNuQixFQUFBOztBQTlMSCwyREErTEUsZ0JBQ08sQ0FBQyxrQkFDRyxDQUFDLG1CQUNMLEVBQUM7O0FBbE1WLG9FQXNNRyxjQUNBLENBQUEsd0JBQ0EsQ0FBQSxVQUFRLENBQUEsV0FDUixFQUFBOztBQXpNSCxvRUEyTUcsV0FBUSxDQUFBLHlCQUVSLENBQUEsc0JBQ0EsRUFBQTs7QUE5TUgsa0VBb05HLHNCQUNDLENBQUEsVUFBUSxDQUFNLG9CQUNkLENBQUEsbUJBQUEsQ0FBQSx3QkFBQSxDQUFBLG1CQUFBLENBQUEseUJBQUEsQ0FBQSxpQkFBQSxFQUFBOztBQXROSix1RmZLb0IsY2VxTkwsRUFDWjs7QUEzTkgsOERaaUNFLDBCQUVBLENBQUEsYUFDQSxDQUFBLG1CQUNNLENBQUMsY0FDSCxDQUFLLFlBQ0MsQ0FBQSxzQkFFVixDQUFBLGNBQVUsQ0FBQSxVQUNWLENBQUEsa0JBQ0EsRUFBQTs7QVkzQ0YscUVBbU9JLFlBQ0EsQ0FBQSxtQkFDSSxDQUFBLFlBQ0osQ0FBQSxhZmpPUyxDQUFBLFVla09ULENBQUEsWUFBQSxDQUFBLGtCQUFBLENBQUEsaUNBQUEsQ0FBQSw2QkFBQSxDQUFBLHlCQUFBLENBQUEsV0FBQSxFQUFBOztBQXZPSixxRUF5T0ksV0FBYyxDQUFBLGFBQ2QsQ0FBQSxVQUNBLENBQUEsMEJBQ0EsRUFBQTs7QUE1T0osaUVBK095QixrQkFBVyxDQUFBLGtCQUVoQyxDQUFBLDBCQUNjLENBQUEsaUJBQ2QsRUFBQTs7QUFuUEosNEZBdVBHLGtCQUNBLENBQUEscUJBQ0EsRUFBQTs7QUF6UEgsb0VBMFBLLHFCQUVELENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGNBQUEsQ0FBQSw2QkFBQSxDQUFBLDhCQUFBLENBQUEsMkJBQUEsQ0FBQSx1QkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxFQUFBOztBQTVQSixzRUE2UEcsa0JBQW9CLEVBQ25COztBQTlQSix3RkE2UHNCLDBCWnBGUCxDQUFBLG1CQUNiLENBQUEsd0JBQ1ksQ0FBQSxxQkFDQyxDQUFBLHFCQUNDLENBQUEsY0FDZCxDQUFBLGFBQ0EsQ0FBQSwwQkFFQSxDQUFBLHVCQUFBLENBQXVDLG9CQUN2QyxDQUFBLHlCQUNBLENBQUEsaUJBQXlCLENBQUEsWUFFekIsRUFBQTs7QVlyTEYsK0ZBNlFVLG1DQUNOLENBQUEsWUFBQSxDQUFBLG1CQUFBLENBQUEsb0JBQUEsQ0FBQSxxQkFBQSxDQUFBLHFCQUFBLENBQUEsZUFBQSxDQUFBLHVDQUFBLENBQUEsb0NBQUEsQ0FBQSxtQ0FBQSxDQUFBLHNCQUFBLENBQUEsaUJBQUEsQ0FBQSxpQkFBQSxFQUFBOztBQTlRSix5RkFpUkksY0FBWSxFQUFBOztBQWpSaEIsMEVBc1JJLHFCQUNjLENBQUEscUJBQ2IsQ0FBQSxjQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEsMEJBQUEsQ0FBQSxtQkFBQSxDQUFBLGFBQUEsQ0FBQSxZQUFBLEVBQUE7O0FBeFJMLGdGQXlSUyxpQkFBQSxFQUFBOztBQXpSVCxxSEE0REMsVUF5TEMsQ0FBQSx5QkEyQ0MsQ0FBQSxpQkFBbUIsQ0FDbEIsWUFBWSxFZmhSVDs7QWVqQlAsNEtBdVNZLHNCQUNSLEVBQUE7O0FBeFNKLHFHQTBTSSwwQkFTQSxDQUFBLG1CQUFBLENBQUEsWUFBQSxDQUFBLGFBQUEsRUFBQTs7QUFuVEosNEZBMlNJLHdCZmpSa0IsRUFBTzs7QWUxQjdCLGtHQStTSSxvQkFDQyxDQUFBLGFmdFJ3QixFZXVSeEI7O0FBalRMLGdIQXFUZSxvQkFPWCxDQUFBLGFBQUEsRUFBQTs7QUE1VEosOEZBc1RJLHdCZjNSdUIsRWU2UnRCOztBQXhUTCxvR0F5VEksa0JBQ0MsRUFBQTs7QUExVEwsa0hBOFRlLGtCQUNYLEVBQU07O0FBL1RWLHNHQWdVSSx3QmZ0U2tCLENBQUEseUNld1NqQixFQUFBOztBQWxVTCw0R0FtVUksc0JBQ0MsRUFBQTs7QUFwVUwsMEhmSWMsc0JBeUJFLEVBQUE7O0FlN0JoQixxRkE0VUksc0JBRUksQ0FBQSxvQkFBa0IsQ0FBQSxtQkFDckIsQ0FBQSxtQkFBQSxFQUFBOztBQS9VTCwyRkFxVm1CLFVBQVcsQ0FBQSw4QkFJeEIsRUFDRjs7QUExVkosNEVBZ1dNLDBCQUtPLENBQUEsVUFDUixDQUFBLGtCQUdBLENBQUEsMEJBMkJBLENBQUEsbUJBQUEsQ0FBQSx5QkFBQSxFQUFBOztBQXBZTCwrRUFnV00sVUFDYSxDQUFBLHNCQUNLLENBQUEsa0JBQ2xCLENBQUEsb0JBQUEsRUFBQTs7QUFuV04sMkZBMFdLLCtCQUVDLEVBQUE7O0FBNVdOLDBHQXVYSyxlQUNVLENBQUEsa0VBQ1QsQ0FBQSxhQUlBLENBQUEsMEJBRUEsQ0FBQSw2QkFDQSxFQUFBOztBQWhZTiwrR0F3WUssZUFlQSxDQUFBLGtFQUFBLENBQUEsZ0JBQUEsQ0FBQSxhQUFBLENBQUEsMkJBQUEsQ0FBQSw4QkFBQSxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxjQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLEVBQUE7O0FBdlpMLG9HQXlZTyxzQmYvV2UsRUFBQTs7QWUxQnRCLHVHQTRZTSwwQkFBMEIsQ0FDekIsc0JBQXNCLEVBQ3RCOztBQTlZUCxrSUFnWk0sdUJBQ0MsQ0FBQSxZQUNDLEVBQUE7O0FBbFpSLGlLQWdhSyx1QkFBQSxDQUFBLFlBQUEsRUFBQTs7QUFoYUwsc0dBNFpPLGtCZmpZaUIsRUFBRzs7QWUzQjNCLHlHQW9hRyxrQkFDQyxFQUFBOztBQXJhSiwySEF3YU0sMEJBR0QsQ0FBQSxtQkFBQSxDQUFBLGFBQUEsRUFBQTs7QUEzYUwsNkhBK2FJLFVmdGFRLENBQUEsV2V1YUQsRUFBRzs7QUFoYmQscUdBcWJJLDRCQUVDLENBQUEsNEJBRUEsQ0FBQSxxQkFBQSxDQUFBLGVBQUEsQ0FBQSxXQUFBLENBQUEsVUFBQSxDQUFBLGlCQUFBLENBQUEsWUFBQSxDQUFBLGtCQUFBLEVBQUE7O0FBemJMLDJHQTZiRyxtQkFDQyxDQUFBLGNBQ0MsQ0FBQSxhQUFBLEVBQXlCOztBQS9iOUIsZ0tBa2NnQywwQkFFMUIsRUFBQTs7QUFwY04sa0tBNGNHLHNCQUFBLEVBQUE7O0FBNWNILDBEQTZjc0Isa0JaaFRaLENBQUEsZ0JBQ1QsRUFBQTs7QVk5SkQsNERBb2RLLDZCQUdELENBQUEsb0JBQUEsQ0FBQSwwQkFBQSxDQUFBLG1CQUFBLENBQUEsY0FBQSxDQUFBLDBCQUFBLENBQUEsZUFBQSxDQUFBLG1CQUFBLENBQUEsaUJBQUEsQ0FBQSxjQUFBLENBQUEsMEJBQUEsQ0FBQSxtQkFBQSxDQUFBLHlCQUFBLENBQUEsaUJBQUEsQ0FBQSxpQkFBQSxFQUFBOztBQXZkSiw4REF3ZE8sVUFDSCxDQUFTLFdBQ1QsRUFBQTs7QUExZEosZ0VBOGRHLGdCQUNHLENBQUEsYUFBQSxFQUFBOztBQS9kTiwwR0FxZUksVUFDQyxDQUFBLFdBQWUsRUFBQTs7QUF0ZXBCLGtIQThlRyxlQUNBLEVBQUE7O0FBL2VILDhEQTJldUIsY0FRWixDQUFBLDBCQUVQLENBQUEsbUJBQ0ssQ0FBSSxtQkFFVCxDQUFNLGFBQ04sRUFBTzs7QUF6ZlgscUVBOGZJLFlmcmZRLENBQU8sbUJldWZmLENBQUEsWUFBQSxDQUFBLFdBQUEsQ0FBQSxVQUFBLENBQUEsWUFBQSxDQUFBLFdBQUEsQ0FBQSxrQkFBQSxFQUFBOztBQWhnQkosb0VBa2dCRyxlQUNDLEVBQUE7O0FBbmdCSixrRkF5aUJJLFdBQUEsQ0FBQSxtQkFBQSxDQUFBLDBCQUFBLENBQUEsWUFBQSxDQUFBLGlCQUFBLEVBQUE7O0FBemlCSiwrREE4Z0JNLFlBQ0MsRUFBQTs7QUEvZ0JQLGlGQXFoQlcsYUFyaEJYLENBQUEsaUJBNERDLENBQUEsaUJBK2NDLEVBQUE7O0FBM2dCRiw4T0E2aEJnQixZQUNSLEVBQUE7O0FBOWhCUiwrTkFzaUJPLHNCQUFBLENBQUEsb0JBQUEsRUFBQTs7QUF0aUJQLDBHQW1pQk8scUJBQ2MsQ0FBQSxxQkFDYixDQUFBLGNBQUEsRUFBQTs7QVo1Z0JOLGlIWXNoQkssZ0JBQXNCLEVBQWU7O0FWZ2E1Qyw0QlVuNUJDLDBHQXlmYyxvQkFDTCxDQUFBLGdCQUFBLEVBQUE7RVYwWlIsaUhBQWlILG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDLGNBQWMsRUFBRTtFVWg5Qi9MLDZIQW1rQkcsb0JBQ00sQ0FBQSxtQkFDRCxDQUFBLGVBQ0csRUFBSyxFQUNiOztBQXZrQkgsK0RBeWtCRyxlQUFpQixDQUFBLDBCQUVoQixDQUFPLG1CQUNQLENBQWEsY0FDTixDQUFBLGNBQ0ssQ0FBQyxvQkFDYixDQUFBLG1CQUFBLENBQUEsZUFBQSxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxjQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLCtCQUFBLEVBQUE7O0FBL2tCSixnRkFnbEJzQixrQlpyaEJyQixDQUFBLGFBQW1CLENBQUEsbUJIMUNiLENBQUEsb0JBRE0sQ0FBQSxZRzhDRixDQUFFLFFBQ1osQ0FBQSxpQkFBcUIsRUFDckI7O0FBa0JBLGtGQUFBLFVBQ0MsQ0FBQSxvQkFDQSxDQUFBLDBCQUFBLENBQUEsYUFBQSxDQUFBLHlCQUFBLENBQUEsaUJBQUEsQ0FBQSxxQkFBQSxDQUFBLHFCQUFBLENBQUEsaUJBQUEsQ0FBQSxrQkFBQSxDQUFBLG1CQUFBLENBQUEsc0JBQUEsQ0FBQSxnQkFBQSxDQUFBLFlBQUEsQ0FBQSxpQkFBQSxDQUFBLG9CQUFBLENBQUEsa0JBQUEsQ0FBQSxVQUFBLENBQUEsV0FBQSxDQUFBLHNDQUFBLENBQUEsOEJBQUEsQ0FBQSxxQkFBQSxDQUFBLHFCQUFBLENBQUEsY0FBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGFBQUEsQ0FBQSxxQkFBQSxDQUFBLGlCQUFBLEVBQUE7O0FBQ0QsMkZBQ0MsbUJBQ0EsRUFBSTs7QUFHRiwyRkFBQSxlQUNTLENBQUEsb0JBQ1gsQ0FBQSxZQUFBLENBQUEsUUFBQSxDQUFBLG1CQUFBLEVBQUE7O0FZNUZGLCtGWjhGRSxrQkFDTSxFQUFBOztBQVFOLDZGQUFBLFdBQ0MsQ0FBQSxZQUFlLENBQUEsYUFDTCxDQUFBLG9CQUNWLENBQUEsOEJBQUEsQ0FBQSxpQkFBQSxDQUFBLHFCQUFBLENBQUEsZUFBQSxDQUFBLFdBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsRUFBQTs7QUFDRCxzR0FDQyxlQUNBLENBQUEsa0JBQUEsRUFBQTs7QVk3R0gsc0daZ0hFLFdBQVUsRUFBQzs7QUFHWCxzR0FBQSx3QkhsR0ssQ0FBQSxlQURDLENBQUEsV0dzR0wsRUFBQTs7QUFVRCwrR0FDQyxvQkFBb0IsQ0FBQSxhQUNwQixDQUFBLG9CQUFBLENBQUEsWUFBQSxDQUFBLGFBQUEsQ0FBQSxvQkFBQSxDQUFBLG1CQUFBLENBQUEsZUFBQSxDQUFBLGFBQUEsQ0FBQSxrQkFBQSxDQUFBLG1CQUFBLENBQUEsa0JBQUEsQ0FBQSwwREFBQSxDQUFBLGtEQUFBLEVBQUE7O0FZbElILCtHWm9JRyxxQkFBdUIsRUFBQTs7QVlwSTFCLDRHWitDQyx3QkFDVyxFQUFBOztBWWhEWix3R1ppREUsZUFBQSxDQUFtQix3QkFFbkIsRUFBQTs7QVluREYsMkhacURhLGVBQ1gsRUFBQTs7QVl0REYsOEdaMklZLHdCSDFIRSxFR2dJWjs7QVlqSkYsb0daMElvQixrQkh6SGIsQ0FBQSxlQURDLEVBQUE7O0FlaEJSLDBHWm9KRSxvQkhuSUssQ0FBQSxhR29JTCxFQUFBOztBWXJKRix3Rlp1SkUsY0FBYyxDQUNkLDBCQUNBLEVBQUE7O0FZekpGLHdGQTRsQmEsY0FDWCxDQUFBLGNBQUEsRUFBQTs7QUE3bEJGLDBDQThsQkMsZUE5bEJELENBQUEsa0JBK2xCQyxDQUFBLGlCQUNTLEVBQUk7O0FBaG1CZCxvRkE0bUJXLGFBQ1IsQ0FBQSx5QkFDZSxDQWlCZixzQkFBQSxDQUFBLHdCQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEsMEJBQUEsQ0FBQSxtQkFBQSxDQUFBLGNBQUEsQ0FBQSwwQkFBQSxDQUFBLGVBQUEsRUFBQTs7QUEvbkJILHVEQSttQkssb0JBRUQsQ0FBQSxVQUNBLENBQUEsbUJBWUEsQ0FBQSxlQUFBLEVBQUE7O0FBOW5CSiwwREErbUJLLHNCQUFBLENBQUEsY0FLQSxDQUFBLFVBQ0EsQ0FBQSxtQmZwbUJFLEVBQUE7O0FlakJQLHlGQXluQkssc0JBQ0EsQ0FBQSxjQUFBLENBQUEsMEJBQUEsQ0FBQSxZQUFBLEVBQUE7O0FBMW5CTCx5RkE0bkJLLFlBQVksRUFDWjs7QUE3bkJMLHlGQW9vQkUsWUFBa0IsRUFBQzs7QUFwb0JyQiwwQ0Fxb0JFLG1CQUFBLENBQUEsb0JmaG9CVyxDQUFBLGlDZW1vQkssRUFBSTs7QUF4b0J0QixvRUF5b0JLLG9CQUVELENBQUEsVUFDQSxDQUFBLG1CQVlBLEVBQUE7O0FBeHBCSix1RUF5b0JLLHNCQUFBLENBQUEsY0FLQSxDQUFBLFVBQ0EsQ0FBQSxtQmY5bkJFLEVBQUE7O0FlakJQLHNHQW1wQkssc0JBQ0EsQ0FBQSxjQUFBLENBQUEsMEJBQUEsQ0FBQSxZQUFBLEVBQUE7O0FBcHBCTCxzR0FzcEJLLFlBQVksRUFDWjs7QUN2cEJMLHNHQW1NQyxZQUFBLEVBQUE7O0FBbk1ELHFCQUNDLHNDQUNDLENBQUEscUNBQ3dCLEVoQkNaOztBZ0JKZCx5RUFLSyxpQ0FFRCxDQUFBLHFCQUFBLEVBQUE7O0FBUEosNEVBVUcsY0FDQyxFQUFBOztBQVhKLHVGQWFHLGVBQ1ksRUFBQzs7QUFkaEIsMkZBZ0JJLGdCQUNDLENBQUEsZ0JBQ0EsRUFBQTs7QUFsQkwsb0dBeUJpQixnQkFFZCxFQUFBOztBQTNCSCwyREE4QkcsWUFBQSxDQUFBLGFiN0JGLENBQUEsb0JBQ0EsQ0FBQSxtQmE4QkcsQ0FBQSxlQUFBLENBQUEsVUFBQSxDQUFBLG1CQUFBLENBQUEsa0JBQUEsQ0FBQSxtQkFBQSxFQUFBOztBQWhDSiw4RUFpQzBCLG1CQUNYLENBQUssZ0JBQ2hCLEVBQUE7O0FBbkNKLGlGQXVDSSwwQmhCbkNpQixDZ0JvQ2pCLDRCQUFBLENBQUEsMEJBQUEsRUFBQTs7QUF4Q0osZ0ZBMENJLDBCQUNZLEVBQUs7O0FBM0NyQix5RUFnREcsaUJBQ0EsQ0FBQSxpQkFDQSxFQUFBOztBQWxESCx5REFtRGlCLFlBQ2QsQ0FBQSxhQUNBLENBQUEsZUFRQSxFQUFBOztBQTdESCwwREFzREcseUJBQ2dCLENBQUEsc0JoQjlDUCxDQUFBLHdCZ0JtRFIsQ0FBQSxjQUFBLEVBQUE7O0FBNURKLG9FQXlESyxvQkF4REosQ0FBQSxvQkFBcUIsQ0FrRHBCLGdCQUdDLENBQUEsMEJoQnRDSyxFQUFLOztBZ0JoQmIsOElBK0VHLGFBQUEsRUFBQTs7QUEvRUgsMkRBcUVpQixpQ0FFUyxFQUFBOztBQXZFMUIsZ05BcUVpQixlQUdTLENBQUEsa0JBR3RCLEVBQUE7O0FBM0VKLDRQQW1GRywwQkFBQSxFQUFBOztBQW5GSCxtREFvRkUsZUFBQSxDQUFBLGtCQUNXLEVBQUU7O0FBckZmLDJFQXNGRyxnQkFBQSxFQUFBOztBQXRGSCxzR0FrSUcsZUFBQSxDQUFBLGtCQUFBLENBQUEsc0JBQUEsQ0FBQSxrQkFBQSxDQUFBLGVBQUEsRUFBQTs7QUFsSUgsbUVBZ0dHLGdCQUFBLEVBQUE7O0FBaEdILG1HQXNHb0MscUJBS2hDLENBQUEscUJBQUEsQ0FBQSxjQUFBLENBQUEsd0JBQUEsQ0FBQSxxQkFBQSxDQUFBLDRCQUFBLENBQUEsK0JBQUEsQ0FBQSw4QkFBQSxDQUFBLHdCQUFBLENBQUEsb0JBQUEsQ0FBQSxvQkFBQSxFQUFBOztBQTNHSixvR0FzR21DLGVoQnJGNUIsRUFBQTs7QWdCakJQLDBHQThHSSxlQUFnQixFQUNoQjs7QUEvR0osb0ZBaUhJLG1CQUNDLENBQUEsaUJBSUEsQ0FBQSxvQkFBQSxDQUFBLFlBQUEsQ0FBQSxRQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGNBQUEsRUFBQTs7QUF0SEwsb0dBbUhLLG9CYmxISyxFQUFDOztBYURYLDZHQTBISSxtQkFBZ0IsQ0FBQSxnQkFDSixFQUFDOztBQTNIakIscUZBOEhJLDhCQUVDLENBQUEsaUJBQUEsQ0FBQSx3QkFBQSxDQUFBLHFCQUFBLENBQUEsNEJBQUEsQ0FBQSxtQkFBQSxDQUFBLG1CQUFBLENBQUEsZUFBQSxFQUFBOztBQWhJTCw4RkFxSWMsbUJBQ0EsRUFBQTs7QUF0SWQsb0VBbUkwQixhQVV0QixDQUFBLGdCQUNTLENBQUEseUNBR0MsQ0FBQSxpQ0FHVixDQUFBLGlCQUFhLENBQUEsb0JBQ2IsQ0FBQSxtQkFBYyxDQUFBLHNCQUNGLENBQUEsbUJBQ1osRUFBQTs7QUF2SkosNEVBbUkwQixZQXNCdEIsQ0FBQSxlQUNBLENBQUEsWUFBZSxDQUFBLFNBQ2YsQ0FBQSxtQkFBQSxDQUFBLFNBQUEsQ0FBQSxVQUFBLENBQUEsb0NBQUEsQ0FBQSxtQ0FBQSxDQUFBLDJCQUFBLEVBQUE7O0FBM0pKLGdGQTRKRyxvQkFDVSxDQUFBLG1CQUNULEVBQUE7O0FBOUpKLHlGQWtLRyxtQkFBQSxFQUFBOztBQWxLSCxpRUFvS0csY0FBWSxFQUFBOztBQXBLZixpRUEyS2dCLHdCQWtCYixDQUFBLDJCQUFBLEVBQUE7O0FBN0xILHdFQTZLRyxVQUFBLEVBQUE7O0FBN0tILDZGQWtMSSxVQUFVLENBQUEsZ0JBQ1YsRUFBYTs7QUFuTGpCLDRGQXFMSSxpQkFBQSxDQUFBLGlCQUNDLENBQUEsbUJBQ0EsRUFBQTs7QUF2TEwsd0hBcUwrQix5QkFJekIsQ0FBQSxzQkFDQSxDQUFBLHdCQUFBLENBQUEsZUFBQSxFQUFBOztBQTFMTiwySUFrTUUsa0JBQUEsRUFBQTs7QUNsTUYsMkNBRUUsZ0JBOENBLENBQUEsaUJBQUEsRUFBQTs7QUFoREYseUNBR0UsY0FBZ0IsRUFBQzs7QUFIbkIsMERBU0cscUJBQ0MsQ0FBQSxxQkFDTyxDQUFBLGNBQ0EsQ0FBRyw2QkFDVixDQUFBLDhCQUFBLENBQUEsMkJBQUEsQ0FBQSx1QkFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLFlBQUEsQ0FBQSxnQkFBQSxFQUFBOztBQWJKLDZFQWN1QixhQUNULENBQUEsY0FDQyxDQUFBLDBCQUVYLEVBQUE7O0FBbEJKLDhFQW1CeUIsZWpCVmIsQ0FBTyxpQmlCWUEsQ0FBQSxjQUNmLEVBQUE7O0FBdEJKLGdGQTBCRyxlQUFnQixDQUFBLGdCQXFCaEIsRUFBQTs7QUEvQ0gsMkRBMkJHLHFCQUNLLENBQUEscUJBQ00sQ0FBQSxjQUNWLENBQUEseUJqQjFCaUIsQ0FBQSxzQmlCMENqQixDQUFBLHdCQUFBLEVBQUE7O0FBOUNKLDRFQWdDSSxvQkFDUyxDQUFNLG1CQUVkLENBQUEsZUFBZSxDQUFBLG1CQUNDLENBQUEsK0JBQ2hCLENBQUEsZ0JBQUEsRUFBQTs7QUFyQ0wsbUZBdUNLLGVBQ0EsQ0FBQSxnQkFDQSxDQUFBLG1CQUFBLENBQUEsaUJBQUEsRUFBQTs7QUF6Q0wsaUZBMkJtQixlQWlCZCxDQUFBLGdCQUNBLEVBQUE7O0FBN0NMLHVGQW9ERyxlQUFBLEVBQUE7O0FBcERILHFEQXNERyxtQkFBMkIsRUFBQTs7QUF0RDlCLDBHQXdESSxrQkFDQyxFQUFBOztBQXpETCx5SEFnRUksY0FBQSxFQUFBOztBZHZDRix1RWMwQ0Msb0JBRUMsRUFBQTs7QVpna0NKLDRCWXBsQ0MsMkVBc0NHLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSwrQkFBQSxFQUFBO0VBdkZKLHVFQWlGSyxlQUNNLENBQUEsaUJBRU4sRUFBTTtFWm1qQ1QsbURBQW1ELG9CQUFvQixDQUFDLGdCQUFnQixFQUFFO0VZM2lDNUYsb0VkaENDLFdIM0NNLENBQUEsVUc0Q0QsQ0g3Q0Usb0JHOENLLENBQUEsWUFDWixDQUFBLFFBQWdCLENBQUEsNkJBRWhCLENBQUEsMEJBQ1UsRUFBQSxFQUFBOztBQWdCViwyQkFBQSxVQUNDLENBQUEsb0JBQ0EsQ0FBQSwwQkFBQSxDQUFBLGFBQUEsQ0FBQSx5QkFBQSxDQUFBLGlCQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGlCQUFBLENBQUEsa0JBQUEsQ0FBQSxtQkFBQSxDQUFBLHNCQUFBLENBQUEsZ0JBQUEsQ0FBQSxZQUFBLENBQUEsaUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGtCQUFBLENBQUEsVUFBQSxDQUFBLFdBQUEsQ0FBQSxzQ0FBQSxDQUFBLDhCQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGNBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxhQUFBLENBQUEscUJBQUEsQ0FBQSxpQkFBQSxFQUFBOztBQUNELG9DQUNDLG1CQUNBLEVBQUk7O0FBR0Ysb0NBQUEsZUFDUyxDQUFBLG9CQUNYLENBQUEsWUFBQSxDQUFBLFFBQUEsQ0FBQSxtQkFBQSxFQUFBOztBY0FGLHdDZEVFLGtCQUNNLEVBQUE7O0FBUU4sc0NBQUEsV0FDQyxDQUFBLFlBQWUsQ0FBQSxhQUNMLENBQUEsb0JBQ1YsQ0FBQSw4QkFBQSxDQUFBLGlCQUFBLENBQUEscUJBQUEsQ0FBQSxlQUFBLENBQUEsV0FBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxFQUFBOztBQUNELCtDQUNDLGVBQ0EsQ0FBQSxrQkFBQSxFQUFBOztBY2pCSCwrQ2RvQkUsV0FBVSxFQUFDOztBQUdYLCtDQUFBLHdCSGxHSyxDQUFBLGVBREMsQ0FBQSxXR3NHTCxFQUFBOztBQVVELHdEQUNDLG9CQUFvQixDQUFBLGFBQ3BCLENBQUEsb0JBQUEsQ0FBQSxZQUFBLENBQUEsYUFBQSxDQUFBLG9CQUFBLENBQUEsbUJBQUEsQ0FBQSxlQUFBLENBQUEsYUFBQSxDQUFBLGtCQUFBLENBQUEsbUJBQUEsQ0FBQSxrQkFBQSxDQUFBLDBEQUFBLENBQUEsa0RBQUEsRUFBQTs7QWN0Q0gsd0Rkd0NHLHFCQUF1QixFQUFBOztBY3hDMUIscURkN0NDLHdCQUNXLEVBQUE7O0FjNENaLGlEZDNDRSxlQUFBLENBQW1CLHdCQUVuQixFQUFBOztBY3lDRixvRWR2Q2EsZUFDWCxFQUFBOztBY3NDRix1RGQrQ1ksd0JIMUhFLEVHZ0laOztBY3JERiw2Q2Q4Q29CLGtCSHpIYixDQUFBLGVBREMsRUFBQTs7QWlCNEVSLG1EZHdERSxvQkhuSUssQ0FBQSxhR29JTCxFQUFBOztBY3pERixpQ2QyREUsY0FBYyxDQUNkLDBCQUNBLEVBQUE7O0FjekRGLGlDQUVFLGNBQWtCLENBQUMsY2pCN0ZELEVpQjhGbEI7O0FBSEYsNkJBS0ksaUNBRUQsQ0FBQSxnQkFDQSxDQUFBLGlCQUFBLEVBQUE7O0FBUkgsa0NBVU0sZ0JBQ0osQ0FBQSxpQkFDQSxFQUFBOztBQVpGLDhDQWVJLG1CQWZKLENBQUEsMEJBZUssQ0FBQSx3QkFmTCxDQUFBLFVBVU0sRUFBQTs7QUFWTixpSkF3Qkcsd0JBQ0EsRUFBVzs7QUF6QmQsdURBa0JVLG9CQVNOLENBQUEsWUFBZSxDQUFBLGlCQUNmLENBQUEsbUJBQUEsQ0FBQSxnQkFBQSxDQUFBLGVBQUEsQ0FBQSxvQkFBQSxFQUFBOztBQTVCSixtRUE4QkkseUJBQXlCLEVBQ3pCOztBQS9CSixrRUFtQ00seUJBRUQsRUFBQTs7QUFyQ0wscUVBbUNNLG9CQW5DTixDQUFBLGNBVUMsQ0FBQSxpQ0F3QkksQ0FBQSxlQUNDLENBQUEsb0JBU1ksQ0FBSyxtQkFDakIsRUFBQTs7QUE3Q04sZ0tBcUVLLGtCQUFBLEVBQUE7O0FBckVMLDBEQWtETyxjQUNPLENBQUEsb0JBQ1IsQ0FBQSxnQkFBQSxDQUFBLG1CQUFBLEVBQUE7O0FBcEROLDREQWlETSxrQkFTQSxFQUFVOztBQTFEaEIsc0VBNkRNLDZDQUNBLENBQUEscUNBQUEsRUFBQTs7QUE5RE4scUVBK0RvQiw0Q0FFZCxDQUFBLG9DQUFBLEVBQUE7O0FBakVOLHVFQW1FTSxrQkFBbUIsRUFBQTs7QUFuRXpCLHFFQXVFTyxzRUFHQSxDQUFBLDhEQUFBLEVBQUE7O0FBMUVQLGtGQWdHSSxtQkFBQSxFQUFBOztBQWhHSix1REFrRk0saUJqQjdLTyxFQUFBOztBaUIyRmIsMERBa0ZNLG9CQVFBLENBQUEsVUFBZSxDQUFBLGNBQ2YsQ0FBQSxvQkFBQSxDQUFBLGdCQUFBLENBQUEsbUJBQUEsRUFBQTs7QUEzRk4sc0VBNkZNLHlCQUF5QixFQUN6Qjs7QUM3TE4scUVBdUVFLHlCQUFBLEVBQUE7O0FBdkVGLDhCQUdFLGNBQUEsRUFBQTs7QUFIRixrREFHcUIsbUJBUWpCLENBQUEsVUFBVyxDQUFBLFdBQ0QsQ0FBQSxxQkFDRCxDQUFBLHFCQUVULENBQUEsY0FDUSxDQUFBLDBCQUVSLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxFQUFBOztBQWxCSix3REFtQlcsWUFDQyxDQUFBLFlBQ0QsQ0FBQyxvQkFDSSxDQUFBLG1CQUNILENBQUEsVUFDVCxDQUFBLFNBQVcsQ0FBQyxRQUNaLENBQUssV0FDTCxFQUFBOztBQTFCSiwwREE2QkkscUJBQ1csQ0FBQSxxQkFDRyxDQUFBLGNBQ2IsQ0FBQSxlQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEsbUJBQUEsQ0FBQSxpQkFBQSxDQUFBLGVBQUEsQ0FBQSxnQkFBQSxDQUFBLG9DQUFBLENBQUEsNEJBQUEsQ0FBQSxvQkFBQSxFQUFBOztBQWhDTCxtRUFrQ0ssaUJBQ00sQ0FBQyxvQkFDSSxFQUFBOztBQXBDaEIsZ0VBbUJVLFlsQkhILENBQUEsWWtCbUNGLENBQUEsd0JBQUEsQ0FBQSxtQkFBQSxDQUFBLFVBQUEsQ0FBQSxTQUFBLENBQUEsUUFBQSxDQUFBLFdBQUEsQ0FBQSxXQUFBLENBQUEseUNBQUEsQ0FBQSxpQ0FBQSxFQUFBOztBQW5ETCxvRUE2Q2UsZUFJVCxFQUFVOztBZnpCZCwwRWVyQkEsb0JBa0RVLEVBQUU7O0FBckRkLDRCQXlERSwwREFHUyxhQUlQLEVBQUEsRUFBQTs7QUFoRUosK0RBMERrQixjQUliLENBQUEsZUFDQSxFQUFBOztBQS9ETCwwRUFxRUksZUFBQSxFQUFBOztBQ3RFSiw2REFHRSxXQUFhLEVuQjBCQzs7QW1CN0JoQixxQ0FRRSxvQkFBQSxDQUFBLG1CQUNXLENBQUEsbUJBQ00sQ0FBQSxxQkFDRyxDQUNuQixxQkFBYyxDQUFBLGNBQ2QsQ0FBQSwwQkFlQSxDQUFBLHVCQUFBLENBQUEsK0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsRUFBQTs7QUE1QkgsOERBY0csa0JBQ1MsQ0FBQSxpQkFZUixDQUFBLG9CQUFBLENBQUEsd0JBQUEsQ0FBQSxrQkFBQSxFQUFBOztBQTNCSixtRUFnQk0sZ0JBQ1csRUFBSTs7QUFqQnJCLHFFQWNPLGlCQU1VLEVBQ1o7O0FBckJMLHlFQWNPLGFBVUQsRUFBQTs7QUF4Qk4sb0ZBdUNHLGNBQUEsRUFBQTs7QUF2Q0gsZ0RBNkJZLG9CQUdSLEVBQUE7O0FBaENKLG1FQW9DSSxvQm5CWlcsQ21CYVgsWUFBWSxFQUNaOztBaEJiRixtRWdCaUJDLG9CQUFzQixDQUFBLFlBQ1gsRUFBQzs7QWRxdENmLDRCYy92Q0MscUNBZ0RHLDZCQUNBLENBQUEsOEJBQUEsQ0FBQSwyQkFBQSxDQUFBLHVCQUFBLENBQUEseUJBQUEsQ0FBQSxzQkFBQSxDQUFBLHdCQUFBLEVBQUE7RWQrc0NGLDhEQUE4RCxZQUFZLEVBQUU7RWN4c0M5RSxnREFHRyxZQUFBLENBQUEsZ0JBR0csRUFBQSxFQUFBOztBQy9ETiw4RUFHRSxhQUFBLEVBQUE7O0FBSEYsdUNqQjZKUSxZQUFFLEVBQUE7O0FpQjdKViwrQkFTRSw2QkFDQyxDQUFBLG9CQUNBLENBQUEsMEJBQ2UsQ0FBQSxtQkFDRixDQUFNLGNBQ1IsQ0FBQSwwQkFFWCxDQUFBLGVBQ0ssQ0FBQSxtQkFDTSxDQUFBLGlCQUtYLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGNBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsK0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsRUFBQTs7QUF2QkgsOENBU2dCLDBCQVdDLENBQUEsb0JBRWIsQ0FBQSxlQUFBLENBQUEsbUJBQUEsQ0FBQSxnQkFBQSxDQUFBLG1CQUFBLENBQUEsWUFBQSxDQUFBLFNBQUEsQ0FBQSxvQ0FBQSxDQUFBLGdDQUFBLENBQUEsNEJBQUEsRUFBQTs7QUF0QkosNERBeUJpQixhQUNILENBQUEsZ0JBQ1gsRUFBQTs7QUEzQkgsOENBNkJHLGVBQ0EsQ0FBQSxpQkFDQSxFQUFBOztBQS9CSCwwQ0FvQ0csa0JBQ1MsQ0FBQSxpQkFDRixDQUFBLHNCQUVOLENBQUEsYUFBVyxDQUFBLDJCQUNYLENBQUEsbUJBQUEsQ0FBQSxpQkFBQSxFQUFBOztBQXpDSixtREFBQSxtQkFJQyxDQUFBLFlBd0NDLENBQUEsU0FDQyxDQUFBLG9DQUNPLENBQUEsZ0NBQ1AsQ0FBQSw0QkFBQSxFQUFBOztBakI1QkQsNEZpQitCYSwyQkFDWSxDQUFBLDBCQWN6QixFQUFBOztBZnF0Q0YsNEJlbHhDQywrQkFxRFMsZUFDRyxDQUFFLG1CQUNYLENBQUEsd0JBQ0EsRUFBQTtFQTVESixpREE4REksa0JBQ0EsRUFBQTtFZnl0Q0Ysd0NBQXdDLFdBQVUsQ0FBQyxVQUFVLENBQUMsbUNBQW9DLENBQUMsK0JBQWdDLENBQUMsMkJBQTRCLENBQUMsU0FBUyxFQUFFO0VleHhDOUssMENBbUVPLGdCcEJoRE8sRUFBQSxFQUFBOztBb0JuQmQsdUNBc0VFLDJCQUNDLENBQUEsc0JBQ0EsQ0FBQSwwQkFBQSxFQUFBOztBQXhFSCxzREEwRUcsMEJBQ0EsRUFBSzs7QUEzRVIsa0RBK0VFLDBCQUVDLENBQUEsMkJBQ1csRUFBQTs7QUFsRmQsc0RBOEVzQixvQnBCbkVMLENBQU8saUJvQjZFckIsQ0FBQSxpQkFBQSxDQUFBLFlBQUEsQ0FBQSxpQ0FBQSxFQUFBOztBQXhGSCw0REE0RkUsZXBCcEVhLEVvQnFFYjs7QUE3RkYsdUNBOEZFLGFBQWUsQ0FBQSxzQnBCdEVULENBQUEseUNvQnlFTCxFQUFBOztBQWpHSCxzREFtR0csMEJBS0EsQ0FBQSxhQUFBLEVBQUE7O0FBeEdILGtEQW9HRywwQkFDQyxFQUFBOztBQ3JHSixvRUE2YkUsaUJBQUEsQ0FBQSxnQkFBQSxFQUFBOztBQTdiRiwrQkFHRSxxQkFDUSxDQUFBLHFCQUFxQixDQUFBLGNBQUssRUFBQTs7QUFKcEMscU1BWUksZUFBQSxDQUFBLDhCQUFBLENBQUEsY0FBQSxDQUFBLG9CQUFBLEVBQUE7O0FBWkosbUdBZUkseUJBQUEsRUFBQTs7QUFmSiw0RUFnQmtDLG1CQWhCbEMsRUFDQzs7QUFERCw2SkF1QkksVUFBVSxDQUNWLHdCQUFpQixFQUFBOztBQXhCckIsNkpBa0NvQixVckI5QkMsQ3FCK0JsQiw2QkFDQSxFQUFBOztBQXBDSCxpREF1Q0csZ0JBQUEsQ0FBQSxTQUEwQixDQUN6QixTQUFBLENBQVUsVUFBUyxDQUNuQixhQUFXLENBQUEsd0JBRVgsQ0FBQSwrQkFBQSxDQUFBLGtCQUFBLENBQUEsc0JBQUEsQ0FBQSxrQ0FBQSxDQUFBLDBCQUFBLENBQUEsWUFBQSxFQUFBOztBQTNDSiwyRUE2Q0ksb0JBQ0EsQ0FBQSxpQkFDQSxDQUFLLGFBQ0EsRUFBRTs7QUFoRFgsMkVBdURJLG1CQUNVLENBQUEsYUFDVCxDQUFBLFlBQWMsQ0FBQSxRQUNkLENBQUEsT0FBVyxDQUFBLFVBQ1gsQ0FBSyxvQkFFTCxDQUFBLFlBQVUsQ0FBQSxnQkFBaUIsQ0FBQSxhQUMzQixFQUFBOztBQTlETCxvRkFtRUssbUJBRUUsQ0FBTyxvQkFDUCxDQUFBLG9CQUFBLENBQUEsUUFBQSxDQUFBLFNBQUEsQ0FBQSxxREFBQSxDQUFBLGlEQUFBLENBQUEsNkNBQUEsQ0FBQSxpQkFBQSxDQUFBLGFBQUEsQ0FBQSxXQUFBLEVBQUE7O0FBdEVQLGlHckJpQk8sYXFCMkRILEVBQUs7O0FBNUVULCtFQXdGTSwwQkFFRCxDQUFBLGFBQUEsQ0FBQSxpQkFBQSxDQUFBLGlCQUFBLENBQUEsa0JBQUEsQ0FBQSxhQUFBLENBQUEsbUJBQUEsQ0FBQSxXQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGNBQUEsQ0FBQSw2QkFBQSxDQUFBLDhCQUFBLENBQUEsMkJBQUEsQ0FBQSx1QkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxDQUFBLG1DQUFBLEVBQUE7O0FBMUZMLGlGQTJGTyxZQUNRLEVBQUE7O0FBNUZmLGtGQXNHTyxlckJ0Rk0sQ0FBQSxVcUJ3RlAsQ0FBQSxvQkFBQSxDQUFBLHFCQUFBLENBQUEsa0JBQUEsQ0FBQSxXQUFBLENBQUEsc0NBQUEsQ0FBQSw4QkFBQSxDQUFBLGFBQUEsQ0FBQSxtQkFBQSxDQUFBLGFBQUEsRUFBQTs7QUF4R04sb0ZBeUdLLGFBQ0MsRUFBUTs7QUExR2QsMkZBK0dJLG1CckIvRlMsQ3FCaUdSLFdBQUEsQ0FBQSxTQUFBLEVBQUE7O0FBakhMLGlHQXNISyxhQUNBLENBQUEsa0NBRUEsQ0FBVyxjQUNYLEVBQUE7O0FBMUhMLDZGQThISSxhQUFTLENBQUEsV0FrRFQsQ0FBQSxnQkFBQSxDQUFBLGdCQUFBLEVBQUE7O0FBaExKLHVFQStISSxtQkFBQSxDQUFBLGtCQUNXLEVBQ1Y7O0FBaklMLGtHQW9JSyxXQUNBLENBQUEsc0NBQ3dCLENBQUEsOEJBS3hCLEVBQUE7O0FBM0lMLGdHQXVJSyxVQUFBLENBQUEsaUJBQ1EsQ0FBQSx3QkFFUCxFQUFBOztBQTFJTixxSEE2SW9CLGVBSWYsRUFBQTs7QUFqSkwsdUdBOElLLGVBQUEsRUFBQTs7QUE5SUwsa0lBb0pLLGlCQUNBLEVBQUE7O0FBckpMLG9HbEJpQ0UsMEJBRUEsQ0FBQSxpQkFDQSxDQUFLLGlCQUNFLENBQUEsbUJBRUgsQ0FBQSxVQUNKLEVBQUE7O0FrQnhDRiwyR0EwSk0sWUFBQSxDQUFBLG1CQUNTLENBQUEsWUFDQyxDQUFBLGFBQ0MsQ0FBQSxVQUNILENBQUEsWUFDUixDQUFBLGtCQUFBLENBQUEsaUNBQUEsQ0FBQSw2QkFBQSxDQUFBLHlCQUFBLENBQUEsV0FBQSxFQUFBOztBQS9KTiwyR0FnS0ssd0JBQ1csQ0FBQSxZQUtWLENBQUEsWUFBQSxDQUFBLGFBQUEsQ0FBQSxVQUFBLEVBQUE7O0FBdEtOLHdIQWtLTSxtQkFBQSxFQUFBOztBQWxLTixvSkEyS0ssZUFJQSxDQUFBLHFCQUFBLEVBQUE7O0FBL0tMLHVGQTRLSyxpQ0FDUyxDQUFBLHdCQUNSLENBQUEsV0FBQSxFQUFBOztBQTlLTiwrR0EyTEksYUFBQSxFQUFBOztBQTNMSixnRUFvTEksY0FDQyxDQUFBLHlCQUNBLENBQUksc0JBSUosQ0FBQSx3QkFBQSxFQUFBOztBQTFMTCwwRUF1TE0sMEJBdExMLENBQUEsb0JBMEJrQixDQXNKaEIsb0JBR0MsQ0FBQSxnQkFJTyxFckJ4S0g7O0FxQmhCUiwwSkFxTkcsYUFBQSxFQUFBOztBQXJOSCw4Q0FrTUcsb0JBQ0MsQ0FBQSxpQkFDTSxDQUFBLGFBQ04sQ0FBQSxvQkFlQSxDQUFBLGtDQUFBLENBQUEsMEJBQUEsQ0FBQSwyQ0FBQSxDQUFBLG1DQUFBLEVBQUE7O0FBcE5KLGdFQXNNTSxhQUNTLENBQ1YsaUJBQ0EsQ0FBQSxpQkFDQSxFQUFBOztBQTFNTCxtRUEyTUksVUFBQSxDQUFnQixXQUNmLENBQUEscUJBRUMsRUFBQTs7QUE5TU4sOEZBQUEsY0FDVSxFQTRMUjs7QUE3TEYsa0tBK05HLG1CQUFnQixFQUFBOztBQS9ObkIsZ0RBa09HLGdCQUNDLENBQUEsa0JBQ08sQ0FBQSxPQUFPLENBd0JkLFNBQUEsQ0FBQSxRQUFBLENBQUEsYUFBQSxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxjQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLCtCQUFBLENBQUEsaUNBQUEsQ0FBQSxZQUFBLEVBQUE7O0FBNVBKLCtEQXFPTSxZQUNRLENBQUEsY0FDQSxFQUFBOztBQXZPZCxpRUF5T1EsZUFDTSxDQUFBLGdCQUVULEVBQUE7O0FBNU9MLG9FQWtPaUIsZUFpQlgsQ0FBQSxZQUFXLENBQUEsWUFBZSxDQUFBLGNBQUEsQ0FBUyx1QkFDbkMsQ0FBQSwwQ0FBQSxDQUFBLGtDQUFBLEVBQUE7O0FBcFBOLCtFQXNQTSxxREFDQSxDQUFBLGlEQUFBLENBQUEsNkNBQUEsRUFBQTs7QUF2UE4sK0VBeVBNLFdBQVcsRUFBQTs7QUF6UGpCLCtFQThQb0IsdURBR0wsQ0FBQSxtREFNWCxDQUFBLCtDQUFBLEVBQUE7O0FBdlFKLCtEQW1RSSx3QkFFTSxDQUFDLG9CQUNOLENBQUEsb0JBQUEsQ0FBQSxnQkFBQSxDQUFBLGFBQUEsQ0FBQSwrQ0FBQSxDQUFBLHVDQUFBLENBQUEsMkJBQUEsQ0FBQSwyRUFBQSxDQUFBLG1CQUFBLEVBQUE7O0FBdFFMLG1FQXdRdUIsYUFFbkIsQ0FBQSxZQUFhLEVBQ2I7O0FBM1FKLG9FQWdSSSxvQkFjQSxDQUFBLGNBQUEsQ0FBQSxVQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGNBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxzQkFBQSxDQUFBLG1CQUFBLENBQUEsMEJBQUEsQ0FBQSxpQkFBQSxFQUFBOztBQTlSSixtRUFpUkksbUJBalJKLEVBQUE7O0FBQUEsdUtBbVNJLG1CQUNBLENBQUEsU0FBYyxDQUFBLFlBQ2QsQ0FBQSxRQUFBLENBQUEsbUJBQUEsQ0FBQSxPQUFBLENBQUEsaUJBQUEsQ0FBQSxxQkFBQSxDQUFBLHFCQUFBLENBQUEsY0FBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxFQUFBOztBQXJTSiwrSEF3U0ksYUFBQSxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxjQUFBLENBQUEseUJBQUEsQ0FBQSxzQkFBQSxDQUFBLHdCQUFBLENBQUEsNkJBQUEsQ0FBQSw4QkFBQSxDQUFBLDJCQUFBLENBQUEsdUJBQUEsRUFBQTs7QUF4U0osNkRBeVNHLCtCckJyU1csRUFBQTs7QXFCSmQsbUVBeVNxQiwrQkF4U3BCLEVBQUE7O0FBREQseUpBbVRVLFVyQjNSSyxFcUI0UlY7O0FBcFRMLG1KQWlUc0IsZUFJRixFQUFDOztBQXJUckIscUtBeVRJLGVBQUEsRUFBQTs7QUF6VEosNllBc05FLGVBMkZDLENBQUEsd0JBUUMsQ0FBQSxlbEJ4UUYsQ0FBQSxtQ0h6QmEsRUcyQmI7O0FrQm5ERix5ZGxCc0RFLGVBQUEsRUFBQTs7QWtCdERGLHFhQWlVSSx3QkFBQSxFQUFBOztBQWpVSiw2REFrVUcsdUJBRUMsQ0FBQSxvQkFDQSxDQUFBLHNCQUFBLEVBQUE7O0FBclVKLGtFQXNVc0IsWUFDVCxDQUtULGlCQUFBLEVBQUE7O0FBNVVKLG1FQXdVSSxvQkF4VUosQ0FBQSxjQUFBLENBQUEsVUFDQyxFQXFOQzs7QUF0TkYsNktBdVZJLGNBQUEsRUFBQTs7QUF2VkosNkRBb1ZJLG9CQUNDLENBQUEsbUJBQ0EsQ0FBQSxlQUFBLENBQUEsa0JBQUEsQ0FBQSxXQUFBLENBQUEsVUFBQSxDQUFBLG1CQUFBLENBQUEsa0JBQUEsRUFBQTs7QUF0VkwsOEVBeVZtQixvQkFFZixFQUFBOztBQTNWSiw4REFpV0ksb0JyQnhWUSxDQUFBLG9CcUIwVkcsQ0FBTyxnQkFDakIsQ0FBQSxxQkFBQSxDQUFBLHFCQUFBLENBQUEsY0FBQSxDQUFBLHNCQUFBLENBQUEsbUJBQUEsQ0FBQSwwQkFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLG1CQUFBLENBQUEsYUFBQSxDQUFBLGtCQUFBLENBQUEsZ0NBQUEsRUFBQTs7QUFwV0wsdUVBcVdJLGVBQ00sQ0FBQSxrQkFDRSxFQUFLOztBQXZXakIsaUZBMFd3QixZQUNWLENBQUEsYUFDTCxDQUFBLGtCQUVKLEVBQUE7O0FBOVdMLGtGQTBXdUIsbUJBU04sQ0FDWCxVQUFTLENBQUEsUUFDVCxDQUFBLFdBQ0EsQ0FBQSxXQUNBLENBQUEsbUJBRUEsQ0FBQSxpQkFBYSxFQUFBOztBQXpYbkIseUZBZ1lNLFlBQVUsQ0FBUyxtQkFFbkIsQ0FBQSxVQUFXLENBQUMsVUFDWixDQUFBLFNBQUEsQ0FBQSxVckJsWEMsQ0FBTyxvQ3FCcVhSLENBQUEsbUNBQ1UsQ0FBQSxpQ0FDZSxDQUFBLFlBQUEsRUFBQTs7QUF4WS9CLG9GQStYTSxtQkFXYyxDQUFBLGVBQ2IsQ0FBQSxvQkFBQSxDQUFBLDBCQUFBLENBQUEsYUFBQSxDQUFBLGlCQUFBLENBQUEsc0JBQUEsQ0FBQSxtQkFBQSxDQUFBLGtEQUFBLEVBQUE7O0FBM1lQLDBGQStYTSxhQWNDLEVBQUE7O0FBN1lQLCtGQW9aYSxpQkFDSSxFQUFBOztBQXJaakIsd0ZBa2JHLFdBQUEsQ0FBQSxvQkFVQSxFQUFBOztBQTViSCwwREEyWkcsNERBRVcsRUFBQTs7QUE3WmQsNEVBK1pHLDhCQUNDLENBQXlCLCtEQUVvQixDQUFBLG1EQUMzQyxDQUFBLCtDQUFBLEVBQUE7O0FBbmFOLHVIQTZhSyxxRUFBQSxDQUFBLGlFQUFBLENBQUEsNkRBQUEsRUFBQTs7QUE3YUwsOEdBMGFPLE9BQ0QsRUFBQTs7QUEzYU4saUhBK2FLLFdBQ0EsRUFBQTs7QUFoYkwsMkdBMGJVLFdBQUksRUFDVjs7QWxCcGJGLHlFa0J5YkMsbUJBRUUsQ0FBQSxpQ0FDQSxDQUFBLHlCQUFBLEVBQUE7O0FoQjhnQ0wsNkJnQmxoQ0UsNkRBVUksb0JBQUEsQ0FBQSxZQUFBLENBQUEsUUFBQSxFQUFBO0VoQnlnQ0osOERBQThELG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUU7RUZyOEM5Ryx1RWtCbWNDLGNBQ0MsRUFDQyxFQUFBOztBaEJtZ0NMLDZCZ0J0Z0NFLHVFQWVHLGNBQUEsRUFBQTtFaEJ3L0JILCtEQUErRCxvQkFBb0IsQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsRUFBRTtFRm44QzNILGdFa0JpZEMsbUJBQ1MsRUFBRSxFQUFBOztBaEJvL0JkLDRCZ0J0L0JFLGdEQVVZLG1CQUVULENBQUEsb0JBQUEsQ0FBQSxnQkFBQSxDQUFBLCtCQUFBLENBQUEsOEJBQUEsQ0FBQSx3QkFBQSxDQUFBLG9CQUFBLENBQUEsYUFBQSxFQUFBO0VBL2VMLCtEQWlmSyxjQUNBLEVBQU87RUFsZlosK0RBc2ZLLGVBQW1CLENBQUEsNkJBRVgsQ0FBRSxrQkFDVCxDQUFBLFNBQUEsRUFBQTtFQXpmTiw2REEwZkssNkJBQ0MsQ0FBQSxrQkFDQSxDQUFBLFNBQWUsQ0FBQSxlQUNmLENBQUEsVUFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGVBQUEsRUFBQTtFQTdmTixnRkErZk0sbUJBQ0EsQ0FBQSxlQUFBLEVBQUE7RUFoZ0JOLHFGQWtnQlksaUJBQ04sQ0FBQSxxQkFBQSxFQUFBO0VBbmdCTixnRkF1Z0JLLGNBQ0EsRUFBQTtFQXhnQkwsOEVBMGdCZSxVQUFFLEVBQUE7RUExZ0JqQiw4REF5Z0JJLDZCQVNFLENBQUEsa0JBQUEsQ0FBQSxTQUFBLENBQUEsZ0JBQUEsRUFBQTtFQWxoQk4sb0VBbWhCSyw4QkFDUyxDQUFLLGlCQUViLENBQUEsV0FBQSxDQUFBLDZCQUFBLENBQUEsa0JBQUEsQ0FBQSxTQUFBLENBQUEsK0JBQUEsQ0FBQSw4QkFBQSxDQUFBLHdCQUFBLENBQUEsb0JBQUEsQ0FBQSx1QkFBQSxDQUFBLGVBQUEsQ0FBQSxXQUFBLEVBQUE7RUF0aEJOLHdFQTJoQkksVUFBQSxFQUFBO0VBM2hCSix1RkEraEJnQixhQUFBLENBQUEsc0JBSVgsQ0FBQSxjQUFBLENBQUEsVUFBQSxFQUFBO0VBbmlCTCxpREFtZVcsaUJBMkRQLEVBQUE7RUE5aEJKLDRFQXFpQkssb0NBRUEsQ0FBQSxnQ0FBQSxDQUFBLDRCQUFBLEVBQUE7RUF2aUJMLHNHQTRpQkksY0FBQSxFQUFBO0VBNWlCSix5RUE4aUJjLGtCQUNWLENBQUEsWUFBQSxFQUFBO0VBL2lCSiw4Q0FnakJHLGdCQUNDLENBQUEsWUFDQSxFQUFBO0VBbGpCSiw2REFxakJJLGlCQUNBLEVBQUE7RWhCcTdCRixxREFBcUQsZUFBZSxFQUFFO0VGbDlDdEUsaURrQm1pQkEsU0FBUyxDQUFBLGVBQUEsQ0FBQSxjQUNxQixDQUFBLG1CQTdqQmhDLEVBQUEsRUFBQTs7QWhCOCtDQSw0QkFBNEIsc0hBQXNILGdCQUFlLEVBQUU7RWdCcjZCbkssMEpBT0csdUJBQUEsQ0FBQSxrQkFBQSxFQUFBLEVBQUE7O0FsQjdqQkQscURrQnVqQkQsVUFDQyxFQUFBOztBQUZGLDRCQUNDLHFEQVlFLE9BQUEsRUFBQSxFQUFBOztBbEJua0JELHNEa0J1akJELFVBT0MsRUFBQTs7QUFTRiw0QkFDQyxzREFtQkEsVUFBQSxFQUFBLEVBQUE7O0FBcEJELHdCQUFxQixVQUFyQixDQUFJLFdBQUEsQ0FBQSxpQkFNRixFQUFBOztBQU5GLDhEQVVFLGNBQUEsRUFBQTs7QUFWRiwyQ0FZRSxpQkFPQSxFQUFBOztBbEIxbEJBLGtDa0J1a0JFLGtCQUFpQixFQUFBOztBaEJ1NkJyQiw0QkFBNEIsa0NBQWtDLGVBQWUsRUFBRTtFaUJoZ0QvRSxvREFDYSxVQUFBLEVBQUEsRUFBQTs7QUFEYixzQkFTQywwRHRCT2EsQ3NCSlosbUJBQ0EsQ0FBQSxPQUFZLENBQUEsUUFDWixDQUFBLFNBQWEsQ0FBQyxVQUNkLENBQUEsYUFBbUIsQ0FBQSxhQUNULENBQUEsZ0JBQWUsQ0FBQSxxQkFDekIsRUFBQTs7QUFqQkYsa0NBU1ksbUJBaUJULENBQUEsMEJBRUEsQ0FBQSxhdEJaSSxDQUFBLGlCc0JhSyxDQUFBLG1CQUNHLENBQ1osb0JBQVUsQ0FBQSxxREFFVixDQUFBLGlEQUFBLENBQUEsNkNBQUEsQ0FBQSwyREFBQSxDQUFBLG1EQUFBLENBQUEsa0JBQUEsQ0FBQSxXQUFBLENBQUEsd0NBQUEsQ0FBQSxnQ0FBQSxDQUFBLG1CQUFBLENBQUEsaUJBQUEsQ0FBQSxpQkFBQSxFQUFBOztBQWpDSCx3Q0FTWSxZQTBCTyxDQUNULFlBQ0csQ0FBQSxXQUNULENBQUEsb0JBQUEsQ0FBQSxtQkFBQSxDQUFBLGFBQUEsQ0FBQSxrREFBQSxDQUFBLDhDQUFBLENBQUEsMENBQUEsQ0FBQSxVQUFBLEVBQUE7O0FBdENKLHdEQXlDRyxXQUFVLEVBQUE7O0FBekNiLG1EQXdDb0Isc0RBS2hCLENBQUEsa0RBQUEsQ0FBQSw4Q0FBQSxFQUFBOztBQTdDSix5REFnRGEsWUFDVixDQUFBLFVBQUEsRUFBQTs7QUNsREgsNkNBRWtCLFdBQUEsRUFBQTs7QUFGbEIscUVBUUkscUJBRUQsQ0FBQSxxQkFDQSxDQUFBLGNBQWlCLENBQWEsb0JBQ1gsQ0FBQSxlQUNMLENBQUEsY0FBQSxDQUFBLG1CQUNBLEVBSWQ7O0FBbEJILHlFQVFLLG9CQVFELENBQUEsaUJBQ0EsQ0FBQSxhQUFBLENBQUEsV0FBQSxDQUFBLDBCQUFBLENBQUEsOEJBQUEsQ0FBQSxtQkFBQSxDQUFBLCtCQUFBLENBQUEsZUFBQSxFQUFBOztBQWpCSixvRkFvQkcsZUFDQSxFQUFBOztBQXJCSCxnRkF1QkcsVUFBUSxFQUFBOztBQXZCWCxnRkEwQkUsc0JBQ1EsQ0FBQSxZQUNQLEVBQUE7O0FBNUJILCtGQW1DRyxxQkFDQSxDQUFBLHFCQUNBLENBQVUsY0FDVixDQUFBLDBCQUNBLENBQUEsdUJBQ0EsQ0FBQSxvQnZCL0JTLENBQUEsMEJ1QmtDVCxDQUFBLDhCQVVBLENBQUEsbUJBQUEsQ0FBQSxxQkFBQSxDQUFBLG9CQUFBLEVBQUE7O0FBckRILDZGQTRDRyxxQkFDWSxDQUFBLHFCQUNNLENBQ2pCLGNBQWEsQ0FBQSwwQkFDYixDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxtQkFBQSxDQUFBLDBCQUFBLENBQUEsOEJBQUEsQ0FBQSxnQkFBQSxDQUFBLGtCQUFBLENBQUEsZUFBQSxDQUFBLGlCQUFBLENBQUEsZUFBQSxFQUFBOztBQWhESixzR0FpREcsZ0JBQ1ksQ0FBQSxrQkFDQyxDQUFFLG9CQUNkLEVBQUE7O0FBcERKLDBHQXVEVyxnQnZCOUNDLENBQU8sb0J1QmlEaEIsRUFBQTs7QUExREgsNkZBNkQyQixlQUNWLENBQ2QsZUFBYSxDQUFBLGtCQUNiLENBQUEsa0JBQ0EsQ0FBQSxtQkF5Q0EsRUFBQTs7QUExR0gsOEZBa0VHLHFCQUNTLENBQUUscUJBQ1YsQ0FBQSxjQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEsMEJBQUEsQ0FBQSw4QkFBQSxDQUFBLG9CQUFBLENBQUEsZ0JBQUEsRUFBQTs7QUFwRUosMEdBc0VJLG1CQUNLLEV2QjlERzs7QXVCVFosdUdBMkVJLGdCQUNDLENBQUEsZUFBUyxDQUFBLHNCQUNRLENBQ2pCLG9CQUFpQixDQUFBLG1CQUNKLEVBQUE7O0FBL0VsQixzSEFtRkcsc0JBRUMsQ0FBQSxrQkFBQSxDQUFBLDJCQUFBLENBQUEsa0JBQUEsRUFBQTs7QXBCOUVGLDBIb0JzRHlCLGVBNkJULEVBQUM7O0FsQnM5Q25CLDZCa0I5aURDLDhGQWdHSSw2QkFDQSxDQUFBLDhCQUFBLENBQUEsMkJBQUEsQ0FBQSx1QkFBQSxDQUFBLHdCQUFBLENBQUEscUJBQUEsQ0FBQSw0QkFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxFQUFBO0VsQjg4Q0gsa1BBQWtQLGVBQWdCLEVBQUU7RWtCampEdFEseUhBNkdJLHFCQUNBLEVBQUEsRUFBQTs7QXBCckZGLHlIb0J3RnVCLG9CQVl2QixFQUFBOztBbEJ5N0NGLDRCa0JwakRDLHFFQXNISSw2QkFDQSxDQUFBLDhCQUFBLENBQUEsMkJBQUEsQ0FBQSx1QkFBQSxFQUFBO0VsQjg3Q0gseUVBQXlFLGVBQWdCLENBQUMsaUNBQWlDLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRTtFa0J2akQ1SixvRnZCS2EsaUJ1QjJIWCxFQUFhLEV2Qm5HQzs7QXVCN0JoQixpRUFtSUUsMEJBRUMsQ0FBQSxtQkFFQSxDQUFBLG1CQUVBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGNBQUEsRUFBQTs7QXBCaEhELDhFb0JxR2dCLFVBQUEsQ0FBQSxXQWFmLENBQUEsb0JBMkJELENBQUEsWUFBQSxDQUFBLFFBQUEsQ0FBQSxrQkFBQSxFQUFBOztBbEJ3NUNGLDRCa0JoOENDLGlFQWtCRyw2QkFFTSxDQUFBLDhCQUVMLENBQUEsMkJBQUEsQ0FBQSx1QkFBQSxFQUFBO0VBcEpMLDhFQXFKSSw2QkFDQyxDQUFBLDhCQUlBLENBQUEsMkJBQUEsQ0FBQSx1QkFBQSxDQUFBLGdCQUFBLENBQUEseUJBQUEsQ0FBQSxzQkFBQSxDQUFBLHdCQUFBLEVBQUE7RUExSkwsbUdBdUpLLGVBQW1CLENBQUEsWUFDUCxDQUFBLG1CQUNYLEVBQUE7RUF6Sk4saUdBNEpLLDZCQUVBLENBQUEsOEJBQUEsQ0FBQSwyQkFBQSxDQUFBLHVCQUFBLEVBQUE7RWxCbzZDSCxvSEFBb0gsZ0JBQWUsRUFBRTtFa0Jsa0R2SSwrRkFtS1UsWUFBRSxDQUFhLGNBQ2QsRUFBTyxFQUFBOztBQXBLbEIsNEVBa0xHLFlBQUEsQ0FBQSxzQkFBQSxDQUFBLGVBQUEsRUFBQTs7QUFsTEgsa0RBd0tZLGlCQUVZLEVBQ3BCOztBQTNLSixxRUErS0ksb0J2QnZKVyxDdUJ3SlgsWUFBWSxFQUNaOztBQWpMSixxRUFzTEUsb0JBQ0EsQ0FBVyxZQUNYLEVBQUE7O0FBeExGLDRDQTBMRSxtQkFDUSxDQUFFLHFCQUNULENBQUEscUJBQ1MsQ0FBQSxjQUNULENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEseUJBQUEsQ0FBQSxzQkFBQSxDQUFBLHdCQUFBLENBQUEsY0FBQSxFQUFBOztBQTlMSCx1REErTEUsc0JBQ1ksQ0FBQSxtQkFDRyxDQUFBLGdCQUNkLEVBQUE7O0FBS0gsaUVBQUEsZ0JBQUEsQ0FBQSxpQkFBQSxFQUFBOztBbEI0NENBOztHQUVHO0FrQjM0Q0gsb0JBRUMsOENBQ0ssQ0FBQSxzQ3BCbEJMLEVBQUE7O0FvQmVELGlGQUdZLFVBUUYsQ0FBQSxXQUNHLENBQUEseUJBQ1YsQ0FBSyxpQkFBa0IsQ0FBQSxtQkFDdkIsQ0FBQSxvQkFBQSxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxtQkFBQSxDQUFBLGdCQUFBLENBQUEsaUJBQUEsQ0FBQSxVQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLGVBQUEsQ0FBQSxtQkFBQSxDQUFBLG1CQUFBLENBQUEsMkJBQUEsRUFBQTs7QUFkSCw2RkFrQkUsK0JBQUEsQ0FBQSwwQkFBQSxFQUFBOztBQzVORixnQ0FDQyxjQUFBLEVBQUE7O0FBREQsb0RBUUUsbUJBQVUsRUFBQTs7QUFSWiwrQkFzQkUsbUJBQ0MsQ0FBQSxvREFJQSxDQUFBLGdEQUdBLENBQUEsNENBRUEsQ0FBQSxhQUFBLENBQUEsWUFBQSxDQUFBLGNBQUEsQ0FBQSxrQkFBQSxDQUFBLGtCQUFBLENBQUEsa0JBQUEsQ0FBQSxtQkFBQSxDQUFBLGlCQUFBLENBQUEsaUJBQUEsQ0FBQSxzREFBQSxDQUFBLDhDQUFBLENBQUEsV0FBQSxDQUFBLG1CQUFBLENBQUEsa0NBQUEsQ0FBQSwwQkFBQSxFQUFBOztBQWhDSCxnREFrQ0csbUJBQ0MsQ0FBQSxXQUNBLENBQUEsUUFBQSxDQUFBLFdBQUEsQ0FBQSxlQUFBLENBQUEsZ0JBQUEsQ0FBQSxpQkFBQSxDQUFBLGFBQUEsQ0FBQSxpQkFBQSxFQUFBOztBQXBDSixnRUF5Q0UsWUFBQSxFQUFBOztBQXpDRixxQ0EyQ0UseUJBRUMsRUFBQTs7QUE3Q0gsNkNBa0RTLFdBQ1AsQ0FBQSxvQkFDQSxFQUFNOztBQXBEUixxQ0FpRUUscUJBQ0MsQ0FBQSxxQkFDQSxDQUFBLGNBQ0EsQ0FBQSxtQkFDTyxDQUFBLHlCQUNQLENBQUEsMkdBQUEsRUFBQTs7QUF0RUgsdURBdUVFLGlCQUNVLENBQUEsa0JBQ0UsQ0FBTSxVQUNqQixDQUFTLGdCQUNELEVBQUE7O0FBM0VYLDZEQThFRyxjQUNBLENBQUEsaUJBQ0EsQ0FBTyxlQUNQLENBQUEsZUFBc0IsRUFDdEI7O0FBbEZILDJEQW1GRyxvQkFDQyxDQUFBLFl4Qm5FVSxDQUFBLFF3Qm9FVixDQUFBLGtCQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGNBQUEsQ0FBQSw2QkFBQSxDQUFBLDhCQUFBLENBQUEsMkJBQUEsQ0FBQSx1QkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxFQUFBOztBQXJGSiw2RUF1RkksZUFDQSxFQUFBOztBQXhGSiwwRUE2RkcsZXhCNUVJLENBQU8sbUJ3QjhFWCxFQUFBOztBQS9GSCw4REFrR0csb0JBRUUsQ0FBQSxZQUNBLENBQUEsUUFBWSxDQUFBLG9CQUFBLENBQUEscUJBQ1osQ0FBQSxxQkFBQSxDQUFBLGNBQUEsQ0FBQSw2QkFBQSxDQUFBLDhCQUFBLENBQUEsMkJBQUEsQ0FBQSx1QkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxDQUFBLGFBQUEsRUFBQTs7QUF0R0wsK0VBeUdhLFdBQ1QsQ0FBQSw4Q0FFVyxDQUFBLHNDQUNYLEVBQUE7O0FBN0dKLG9FQThHRyxlQUNDLENBQUEsa0JBQ0EsQ0FBQSxxQkFBQSxDQUFBLGdCQUFBLEVBQUE7O0FBaEhKLGdGQUFBLGNBQUEsRUFBQTs7QUFBQSxzUEFtSFMsdUJBWUosQ0FBQSxVQUFpQixDQUFBLG1CQUNqQixDQUFBLFdBQUEsQ0FBQSxlQUFBLENBQUEsMEJBQUEsQ0FBQSxtQkFBQSxDQUFBLGlCQUFBLENBQUEsWUFBQSxDQUFBLDBDQUFBLENBQUEsa0NBQUEsRUFBQTs7QUFoSUwsd1FBcUlJLGlCQUFBLEVBQUE7O0FBcklKLDRFQXVJSSxtQkFDQSxFQUFBOztBQXhJSix5RUFvSmdCLGVBZ0ViLENBQUEsaUJBQUEsQ0FBQSxtQkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxDQUFBLFVBQUEsQ0FBQSxrQkFBQSxDQUFBLG9CQUFBLENBQUEsa0JBQUEsQ0FBQSxnQkFBQSxDQUFBLHVCQUFBLEVBQUE7O0FBcE5ILDBEQXFKRyxjQUNTLEVBQUE7O0FBdEpaLCtEQTJKSSxxQkFJQSxDQUFBLHFCQUFBLENBQUEsY0FBQSxDQUFBLDZCQUFBLENBQUEsOEJBQUEsQ0FBQSwyQkFBQSxDQUFBLHVCQUFBLEVBQUE7O0FBL0pKLDREQTBKSSxVQUVjLEVBQUM7O0FBNUpuQix5RUFpS2EsbUJ4QnhKRCxFQUFPOztBd0JUbkIsZ0VBdUtHLGVBQ0MsQ0FBQSxlQVNBLENBQUEsa0JBQUEsQ0FBQSxxQkFBQSxDQUFBLGdCQUFBLEVBQUE7O0FBakxKLDBFQXVLa0IsbUJyQkVMLEVBQUU7O0FxQnpLZixpRkFtTEksbUNBU0EsQ0FBQSxZQUFBLENBQUEsbUJBQUEsQ0FBQSxvQkFBQSxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxlQUFBLENBQUEsdUNBQUEsQ0FBQSxvQ0FBQSxDQUFBLG1DQUFBLENBQUEsc0JBQUEsQ0FBQSxpQkFBQSxDQUFBLG1CQUFBLENBQUEsZUFBQSxDQUFBLFdBQUEsQ0FBQSxhQUFBLEVBQUE7O0FBNUxKLDBFQWtMa0IsbUJyQlRMLEVBQUU7O0FxQnpLZixpRkE4TDRCLG1DQUVaLENBQUEsWUFDWixDQUFBLG1CQWtCQSxDQUFBLG9CQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGVBQUEsQ0FBQSx1Q0FBQSxDQUFBLG9DQUFBLENBQUEsbUNBQUEsQ0FBQSxzQkFBQSxDQUFBLGlCQUFBLENBQUEsbUJBQUEsQ0FBQSxlQUFBLENBQUEsV0FBQSxDQUFBLGFBQUEsRUFBQTs7QUFuTkosbUZBOEwyQixtQkFLWCxDQUNYLGlCQUNBLENBQUEsZ0JBQWtCLEVBQ2xCOztBQXRNTCwwRkErTUssWUFBZSxDQUFBLGVBQ0gsQ0FBQSxtQkFFWixDQUFBLFlBQUEsQ0FBQSxZQUFBLENBQUEsMEJBQUEsQ0FBQSxXQUFBLENBQUEsT0FBQSxDQUFBLG1DQUFBLENBQUEsK0JBQUEsQ0FBQSwyQkFBQSxFQUFBOztBQWxOTCx1RkFpREMsZ0JBcUtZLENBQUEsa0JBdE5iLENBQUEsYUFpREMsRUFBQTs7QUFqREQsc1JBaURDLDBCQXdLbUIsQ0FZVixVQUNOLENBQUEsbUJBQ0EsQ0FBQSxXQUFBLENBQUEsZUFBQSxDQUFBLDBCQUFBLENBQUEsZUFBQSxDQUFBLG1CQUFBLENBQUEsbUJBQUEsQ0FBQSxZQUFBLENBQUEsMENBQUEsQ0FBQSxrQ0FBQSxFQUFBOztBQXZPSixvVEEyT0csc0JBQUEsRUFBQTs7QUEzT0gsaUVBNk9HLDBEQUVVLEVBQVE7O0FBL09yQiw0REFBQSwwREFtUFUsRUFBQTs7QUFuUFYsbURBNFBhLDBEQUlWLEVBQUE7O0FBaFFILDhEQWtRVyxlQUNNLENBQUEsMkJBQ2IsQ0FBQSxtQkFBQSxFQUFBOztBckJ2UEYseUdxQjRQWSxpQkFhWixDQUFBLGlCQUFBLENBQUEsbUJBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsQ0FBQSxVQUFBLENBQUEsb0JBQUEsQ0FBQSxrQkFBQSxDQUFBLGdCQUFBLEVBQUE7O0FuQnM1Q0YsMERBQTBELG9CQUFvQixDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQywwQ0FBMEMsQ0FBQyxrQ0FBa0MsRUFBRTs7QUFFak4sZ0VBQWdFLGFBQWEsRUFBRTs7QUFFL0UsNkJBQTZCLHFDQUFxQyxXQUFXLENBQUMsV0FBVyxDQUFDLG1DQUFvQyxDQUFDLCtCQUFnQyxDQUFDLDJCQUE0QixFQUFFO0VtQmhyRDlMLHNFQWtTRSxlQUFBLEVBQUEsRUFBQTs7QUFsU0YsNEJBdVJDLHFDQUdFLDZCQUNBLENBQUEsOEJBQUEsQ0FBQSwyQkFBQSxDQUFBLHVCQUFBLEVBQUEsRUFBQTs7QUEzUkgsNEJBdVJDLHFDQU1FLFlBQWlCLEVBQUEsRUFBQTs7QUE3UnBCLGdEQXVSMkIscUJBUXZCLENBQUEscUJBQ0EsQ0FBQSxjQUFBLEVBQUE7O0FDL1JKLDBEQUVHLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSwrQkFBQSxFQUFBOztBcEJ3ckRILHlEQUF5RCx3QkFBd0IsQ0FBQyxxQkFBcUIsQ0FBQyw0QkFBNEIsRUFBRTs7QUFFdEksa0VBQWtFLGtCQUFtQixFQUFFOztBQUV2RixnQkFBZ0I7QW9CMXJEaEIsNFNBR0Msb0JBQUEsQ0FBdUIscUJBRnhCLEVBQUE7O0FBREEsdTNCQXNCRSxvQkFBQSxDQUFBLHFCQUFBLEVBQUE7O0FBdEJGLHVqQ0FpQ0csb0JBQUEsRUFBQTs7QUFqQ0gsd1pBNEJJLG9CQUErQixFQTNCbkM7O0FBb0NBLDhFQUFtRSxvQkFBQSxDQUFBLHFCQUFBLEVBQUE7O0FwQmdxRG5FLDZPQUE2TyxnQkFBZ0IsQ0FBQyxvQkFBb0IsRUFBRTs7QW9CbnBEcFIseXBCQWFFLGdCQUFBLENBQUEsb0JBQUEsRUFBQTs7QUFiRixtRUFRRztBcEJncERILHVGQUF1RixnQkFBZ0IsQ0FBQyxvQkFBb0IsRUFBRTs7QUFFOUgsaUNBQWlDO0FxQmp0RGpDLHVlQW9DSSxnQkFBQSxDQUFBLG9CQUFBLEVBQUE7O0FBcENKLDYzQ0FtQ0ssZ0JBQUEsQ0FBQSxvQkFBQSxFQUFBOztBQW5DTCx5Y0ErQlMsMkJBQUEsQ0FBQSwrQkFBQSxFQUFBOztBQS9CVCxxQkFDSSx3bUJBVVMsRUFBQTs7QUFYYixrREFHUSxlQUFjLEVBQUE7O0FBSHRCLG1GQVlZLFVBQUEsQ0FBQSxpQ0FHUSxDQUFBLGlCQUNBLENBQUEsZ0JBQW1CLENBQ3RCLGVBQUEsRUFBQTs7QUFqQmpCLDhGQVlZLGlCQU1JLEVBQUE7O0FBbEJoQiw4R0FrQmdCLFdBQUEsRUFBQTs7QUFsQmhCLDZIQWtCZ0IsZ0JBUWdCLENBQ1IsbUJBQ0gsRUFBQTs7QUE1QnJCLGtJQWtDUyxpQkFBQSxFQUFBOztBQ2xDVCx1SUFxSUssZUFBQSxDQUFBLGtCQUFBLENBQUEsZ0JBQUEsQ0FBQSxtQkFBQSxFQUFBOztBQXJJTCw4SUFVUyxjQUFBLEVBQUE7O0FBVlQsaUVBT1ksd0JBRUMsQ0FBQSxxQkFBQSxDQUFBLDRCQUFBLEVBQUE7O0FBVGIsd0NBV1EsY0FDSSxFQUFBOztBQVpaLCtEQWVZLFVBQ1UsQ0FBQSx1QkFDYSxDQUNuQiwyQkFDSyxFQUFDOztBQW5CdEIsd0VBdUJnQixZQUFhLEVBQUE7O0FBdkI3QixxREFzQlksb0JBT1csRUFBQzs7QUE3QnhCLG1FQXFDWSxVQUNDLENBQU8sbUJBQ0osQ0FBQSxvQkFlSCxDQUFBLFlBQUEsRUFBQTs7QUF0RGIsc0VBd0NnQixxQkFDVSxDQUFBLGlCQUNNLENBQUEsb0JBRVosQ0FBQSwwQkFDYSxDQUFBLG1CQUNoQixDQUFBLGVBQUEsRUFBQTs7QUE5Q2pCLDRFQStDZ0Isd0JBRUksQ0FBQSxXQUNBLENBQUEseUJBQ1ksQ0FBQSxpQkFDQyxFQUFLOztBQXBEdEMsdUVBeURtQixxQkFDSSxDQUFBLHFCQWNkLENBQUEsY0FBQSxDQUFBLCtCQUFBLENBQUEsOEJBQUEsQ0FBQSx3QkFBQSxDQUFBLG9CQUFBLEVBQUE7O0FBeEVULHFGeEIyRGMsVUFDYixDQUFBLGtCSDNDTSxDQUFBLGVBREMsQ0FBQSxZRzhDUCxDQUFBLGtCQUNBLEVBQUE7O0FBbUJBLGlGQUNXLFVBQ1YsQ0FBQSxpQkFBQSxDQUFBLGVBQUEsQ0FBQSxZQUFBLENBQUEsa0JBQUEsRUFBQTs7QUFDRCxxRHdCMUJXLHVCeEIyQlYsQ0FBTywyQkFFUCxFQUFVOztBQUVSLDZEQUFBLFVBQVUsQ0FBQyxvQkFDRyxDQUNoQiwwQkFBQSxDQUFBLGFBQUEsQ0FBQSx5QkFBQSxDQUFBLGlCQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGlCQUFBLENBQUEsa0JBQUEsQ0FBQSxtQkFBQSxDQUFBLHNCQUFBLENBQUEsZ0JBQUEsQ0FBQSxZQUFBLENBQUEsaUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGtCQUFBLENBQUEsVUFBQSxDQUFBLFdBQUEsQ0FBQSxzQ0FBQSxDQUFBLDhCQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGNBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxhQUFBLENBQUEscUJBQUEsQ0FBQSxlQUFBLENBQUEsc0JBQUEsQ0FBQSxvQkFBQSxDQUFBLGNBQUEsQ0FBQSxhQUFBLENBQUEsZ0JBQUEsQ0FBQSxpQkFBQSxDQUFBLGlCQUFBLENBQUEsYUFBQSxDQUFBLGlDQUFBLEVBQUE7O0F3QjVGRixzRXhCNkZjLG1CQUVQLEVBQUM7O0FBUU4sc0VBQUEsZUFDQyxDQUFBLG9CQUNBLENBQVMsWUFDVCxDQUFBLFFBQUEsQ0FBQSxtQkFBQSxFQUFBOztBQUNELDBFQUFBLGtCQUNXLEVBQUE7O0F3QjVHYix3RXhCK0dFLFdBQ0EsQ0FBQSxZQUFXLENBQUEsYUFDWCxDQUFLLG9CQUNHLENBQUUsOEJBb0JWLENBQUEsaUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGVBQUEsQ0FBQSxXQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEseUJBQUEsQ0FBQSxzQkFBQSxDQUFBLHdCQUFBLEVBQUE7O0FBbkJBLGlGQUFBLGVBQ0MsQ0FBQSxrQkFDSyxFSHJHQTs7QUdnSE4saUZBQUEsV0FDQyxFQUFBOztBd0JqSUgsaUZ4QitHc0Isd0JBcUJSLENBQUEsZUFDWCxDQUFBLFdBQUEsRUFBQTs7QXdCcklILDBGM0JpQk8sb0JHK0JJLENBQUMsYUFBWSxDQXlGdEIsb0JBQUEsQ0FBQSxZQUFBLENBQUEsYUFBQSxDQUFBLG9CQUFBLENBQUEsbUJBQUEsQ0FBQSxlQUFBLENBQUEsYUFBQSxDQUFBLGtCQUFBLENBQUEsbUJBQUEsQ0FBQSxrQkFBQSxDQUFBLDBEQUFBLENBQUEsa0RBQUEsRUFBQTs7QXdCeklGLDBGeEJpREUscUJIekJNLEVBQUE7O0EyQnhCUix1RnhCb0RTLHdCQUNJLEVBQVk7O0F3QnJEekIsbUZ4QjJJRSxlQUNBLENBQUEsd0JBS0EsRUFBQTs7QXdCakpGLHNHM0JpQk8sZUFEQyxFQUFLOztBMkJoQmIseUZ4Qm9KRSx3QkFDQSxFQUFBOztBd0JySkYsK0V4QnVKVyxrQkFDSyxDQUNkLGVBQUEsRUFBQTs7QXdCekpGLHFGQTJFNEIsb0JBQ2hCLENBQUEsYUFDQSxFQUFBOztBQTdFWixtRUFpRmdCLGNBQ0ksQ0FBQSwwQkFDUyxFQUFDOztBQW5GOUIsbUVBc0ZnQixjQUNJLENBQUEsY0FDSCxFQUFBOztBQXhGakIsaURBNEZZLHFCQUNVLENBQUkscUJBQ0ssQ0FBQSxjQUNOLENBQUEsMEJBQ2hCLENBQUEsdUJBQUEsQ0FBQSwrQkFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGlDQUFBLENBQUEscUJBQUEsRUFBQTs7QUFoR1QsNEVBbUdZLG9CQUFXLENBQUEsZUFDRCxFQUFBOztBQXBHdEIsNEVBd0c4QixrQkFXckIsRUFBQTs7QUFuSFQsZ0RBdUdRLG9CQUdpQixDQUFBLFlBQ0MsQ0FBQSxRQUNWLENBQUEsZUFBWSxDQUFPLG9CQUNMLENBQUEsb0JBQ2pCLEVBQUE7O0FBOUdiLGtEQXVHUSxpQkFTUSxDQUFBLHlDQUVILENBQUEsaUNBQUEsQ0FBQSxlQUFBLENBQUEsb0JBQUEsRUFBQTs7QUFsSGIseURBcUhpQixtQkFHSixDQUFBLGVBQUEsRUFBQTs7QUF4SGIsc0VBMkhxQixpQkFDUSxDQUFBLG9CQUNoQixDQUFBLHNCQUFBLEVBQUE7O0FBN0hiLCtEQStIeUIsa0JBRUQsQ0FBQSxrQkFFWCxFQUFBOztBQW5JYiw0REF5T0ssY0FBQSxFQUFBOztBQXpPTCx5RUEwSVMsY0FBQSxFQUFBOztBQTFJVCx1RUE2SVMsY0FBQSxFQUFBOztBQTdJVCx1Q0FzSXFCLGNBdElyQixFQUFBOztBeEJtQkUsa0R3Qm1IRSxtQkFBaUIsRUFBQTs7QUF0SXJCLCtDQXVKUSxnQkFDSSxFQUFBOztBQXhKWix5TEFrS3VCLG1CQUNWLEVBQUE7O0FBbktiLDRCQXNJSSx5TEFzQ2EsbUJBQUEsRUFBQSxFQUFBOztBQTVLakIsMERBb0tZLG1CQUFBLENBQUEsbUJBU0ssQ0FBQSxxQjNCcEtMLENBQUEscUIyQnNLMkIsQ0FBQSxjQUNuQixDQUFBLDBCQUdILENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxFQUFBOztBQW5MakIsOERBdUxZLCtCQUNtQixDQUNuQix1QkFDSCxDQUFBLGdCQUFBLENBQUEsYUFBQSxDQUFBLG9CQUFBLENBQUEsa0JBQUEsQ0FBQSw4QkFBQSxFQUFBOztBQTFMVCw0R0F5TVMsYUFBQSxDQUFBLG1CQUFBLENBQUEsbUJBQUEsQ0FBQSxlQUFBLENBQUEsa0JBQUEsRUFBQTs7QUF6TVQsMkdBK0x5QixlQUNBLENBQUEsbUJBQ0gsQ0FBQSxzQkFDTSxDQUFLLGVBQ1AsRUFBQTs7QUFuTTFCLHdEQTZNYyxpQkE3TWQsQ0FBQSxtQkFzSUksQ0FBQSxtQkFBaUIsRUFBQTs7QUF0SXJCLHlEQTZNYyxjQUFtQixFQUFBOztBQTdNakMsOEVBeU5jLFVBQUEsQ0FBQSxzQkFDZ0IsQ0FBRSxzQkFDTCxDQUFBLGFBQ0gsQ0FBRSxrQkFNYixDQUFBLG1CQUFBLENBQUEsbUJBQUEsQ0FBQSxXQUFBLENBQUEsMEJBQUEsQ0FBQSxvQkFBQSxFQUFBOztBQWxPYix1T0FnT3FCLG1CQUFBLENBQUEsb0JBQUEsQ0FBQSxhQUFBLEVBQUE7O0FBaE9yQixrVEF1T2Esc0JBQUEsRUFBQTs7QXRCaW5EYixnR0FBZ0csaUJBQWlCLENBQUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFOztBQUV4Six5SEFBeUgsMEJBQTBCLEVBQUU7O0FBRXJKLDJFQUEyRSxnQkFBZSxFQUFFIiwiZmlsZSI6InRvLmNzcyJ9 */PKc\#Iީ$themes/ld30/assets/css/learndash.cssnuW+A/* rgb(255, 186, 186); */ @font-face { font-family: 'ld-icons'; src: url("../fonts/ld-icons.eot?e0vk6b"); src: url("../fonts/ld-icons.eot?e0vk6b#iefix") format("embedded-opentype"), url("../fonts/ld-icons.ttf?e0vk6b") format("truetype"), url("../fonts/ld-icons.woff?e0vk6b") format("woff"), url("../fonts/ld-icons.svg?e0vk6b#ld-icons") format("svg"); font-weight: normal; font-style: normal; } .ld-icon { /* use !important to prevent issues with browser extensions that change fonts */ font-family: 'ld-icons' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; display: inline-block; } .ld-icon-alert:before { content: "\e90d"; } .ld-icon-unlocked:before { content: "\e900"; } .ld-icon-quiz:before { content: "\e901"; } .ld-icon-materials:before { content: "\e902"; } .ld-icon-download:before { content: "\e903"; } .ld-icon-course-outline:before { content: "\e904"; } .ld-icon-content:before { content: "\e905"; } .ld-icon-complete:before, .ld-icon-checkmark:before { content: "\e906"; } .ld-icon-clock:before { content: "\e907"; } .ld-icon-certificate:before { content: "\e908"; } .ld-icon-calendar:before { content: "\e909"; } .ld-icon-assignment:before { content: "\e90a"; } .ld-icon-arrow-up:before { content: "\e912"; } .ld-icon-arrow-right:before { content: "\e913"; } .ld-icon-arrow-left:before { content: "\e914"; } .ld-icon-arrow-down:before { content: "\e915"; } .ld-icon-login:before { content: "\e90c"; } .ld-icon-remove:before, .ld-icon-delete:before { content: "\e90b"; } .ld-icon-comments:before { content: "\e917"; } .ld-icon-search:before { content: "\e916"; } .learndash-wrapper * { -webkit-box-sizing: border-box; box-sizing: border-box; } .learndash-wrapper .learndash_checkout_buttons { margin: 0 0.5em 0 0; } .learndash-wrapper .btn-join, .learndash-wrapper #btn-join { margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; text-transform: none; font-family: inherit; font-weight: 800; font-size: 0.75em; text-align: center; text-decoration: none; cursor: pointer; width: 100%; max-width: 385px; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; height: auto; padding: .75em 1.5em; margin-left: 0; } .learndash-wrapper .btn-join .ld-icon, .learndash-wrapper #btn-join .ld-icon { font-size: 0.875em; } .learndash-wrapper .btn-join .ld-text, .learndash-wrapper #btn-join .ld-text { padding: 0 1em; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } .learndash-wrapper .btn-join + .ld-button, .learndash-wrapper #btn-join + .ld-button { margin-left: 1em; } .learndash-wrapper .btn-join.ld-compact, .learndash-wrapper #btn-join.ld-compact { padding: 0; width: 24px; height: 24px; border-radius: 100%; -ms-flex-preferred-size: 24px; flex-basis: 24px; -ms-flex-negative: 0; flex-shrink: 0; padding: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .btn-join.ld-compact .ld-icon, .learndash-wrapper #btn-join.ld-compact .ld-icon { margin-right: 0; font-size: 0.75em; } .learndash-wrapper .btn-join.ld-compact .ld-text, .learndash-wrapper #btn-join.ld-compact .ld-text { padding: 0; } .learndash-wrapper .btn-join.ld-button-alternate, .learndash-wrapper #btn-join.ld-button-alternate { background: transparent; color: #00a2e8; padding: 0; } .learndash-wrapper .btn-join.ld-button-alternate .ld-icon, .learndash-wrapper #btn-join.ld-button-alternate .ld-icon { background: #00a2e8; color: white; border-radius: 100%; width: 18px; height: 18px; -webkit-box-flex: 0; -ms-flex: 0 0 18px; flex: 0 0 18px; padding: 2px; line-height: 16px; text-align: center; font-weight: bold; -webkit-transition: color 0.3s ease, background 0.3s ease; transition: color 0.3s ease, background 0.3s ease; } .learndash-wrapper .btn-join.ld-button-alternate .ld-text, .learndash-wrapper #btn-join.ld-button-alternate .ld-text { padding-left: 0.5em; } .learndash-wrapper .btn-join.ld-button-alternate:hover, .learndash-wrapper #btn-join.ld-button-alternate:hover { background: transparent; } .learndash-wrapper .btn-join.ld-button-transparent, .learndash-wrapper #btn-join.ld-button-transparent { color: #00a2e8; background: transparent; } .learndash-wrapper .btn-join.ld-button-transparent.ld-status-complete, .learndash-wrapper #btn-join.ld-button-transparent.ld-status-complete { color: #019e7c; } .learndash-wrapper .btn-join.ld-button-transparent:hover, .learndash-wrapper #btn-join.ld-button-transparent:hover { background: transparent; } .learndash-wrapper .btn-join.ld-button-reverse, .learndash-wrapper #btn-join.ld-button-reverse { background: white; color: #00a2e8; } .learndash-wrapper .btn-join.ld-button-reverse:hover, .learndash-wrapper #btn-join.ld-button-reverse:hover { background: #00a2e8; color: white; } .learndash-wrapper .btn-join:hover, .learndash-wrapper #btn-join:hover { opacity: 0.75; background-color: #00a2e8; } .learndash-wrapper .btn-join:focus, .learndash-wrapper #btn-join:focus { outline: none; opacity: 0.75; } .learndash-wrapper .ld-button { margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; text-transform: none; font-family: inherit; font-weight: 800; font-size: 0.75em; text-align: center; text-decoration: none; cursor: pointer; width: 100%; max-width: 385px; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; height: auto; padding: .75em 1.5em; } .learndash-wrapper .ld-button .ld-icon { font-size: 0.875em; } .learndash-wrapper .ld-button .ld-text { padding: 0 1em; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } .learndash-wrapper .ld-button + .ld-button { margin-left: 1em; } .learndash-wrapper .ld-button.ld-compact { padding: 0; width: 24px; height: 24px; border-radius: 100%; -ms-flex-preferred-size: 24px; flex-basis: 24px; -ms-flex-negative: 0; flex-shrink: 0; padding: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .ld-button.ld-compact .ld-icon { margin-right: 0; font-size: 0.75em; } .learndash-wrapper .ld-button.ld-compact .ld-text { padding: 0; } .learndash-wrapper .ld-button.ld-button-alternate { background: transparent; color: #00a2e8; padding: 0; } .learndash-wrapper .ld-button.ld-button-alternate .ld-icon { background: #00a2e8; color: white; border-radius: 100%; width: 18px; height: 18px; -webkit-box-flex: 0; -ms-flex: 0 0 18px; flex: 0 0 18px; padding: 2px; line-height: 16px; text-align: center; font-weight: bold; -webkit-transition: color 0.3s ease, background 0.3s ease; transition: color 0.3s ease, background 0.3s ease; } .learndash-wrapper .ld-button.ld-button-alternate .ld-text { padding-left: 0.5em; } .learndash-wrapper .ld-button.ld-button-alternate:hover { background: transparent; } .learndash-wrapper .ld-button.ld-button-transparent { color: #00a2e8; background: transparent; } .learndash-wrapper .ld-button.ld-button-transparent.ld-status-complete { color: #019e7c; } .learndash-wrapper .ld-button.ld-button-transparent:hover { background: transparent; } .learndash-wrapper .ld-button.ld-button-reverse { background: white; color: #00a2e8; } .learndash-wrapper .ld-button.ld-button-reverse:hover { background: #00a2e8; color: white; } .learndash-wrapper .ld-button:hover { opacity: 0.75; background-color: #00a2e8; } .learndash-wrapper .ld-button:focus { outline: none; opacity: 0.75; } .learndash-wrapper .ld-button .ld-icon { -webkit-transition: all ease-in-out 250ms; transition: all ease-in-out 250ms; } .learndash-wrapper .ld-button:hover .ld-icon-arrow-right { -webkit-transform: translateX(3px); -ms-transform: translateX(3px); transform: translateX(3px); } .learndash-wrapper .ld-button:hover .ld-icon-arrow-left { -webkit-transform: translateX(-3px); -ms-transform: translateX(-3px); transform: translateX(-3px); } .learndash-wrapper a { text-decoration: none; text-shadow: none; border-bottom: none !important; -webkit-box-shadow: none !important; box-shadow: none !important; } .learndash-wrapper a:hover { text-decoration: none; } .learndash-wrapper.ld-container { display: -webkit-box; display: -ms-flexbox; display: flex; padding: 0 2em; max-width: 1280px; margin: auto; } .learndash-wrapper .ld-page-content { -webkit-box-flex: 1; -ms-flex: 1 auto; flex: 1 auto; padding-right: 2.5%; } .learndash-wrapper .ld-sidebar-content { -webkit-box-flex: 0; -ms-flex: 0 0 250px; flex: 0 0 250px; padding-left: 2.5%; } .learndash-wrapper .ld-profile-avatar { border-radius: 100%; overflow: hidden; } .learndash-wrapper .ld-profile-avatar img { width: 100%; height: auto; } @media (max-width: 1024px) { .learndash-wrapper.ld-container { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .learndash-wrapper .ld-page-content { margin-bottom: 3em; } } .learndash-wrapper .sfwd-mark-complete, .learndash-wrapper #sfwd-mark-complete { position: relative; display: block; overflow: hidden; } .learndash-wrapper .sfwd-mark-complete::after, .learndash-wrapper #sfwd-mark-complete::after { font-family: 'ld-icons' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; display: inline-block; content: "\e906"; position: absolute; right: 1em; top: 50%; -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); color: white; } .learndash-wrapper .learndash_mark_complete_button, .learndash-wrapper #learndash_mark_complete_button { margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; text-transform: none; font-family: inherit; font-weight: 800; font-size: 0.75em; text-align: center; text-decoration: none; cursor: pointer; width: 100%; max-width: 385px; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; height: auto; padding: .75em 1.5em; background-color: #019e7c; padding: 1em; padding-right: 3em; } .learndash-wrapper .learndash_mark_complete_button .ld-icon, .learndash-wrapper #learndash_mark_complete_button .ld-icon { font-size: 0.875em; } .learndash-wrapper .learndash_mark_complete_button .ld-text, .learndash-wrapper #learndash_mark_complete_button .ld-text { padding: 0 1em; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } .learndash-wrapper .learndash_mark_complete_button + .ld-button, .learndash-wrapper #learndash_mark_complete_button + .ld-button { margin-left: 1em; } .learndash-wrapper .learndash_mark_complete_button.ld-compact, .learndash-wrapper #learndash_mark_complete_button.ld-compact { padding: 0; width: 24px; height: 24px; border-radius: 100%; -ms-flex-preferred-size: 24px; flex-basis: 24px; -ms-flex-negative: 0; flex-shrink: 0; padding: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .learndash_mark_complete_button.ld-compact .ld-icon, .learndash-wrapper #learndash_mark_complete_button.ld-compact .ld-icon { margin-right: 0; font-size: 0.75em; } .learndash-wrapper .learndash_mark_complete_button.ld-compact .ld-text, .learndash-wrapper #learndash_mark_complete_button.ld-compact .ld-text { padding: 0; } .learndash-wrapper .learndash_mark_complete_button.ld-button-alternate, .learndash-wrapper #learndash_mark_complete_button.ld-button-alternate { background: transparent; color: #00a2e8; padding: 0; } .learndash-wrapper .learndash_mark_complete_button.ld-button-alternate .ld-icon, .learndash-wrapper #learndash_mark_complete_button.ld-button-alternate .ld-icon { background: #00a2e8; color: white; border-radius: 100%; width: 18px; height: 18px; -webkit-box-flex: 0; -ms-flex: 0 0 18px; flex: 0 0 18px; padding: 2px; line-height: 16px; text-align: center; font-weight: bold; -webkit-transition: color 0.3s ease, background 0.3s ease; transition: color 0.3s ease, background 0.3s ease; } .learndash-wrapper .learndash_mark_complete_button.ld-button-alternate .ld-text, .learndash-wrapper #learndash_mark_complete_button.ld-button-alternate .ld-text { padding-left: 0.5em; } .learndash-wrapper .learndash_mark_complete_button.ld-button-alternate:hover, .learndash-wrapper #learndash_mark_complete_button.ld-button-alternate:hover { background: transparent; } .learndash-wrapper .learndash_mark_complete_button.ld-button-transparent, .learndash-wrapper #learndash_mark_complete_button.ld-button-transparent { color: #00a2e8; background: transparent; } .learndash-wrapper .learndash_mark_complete_button.ld-button-transparent.ld-status-complete, .learndash-wrapper #learndash_mark_complete_button.ld-button-transparent.ld-status-complete { color: #019e7c; } .learndash-wrapper .learndash_mark_complete_button.ld-button-transparent:hover, .learndash-wrapper #learndash_mark_complete_button.ld-button-transparent:hover { background: transparent; } .learndash-wrapper .learndash_mark_complete_button.ld-button-reverse, .learndash-wrapper #learndash_mark_complete_button.ld-button-reverse { background: white; color: #00a2e8; } .learndash-wrapper .learndash_mark_complete_button.ld-button-reverse:hover, .learndash-wrapper #learndash_mark_complete_button.ld-button-reverse:hover { background: #00a2e8; color: white; } .learndash-wrapper .learndash_mark_complete_button:hover, .learndash-wrapper #learndash_mark_complete_button:hover { opacity: 0.75; background-color: #00a2e8; } .learndash-wrapper .learndash_mark_complete_button:focus, .learndash-wrapper #learndash_mark_complete_button:focus { outline: none; opacity: 0.75; } .learndash-wrapper .learndash_mark_complete_button:disabled, .learndash-wrapper #learndash_mark_complete_button:disabled { cursor: pointer; -webkit-filter: grayscale(100%); /* Safari 6.0 - 9.0 */ filter: grayscale(100%); } .learndash-wrapper .ld-content-actions { clear: both; border-top: 2px solid #e2e7ed; padding: 1em 0; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; } .learndash-wrapper .ld-content-actions .ld-content-action { -webkit-box-flex: 0; -ms-flex: 0 0 185px; flex: 0 0 185px; position: relative; } .learndash-wrapper .ld-content-actions .ld-content-action .ld-course-step-back { font-size: .75em; margin: 0 20%; } .learndash-wrapper .ld-content-actions .ld-content-action + a { -ms-flex-item-align: center; -ms-grid-row-align: center; align-self: center; } .learndash-wrapper .ld-content-actions > a { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; font-size: .75em; } .learndash-wrapper .ld-content-actions .learndash_timer, .learndash-wrapper .ld-content-actions #learndash_timer { position: absolute; top: 100%; text-align: center; display: block; padding: 1em; left: 0; right: 0; color: #728188; font-weight: bold; } @media (max-width: 768px) { .learndash-wrapper .ld-content-actions { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } .learndash-wrapper .ld-content-actions .ld-content-action { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } .learndash-wrapper .ld-content-actions > * { margin-bottom: 2em; margin-left: 0; } } .learndash-wrapper .ld-mobile-only { display: none !important; } @media (max-width: 640px) { .learndash-wrapper .ld-mobile-only { display: inherit !important; } } @media (max-width: 640px) { .learndash-wrapper .ld-not-mobile { display: none !important; } } .learndash-wrapper .ld-loading { position: relative; } .learndash-wrapper .ld-loading::after { position: absolute; content: ''; display: block; z-index: 99; top: 0; left: 0; right: 0; bottom: 0; background: rgba(255, 255, 255, 0.5); } .learndash-wrapper .ld-loading::before { content: ''; display: block; position: absolute; border-radius: 50%; width: 40px; z-index: 100; height: 40px; left: 50%; top: 50%; margin: -20px 0 0 -20px; border: 3px solid rgba(0, 0, 0, 0.5); border-top: 3px solid #00a2e8; -webkit-animation: ldrotating 1.2s infinite linear; animation: ldrotating 1.2s infinite linear; } @-webkit-keyframes ldrotating { 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes ldrotating { 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } /* Targets IE10/IE11 */ @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { .learndash-wrapper .ld-expand-button { min-width: 120px; } .learndash-wrapper .ld-expand-button.ld-button-alternate .ld-icon { -ms-flex-preferred-size: 15px; flex-basis: 15px; } .learndash-wrapper .ld-status-icon.ld-status-incomplete, .learndash-wrapper .ld-status-icon.ld-status-in-progress { -ms-flex-preferred-size: 18px; flex-basis: 18px; } .learndash-wrapper .ld-course-navigation .ld-status-icon.ld-status-incomplete, .learndash-wrapper .ld-course-navigation .ld-status-icon.ld-status-in-progress { -ms-flex-preferred-size: 10px; flex-basis: 10px; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-details .ld-expand-button { min-width: 80px; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-details .ld-expand-button.ld-compact { min-width: 0; margin-right: 1em; } .learndash-wrapper .ld-item-list .ld-section-heading .ld-search-prompt { margin-right: 3em; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-actions { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } .learndash-wrapper .ld-login-modal .ld-login-modal-wrapper { width: 100%; } } .learndash-wrapper .ld-group-list { margin-bottom: 2em; } .learndash-wrapper .ld-item-list { margin: 2em 0 1em 0; } .learndash-wrapper .ld-item-list .ld-table-list.ld-no-pagination { border-bottom: 0 !important; } .learndash-wrapper .ld-item-list .ld-item-list-content { padding: 1.5em; } .learndash-wrapper .ld-item-list .ld-section-heading { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; -webkit-box-align: center; -ms-flex-align: center; align-items: center; align-items: center; } .learndash-wrapper .ld-item-list .ld-section-heading h3 { font-weight: bold; } .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; width: 100%; } .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-progress { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-progress .ld-progress-stats { -webkit-box-align: end; -ms-flex-align: end; align-items: flex-end; } .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-progress .ld-progress-label { text-transform: none; font-size: 1.5em; } .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-progress .ld-progress-bar { background-color: #e2e7ed; } .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-expand-button { margin-left: 1em; } @media (max-width: 640px) { .learndash-wrapper .ld-item-list .ld-section-heading h2, .learndash-wrapper .ld-item-list .ld-section-heading h3 { text-align: center; margin-bottom: 10px; } .learndash-wrapper .ld-item-list .ld-section-heading .ld-item-list-actions .ld-expand-button { margin: 10px auto; } } .learndash-wrapper .ld-item-list .ld-section-heading .ld-search-prompt { display: -webkit-box; display: -ms-flexbox; display: flex; color: #728188; cursor: pointer; font-weight: 800; font-size: 0.875em; -webkit-transition: color 0.3s ease; transition: color 0.3s ease; } .learndash-wrapper .ld-item-list .ld-section-heading .ld-search-prompt .ld-icon { width: 20px; height: 20px; margin-left: 5px; font-size: 1.4em; } .learndash-wrapper .ld-item-list .ld-section-heading .ld-search-prompt:hover { color: #00a2e8; } .learndash-wrapper .ld-item-list .ld-item-search { height: auto; max-height: 0px; -webkit-transition: max-height 0.3s ease; transition: max-height 0.3s ease; overflow: hidden; } .learndash-wrapper .ld-item-list .ld-item-search h4 { margin: 0; margin-bottom: 0.5em; font-weight: bold; } .learndash-wrapper .ld-item-list .ld-item-search .ld-closer { position: absolute; top: 10px; right: 15px; cursor: pointer; font-weight: 700; display: -webkit-box; display: -ms-flexbox; display: flex; font-size: 0.625em; } .learndash-wrapper .ld-item-list .ld-item-search .ld-closer:before { content: 'x'; margin-right: 0.25em; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-wrapper { padding: 12px; position: relative; background: #e2e7ed; border-radius: 6px; margin: 1em 0; overflow: visible; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-wrapper:before { content: ''; position: absolute; width: 16px; height: 16px; top: -8px; left: 66px; background: white; -webkit-transform: rotate(-45deg); -ms-transform: rotate(-45deg); transform: rotate(-45deg); z-index: 9; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-wrapper:before { background: #e2e7ed; z-index: 9; left: auto; right: 130px; } @media (max-width: 640px) { .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-wrapper:before { left: 20px; right: auto; } } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: end; -ms-flex-align: end; align-items: flex-end; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields > * { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; padding-right: 1em; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields label { display: block; margin-bottom: 0.5em; font-size: 0.875em; color: #728188; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields input, .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields select { height: 30px; border: 2px solid #ccd2d9; background: white; border-radius: 0; width: 100%; padding: 0 0.5em; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-name { position: relative; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-name .ld-reset-button { position: absolute; right: 18px; bottom: 2px; font-weight: 700; font-size: 12px; background: #fff; height: 26px; padding: 0 1em; line-height: 26px; color: #728188; text-decoration: none; display: inline-block; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-name .ld-reset-button::before { content: 'x'; margin-right: 0.25em; display: inline-block; } @media (max-width: 640px) { .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-name .ld-reset-button { right: 2px; } } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-name input[type=text] { width: 100%; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit { -webkit-box-flex: 0; -ms-flex: 0 0 100px; flex: 0 0 100px; padding-right: 0; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button { height: 30px; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; border: 0; margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; text-transform: none; font-family: inherit; font-weight: 800; font-size: 0.75em; text-align: center; text-decoration: none; cursor: pointer; width: 100%; max-width: 385px; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; display: -webkit-box; display: -ms-flexbox; display: flex; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; height: auto; padding: .75em 1.5em; margin: 0; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button .ld-icon { font-size: 0.875em; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button .ld-text { padding: 0 1em; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button + .ld-button { margin-left: 1em; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-compact { padding: 0; width: 24px; height: 24px; border-radius: 100%; -ms-flex-preferred-size: 24px; flex-basis: 24px; -ms-flex-negative: 0; flex-shrink: 0; padding: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-compact .ld-icon { margin-right: 0; font-size: 0.75em; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-compact .ld-text { padding: 0; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-alternate { background: transparent; color: #00a2e8; padding: 0; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-alternate .ld-icon { background: #00a2e8; color: white; border-radius: 100%; width: 18px; height: 18px; -webkit-box-flex: 0; -ms-flex: 0 0 18px; flex: 0 0 18px; padding: 2px; line-height: 16px; text-align: center; font-weight: bold; -webkit-transition: color 0.3s ease, background 0.3s ease; transition: color 0.3s ease, background 0.3s ease; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-alternate .ld-text { padding-left: 0.5em; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-alternate:hover { background: transparent; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-transparent { color: #00a2e8; background: transparent; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-transparent.ld-status-complete { color: #019e7c; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-transparent:hover { background: transparent; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-reverse { background: white; color: #00a2e8; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button.ld-button-reverse:hover { background: #00a2e8; color: white; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button:hover { opacity: 0.75; background-color: #00a2e8; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button:focus { outline: none; opacity: 0.75; } @media (max-width: 640px) { .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields > * { width: 100%; margin-bottom: 1em; padding-right: 0; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit { -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } .learndash-wrapper .ld-item-list .ld-item-search .ld-item-search-fields .ld-item-search-submit .ld-button { margin: auto; } } .learndash-wrapper .ld-item-list .ld-item-list-item { border: 2px solid #e2e7ed; border-radius: 6px; margin-bottom: 12px; background: #fff; } .learndash-wrapper .ld-item-list .ld-item-list-item.ld-is-next { border-color: #00a2e8; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview { padding: 20px; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-status-icon { margin-right: 0.5em; margin-top: 0.35em; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-name { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-flex: 1; -ms-flex: 1 1 100%; flex: 1 1 100%; -webkit-box-align: top; -ms-flex-align: top; align-items: top; color: #495255; } @media (max-width: 640px) { .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-name { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-sep { color: #e2e7ed; padding: 0 0.5em; } .learndash-wrapper .ld-item-list .ld-item-list-item a.ld-item-name:hover { color: #00a2e8; } .learndash-wrapper .ld-item-list .ld-item-list-item a.ld-item-name:hover .ld-item-title .ld-item-components { color: #728188; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-title .ld-item-components { font-weight: 700; display: block; font-size: 0.825em; margin-top: 0.5em; color: #728188; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-title .ld-status { display: inline-block; font-size: 0.825em; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-title .ld-item-component + .ld-status { margin-left: 0.5em; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-details { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: end; -ms-flex-pack: end; justify-content: flex-end; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-details .ld-expand-button { margin-left: 1em; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-details .ld-certificate-link { margin-right: 15px; font-size: 26px; color: #019e7c; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded { position: relative; height: auto; max-height: 0px; overflow: hidden; -webkit-transition: max-height 0.5s ease; transition: max-height 0.5s ease; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded:before { content: ''; position: absolute; width: 16px; height: 16px; top: -8px; left: 66px; background: white; -webkit-transform: rotate(-45deg); -ms-transform: rotate(-45deg); transform: rotate(-45deg); z-index: 9; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded:before { left: 64px; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-progress { background: #e2e7ed; padding: 2em 4.125em; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-item-contents { padding: 2em 4.125em; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-progress { margin-top: 0; } @media (max-width: 640px) { .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-details { margin-top: 1em; margin-left: 2em; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-details .ld-status { margin-left: 0; margin-right: 1em; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-details .ld-expand-button { margin-left: 0; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-progress, .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-item-contents { padding: 2em 1em; } .learndash-wrapper .ld-item-list .ld-item-list-item .ld-item-list-item-expanded .ld-item-contents { padding-top: 0; } } .learndash-wrapper .ld-table-list { border-radius: 6px; overflow: hidden; margin: 1.5em 0; } .learndash-wrapper .ld-table-list .ld-table-list-header, .learndash-wrapper .ld-table-list .ld-table-list-item-preview { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; -webkit-box-align: center; -ms-flex-align: center; align-items: center; padding: 20px 0; overflow-wrap: break-word; } .learndash-wrapper .ld-table-list .ld-table-list-header a, .learndash-wrapper .ld-table-list .ld-table-list-item-preview a { color: #333333; } .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-title, .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-title { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-title a, .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-title a { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-columns, .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-flex: 2; -ms-flex: 2; flex: 2; padding-left: 1em; } .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-columns .ld-table-list-column, .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; padding-left: 0.25em; padding-right: 0.25em; } .learndash-wrapper .ld-table-list a.ld-table-list-item-preview { color: #333333; } .learndash-wrapper .ld-table-list a.ld-table-list-item-preview:hover { color: #00a2e8; } .learndash-wrapper .ld-table-list .ld-table-list-header { background-color: #00a2e8; color: white; font-weight: 800; padding: 20px 22px; } .learndash-wrapper .ld-table-list .ld-table-list-items { padding: 0 20px; border: 2px solid #e2e7ed; border-top: 0; border-bottom: 0; font-size: 0.875em; overflow: hidden; } @media (max-width: 640px) { .learndash-wrapper .ld-table-list .ld-table-list-items { padding: 0 20px; } } .learndash-wrapper .ld-table-list .ld-table-list-item { border-bottom: 1px solid #e2e7ed; padding-left: 0; padding-right: 0; } .learndash-wrapper .ld-table-list .ld-table-list-item:last-child { border-bottom: 0; } .learndash-wrapper .ld-table-list .ld-table-list-item .ld-table-list-title a { color: #333333; } .learndash-wrapper .ld-table-list .ld-table-list-item .ld-table-list-title a:hover { color: #00a2e8; } .learndash-wrapper .ld-table-list .ld-table-list-item .ld-comments-column { color: #728188; font-weight: 700; font-size: 1.2em; } .learndash-wrapper .ld-table-list .ld-table-list-item .ld-comments-column a { color: #728188; } .learndash-wrapper .ld-table-list .ld-table-list-item .ld-comments-column .ld-icon-comments { font-size: 1.5em; -webkit-transform: translateY(0.2em); -ms-transform: translateY(0.2em); transform: translateY(0.2em); } .learndash-wrapper .ld-table-list .ld-table-list-item-expanded { padding: 0.75em 2em; } .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list { position: relative; } .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list:before { content: ''; position: absolute; width: 16px; height: 16px; top: -8px; left: 66px; background: white; -webkit-transform: rotate(-45deg); -ms-transform: rotate(-45deg); transform: rotate(-45deg); z-index: 9; } .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list:before { left: 32px; } .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-header { background-color: #e2e7ed; color: #495255; } .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-items { padding-top: 0; background: #e2e7ed; } .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-item:first-child { border-top: 2px solid #495255; } .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-item { border-bottom: 1px solid rgba(73, 82, 85, 0.2); } .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-item:last-child { border-bottom: 0; } .learndash-wrapper .ld-table-list .ld-table-list-item-expanded .ld-table-list .ld-table-list-item-preview { padding: 10px; padding-left: 0; padding-right: 0; } .learndash-wrapper .ld-table-list .ld-table-list-footer { background: #e2e7ed; padding: 20px; } .learndash-wrapper .ld-table-list .ld-table-list-footer .ld-pagination { margin-bottom: 0; } .learndash-wrapper .ld-table-list.ld-no-pagination { border-bottom: 2px solid #e2e7ed; } .learndash-wrapper .ld-table-list.ld-no-pagination .ld-table-list-footer { background: transparent; padding: 0; } .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-columns .ld-table-list-column { font-size: 0.75em; -webkit-box-flex: 0; -ms-flex: 0 1 150px; flex: 0 1 150px; } .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-columns .ld-table-list-column.ld-assignment-column-approved { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: right; } .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column { font-size: 0.875em; -webkit-box-flex: 0; -ms-flex: 0 1 150px; flex: 0 1 150px; line-height: 1.4em; } .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column .ld-column-label { display: none; } .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column.ld-statuscolumn { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: right; } .learndash-wrapper .ld-table-list.ld-assignment-list .ld-table-list-item-preview .ld-table-list-title { overflow: hidden; } @media (max-width: 768px) { .learndash-wrapper .ld-table-list .ld-table-list-header .ld-table-list-columns { display: none; } .learndash-wrapper .ld-table-list .ld-table-list-item-preview { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-title { width: 100%; } .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns { width: 100%; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; /*padding-left:2em;*/ padding-top: 0.5em; } .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column { -webkit-box-flex: 1; -ms-flex: 1 auto; flex: 1 auto; margin: 0 0 0.5em 0; } .learndash-wrapper .ld-table-list .ld-table-list-item-preview .ld-table-list-columns .ld-table-list-column .ld-column-label { display: inline-block; margin: 0 0 0.5em 0; } .learndash-wrapper .ld-table-list.ld-assignment-list .ld-table-list-item-preview .ld-table-list-title { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } } @media (max-width: 640px) { .learndash-wrapper .ld-lesson-list .ld-table-list-items { padding: 0; } .learndash-wrapper #ld-profile .ld-table-list .ld-table-list-item-expanded { padding: 0; } } .learndash-wrapper .ld-progress { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; margin: 1em 0; } .learndash-wrapper .ld-progress .ld-progress-heading { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; font-size: 0.75em; line-height: 1em; } .learndash-wrapper .ld-progress .ld-progress-heading .ld-progress-label { text-transform: uppercase; font-weight: 800; } .learndash-wrapper .ld-progress .ld-progress-heading .ld-progress-stats { display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } .learndash-wrapper .ld-progress .ld-progress-heading .ld-progress-stats .ld-progress-percentage { text-transform: uppercase; font-weight: 800; color: #019e7c; margin-right: 1.5em; } .learndash-wrapper .ld-progress .ld-progress-bar { height: 7px; background-color: white; border-radius: 7px; margin: 5px 0; overflow: hidden; } .learndash-wrapper .ld-progress .ld-progress-bar .ld-progress-bar-percentage { height: 7px; background: #019e7c; } .learndash-wrapper .ld-progress.ld-progress-inline { -webkit-box-orient: horizontal; -webkit-box-direction: reverse; -ms-flex-direction: row-reverse; flex-direction: row-reverse; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-progress.ld-progress-inline .ld-progress-bar { -webkit-box-flex: 1; -ms-flex: 1 auto; flex: 1 auto; margin-right: 1em; } .learndash-wrapper .ld-progress.ld-progress-inline .ld-status { margin-left: 1em; } @media (max-width: 640px) { .learndash-wrapper .ld-progress .ld-progress-heading { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .learndash-wrapper .ld-progress .ld-progress-heading.ld-progress-inline { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } } .learndash-wrapper .ld-breadcrumbs + .ld-topic-status { padding: 0; } .learndash-wrapper.learndash-widget .ld-progress { -ms-flex-wrap: wrap; flex-wrap: wrap; } .learndash-wrapper.learndash-widget .ld-progress .ld-progress-heading { -webkit-box-ordinal-group: 2; -ms-flex-order: 1; order: 1; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; margin: 0.25em 0; } .learndash-wrapper.learndash-widget .ld-progress .ld-progress-bar { background-color: #e2e7ed; width: 100%; margin-right: 0; } .learndash-pager { color: #728188; display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; color: #728188; text-transform: uppercase; -webkit-box-align: center; -ms-flex-align: center; align-items: center; font-size: 12px; font-weight: 700; background-color: #e2e7ed; padding: 6px 12px; border-radius: 17px; margin: 10px 0; } .learndash-pager a { font-size: 18px; color: #728188; text-decoration: none !important; border: none !important; cursor: pointer; -webkit-box-shadow: none !important; box-shadow: none !important; line-height: 1em; } .learndash-pager a::before, .learndash-pager a::after { display: none; } .learndash-pager a.disabled { opacity: 0.5; cursor: default; } .learndash-pager .pager-left { -webkit-box-ordinal-group: 2; -ms-flex-order: 1; order: 1; } .learndash-pager .pager-legend { -webkit-box-ordinal-group: 3; -ms-flex-order: 2; order: 2; padding: 0 8px; } .learndash-pager .pager-right { -webkit-box-ordinal-group: 4; -ms-flex-order: 3; order: 3; } .learndash-wrapper .ld-pagination { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: end; -ms-flex-pack: end; justify-content: flex-end; color: #728188; text-transform: uppercase; -webkit-box-align: center; -ms-flex-align: center; align-items: center; font-size: 0.75em; font-weight: 700; margin-bottom: 1em; } .learndash-wrapper .ld-pagination .ld-pages { background-color: #e2e7ed; -webkit-box-flex: 0; -ms-flex: 0 0 180px; flex: 0 0 180px; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; -webkit-box-align: center; -ms-flex-align: center; align-items: center; padding: 0.5em; border-radius: 17px; overflow: hidden; line-height: 1; } .learndash-wrapper .ld-pagination .ld-pages i { display: block; background-size: contain; background-position: center; background-repeat: no-repeat; color: #728188; cursor: pointer; -webkit-transition: color 0.3s ease; transition: color 0.3s ease; } .learndash-wrapper .ld-pagination .ld-pages i:hover { color: #00a2e8; } .learndash-wrapper .ld-pagination .ld-pages a { color: #728188; -webkit-transition: all ease-in-out 250ms; transition: all ease-in-out 250ms; } .learndash-wrapper .ld-pagination .ld-pages a:hover { color: #333; } .learndash-wrapper .ld-pagination .ld-pages a.disabled { pointer-events: none; opacity: 0.25; } @media (max-width: 640px) { .learndash-wrapper .ld-pagination { -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } } .learndash-wrapper .ld-item-list-item-expanded .ld-pagination .ld-pages { -webkit-box-flex: 0; -ms-flex: 0 0 100px; flex: 0 0 100px; padding: 0 10px; } .learndash-wrapper .ld-table-list-footer .ld-pagination .ld-pages { -webkit-box-flex: 0; -ms-flex: 0 0 120px; flex: 0 0 120px; } .learndash-wrapper .ld-section-heading h3 { font-size: 24px; margin: 0.5em 0; } .learndash-wrapper .ld-score { font-weight: 700; } .learndash-wrapper .ld-score.score-low { color: #ff3c00; } .learndash-wrapper .ld-score.score-high { color: #019e7c; } .learndash-wrapper .ld-expand-button { margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; text-transform: none; font-family: inherit; font-weight: 800; font-size: 0.75em; text-align: center; text-decoration: none; cursor: pointer; width: 100%; max-width: 385px; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; height: auto; padding: .75em 1.5em; display: flex; align-items: center; } .learndash-wrapper .ld-expand-button .ld-icon { font-size: 0.875em; } .learndash-wrapper .ld-expand-button .ld-text { padding: 0 1em; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } .learndash-wrapper .ld-expand-button + .ld-button { margin-left: 1em; } .learndash-wrapper .ld-expand-button.ld-compact { padding: 0; width: 24px; height: 24px; border-radius: 100%; -ms-flex-preferred-size: 24px; flex-basis: 24px; -ms-flex-negative: 0; flex-shrink: 0; padding: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .ld-expand-button.ld-compact .ld-icon { margin-right: 0; font-size: 0.75em; } .learndash-wrapper .ld-expand-button.ld-compact .ld-text { padding: 0; } .learndash-wrapper .ld-expand-button.ld-button-alternate { background: transparent; color: #00a2e8; padding: 0; } .learndash-wrapper .ld-expand-button.ld-button-alternate .ld-icon { background: #00a2e8; color: white; border-radius: 100%; width: 18px; height: 18px; -webkit-box-flex: 0; -ms-flex: 0 0 18px; flex: 0 0 18px; padding: 2px; line-height: 16px; text-align: center; font-weight: bold; -webkit-transition: color 0.3s ease, background 0.3s ease; transition: color 0.3s ease, background 0.3s ease; } .learndash-wrapper .ld-expand-button.ld-button-alternate .ld-text { padding-left: 0.5em; } .learndash-wrapper .ld-expand-button.ld-button-alternate:hover { background: transparent; } .learndash-wrapper .ld-expand-button.ld-button-transparent { color: #00a2e8; background: transparent; } .learndash-wrapper .ld-expand-button.ld-button-transparent.ld-status-complete { color: #019e7c; } .learndash-wrapper .ld-expand-button.ld-button-transparent:hover { background: transparent; } .learndash-wrapper .ld-expand-button.ld-button-reverse { background: white; color: #00a2e8; } .learndash-wrapper .ld-expand-button.ld-button-reverse:hover { background: #00a2e8; color: white; } .learndash-wrapper .ld-expand-button:hover { opacity: 0.75; background-color: #00a2e8; } .learndash-wrapper .ld-expand-button:focus { outline: none; opacity: 0.75; } .learndash-wrapper .ld-expand-button.ld-expanded .ld-icon { -webkit-transform: rotate(-180deg); -ms-transform: rotate(-180deg); transform: rotate(-180deg); } .learndash-wrapper .ld-expand-button.ld-button-alternate .ld-text { text-align: left; } .learndash-wrapper .ld-status { border-radius: 12px; background-color: #e2e7ed; text-align: center; padding: 5px 12px; text-transform: uppercase; font-weight: 700; letter-spacing: 0.5px; font-size: 11px; line-height: 1.1; color: #728188; display: block; } .learndash-wrapper .ld-status-icon { -ms-flex-preferred-size: 26px; flex-basis: 26px; -ms-flex-negative: 0; flex-shrink: 0; height: 26px; width: 26px; border-radius: 100%; display: inline-block; position: relative; text-align: center; } .learndash-wrapper .ld-status-icon .ld-icon { font-size: 1.5em; } .learndash-wrapper .ld-status-icon .ld-icon:before { position: absolute; top: 50%; left: 50%; -webkit-transform: translateY(-50%) translateX(-50%); -ms-transform: translateY(-50%) translateX(-50%); transform: translateY(-50%) translateX(-50%); } .learndash-wrapper .ld-status-icon.ld-status-complete .ld-icon { font-size: 1em; } .learndash-wrapper .ld-status-icon.ld-quiz-complete { color: #019e7c; } .learndash-wrapper .ld-status-complete { background-color: #019e7c; color: white; } .learndash-wrapper a.ld-status-complete:link, .learndash-wrapper a.ld-status-complete:visited, .learndash-wrapper a.ld-status-complete:focus { color: white; } .learndash-wrapper .ld-status-waiting { background-color: #ffd200; color: rgba(0, 0, 0, 0.65); } .learndash-wrapper .ld-status-unlocked { background-color: #ebf8fd; color: #00a2e8; } .learndash-wrapper .ld-status-incomplete.ld-status-icon { border: 4px solid #e2e7ed; background-color: white; } .learndash-wrapper .ld-status-in-progress { border: 4px solid #e2e7ed; border-left-color: #019e7c; border-top-color: #019e7c; -webkit-transform: rotate(-45deg); -ms-transform: rotate(-45deg); transform: rotate(-45deg); background-color: white; } .learndash-wrapper .ld-certificate-icon { width: 40px; height: 30px; background: #019e7c; display: block; margin: auto; } .learndash-wrapper .ld-item-icon { margin-right: 0.25em; -ms-flex-negative: 0; flex-shrink: 0; font-size: 1.4em; } .learndash-wrapper .ld-item-icon.quiz-failure { /*background:rgba($orange, 0.6);*/ color: #ff3c00; } .learndash-wrapper .ld-item-icon.ld-quiz-complete { /*background:rgba($green, 0.6);*/ color: #019e7c; } .learndash-wrapper .ld-item-icon.ld-quiz-incomplete { color: #333333; } .learndash-wrapper .ld-icon-delete { font-size: 1.8em; color: #7b8990; margin-right: 0.25em; } .learndash-wrapper .ld-icon-delete:hover { color: #333333; } .learndash-wrapper .ld-home-link { color: #495255; font-size: 0.75em; margin: 0 0 0.75em 0; text-decoration: underline; } .learndash-wrapper .ld-home-link:hover { text-decoration: none; } .learndash-wrapper .ld-text-content { color: #666666; line-height: 1.6; margin: 1.5em 0; } .learndash-wrapper .ld-select-field { position: relative; } .learndash-wrapper .ld-select-field:after { font-family: 'ld-icons' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; display: inline-block; content: "\e90e"; position: absolute; top: 50%; right: 0.5em; z-index: 9; -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); pointer-events: none; } .learndash-wrapper .ld-select-field select { -webkit-appearance: none; -moz-appearance: none; appearance: none; } .learndash-wrapper .ld-file-upload { padding: 1.5em; background-color: #f0f3f6; border-radius: 6px; margin: 1em 0; } .learndash-wrapper .ld-file-upload .ld-file-upload-heading { color: #728188; font-size: 1.2em; font-weight: 700; } .learndash-wrapper .ld-file-upload .ld-file-upload-heading span { font-weight: 300; font-size: 0.8em; } .learndash-wrapper .ld-file-upload .ld-file-upload-form { display: -webkit-box; display: -ms-flexbox; display: flex; margin-top: 1em; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input { width: 0.1px; height: 0.1px; opacity: 0; overflow: hidden; position: absolute; z-index: -1; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input + label { font-weight: 700; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; background-color: white; border-top-left-radius: 12px; border-bottom-left-radius: 12px; overflow: hidden; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input + label strong { background-color: #728188; font-weight: 700; color: white; padding: 0.5em 2em; font-size: 0.875em; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input + label span { color: #333333; font-size: 0.875em; font-style: italic; border-top-right-radius: 12px; border-bottom-right-radius: 12px; padding: 0.5em 2em; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-button { -webkit-box-flex: 0; -ms-flex: 0 0 150px; flex: 0 0 150px; height: 35px; text-align: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; font-size: 0.875em; opacity: 0.5; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-selected + .ld-button { opacity: 1; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input + label { cursor: pointer; border-top-right-radius: 12px; border-bottom-right-radius: 12px; margin-right: 0.5em; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input:focus + label, .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input.has-focus + label { outline: 1px dotted #000; outline: -webkit-focus-ring-color auto 5px; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-upload-message { font-size: 0.8em; margin-top: 1em; line-height: 1.5em; } @media (max-width: 640px) { .learndash-wrapper .ld-file-upload .ld-file-upload-form { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input + label { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; border-radius: 0; text-align: center; width: 100%; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input + label strong, .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-file-input + label span { width: 100%; } .learndash-wrapper .ld-file-upload .ld-file-upload-form .ld-button { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; margin-top: 1em; } } .learndash-wrapper .ld-hide { display: none; } .learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading, .learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading { margin-bottom: 1.5em; } .learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading h2, .learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading h2 { margin: 0; padding: 0; font-size: 24px; } .learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading .ld-item-list-actions, .learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading .ld-item-list-actions { width: auto; -webkit-box-pack: end; -ms-flex-pack: end; justify-content: flex-end; } @media (max-width: 640px) { .learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading, .learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading { margin-bottom: 0.5em; margin-top: 0.5em; -ms-flex-wrap: wrap; flex-wrap: wrap; } .learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading h2, .learndash-wrapper .ld-item-list.ld-course-list .ld-section-heading .ld-item-list-actions, .learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading h2, .learndash-wrapper .ld-item-list.ld-lesson-list .ld-section-heading .ld-item-list-actions { -webkit-box-flex: 0; -ms-flex: 0 0 100%; flex: 0 0 100%; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; } } .learndash-wrapper .ld-item-list.ld-course-list .ld-lesson-section-heading, .learndash-wrapper .ld-item-list.ld-lesson-list .ld-lesson-section-heading { font-size: 18px; display: block; margin: 1em 0 0.5em 0; font-weight: bold; } .learndash-wrapper { /* Lesson list in table format */ } .learndash-wrapper .ld-lesson-list.ld-item-list .ld-item-list-item .ld-table-list { border-radius: 0; margin-top: 0; margin: 0; } .learndash-wrapper .ld-lesson-list.ld-item-list .ld-item-list-item .ld-table-list .ld-table-list-items { border: 0; } .learndash-wrapper .ld-item-list.ld-lesson-list .ld-topic-list .ld-table-list-header { padding: 20px 60px; } .learndash-wrapper .ld-item-list.ld-lesson-list .ld-topic-list .ld-table-list-item { margin: 0 2.8em; } @media (max-width: 768px) { .learndash-wrapper .ld-item-list.ld-lesson-list .ld-topic-list .ld-table-list-header { padding-left: 1em; padding-right: 1em; } .learndash-wrapper .ld-item-list.ld-lesson-list .ld-topic-list .ld-table-list-item { margin: 0 1em; } } .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-lesson-details { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; font-size: 0.75em; line-height: 1em; } .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-lesson-details .ld-lesson-list-progress { text-transform: uppercase; padding-right: 10px; margin-right: 10px; border-right: 1px solid rgba(255, 255, 255, 0.5); } .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-lesson-details .ld-lesson-list-steps { font-weight: normal; } .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-preview { -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-preview .ld-status-icon { margin-right: 0.5em; } .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-expanded { padding-top: 0; } .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-expanded .ld-status { display: inline-block; } .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-item.unavailable .ld-table-list-item-preview { opacity: 0.5; } @media (max-width: 640px) { .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-header { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-align: stretch; -ms-flex-align: stretch; align-items: stretch; } .learndash-wrapper .ld-topic-list.ld-table-list .ld-table-list-lesson-details { margin: 1em 2.9em; } } .learndash-wrapper .ld-topic-status { border-radius: 6px; background: #f0f3f6; overflow: hidden; } .learndash-wrapper .ld-topic-status .ld-progress { padding: 0 1em; } .learndash-wrapper .quiz_continue_link { display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-pack: distribute; justify-content: space-around; margin: 10px; } .learndash-wrapper .ld-quiz-actions { border-top: 2px solid #f0f3f6; margin-top: 30px; padding-top: 30px; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; margin: 20px 0; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: horizontal; -webkit-box-direction: reverse; -ms-flex-direction: row-reverse; flex-direction: row-reverse; } .learndash-wrapper .ld-quiz-actions .quiz_continue_link { margin: 0 10px; } .learndash-wrapper .ld-quiz-actions .wpProQuiz_button { margin: 0 10px; background: #495255; } .learndash-wrapper .ld-quiz-actions input[type='button'] { margin: 0 10px; } .learndash-wrapper .ld-quiz-actions input[name="reShowQuestion"], .learndash-wrapper .ld-quiz-actions input[name="restartQuiz"] { background: #495255; } @media (max-width: 768px) { .learndash-wrapper .ld-quiz-actions { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .learndash-wrapper .ld-quiz-actions .quiz_continue_link, .learndash-wrapper .ld-quiz-actions .wpProQuiz_button, .learndash-wrapper .ld-quiz-actions input[type='button'] { margin-bottom: 1em; margin-left: auto; margin-right: auto; width: auto; } } .learndash-wrapper #quiz_continue_link { background: #019e7c; } .learndash-wrapper #quiz_continue_link:hover { background: #019e7c; } .learndash-wrapper .course_progress { height: 7px; max-width: 100%; background-color: #f0f3f6; border-radius: 7px; margin: 1em 0; overflow: hidden; } .learndash-wrapper .course_progress .sending_progress_bar { height: 7px; background: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_lock, .learndash-wrapper .wpProQuiz_content .wpProQuiz_loadQuiz, .learndash-wrapper .wpProQuiz_content .wpProQuiz_prerequisite, .learndash-wrapper .wpProQuiz_content .wpProQuiz_startOnlyRegisteredUser { padding: 25px 15px 25px 75px; /* padding: 10px; */ background-color: #f0f3f6; border-radius: 6px; margin: 1em 0; border: 2px solid #e2e7ed; color: #728188; position: relative; min-height: 85px; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_lock p, .learndash-wrapper .wpProQuiz_content .wpProQuiz_loadQuiz p, .learndash-wrapper .wpProQuiz_content .wpProQuiz_prerequisite p, .learndash-wrapper .wpProQuiz_content .wpProQuiz_startOnlyRegisteredUser p { margin: 0; padding: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable { border: 5px solid #f0f3f6; border-radius: 4px; padding: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable table, .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable table tbody { border: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable table tbody td { padding: 15px; border: 0 !important; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable .wpProQuiz_resultValue div { -webkit-box-shadow: none; box-shadow: none; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_resultTable .wpProQuiz_resultName { line-height: 1.2em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_certificate { text-align: center; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_certificate a.btn-blue { margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; display: inline-block; text-transform: none; font-family: inherit; font-weight: 800; font-size: .75em; display: inline-block; padding: 0.5em 1em; text-align: center; -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; -webkit-box-align: center; -ms-flex-align: center; align-items: center; text-decoration: none; cursor: pointer; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity .3s ease; transition: opacity .3s ease; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2 { margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; text-transform: none; font-family: inherit; font-weight: 800; font-size: 0.75em; text-align: center; text-decoration: none; cursor: pointer; width: 100%; max-width: 385px; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; height: auto; padding: .75em 1.5em; /* max-width:185px; */ width: auto; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button .ld-icon, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2 .ld-icon { font-size: 0.875em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button .ld-text, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2 .ld-text { padding: 0 1em; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button + .ld-button, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2 + .ld-button { margin-left: 1em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-compact, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-compact { padding: 0; width: 24px; height: 24px; border-radius: 100%; -ms-flex-preferred-size: 24px; flex-basis: 24px; -ms-flex-negative: 0; flex-shrink: 0; padding: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-compact .ld-icon, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-compact .ld-icon { margin-right: 0; font-size: 0.75em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-compact .ld-text, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-compact .ld-text { padding: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-alternate, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-alternate { background: transparent; color: #00a2e8; padding: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-alternate .ld-icon, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-alternate .ld-icon { background: #00a2e8; color: white; border-radius: 100%; width: 18px; height: 18px; -webkit-box-flex: 0; -ms-flex: 0 0 18px; flex: 0 0 18px; padding: 2px; line-height: 16px; text-align: center; font-weight: bold; -webkit-transition: color 0.3s ease, background 0.3s ease; transition: color 0.3s ease, background 0.3s ease; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-alternate .ld-text, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-alternate .ld-text { padding-left: 0.5em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-alternate:hover, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-alternate:hover { background: transparent; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-transparent, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-transparent { color: #00a2e8; background: transparent; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-transparent.ld-status-complete, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-transparent.ld-status-complete { color: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-transparent:hover, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-transparent:hover { background: transparent; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-reverse, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-reverse { background: white; color: #00a2e8; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.ld-button-reverse:hover, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.ld-button-reverse:hover { background: #00a2e8; color: white; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button:hover, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2:hover { opacity: 0.75; background-color: #00a2e8; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button:focus, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2:focus { outline: none; opacity: 0.75; } @media (max-width: 640px) { .learndash-wrapper .wpProQuiz_content .wpProQuiz_button, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2 { margin-right: auto !important; margin-left: auto !important; margin-bottom: 1em; float: none !important; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_button.wpProQuiz_TipButton, .learndash-wrapper .wpProQuiz_content .wpProQuiz_button2.wpProQuiz_TipButton { display: inline; margin: auto; padding: 0.25em 0.5em; width: auto; } } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link { margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; text-transform: none; font-family: inherit; font-weight: 800; font-size: 0.75em; text-align: center; text-decoration: none; cursor: pointer; width: 100%; max-width: 385px; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; height: auto; padding: .75em 1.5em; text-align: center; -ms-flex-pack: distribute; justify-content: space-around; background: #019e7c; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link .ld-icon { font-size: 0.875em; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link .ld-text { padding: 0 1em; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link + .ld-button { margin-left: 1em; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-compact { padding: 0; width: 24px; height: 24px; border-radius: 100%; -ms-flex-preferred-size: 24px; flex-basis: 24px; -ms-flex-negative: 0; flex-shrink: 0; padding: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-compact .ld-icon { margin-right: 0; font-size: 0.75em; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-compact .ld-text { padding: 0; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-alternate { background: transparent; color: #00a2e8; padding: 0; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-alternate .ld-icon { background: #00a2e8; color: white; border-radius: 100%; width: 18px; height: 18px; -webkit-box-flex: 0; -ms-flex: 0 0 18px; flex: 0 0 18px; padding: 2px; line-height: 16px; text-align: center; font-weight: bold; -webkit-transition: color 0.3s ease, background 0.3s ease; transition: color 0.3s ease, background 0.3s ease; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-alternate .ld-text { padding-left: 0.5em; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-alternate:hover { background: transparent; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-transparent { color: #00a2e8; background: transparent; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-transparent.ld-status-complete { color: #019e7c; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-transparent:hover { background: transparent; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-reverse { background: white; color: #00a2e8; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link.ld-button-reverse:hover { background: #00a2e8; color: white; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link:hover { opacity: 0.75; background-color: #00a2e8; } .learndash-wrapper .wpProQuiz_content a#quiz_continue_link:focus { outline: none; opacity: 0.75; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_question { padding-bottom: 1em; } .learndash-wrapper .wpProQuiz_content ul.wpProQuiz_questionList { margin: 1em 0; background: transparent; border: 0; padding: 0; list-style: none; padding-left: 0 !important; margin-left: 0 !important; /* .MathJax span { display: inline; } */ } .learndash-wrapper .wpProQuiz_content ul.wpProQuiz_questionList[data-type="essay"] li.wpProQuiz_questionListItem { -ms-flex-wrap: wrap; flex-wrap: wrap; } .learndash-wrapper .wpProQuiz_content ul.wpProQuiz_questionList input.wpProQuiz_questionInput { max-width: 100%; width: 2%; } .learndash-wrapper .wpProQuiz_content ul.wpProQuiz_questionList span { margin-right: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewQuestion { padding: 5px; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewQuestion ol { margin: 0 !important; padding: 0 !important; line-height: 1.5em !important; } .learndash-wrapper .wpProQuiz_content .graded-disclaimer { margin-top: 1em; font-size: 0.85em; font-style: italic; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_matrixSortString { margin: 1em 0; background: transparent; border: 0; padding: 0; } .learndash-wrapper .wpProQuiz_content ul.wpProQuiz_sortStringList { padding: 0; margin: 1em 0 !important; padding: 0 !important; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_sortStringItem { display: inline-block; border: 0; background: #f0f3f6; border-radius: 6px; margin: 0 0.5em 0.5em 0; padding: 0.5em 1em; -webkit-box-shadow: none; box-shadow: none; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_mextrixTr .wpProQuiz_sortStringItem { margin: 0.5em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_tipp > div { background-color: #f0f3f6; padding: 1em; border-radius: 6px; margin: 1em 0; width: auto; -webkit-box-shadow: 0; box-shadow: 0; border: 0; margin-left: 1em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_tipp > div:before { content: ''; position: absolute; width: 16px; height: 16px; top: -8px; left: 66px; background: white; -webkit-transform: rotate(-45deg); -ms-transform: rotate(-45deg); transform: rotate(-45deg); z-index: 9; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_tipp > div:before { left: 1em; bottom: -4px; top: auto; background-color: #f0f3f6; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_tipp > div h5 { padding-bottom: 0; font-weight: bold; text-transform: uppercase; font-size: 0.8em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="cloze_answer"] p { padding-bottom: 0; padding-right: 0.25em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem { margin-bottom: 0.5em; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem p { text-align: left; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem .wpProQuiz_sortable { border: 2px solid #e2e7ed; border-radius: 6px; background: transparent; display: -webkit-box; display: -ms-flexbox; display: flex; padding: 1em; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-shadow: none; box-shadow: none; width: 100%; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem .wpProQuiz_sortable:before { font-family: 'ld-icons' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; display: inline-block; content: "\e904"; margin-right: 1em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem span.wpProQuiz_cloze { margin: 0 5px; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; border: 2px solid #e2e7ed; border-radius: 6px; padding: 1em; width: 100%; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label input { margin-right: 1em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label input.wpProQuiz_questionInput[type='text'] { border: 0; -webkit-box-shadow: none; box-shadow: none; width: 100%; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label.is-selected, .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem label:focus-within { border-color: #00a2e8; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem textarea.wpProQuiz_questionEssay { border: 2px solid #e2e7ed; border-radius: 6px; width: 100%; padding: 1em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect { background: transparent; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect label { background: #019e7c; color: white; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect .wpProQuiz_sortable { background: #019e7c; color: white; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerIncorrect { background: transparent; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerIncorrect label { border-color: red; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerIncorrect .wpProQuiz_sortable { border-color: red; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrectIncomplete { background: transparent; border: 1px solid transparent !important; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrectIncomplete label { border-color: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrectIncomplete .wpProQuiz_sortable { border-color: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem .wpProQuiz_cloze { display: inline-block; background: #e2e7ed; border-radius: 6px; padding: 2px 0.5em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem .wpProQuiz_cloze input { border: 0; background-color: transparent; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem > table { border-collapse: separate; border: 0; /* height:100%; */ border: 2px solid #e2e7ed; border-radius: 6px; /* tr { height:100%; } */ } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem > table td { border: 0; padding: 0 !important; /* height:100%; */ vertical-align: top; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem > table td:first-child { border-right: 2px solid #e2e7ed; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem > table td .wpProQuiz_maxtrixSortText { display: block; /* border:2px solid $border-grey; border-radius:$border-radius; */ padding: 1em; border-top-right-radius: 0; border-bottom-right-radius: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem > table td .wpProQuiz_maxtrixSortCriterion { padding: 0.5em; /* border:2px solid $border-grey; border-radius:$border-radius; */ border-left: 0; height: 100%; border-top-left-radius: 0; border-bottom-left-radius: 0; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect > table { border-color: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect > table td { background-color: #019e7c; border-color: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect > table td .wpProQuiz_maxtrixSortText { background-color: none; color: none; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerCorrect > table td .wpProQuiz_maxtrixSortCriterion .wpProQuiz_sortStringItem { background-color: none; color: none; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerIncorrect > table { border-color: red; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionListItem.wpProQuiz_answerIncorrect > table td { border-color: red; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="assessment_answer"] .wpProQuiz_questionListItem { border: 2px solid #e2e7ed; border-radius: 6px; padding: 1em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="assessment_answer"] .wpProQuiz_questionListItem p { margin: 0; padding: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="assessment_answer"] label { display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; color: #728188; padding: 0; border: 0; margin: 0 0.25em; width: auto; font-weight: bold; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="assessment_answer"] label input { margin-right: 0.5em; height: 0.8em; width: 0.8em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="cloze_answer"] .wpProQuiz_questionListItem .wpProQuiz_cloze .wpProQuiz_answerCorrect { background-color: #019e7c; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_questionList[data-type="cloze_answer"] .wpProQuiz_questionListItem .wpProQuiz_cloze .wpProQuiz_answerIncorrect { background-color: red; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_header { font-weight: bold; margin: 0.5em 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_response { padding: 25px 15px 25px 75px; /* padding: 10px; */ background-color: #f0f3f6; border-radius: 6px; margin: 1em 0; border: 2px solid #e2e7ed; color: #728188; position: relative; min-height: 85px; padding: 25px; background-color: #f0f3f6; text-align: center; -webkit-box-shadow: none; box-shadow: none; min-height: none; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_response p { margin: 0; padding: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_response img { max-width: 100%; height: auto; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_listItem .wpProQuiz_question ul.wpProQuiz_questionList { margin: 0; padding: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_listItem[data-type="cloze_answer"] .wpProQuiz_questionListItem { display: block; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_time_limit { margin: 1em 0; background-color: #e2e7ed; border-radius: 6px; position: relative; padding: 1em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_time_limit:before { content: ''; position: absolute; bottom: 1em; left: 1em; right: 1em; height: 7px; z-index: 8; background: white; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_time_limit .time { color: #728188; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_time_limit .wpProQuiz_progress { z-index: 9; position: relative; background-color: #019e7c; height: 7px; margin-bottom: 0; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table { width: 100%; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td:first-child { width: 150px; font-size: 0.9em; font-weight: 700; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td input[type=text], .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td select, .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td textarea { width: 100%; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='5'] label, .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='8'] label { display: inline-block; margin-left: 0.5em; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='6'] { display: -webkit-box; display: -ms-flexbox; display: flex; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='6'] select { margin-right: 1%; } @media (max-width: 640px) { .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='6'] { -ms-flex-wrap: wrap; flex-wrap: wrap; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='6'] select { margin-bottom: 1em; -webkit-box-flex: 1; -ms-flex: 1 0 50%; flex: 1 0 50%; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_forms table tr td .wpProQuiz_formFields[data-type='6'] select:first-child { -webkit-box-flex: 0; -ms-flex: 0 0 100%; flex: 0 0 100%; } } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] { padding: 1.5em; background-color: #f0f3f6; border-radius: 6px; margin: 1em 0; margin: 1em 0; -webkit-box-flex: 0; -ms-flex: 0 0 100%; flex: 0 0 100%; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=file] { background: white; padding: 1em; border-radius: 6px; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; margin-right: 1em; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit] { margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; text-transform: none; font-family: inherit; font-weight: 800; font-size: 0.75em; text-align: center; text-decoration: none; cursor: pointer; width: 100%; max-width: 385px; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; height: auto; padding: .75em 1.5em; max-width: 100px; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit] .ld-icon { font-size: 0.875em; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit] .ld-text { padding: 0 1em; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit] + .ld-button { margin-left: 1em; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-compact { padding: 0; width: 24px; height: 24px; border-radius: 100%; -ms-flex-preferred-size: 24px; flex-basis: 24px; -ms-flex-negative: 0; flex-shrink: 0; padding: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-compact .ld-icon { margin-right: 0; font-size: 0.75em; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-compact .ld-text { padding: 0; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-alternate { background: transparent; color: #00a2e8; padding: 0; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-alternate .ld-icon { background: #00a2e8; color: white; border-radius: 100%; width: 18px; height: 18px; -webkit-box-flex: 0; -ms-flex: 0 0 18px; flex: 0 0 18px; padding: 2px; line-height: 16px; text-align: center; font-weight: bold; -webkit-transition: color 0.3s ease, background 0.3s ease; transition: color 0.3s ease, background 0.3s ease; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-alternate .ld-text { padding-left: 0.5em; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-alternate:hover { background: transparent; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-transparent { color: #00a2e8; background: transparent; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-transparent.ld-status-complete { color: #019e7c; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-transparent:hover { background: transparent; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-reverse { background: white; color: #00a2e8; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit].ld-button-reverse:hover { background: #00a2e8; color: white; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit]:hover { opacity: 0.75; background-color: #00a2e8; } .learndash-wrapper .wpProQuiz_content form[name=uploadEssay] input[type=submit]:focus { outline: none; opacity: 0.75; } .learndash-wrapper .wpProQuiz_quiz_time { color: #728188; font-weight: bold; font-size: 0.8em; } .learndash-wrapper .wpProQuiz_graded_points, .learndash-wrapper .wpProQuiz_points { padding: 1em; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; background-color: #f0f3f6; border-radius: 6px; margin: 1em 0; border: 2px solid #e2e7ed; color: #728188; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_box { background: #f0f3f6; border: 0; border-radius: 3px; overflow: auto; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li { -webkit-box-shadow: 0; box-shadow: 0; border: 0; border-radius: 2px; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionTarget { -webkit-box-shadow: 0; box-shadow: 0; background-color: #00a2e8; color: #fff; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionSolved { color: #fff; } .learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionReview { color: #fff; } .learndash-wrapper .wpProQuiz_reviewDiv { margin-bottom: 2em; padding-bottom: 2em; border-bottom: 2px solid #f0f3f6; } .learndash-wrapper .wpProQuiz_reviewDiv .wpProQuiz_reviewQuestion { background: #f0f3f6; border: 0; border-radius: 3px; } .learndash-wrapper .wpProQuiz_reviewDiv .wpProQuiz_reviewQuestion li { -webkit-box-shadow: 0; box-shadow: 0; border: 0; border-radius: 2px; } .learndash-wrapper .wpProQuiz_reviewDiv .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionTarget { -webkit-box-shadow: 0; box-shadow: 0; background-color: #00a2e8; color: #fff; } .learndash-wrapper .wpProQuiz_reviewDiv .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionSolved { color: #fff; } .learndash-wrapper .wpProQuiz_reviewDiv .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionReview { color: #fff; } .learndash-wrapper { /* Lesson list in course navigation */ /* Topic list in course navigation */ } .learndash-wrapper .ld-course-navigation .ld-course-navigation-heading { border-bottom: 4px solid #e2e7ed; padding-bottom: 12px; } .learndash-wrapper .ld-course-navigation .ld-course-navigation-heading h3 { margin-top: 0; } .learndash-wrapper .ld-course-navigation .ld-course-navigation-actions .ld-home-link { display: block; } .learndash-wrapper .ld-course-navigation .ld-course-navigation-actions .ld-expand-button { margin-left: 0; font-size: 12px; } .learndash-wrapper .ld-course-navigation .ld-course-navigation-actions .ld-expand-button .ld-icon { font-size: 10px; } .learndash-wrapper .ld-course-navigation .ld-status-icon { width: 15px; height: 15px; -webkit-box-flex: 0; -ms-flex: 0 0 15px; flex: 0 0 15px; border: 0; text-align: center; margin-right: 10px; margin-top: 0.15em; } .learndash-wrapper .ld-course-navigation .ld-status-icon .ld-icon-checkmark { font-size: 0.825em; margin-top: 1px; } .learndash-wrapper .ld-course-navigation .ld-status-icon.ld-status-in-progress { border: 2px solid #e2e7ed; border-left-color: #019e7c; border-top-color: #019e7c; } .learndash-wrapper .ld-course-navigation .ld-status-icon.ld-status-incomplete { border: 2px solid #e2e7ed; } .learndash-wrapper .ld-course-navigation .ld-status-icon .ld-icon-quiz { font-size: 1.1em; margin-top: -2px; } .learndash-wrapper .ld-course-navigation .ld-item-icon { width: 14px; height: 20px; font-size: 1em; } .learndash-wrapper .ld-course-navigation .ld-pagination { -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; margin: 1em 0; } .learndash-wrapper .ld-course-navigation .ld-pagination .ld-pages { -webkit-box-flex: 0; -ms-flex: 0 0 120px; flex: 0 0 120px; background-color: #728188; } .learndash-wrapper .ld-course-navigation .ld-pagination .ld-pages i, .learndash-wrapper .ld-course-navigation .ld-pagination .ld-pages span { color: white; } .learndash-wrapper .ld-course-navigation .ld-lesson-item { border-bottom: 1px solid #e2e7ed; } .learndash-wrapper .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-lesson-item-preview-heading, .learndash-wrapper .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-lesson-title { color: #00a2e8; font-weight: bold; } .learndash-wrapper .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-lesson-item-preview-heading .ld-status-incomplete, .learndash-wrapper .ld-course-navigation .ld-lesson-item.ld-is-current-lesson .ld-lesson-title .ld-status-incomplete { border: 2px solid #00a2e8; } .learndash-wrapper .ld-course-navigation .ld-sep { color: #e2e7ed; padding: 0 0.25em; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-section-heading { margin-top: 1em; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-section-heading .ld-lesson-section-heading { font-size: 1em; font-weight: bold; margin-bottom: 0.25em; text-align: left; display: block; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview { padding: 10px 0; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-lesson-item-preview-heading { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-flow: row wrap; flex-flow: row wrap; line-height: 1.25em; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview a.ld-lesson-item-preview-heading { color: #495255; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview a.ld-lesson-item-preview-heading:hover { color: #00a2e8; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-lesson-title { font-size: 0.875em; font-weight: 400; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; display: -webkit-box; display: -ms-flexbox; display: flex; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-lesson-title .ld-status-icon { margin-left: 0.5em; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-lesson-title .ld-status-icon .ld-icon { font-size: 0.825em; margin-top: 1px; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-expand-button { -ms-flex-preferred-size: 100%; flex-basis: 100%; -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; padding-left: 2em; padding-top: 0.5em; color: #728188; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-preview .ld-expand-button .ld-icon { font-size: 0.625em; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-expanded { height: auto; max-height: 0px; -webkit-transition: max-height 0.3s ease; transition: max-height 0.3s ease; overflow: hidden; background: #f0f3f6; border-radius: 8px; margin: 0 20px 0 20px; position: relative; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-expanded::before { content: ''; display: block; left: 50px; top: 0px; position: absolute; width: 0; height: 0; border-left: 8px solid transparent; border-right: 8px solid transparent; border-top: 8px solid #fff; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-expanded.ld-expanded { max-height: 20000px; margin-bottom: 1em; } .learndash-wrapper .ld-course-navigation .ld-lesson-item-expanded .ld-table-list-items { padding: 1em 0.5em; } .learndash-wrapper .ld-course-navigation .ld-table-list-header { display: none; } .learndash-wrapper .ld-course-navigation .ld-table-list-footer { background: transparent; padding: 0.25em !important; } .learndash-wrapper .ld-course-navigation .ld-table-list.ld-topic-list { margin: 0; } .learndash-wrapper .ld-course-navigation .ld-table-list.ld-topic-list .ld-table-list-items { border: 0; padding-right: 0; } .learndash-wrapper .ld-course-navigation .ld-table-list.ld-topic-list .ld-table-list-item { font-size: 0.9em; border-bottom: 0; line-height: 1.5em; } .learndash-wrapper .ld-course-navigation .ld-table-list.ld-topic-list .ld-table-list-item .ld-table-list-item-preview { -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; padding: 0.5em; } .learndash-wrapper .ld-course-navigation .ld-table-list.ld-topic-list .ld-table-list-item .ld-table-list-item-preview.ld-is-current-item { font-weight: bold; } .learndash-wrapper .widget_course_return { margin-top: 1em; font-size: 0.8em; } .learndash-wrapper .ld-profile-summary { margin: 2em 0; } .learndash-wrapper .ld-profile-summary .ld-profile-card { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-align: center; -ms-flex-align: center; align-items: center; width: 100%; margin: 1.5em 0; } .learndash-wrapper .ld-profile-summary .ld-profile-card .ld-profile-avatar { width: 150px; height: 150px; border: 5px solid #e2e7ed; } .learndash-wrapper .ld-profile-summary .ld-profile-card .ld-profile-heading { font-size: 2em; font-weight: 800; margin: 5px 0; } .learndash-wrapper .ld-profile-summary .ld-profile-card .ld-profile-edit-link { color: #728188; font-size: 14px; } .learndash-wrapper .ld-profile-summary .ld-profile-stats { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .ld-profile-summary .ld-profile-stats .ld-profile-stat { -webkit-box-flex: 0; -ms-flex: 0 0 90px; flex: 0 0 90px; text-align: center; border-right: 1px solid #e2e7ed; padding: 0 12px; } .learndash-wrapper .ld-profile-summary .ld-profile-stats .ld-profile-stat strong { display: block; font-size: 36px; margin-bottom: 8px; font-weight: 800; } .learndash-wrapper .ld-profile-summary .ld-profile-stats .ld-profile-stat span { color: #728188; font-size: 14px; } .learndash-wrapper .ld-profile-summary .ld-profile-stats .ld-profile-stat:last-child { border-right: 0; } .learndash-wrapper #ld-profile .ld-section-heading { margin-bottom: 0em; } .learndash-wrapper #ld-profile .ld-quiz-list .ld-table-list-item-preview + .ld-table-list-item-expanded { margin-top: -20px; } .learndash-wrapper #ld-profile .ld-quiz-list .ld-table-list-item-preview + .ld-table-list-item-expanded .ld-essay-list { margin-top: 0; } .learndash-wrapper #ld-profile .ld-item-list-item-preview .ld-status { white-space: nowrap; } @media (max-width: 640px) { .learndash-wrapper #ld-profile .ld-section-heading .ld-item-list-actions { -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; } .learndash-wrapper #ld-profile .ld-section-heading .ld-expand-button { margin: 10px 0; max-width: 120px; } .learndash-wrapper #ld-profile .ld-profile-stats { -ms-flex-wrap: wrap; flex-wrap: wrap; } .learndash-wrapper #ld-profile .ld-profile-stats .ld-profile-stat { width: 50%; border: 0; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; margin: 0 0 2em 0 !important; padding: 0 1em !important; } } #wpProQuiz_overlay_close { margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; text-transform: none; font-family: inherit; font-weight: 800; font-size: 0.75em; text-align: center; text-decoration: none; cursor: pointer; width: 100%; max-width: 385px; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; height: auto; padding: .75em 1.5em; max-width: 180px; } #wpProQuiz_overlay_close .ld-icon { font-size: 0.875em; } #wpProQuiz_overlay_close .ld-text { padding: 0 1em; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } #wpProQuiz_overlay_close + .ld-button { margin-left: 1em; } #wpProQuiz_overlay_close.ld-compact { padding: 0; width: 24px; height: 24px; border-radius: 100%; -ms-flex-preferred-size: 24px; flex-basis: 24px; -ms-flex-negative: 0; flex-shrink: 0; padding: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } #wpProQuiz_overlay_close.ld-compact .ld-icon { margin-right: 0; font-size: 0.75em; } #wpProQuiz_overlay_close.ld-compact .ld-text { padding: 0; } #wpProQuiz_overlay_close.ld-button-alternate { background: transparent; color: #00a2e8; padding: 0; } #wpProQuiz_overlay_close.ld-button-alternate .ld-icon { background: #00a2e8; color: white; border-radius: 100%; width: 18px; height: 18px; -webkit-box-flex: 0; -ms-flex: 0 0 18px; flex: 0 0 18px; padding: 2px; line-height: 16px; text-align: center; font-weight: bold; -webkit-transition: color 0.3s ease, background 0.3s ease; transition: color 0.3s ease, background 0.3s ease; } #wpProQuiz_overlay_close.ld-button-alternate .ld-text { padding-left: 0.5em; } #wpProQuiz_overlay_close.ld-button-alternate:hover { background: transparent; } #wpProQuiz_overlay_close.ld-button-transparent { color: #00a2e8; background: transparent; } #wpProQuiz_overlay_close.ld-button-transparent.ld-status-complete { color: #019e7c; } #wpProQuiz_overlay_close.ld-button-transparent:hover { background: transparent; } #wpProQuiz_overlay_close.ld-button-reverse { background: white; color: #00a2e8; } #wpProQuiz_overlay_close.ld-button-reverse:hover { background: #00a2e8; color: white; } #wpProQuiz_overlay_close:hover { opacity: 0.75; background-color: #00a2e8; } #wpProQuiz_overlay_close:focus { outline: none; opacity: 0.75; } #wpProQuiz_user_content h2 { border-bottom: 2px solid #f0f3f6; font-size: 24px; padding: 0.5em 0; } #wpProQuiz_user_content h2 + h2 { font-size: 18px; border-bottom: 0; } #wpProQuiz_user_content table.wp-list-table { border-radius: 8px; border-collapse: collapse; background: transparent; border: 0; } #wpProQuiz_user_content table.wp-list-table tr, #wpProQuiz_user_content table.wp-list-table td, #wpProQuiz_user_content table.wp-list-table th { background: transparent; } #wpProQuiz_user_content table.wp-list-table thead th { background: #00a2e8; color: #fff; border-bottom: 0; padding: 25px 15px; font-size: 14px; line-height: 1; white-space: nowrap; } #wpProQuiz_user_content table.wp-list-table thead th:first-child { border-radius: 8px 0 0 0; } #wpProQuiz_user_content table.wp-list-table thead th:last-child { border-radius: 0 8px 0 0; } #wpProQuiz_user_content table.wp-list-table tbody tr.categoryTr th { background: #f0f3f6; padding: 15px; border-bottom: 1px solid #f0f3f6; line-height: 1; white-space: nowrap; text-align: center; } #wpProQuiz_user_content table.wp-list-table tbody tr.categoryTr th:first-child, #wpProQuiz_user_content table.wp-list-table tbody tr.categoryTr th:only-child { text-align: left; } #wpProQuiz_user_content table.wp-list-table tbody tr th { padding: 15px; font-weight: normal; font-size: 16px; text-align: center; } #wpProQuiz_user_content table.wp-list-table tbody tr th p { margin: 0 0 5px 0; } #wpProQuiz_user_content table.wp-list-table tbody tr th:first-child { -webkit-box-shadow: inset 3px 0 0 0 #f0f3f6; box-shadow: inset 3px 0 0 0 #f0f3f6; } #wpProQuiz_user_content table.wp-list-table tbody tr th:last-child { -webkit-box-shadow: inset -3px 0 0 0 #f0f3f6; box-shadow: inset -3px 0 0 0 #f0f3f6; } #wpProQuiz_user_content table.wp-list-table tbody tr th:nth-child(2) { text-align: left; } #wpProQuiz_user_content table.wp-list-table tbody tr th:only-child { -webkit-box-shadow: inset -3px 0 0 0 #f0f3f6, inset 3px 0 0 0 #f0f3f6; box-shadow: inset -3px 0 0 0 #f0f3f6, inset 3px 0 0 0 #f0f3f6; } #wpProQuiz_user_content table.wp-list-table tbody tr.categoryTr th:nth-child(2) { text-align: center; } #wpProQuiz_user_content table.wp-list-table tfoot tr { border-bottom: 0; } #wpProQuiz_user_content table.wp-list-table tfoot tr th { background: #f0f3f6; border: 0; padding: 15px; font-weight: normal; font-size: 16px; text-align: center; } #wpProQuiz_user_content table.wp-list-table tfoot tr th:first-child { border-radius: 0 0 0 8px; } #wpProQuiz_user_content table.wp-list-table tfoot tr th:last-child { border-radius: 0 0 8px 0; } .learndash-wrapper .ld-tabs { margin: 1em 0; } .learndash-wrapper .ld-tabs .ld-tabs-navigation { position: relative; margin: 0; padding: 0; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-tabs .ld-tabs-navigation:after { content: ''; height: 6px; background: #e2e7ed; position: absolute; bottom: 0; left: 0; right: 0; z-index: 8; } .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab { display: -webkit-box; display: -ms-flexbox; display: flex; padding: 1.5em; -webkit-box-align: center; -ms-flex-align: center; align-items: center; position: relative; font-weight: 700; color: #728188; cursor: pointer; -webkit-transition: color 0.3s ease; transition: color 0.3s ease; white-space: nowrap; } .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab .ld-icon { font-size: 1.4em; margin-right: 0.25em; } .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab:after { content: ''; height: 6px; background: transparent; position: absolute; bottom: 0; left: 0; right: 0; z-index: 9; z-index: 9; -webkit-transition: background 0.3s ease; transition: background 0.3s ease; } .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab.ld-active { color: #00a2e8; } .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab.ld-active:after { background: #00a2e8; } @media (max-width: 640px) { .learndash-wrapper .ld-tabs .ld-tabs-navigation .ld-tab { padding: 1em; } } .learndash-wrapper .ld-tabs .ld-tabs-content .ld-tab-content { display: none; padding: 2em 0; } .learndash-wrapper .ld-tabs .ld-tabs-content .ld-tab-content.ld-visible { display: block; } .learndash-wrapper .ld-tabs.ld-tab-count-1 .ld-tab-content { padding: 0; } .learndash-wrapper .ld-breadcrumbs { background: #f0f3f6; border-radius: 6px; padding: 0.5em 1em; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments { font-size: 0.75em; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; padding-right: 1em; } .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments span { display: inline; } .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments span a { font-weight: 700; } .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments span:after { content: '>'; } .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments span:last-child:after { display: none; } .learndash-wrapper .ld-breadcrumbs .ld-status { white-space: nowrap; } .learndash-wrapper .ld-breadcrumbs .ld-status.ld-status-progress { background: #00a2e8; color: #fff; } .learndash-wrapper .ld-breadcrumbs .ld-status.ld-status-complete { background: #019e7c; color: #fff; } @media (max-width: 640px) { .learndash-wrapper .ld-breadcrumbs { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments { width: 100%; } .learndash-wrapper .ld-breadcrumbs .ld-status { width: 100%; margin-top: 1em; } } .rtl .learndash-wrapper .ld-breadcrumbs .ld-breadcrumbs-segments span:after { content: '<'; } .learndash-wrapper .ld-alert-content { width: 100%; } .learndash-wrapper .ld-alert { padding: 25px 15px 25px 75px; /* padding: 10px; */ background-color: #f0f3f6; border-radius: 6px; margin: 1em 0; border: 2px solid #e2e7ed; color: #728188; position: relative; min-height: 85px; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-alert .ld-alert-icon { background-color: #e2e7ed; border-radius: 100%; padding: 0.5em; margin-right: 0.5em; font-size: 24px; position: absolute; left: 15px; top: 50%; -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); } .learndash-wrapper .ld-alert .ld-alert-icon.ld-icon-alert { padding: 3px; font-size: 42px; } .learndash-wrapper .ld-alert .ld-alert-text { font-size: 1em; font-weight: 700; } .learndash-wrapper .ld-alert .ld-button { margin-left: 1em; min-width: 7.5em; display: inline-block; height: auto; padding: 5px 20px 5px 30px; position: relative; max-width: 185px; } .learndash-wrapper .ld-alert .ld-button .ld-icon { position: absolute; left: 15px; top: 50%; -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); } .learndash-wrapper .ld-alert .ld-alert-content a, .learndash-wrapper .ld-alert .ld-text a { text-decoration: underline; color: rgba(0, 0, 0, 0.8); } @media (max-width: 768px) { .learndash-wrapper .ld-alert { display: block; text-align: center; padding: 75px 15px 15px; } .learndash-wrapper .ld-alert .ld-alert-content { margin: 0 0 1em 0; } .learndash-wrapper .ld-alert .ld-icon { left: 50%; margin: 0; -webkit-transform: translateX(-50%); -ms-transform: translateX(-50%); transform: translateX(-50%); top: 10%; } .learndash-wrapper .ld-alert .ld-button { margin-left: 0; } } .learndash-wrapper .ld-alert-warning { color: rgba(0, 0, 0, 0.65); border-color: #ffd200; background-color: #fff6cd; } .learndash-wrapper .ld-alert-warning .ld-alert-icon { background-color: #ffd200; } .learndash-wrapper .ld-alert-warning .ld-button { background-color: #ffd200; color: rgba(0, 0, 0, 0.65); } .learndash-wrapper .ld-alert-certificate .ld-button { padding-left: 40px; min-width: unset; max-width: unset; width: auto; text-decoration: none !important; } .learndash-wrapper .ld-alert-certificate.ld-alert-success { color: #495255; } .learndash-wrapper .ld-alert-success { color: white; border-color: #019e7c; background-color: rgba(1, 158, 124, 0.2); } .learndash-wrapper .ld-alert-success .ld-alert-icon { background-color: #019e7c; color: white; } .learndash-wrapper .ld-alert-success .ld-button { background-color: #019e7c; } .learndash-wrapper .ld-alert-success .ld-button .ld-icon-download { margin-right: 5px; font-size: 18px; } .learndash-wrapper .ld-focus { display: -webkit-box; display: -ms-flexbox; display: flex; } .learndash-wrapper .ld-focus .ld-tab-content ul:not(.blocks-gallery-grid):not(.wp-block-gallery), .learndash-wrapper .ld-focus .ld-tab-content ol:not(.blocks-gallery-grid):not(.wp-block-gallery) { display: block; list-style: disc outside none; margin: 1em 0; padding-left: 40px; } .learndash-wrapper .ld-focus .ld-tab-content ol:not(.blocks-gallery-grid):not(.wp-block-gallery) { list-style-type: decimal; } .learndash-wrapper .ld-focus .ld-tab-content li:not(.blocks-gallery-item) { display: list-item; } .learndash-wrapper .ld-focus .ld-tab-content ul:not(.blocks-gallery-grid) ul, .learndash-wrapper .ld-focus .ld-tab-content ol:not(.blocks-gallery-grid) ul { margin: 0; list-style-type: circle; } .learndash-wrapper .ld-focus .ld-tab-content ol:not(.blocks-gallery-grid) ol, .learndash-wrapper .ld-focus .ld-tab-content ul:not(.blocks-gallery-grid) ol { margin: 0; list-style-type: lower-latin; } .learndash-wrapper .ld-focus .ld-focus-sidebar { position: fixed; left: 0; top: 0px; bottom: 0; width: 350px; background-color: white; border-right: 1px solid #e2e7ed; padding-top: 50px; padding-bottom: 150px; -webkit-transition: all 0.3s ease; transition: all 0.3s ease; z-index: 99; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-focus-sidebar-wrapper { overflow-x: visible; overflow-y: auto; height: 100%; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-focus-sidebar-trigger { position: absolute; height: 75px; width: 50px; right: 0; top: 0; bottom: 0; background: #00a2e8; z-index: 99; cursor: pointer; color: white; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-focus-sidebar-trigger .ld-icon { position: absolute; border-radius: 100%; background: inherit; right: 0; top: 50%; -webkit-transform: translateY(-50%) translateX(25%); -ms-transform: translateY(-50%) translateX(25%); transform: translateY(-50%) translateX(25%); font-size: 0.8em; padding: 8px; z-index: 9; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-focus-sidebar-trigger:hover .ld-icon:before { opacity: 0.5; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading { background-color: #00a2e8; color: white; border-bottom: 0; min-height: 75px; overflow: visible; width: 350px; position: relative; z-index: 9; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; padding: 0.75em 3.125em 0.75em 1em; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading a { color: #fff; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading h3 { font-size: 1em; margin: 0; line-height: 1.35em; padding: 0 0 0 1.6em; font-weight: bold; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; color: white; position: relative; z-index: 100; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading h3 a { color: white; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading h3 .ld-icon { position: absolute; left: 1px; top: 3px; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading .ld-expand-button { color: white; /* TODO: Should this be hidden? */ display: none; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation-heading .ld-home-link { color: white; padding: 0; border-left: 0; margin-left: 0; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation { position: relative; overflow: visible; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-course-navigation-list { opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-expanded { margin: 0; border-radius: 0; background: transparent; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-expanded .ld-table-list-items { padding: 0.5em; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-section-heading { padding: 0 1em; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item-section-heading .ld-lesson-section-heading { margin-bottom: 0; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list { background-color: #f0f3f6; border-radius: 0; padding: 1em 1em; position: relative; margin: 0; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list:before { content: ''; position: absolute; width: 16px; height: 16px; top: -8px; left: 66px; background: white; -webkit-transform: rotate(-45deg); -ms-transform: rotate(-45deg); transform: rotate(-45deg); z-index: 9; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list:before { background-color: white; left: 43px; width: 13px; height: 13px; top: -7px; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list .ld-table-list-item { font-size: 0.875em; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-topic-list.ld-table-list .ld-table-list-item .ld-table-list-item-preview { padding: 0.5em; padding-left: 1.6em; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item { border-bottom: 1px solid #e2e7ed; background-color: white; padding: 0; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-course-navigation .ld-lesson-item .ld-lesson-item-preview { padding: 1em; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-pagination { margin: 1em 0; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-pagination .ld-pages { background-color: #728188; -webkit-box-flex: 0; -ms-flex: 0 0 120px; flex: 0 0 120px; } .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-pagination .ld-pages i, .learndash-wrapper .ld-focus .ld-focus-sidebar .ld-pagination .ld-pages span { color: white; } .learndash-wrapper .ld-focus .ld-focus-main { -webkit-box-flex: 1; -ms-flex: 1 auto; flex: 1 auto; margin-left: 350px; width: -webkit-calc(100% - 350px); width: calc(100% - 350px); -webkit-transition: margin-left 0.3s ease; transition: margin-left 0.3s ease; } .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content { padding: 5em; margin: 0px auto; max-width: 960px; } .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content h1 { margin: 0; padding: 0; margin-bottom: 0.5em; } .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content .ld-topic-status .ld-progress { display: none; } .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content .ld-topic-status, .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content .ld-lesson-status { margin-bottom: 1em; } .learndash-wrapper .ld-focus .ld-focus-header { position: fixed; background: white; top: 0; left: 0; right: 0; height: 51px; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; border-bottom: 1px solid #e2e7ed; z-index: 99; } .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav { width: 55px; display: none; } .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav a { display: block; padding: 0 15px; } .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav span { display: block; width: 25px; height: 4px; margin: 4px 0; background-color: #333; -webkit-transition: all ease-in-out 250ms; transition: all ease-in-out 250ms; } .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav.expanded .bar-1 { -webkit-transform: rotate(-45deg) translate(-4px, 8px); -ms-transform: rotate(-45deg) translate(-4px, 8px); transform: rotate(-45deg) translate(-4px, 8px); } .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav.expanded .bar-2 { opacity: 0; } .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav.expanded .bar-3 { -webkit-transform: rotate(45deg) translate(-3px, -7px); -ms-transform: rotate(45deg) translate(-3px, -7px); transform: rotate(45deg) translate(-3px, -7px); } .learndash-wrapper .ld-focus .ld-focus-header .ld-brand-logo { background-color: white; -webkit-box-flex: 0; -ms-flex: 0 0 350px; flex: 0 0 350px; height: 100%; -webkit-transition: -webkit-box-flex 0.3s ease; transition: -webkit-box-flex 0.3s ease; transition: flex 0.3s ease; transition: flex 0.3s ease, -webkit-box-flex 0.3s ease, -ms-flex 0.3s ease; padding: 0.5em 1em; } .learndash-wrapper .ld-focus .ld-focus-header .ld-brand-logo img { height: 100%; width: auto; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-actions { -webkit-box-flex: 0; -ms-flex: 0 1; flex: 0 1; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: end; -ms-flex-pack: end; justify-content: flex-end; border-top: none; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action { position: relative; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action .learndash_timer, .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action #learndash_timer { position: absolute; left: 0; bottom: 1px; right: 0; text-align: center; top: 0; background: #fff; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action, .learndash-wrapper .ld-focus .ld-focus-header .ld-progress { height: 50px; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .learndash-wrapper .ld-focus .ld-focus-header .ld-progress { border-right: 1px solid #e2e7ed; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action { border-right: 1px solid #e2e7ed; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action:last-child, .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action.ld-empty { border: 0; } .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete:after, .learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete:after { color: #019e7c; } .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete:disabled:after, .learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete:disabled:after { color: #728188; } .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete .learndash_mark_complete_button, .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete #learndash_mark_complete_button, .learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete .learndash_mark_complete_button, .learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete #learndash_mark_complete_button { color: #00a2e8; background: transparent; color: #019e7c; background: transparent !important; } .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete .learndash_mark_complete_button.ld-status-complete, .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete #learndash_mark_complete_button.ld-status-complete, .learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete .learndash_mark_complete_button.ld-status-complete, .learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete #learndash_mark_complete_button.ld-status-complete { color: #019e7c; } .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete .learndash_mark_complete_button:hover, .learndash-wrapper .ld-focus .ld-focus-header .sfwd-mark-complete #learndash_mark_complete_button:hover, .learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete .learndash_mark_complete_button:hover, .learndash-wrapper .ld-focus .ld-focus-header #sfwd-mark-complete #learndash_mark_complete_button:hover { background: transparent; } .learndash-wrapper .ld-focus .ld-focus-header .ld-progress { -webkit-box-align: end; -ms-flex-align: end; align-items: flex-end; } .learndash-wrapper .ld-focus .ld-focus-header .ld-progress-wrap { width: 100%; max-width: 500px; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action { -webkit-box-flex: 0; -ms-flex: 0 1; flex: 0 1; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action .sfwd-mark-complete, .learndash-wrapper .ld-focus .ld-focus-header .ld-content-action #sfwd-mark-complete { margin: 0 1em; } .learndash-wrapper .ld-focus .ld-focus-header .ld-progress { -webkit-box-flex: 1; -ms-flex: 1 0 auto; flex: 1 0 auto; padding-right: 1em; padding: 0; margin: 0; padding-top: 0.5em; padding-right: 1em; } .learndash-wrapper .ld-focus .ld-focus-header .ld-progress .ld-progress-bar { background: #e2e7ed; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu { -webkit-box-flex: 0; -ms-flex: 0 0 200px; flex: 0 0 200px; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: end; -ms-flex-pack: end; justify-content: flex-end; -webkit-box-align: center; -ms-flex-align: center; align-items: center; position: relative; height: 50px; padding-right: 1em; border-left: 1px solid #e2e7ed; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-text { color: #728188; font-size: 0.75em; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-profile-avatar { width: 40px; height: 40px; margin-left: 1em; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items { position: absolute; top: 100%; right: 0; z-index: 9; opacity: 0; visibility: hidden; margin-right: 1em; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items:before { content: ''; position: absolute; top: -5px; right: 1em; width: 0; height: 0; border-left: 5px solid transparent; border-right: 5px solid transparent; border-bottom: 5px solid #00a2e8; z-index: -1; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items a { position: relative; display: block; white-space: nowrap; background-color: #00a2e8; color: white; font-weight: 700; padding: 0.75em 2.5em; font-size: 0.875em; border-bottom: 1px solid rgba(255, 255, 255, 0.1); } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items a:hover { opacity: 0.8; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-user-menu-items a:last-child { border-bottom: 0; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu:hover .ld-user-menu-items { opacity: 1; visibility: visible; } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed { /* .ld-focus-header { .ld-brand-logo { flex: 0 0 50px; } }*/ } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-sidebar { background-color: transparent; -webkit-transform: translateX(-webkit-calc(-100% + 50px)); -ms-transform: translateX(calc(-100% + 50px)); transform: translateX(calc(-100% + 50px)); } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-sidebar-wrapper .ld-focus-sidebar-trigger .ld-icon { -webkit-transform: translateY(-50%) translateX(45%) rotate(180deg); -ms-transform: translateY(-50%) translateX(45%) rotate(180deg); transform: translateY(-50%) translateX(45%) rotate(180deg); } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-course-navigation .ld-course-navigation-heading { top: 0; } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-course-navigation .ld-course-navigation-heading h3 { opacity: 0; } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-course-navigation .ld-course-navigation-list { opacity: 0; } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-main { margin-left: 50px; width: -webkit-calc(100% - 50px); width: calc(100% - 50px); } @media (max-width: 1280px) { .learndash-wrapper .ld-focus .ld-focus-header .ld-progress { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu { -webkit-box-flex: 0; -ms-flex: 0 1; flex: 0 1; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-text { display: none; } } @media (max-width: 1024px) { .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu .ld-text { display: none; } .learndash-wrapper .ld-focus .ld-focus-header .ld-brand-logo { -webkit-box-flex: 0; -ms-flex: 0 0 150px; flex: 0 0 150px; } .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content { padding-left: 3em; } } @media (max-width: 768px) { .learndash-wrapper .ld-focus .ld-focus-header { position: relative; -ms-flex-wrap: wrap; flex-wrap: wrap; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; height: auto; } .learndash-wrapper .ld-focus .ld-focus-header .ld-brand-logo { display: none; } .learndash-wrapper .ld-focus .ld-focus-header .ld-mobile-nav { display: block; -webkit-box-ordinal-group: 2; -ms-flex-order: 1; order: 1; } .learndash-wrapper .ld-focus .ld-focus-header .ld-progress { -webkit-box-ordinal-group: 3; -ms-flex-order: 2; order: 2; padding: 0 1em; margin: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; border-right: 0; } .learndash-wrapper .ld-focus .ld-focus-header .ld-progress .ld-progress-stats { text-align: center; display: block; } .learndash-wrapper .ld-focus .ld-focus-header .ld-progress .ld-progress-percentage { line-height: 1em; margin-bottom: 0.3em; } .learndash-wrapper .ld-focus .ld-focus-header .ld-progress .ld-progress-steps { display: none; } .learndash-wrapper .ld-focus .ld-focus-header .ld-progress .ld-progress-bar { margin: 0; } .learndash-wrapper .ld-focus .ld-focus-header .ld-user-menu { -webkit-box-ordinal-group: 4; -ms-flex-order: 3; order: 3; border-left: 0; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-actions { border-top: 1px solid #efefef; background: #fff; padding: 0; -webkit-box-ordinal-group: 5; -ms-flex-order: 4; order: 4; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; -webkit-box-flex: 100%; -ms-flex: 100%; flex: 100%; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-actions > * { margin: 0; } .learndash-wrapper .ld-focus .ld-focus-header .ld-content-actions .ld-content-action { height: auto; -webkit-box-flex: 50%; -ms-flex: 50%; flex: 50%; } .learndash-wrapper .ld-focus .ld-focus-content { margin-top: 30px; } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-sidebar { -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-sidebar .ld-focus-sidebar-trigger { display: none; } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-main { margin-left: 0px; width: 100%; } .learndash-wrapper .ld-focus .ld-focus-main { margin-left: 0; width: 100%; } .learndash-wrapper .ld-focus .ld-course-navigation-heading { position: static; } .learndash-wrapper .ld-focus .ld-course-navigation { padding-top: 0; } .learndash-wrapper .ld-focus .ld-focus-sidebar { top: 0px; padding-top: 0; z-index: 1000; position: absolute; } } @media (max-width: 640px) { .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-main, .learndash-wrapper .ld-focus .ld-focus-main { margin-left: 0; } .learndash-wrapper .ld-focus.ld-focus-sidebar-collapsed .ld-focus-main .ld-focus-content, .learndash-wrapper .ld-focus .ld-focus-main .ld-focus-content { margin: 30px auto 50px; padding: 5% 1.5em; } } body.admin-bar .learndash-wrapper .ld-focus-header { top: 32px; } @media (max-width: 768px) { body.admin-bar .learndash-wrapper .ld-focus-header { top: 0; } } body.admin-bar .learndash-wrapper .ld-focus-sidebar { top: 32px; } @media (max-width: 768px) { body.admin-bar .learndash-wrapper .ld-focus-sidebar { top: 93px; } } body.ld-in-focus-mode { margin: 0; padding: 0; background: #fff; } body.ld-in-focus-mode::before, body.ld-in-focus-mode::after { display: none; } body.ld-in-focus-mode .learndash-wrapper { background: #fff; } body.ld-in-focus-mode.admin-bar { padding-top: 32px; } @media (max-width: 768px) { body.ld-in-focus-mode.admin-bar { padding-top: 0; } body.ld-in-focus-mode.admin-bar .ld-focus-sidebar { top: 97px; } } #learndash-tooltips { font-family: 'Open Sans', 'Arial','Helvetica', sans-serif; position: absolute; top: 0; right: 0; left: 0; bottom: 0; height: 100%; z-index: 999; font-size: 16px; pointer-events: none; } #learndash-tooltips .ld-tooltip { position: absolute; background-color: #00a2e8; color: white; font-weight: 700; border-radius: 6px; padding: 0.25em 1em; -webkit-transform: translateX(1%) translateY(-25px); -ms-transform: translateX(1%) translateY(-25px); transform: translateX(1%) translateY(-25px); -webkit-box-shadow: 0 -1px 0 2px rgba(255, 255, 255, 0.75); box-shadow: 0 -1px 0 2px rgba(255, 255, 255, 0.75); font-size: 0.75em; opacity: 0; -webkit-transition: opacity 0.1s linear; transition: opacity 0.1s linear; text-align: center; min-width: 150px; max-width: 300px; } #learndash-tooltips .ld-tooltip:after { content: ''; height: 5px; width: 5px; background: #00a2e8; position: absolute; bottom: -4px; -webkit-transform: rotate(45deg) translateX(-50%); -ms-transform: rotate(45deg) translateX(-50%); transform: rotate(45deg) translateX(-50%); left: 5%; } #learndash-tooltips .ld-tooltip.ld-shifted-left:after { left: 10%; } #learndash-tooltips .ld-tooltip.ld-shifted-right { -webkit-transform: translateX(-100%) translateY(-30px); -ms-transform: translateX(-100%) translateY(-30px); transform: translateX(-100%) translateY(-30px); } #learndash-tooltips .ld-tooltip.ld-shifted-right:after { left: auto; right: 10%; } #learndash-tooltips .ld-tooltip.ld-visible { opacity: 1; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled { display: -webkit-box; display: -ms-flexbox; display: flex; background: #f0f3f6; padding: 1em 0; margin: 1em 0; border-radius: 6px; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled > * { -webkit-box-flex: 1; -ms-flex: 1 auto; flex: 1 auto; width: 33%; -ms-flex-pack: distribute; justify-content: space-around; text-align: center; border-right: 2px solid #bec5cb; padding: 0 1em; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled > *:last-child { border-right: 0; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-button { margin: 0; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-status { display: inline-block; width: auto; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-content { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -ms-flex-pack: distribute; justify-content: space-around; text-align: center; margin-bottom: 0.5em; line-height: 1.25em; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-price { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; text-align: center; -ms-flex-pack: distribute; justify-content: space-around; font-size: 32px; font-weight: bold; color: #728188; margin-top: -3px; line-height: 1; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-price .ld-text { font-size: 14px; margin-left: 8px; font-weight: normal; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-price .ld-currency { font-size: 16px; margin-right: 0.25em; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-label { display: block; color: #728188; font-size: 0.75em; font-weight: bold; margin-bottom: 1em; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -ms-flex-pack: distribute; justify-content: space-around; -ms-flex-wrap: wrap; flex-wrap: wrap; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .ppalholder { position: absolute; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .ld-text { font-size: 14px; color: #728188; display: inline-block; white-space: nowrap; margin-right: 0.5em; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .ld-text .ld-login-text { display: inline-block; margin-left: 5px; text-decoration: underline; font-weight: bold; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .learndash_checkout_buttons { margin: 0 .5em; } @media (max-width: 1280px) { .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .learndash_checkout_buttons, .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .learndash_checkout_button { margin-right: 0; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-action .learndash_checkout_button { margin-bottom: 0.5em; } } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled .ld-course-status-seg-action.status-closed .ld-text { white-space: normal; } @media (max-width: 640px) { .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled > * { border-right: 0; border-bottom: 1px solid #e2e7ed; padding: 1em 0; width: auto; } .learndash-wrapper .ld-course-status.ld-course-status-not-enrolled > *:last-child { border-bottom: 0; } } .learndash-wrapper .ld-course-status.ld-course-status-enrolled { background-color: #f0f3f6; border-radius: 6px; padding: 0.5em 1em; display: -webkit-box; display: -ms-flexbox; display: flex; } .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress { margin: 0; padding: 0; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; padding-right: 1em; } @media (max-width: 640px) { .learndash-wrapper .ld-course-status.ld-course-status-enrolled { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; padding-right: 0; -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress .ld-progress-heading { display: block; width: 100%; text-align: center; } .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress .ld-progress-stats { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress .ld-progress-stats .ld-progress-steps { margin-left: 0; } .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-progress .ld-progress-bar { width: 100%; margin: 1em 0; } } .learndash-wrapper .ld-course-status.ld-course-status-enrolled .ld-status { width: auto; display: inline-block; margin: 0 auto; } .learndash-wrapper .ld-course-status .ld-status { line-height: 1.3; } .learndash-wrapper .ld-course-status .ld-status.ld-status-progress { background: #00a2e8; color: #fff; } .learndash-wrapper .ld-course-status .ld-status.ld-status-complete { background: #019e7c; color: #fff; } .learndash-wrapper .ld-course-certificate { text-align: center; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; margin: 1em 0; } .learndash-wrapper .ld-course-certificate .ld-button { display: inline-block; max-width: inherit; font-size: 14px; } .learndash-wrapper .ld-course-certificate .ld-icon-certificate { font-size: 24px; margin-right: 5px; } /** /// This is inserted outside our wrapper and with a generic name **/ .jq-dropdown-menu { -webkit-box-shadow: 0 0 0 1px #ddd !important; box-shadow: 0 0 0 1px #ddd !important; } .jq-dropdown-menu input[type='button'], .jq-dropdown-menu input[type='submit'] { margin: 0; padding: 0; -webkit-transition: none; transition: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1.5em; font-size: 16px; border-radius: 0; border: 0; display: block !important; width: 100% !important; color: #00a2e8; padding: 0.5em 1em; text-align: center; font-size: 14px !important; } .jq-dropdown-menu input[type='button']:hover, .jq-dropdown-menu input[type='submit']:hover { background: #fafafa !important; color: #495255 !important; } .jq-dropdown-menu .ppalholder { display: none; } .learndash-wrapper .learndash-wrapper-login-modal { position: relative; } .learndash-wrapper .ld-modal { position: absolute; -webkit-transform: translateY(-50%) translateX(-50%); -ms-transform: translateY(-50%) translateX(-50%); transform: translateY(-50%) translateX(-50%); z-index: 999; width: 100%; z-index: 9000; max-width: 1024px; min-height: 300px; background: white; border-radius: 6px; overflow: hidden; overflow-y: auto; -webkit-box-shadow: -3px -3px 20px rgba(0, 0, 0, 0.14); box-shadow: -3px -3px 20px rgba(0, 0, 0, 0.14); opacity: 0; visibility: hidden; -webkit-transition: all 0.3s ease; transition: all 0.3s ease; } .learndash-wrapper .ld-modal .ld-modal-closer { position: absolute; top: 0.5em; right: 0; z-index: 9; color: #728188; cursor: pointer; line-height: 0.5; padding: 1em; font-size: 1.5em; } .learndash-wrapper .ld-modal.ld-can-register .ld-modal-closer { color: #fff; } .learndash-wrapper.ld-modal-closed { display: none !important; } .learndash-wrapper.ld-modal-open .ld-modal { opacity: 1; visibility: visible; } .learndash-wrapper .ld-login-modal { display: -webkit-box; display: -ms-flexbox; display: flex; text-align: center; margin: 25% 50% 20px 50%; /* .ld-alert { padding: 10px; margin: 10 auto; .ld-alert-icon { position: relative; left: 0; top: 0; } } */ } .learndash-wrapper .ld-login-modal .ld-modal-heading { font-weight: 300; font-size: 2.25em; margin: 0; margin: 0.5em 0; } .learndash-wrapper .ld-login-modal .ld-login-modal-wrapper { padding: 20px; max-width: 350px; min-width: 80%; margin: 0 auto; } .learndash-wrapper .ld-login-modal .ld-login-modal-login { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; background: white; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .ld-login-modal .ld-login-modal-login .ld-modal-heading { color: #00a2e8; } .learndash-wrapper .ld-login-modal .ld-login-modal-login .ld-modal-text { color: #728188; font-size: 0.875em; } .learndash-wrapper .ld-login-modal .ld-login-modal-register { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; background: #00a2e8; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; color: white; } .learndash-wrapper .ld-login-modal .ld-login-modal-register .ld-button:hover { opacity: 1; -webkit-box-shadow: 0 0 0 5px #fff !important; box-shadow: 0 0 0 5px #fff !important; } .learndash-wrapper .ld-login-modal .ld-login-modal-register label { display: block; font-weight: bold; margin-bottom: 0.5em; font-size: 14px; } .learndash-wrapper .ld-login-modal .ld-login-modal-register #ld-user-register { margin: 2em 0; } .learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='text'], .learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='password'], .learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='email'] { border: 2px solid #fff; margin: 0; margin-bottom: 1em; padding: 0; padding: 0.5em; background-color: #f9f9f9; padding-left: 2em; font-size: 1.2em; width: 100%; -webkit-transition: all ease-in-out 250ms; transition: all ease-in-out 250ms; } .learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='text']:focus, .learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='password']:focus, .learndash-wrapper .ld-login-modal .ld-login-modal-register input[type='email']:focus { background: #fff; } .learndash-wrapper .ld-login-modal .ld-login-modal-register #reg_passmail { font-size: 0.825em; } .learndash-wrapper .ld-login-modal .ld-login-modal-register #wp-submit { margin: 0 auto; min-width: 150px; text-align: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; border: 0; padding: 7px 35px; border-radius: 20px; font-weight: bold; font-size: 14px; border: 5px solid #fff; } .learndash-wrapper .ld-login-modal .ld-login-modal-form { margin: 2em 0; } .learndash-wrapper .ld-login-modal .ld-login-modal-form form { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .learndash-wrapper .ld-login-modal .ld-login-modal-form p { margin: 0; } .learndash-wrapper .ld-login-modal .ld-login-modal-form p.login-submit { text-align: center; } .learndash-wrapper .ld-login-modal .ld-login-modal-form label { display: block; color: #728188; font-weight: bold; margin-bottom: 0.5em; font-size: 14px; } .learndash-wrapper .ld-login-modal .ld-login-modal-form .login-username { position: relative; } .learndash-wrapper .ld-login-modal .ld-login-modal-form .login-username:before { font-family: 'ld-icons' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; display: inline-block; content: "\e90c"; position: absolute; color: #728188; top: 2.5em; left: 0.5em; } .learndash-wrapper .ld-login-modal .ld-login-modal-form .login-password { position: relative; } .learndash-wrapper .ld-login-modal .ld-login-modal-form .login-password:before { font-family: 'ld-icons' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; display: inline-block; content: "\e900"; position: absolute; color: #728188; top: 2.5em; left: 0.5em; } .learndash-wrapper .ld-login-modal .ld-login-modal-form .ld-login-modal-branding { position: relative; padding-top: 2em; margin-top: 1em; } .learndash-wrapper .ld-login-modal .ld-login-modal-form .ld-login-modal-branding:before { content: ''; display: block; position: absolute; width: 50px; height: 3px; background-color: #e2e7ed; left: 50%; top: 0; -webkit-transform: translateX(-50%); -ms-transform: translateX(-50%); transform: translateX(-50%); } .learndash-wrapper .ld-login-modal .ld-login-modal-form .ld-login-modal-branding img { max-width: 100%; max-height: 250px; height: auto; } .learndash-wrapper .ld-login-modal input[type='text'], .learndash-wrapper .ld-login-modal input[type='password'], .learndash-wrapper .ld-login-modal input[type='email'], .learndash-wrapper .ld-login-modal .ld-login-field, .learndash-wrapper .ld-login-modal .ld-password-field { border: 2px solid #e2e7ed; margin: 0; margin-bottom: 1em; padding: 0; padding: 0.5em; background-color: #f0f3f6; color: #728188; padding-left: 2em; font-size: 0.875em; width: 100%; -webkit-transition: all ease-in-out 250ms; transition: all ease-in-out 250ms; } .learndash-wrapper .ld-login-modal input[type='text']:focus, .learndash-wrapper .ld-login-modal input[type='password']:focus, .learndash-wrapper .ld-login-modal input[type='email']:focus, .learndash-wrapper .ld-login-modal .ld-login-field:focus, .learndash-wrapper .ld-login-modal .ld-password-field:focus { border-color: #495255; } .learndash-wrapper .ld-login-modal ::-webkit-input-placeholder { font-family: 'Open Sans', 'Arial','Helvetica', sans-serif; } .learndash-wrapper .ld-login-modal :-ms-input-placeholder { font-family: 'Open Sans', 'Arial','Helvetica', sans-serif; } .learndash-wrapper .ld-login-modal ::placeholder { font-family: 'Open Sans', 'Arial','Helvetica', sans-serif; } .learndash-wrapper .ld-login-modal .ld-forgot-password-link { color: #333333; text-decoration: underline; font-size: 0.875em; } .learndash-wrapper .ld-login-modal .ld-button, .learndash-wrapper .ld-login-modal input[type='submit'] { margin: 2em auto; min-width: 150px; text-align: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; border: 0; border-radius: 20px; font-weight: bold; font-size: 14px; } .learndash-wrapper .ld-login-modal input[type='submit'] { background: #00a2e8; color: #fff; cursor: pointer; padding: 0.75em 5em; -webkit-transition: all ease-in-out 250ms; transition: all ease-in-out 250ms; } .learndash-wrapper .ld-login-modal input[type='submit']:hover { opacity: 0.8; } @media (max-width: 1024px) { .learndash-wrapper .ld-login-modal { top: 100px; width: 80%; -webkit-transform: translateX(-50%); -ms-transform: translateX(-50%); transform: translateX(-50%); } .learndash-wrapper .ld-login-modal.ld-can-register .ld-modal-closer { color: #728188; } } @media (max-width: 768px) { .learndash-wrapper .ld-login-modal { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } } @media (max-width: 640px) { .learndash-wrapper .ld-login-modal { width: 100%; } } .learndash-wrapper .ld-button.ld-login-button { display: -webkit-box; display: -ms-flexbox; display: flex; } .learndash-wrapper .ld-button.ld-login-button.ld-logout { -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; } .learndash-wrapper .ld-button.ld-login-button.ld-login { -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } .learndash-wrapper .ld-button.ld-login-button.ld-login .ld-icon { margin-right: 10px; } /** No Access */ .learndash-not-available .ld-table-list-item-preview, .learndash-not-available .ld-lesson-item-preview, .learndash-not-available .ld-item-list-item-preview, .user_has_no_access .ld-table-list-item-preview, .user_has_no_access .ld-lesson-item-preview, .user_has_no_access .ld-item-list-item-preview { cursor: not-allowed; pointer-events: none; } .learndash-not-available .ld-table-list-item-preview a.ld-lesson-item-preview-heading, .learndash-not-available .ld-table-list-item-preview a.ld-item-name, .learndash-not-available .ld-lesson-item-preview a.ld-lesson-item-preview-heading, .learndash-not-available .ld-lesson-item-preview a.ld-item-name, .learndash-not-available .ld-item-list-item-preview a.ld-lesson-item-preview-heading, .learndash-not-available .ld-item-list-item-preview a.ld-item-name, .user_has_no_access .ld-table-list-item-preview a.ld-lesson-item-preview-heading, .user_has_no_access .ld-table-list-item-preview a.ld-item-name, .user_has_no_access .ld-lesson-item-preview a.ld-lesson-item-preview-heading, .user_has_no_access .ld-lesson-item-preview a.ld-item-name, .user_has_no_access .ld-item-list-item-preview a.ld-lesson-item-preview-heading, .user_has_no_access .ld-item-list-item-preview a.ld-item-name { cursor: not-allowed; pointer-events: none; } .learndash-not-available .ld-table-list-item-preview a.ld-lesson-item-preview-heading .ld-status-icon, .learndash-not-available .ld-table-list-item-preview a.ld-item-name .ld-status-icon, .learndash-not-available .ld-lesson-item-preview a.ld-lesson-item-preview-heading .ld-status-icon, .learndash-not-available .ld-lesson-item-preview a.ld-item-name .ld-status-icon, .learndash-not-available .ld-item-list-item-preview a.ld-lesson-item-preview-heading .ld-status-icon, .learndash-not-available .ld-item-list-item-preview a.ld-item-name .ld-status-icon, .user_has_no_access .ld-table-list-item-preview a.ld-lesson-item-preview-heading .ld-status-icon, .user_has_no_access .ld-table-list-item-preview a.ld-item-name .ld-status-icon, .user_has_no_access .ld-lesson-item-preview a.ld-lesson-item-preview-heading .ld-status-icon, .user_has_no_access .ld-lesson-item-preview a.ld-item-name .ld-status-icon, .user_has_no_access .ld-item-list-item-preview a.ld-lesson-item-preview-heading .ld-status-icon, .user_has_no_access .ld-item-list-item-preview a.ld-item-name .ld-status-icon { pointer-events: all; } .learndash-not-available .ld-table-list-item-preview .ld-expand-button, .learndash-not-available .ld-lesson-item-preview .ld-expand-button, .learndash-not-available .ld-item-list-item-preview .ld-expand-button, .user_has_no_access .ld-table-list-item-preview .ld-expand-button, .user_has_no_access .ld-lesson-item-preview .ld-expand-button, .user_has_no_access .ld-item-list-item-preview .ld-expand-button { pointer-events: all; } .learndash-not-available a.ld-topic-row, .user_has_no_access a.ld-topic-row { cursor: not-allowed; pointer-events: none; } .learndash-not-available.is_sample .ld-lesson-item-preview, .learndash-not-available.is_sample .ld-item-list-item-preview, .user_has_no_access.is_sample .ld-lesson-item-preview, .user_has_no_access.is_sample .ld-item-list-item-preview { cursor: pointer; pointer-events: all; } .learndash-not-available.is_sample .ld-lesson-item-preview a.ld-lesson-item-preview-heading, .learndash-not-available.is_sample .ld-lesson-item-preview a.ld-item-name, .learndash-not-available.is_sample .ld-item-list-item-preview a.ld-lesson-item-preview-heading, .learndash-not-available.is_sample .ld-item-list-item-preview a.ld-item-name, .user_has_no_access.is_sample .ld-lesson-item-preview a.ld-lesson-item-preview-heading, .user_has_no_access.is_sample .ld-lesson-item-preview a.ld-item-name, .user_has_no_access.is_sample .ld-item-list-item-preview a.ld-lesson-item-preview-heading, .user_has_no_access.is_sample .ld-item-list-item-preview a.ld-item-name { cursor: pointer; pointer-events: all; } /** Make ld_course_list links clickable in Quiz results messages */ .user_has_no_access .wpProQuiz_resultsList .ld-item-list-item-preview a.ld-item-name { cursor: pointer; pointer-events: all; } /** Force open sample content **/ .ld-topic-list.is_sample .ld-table-list-item-preview, .ld-topic-list.is_sample .ld-lesson-item-preview, .ld-topic-list.is_sample .ld-item-list-item-preview, .ld-lesson-item.is_sample .ld-table-list-item-preview, .ld-lesson-item.is_sample .ld-lesson-item-preview, .ld-lesson-item.is_sample .ld-item-list-item-preview, .ld-item-list-item.is_sample .ld-table-list-item-preview, .ld-item-list-item.is_sample .ld-lesson-item-preview, .ld-item-list-item.is_sample .ld-item-list-item-preview { cursor: pointer; pointer-events: all; } .ld-topic-list.is_sample .ld-table-list-item-preview a.ld-lesson-item-preview-heading, .ld-topic-list.is_sample .ld-table-list-item-preview a.ld-item-name, .ld-topic-list.is_sample .ld-lesson-item-preview a.ld-lesson-item-preview-heading, .ld-topic-list.is_sample .ld-lesson-item-preview a.ld-item-name, .ld-topic-list.is_sample .ld-item-list-item-preview a.ld-lesson-item-preview-heading, .ld-topic-list.is_sample .ld-item-list-item-preview a.ld-item-name, .ld-lesson-item.is_sample .ld-table-list-item-preview a.ld-lesson-item-preview-heading, .ld-lesson-item.is_sample .ld-table-list-item-preview a.ld-item-name, .ld-lesson-item.is_sample .ld-lesson-item-preview a.ld-lesson-item-preview-heading, .ld-lesson-item.is_sample .ld-lesson-item-preview a.ld-item-name, .ld-lesson-item.is_sample .ld-item-list-item-preview a.ld-lesson-item-preview-heading, .ld-lesson-item.is_sample .ld-item-list-item-preview a.ld-item-name, .ld-item-list-item.is_sample .ld-table-list-item-preview a.ld-lesson-item-preview-heading, .ld-item-list-item.is_sample .ld-table-list-item-preview a.ld-item-name, .ld-item-list-item.is_sample .ld-lesson-item-preview a.ld-lesson-item-preview-heading, .ld-item-list-item.is_sample .ld-lesson-item-preview a.ld-item-name, .ld-item-list-item.is_sample .ld-item-list-item-preview a.ld-lesson-item-preview-heading, .ld-item-list-item.is_sample .ld-item-list-item-preview a.ld-item-name { cursor: pointer; pointer-events: all; } .ld-topic-list.is_sample a.ld-lesson-item-preview, .ld-topic-list.is_sample a.ld-table-list-item-preview, .ld-topic-list.is_sample a.ld-topic-row, .ld-lesson-item.is_sample a.ld-lesson-item-preview, .ld-lesson-item.is_sample a.ld-table-list-item-preview, .ld-lesson-item.is_sample a.ld-topic-row, .ld-item-list-item.is_sample a.ld-lesson-item-preview, .ld-item-list-item.is_sample a.ld-table-list-item-preview, .ld-item-list-item.is_sample a.ld-topic-row { cursor: pointer !important; pointer-events: all !important; } .learndash-wrapper { /* .ld-course-info { .ld-section-heading { font-size: 0.8em; font-style: italic; display: block; margin: 0.5em 0; } .ld-item-list-item { border: 0; padding: 0 0 10px 0; margin: 0 0 10px 0; border-bottom: 1px solid $border-grey; &:last-child { border-bottom: 0; } .ld-item-list-item-preview { flex-wrap: wrap; padding: 0; } a.item-name { width: 100%; } .ld-course-title { font-size: .875em; line-height: 1.3em; } .ld-item-details { margin-top: 10px; display: block; text-align: left; .ld-progress-steps { font-size: 12px; color: $text-grey; margin-bottom: 5px; } } } .ld-table-list-item-preview { display: flex; } }*/ } .learndash-wrapper .ld-user-status.ld-is-widget { margin: 30px 0; } .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item { border: 0; border-bottom: 2px solid #f0f3f6; border-radius: 0; padding: 10px 0; margin: 10px 0; } .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item:last-child { border-bottom: 0; } .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item .ld-item-list-item-preview { padding: 0; } .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-title { font-size: 14px; line-height: 1.5em; } .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-components { margin-top: 10px; } .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-components span { display: block; margin: 0 0 5px 0; font-size: 12px; line-height: 1.5em; } .learndash-wrapper .ld-user-status.ld-is-widget .ld-item-list .ld-item-list-item .ld-item-list-item-preview .ld-item-components span.ld-sep { display: none; } .learndash-wrapper .ld-user-status.ld-is-widget .ld-pagination { -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } .learndash-wrapper .ld-focus-comments { margin: 2em 0; } .learndash-wrapper .ld-focus-comments p.comment-form-comment { margin: 0; width: 100% !important; max-width: 100% !important; } .learndash-wrapper .ld-focus-comments p.comment-form-comment textarea { width: 100%; } .learndash-wrapper .ld-focus-comments #ld-comments { margin-bottom: 50px; } .learndash-wrapper .ld-focus-comments #commentform .logged-in-as { margin: 0; font-size: 0.875em; font-weight: normal; float: right; } .learndash-wrapper .ld-focus-comments #commentform textarea#comment { font-family: inherit; padding: 0.875em; background: #e2e7ed; border: 5px solid #e2e7ed; border-radius: 6px; font-size: 1em; } .learndash-wrapper .ld-focus-comments #commentform textarea#comment:focus { background: transparent; outline: 0; -webkit-box-shadow: none; box-shadow: none; } .learndash-wrapper .ld-focus-comments .comment-navigation .nav-links { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; } .learndash-wrapper .ld-focus-comments .comment-navigation .nav-links .nav-previous { margin: 0; text-align: left; min-width: 50%; width: 100%; font-weight: bold; } .learndash-wrapper .ld-focus-comments .comment-navigation .nav-links .nav-next { margin: 0; text-align: right; min-width: 50%; width: 100%; font-weight: bold; } .learndash-wrapper .ld-focus-comments .form-submit { width: 100% !important; max-width: 100% !important; } .learndash-wrapper .ld-focus-comments .form-submit #submit { margin: 0; border-radius: 20px; background-color: #00a2e8; color: white; -webkit-box-shadow: none; box-shadow: none; text-transform: none; font-family: inherit; font-weight: 800; font-size: 0.75em; text-align: center; text-decoration: none; cursor: pointer; width: 100%; max-width: 385px; white-space: nowrap; text-shadow: none; border: 0; opacity: 1; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; height: auto; padding: .75em 1.5em; font-size: 1em; display: inline-block; padding: 0.75em 3em; margin-top: 0; height: auto; margin-top: 1em; min-width: unset; max-width: unset; width: unset; text-decoration: none !important; } .learndash-wrapper .ld-focus-comments .form-submit #submit .ld-icon { font-size: 0.875em; } .learndash-wrapper .ld-focus-comments .form-submit #submit .ld-text { padding: 0 1em; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } .learndash-wrapper .ld-focus-comments .form-submit #submit + .ld-button { margin-left: 1em; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-compact { padding: 0; width: 24px; height: 24px; border-radius: 100%; -ms-flex-preferred-size: 24px; flex-basis: 24px; -ms-flex-negative: 0; flex-shrink: 0; padding: 0; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-compact .ld-icon { margin-right: 0; font-size: 0.75em; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-compact .ld-text { padding: 0; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-alternate { background: transparent; color: #00a2e8; padding: 0; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-alternate .ld-icon { background: #00a2e8; color: white; border-radius: 100%; width: 18px; height: 18px; -webkit-box-flex: 0; -ms-flex: 0 0 18px; flex: 0 0 18px; padding: 2px; line-height: 16px; text-align: center; font-weight: bold; -webkit-transition: color 0.3s ease, background 0.3s ease; transition: color 0.3s ease, background 0.3s ease; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-alternate .ld-text { padding-left: 0.5em; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-alternate:hover { background: transparent; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-transparent { color: #00a2e8; background: transparent; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-transparent.ld-status-complete { color: #019e7c; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-transparent:hover { background: transparent; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-reverse { background: white; color: #00a2e8; } .learndash-wrapper .ld-focus-comments .form-submit #submit.ld-button-reverse:hover { background: #00a2e8; color: white; } .learndash-wrapper .ld-focus-comments .form-submit #submit:hover { opacity: 0.75; background-color: #00a2e8; } .learndash-wrapper .ld-focus-comments .form-submit #submit:focus { outline: none; opacity: 0.75; } .learndash-wrapper .ld-focus-comments__heading { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; -webkit-box-align: center; -ms-flex-align: center; align-items: center; border-bottom: 4px solid #e2e7ed; margin-bottom: 0.5em; } .learndash-wrapper .ld-focus-comments__heading .ld-expand-button .ld-text { padding-right: 0.5em; font-size: 1em; } .learndash-wrapper .ld-focus-comments__heading .ld-expand-button .ld-icon { font-size: 0.75em; } .learndash-wrapper .ld-focus-comments__header { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; font-size: 2em; font-weight: normal; margin-bottom: 10px; } .learndash-wrapper .ld-focus-comments__comments { overflow: hidden; -webkit-transition: max-height 0.3s ease; transition: max-height 0.3s ease; font-size: 1em; font-weight: normal; } .learndash-wrapper .ld-focus-comments .comment-respond { position: relative; padding-top: 0; } .learndash-wrapper .ld-focus-comments .comment-respond #reply-title { font-size: 1.5em; font-weight: normal; margin-bottom: 0.75em; } .learndash-wrapper .ld-focus-comments .comment-respond small { margin-left: 1em; font-size: 0.75em; } .learndash-wrapper .ld-focus-comments .comment-form label { display: none; } .learndash-wrapper .ld-focus-comments #ld-comments-post-button.ld-open { display: none; } .learndash-wrapper .ld-focus-comments #ld-comments-form.ld-collapsed { display: none; } .learndash-wrapper .ld-focus-comment { margin: 2em 0; } .learndash-wrapper .ld-focus-comment:last-child { margin-bottom: 5em; } .learndash-wrapper .ld-focus-comment.depth-1 { margin-left: 0; } .learndash-wrapper .ld-focus-comment.depth-2, .learndash-wrapper .ld-focus-comment.depth-3, .learndash-wrapper .ld-focus-comment.depth-4, .learndash-wrapper .ld-focus-comment.depth-5 { margin-left: 74px; } @media (max-width: 768px) { .learndash-wrapper .ld-focus-comment.depth-2, .learndash-wrapper .ld-focus-comment.depth-3, .learndash-wrapper .ld-focus-comment.depth-4, .learndash-wrapper .ld-focus-comment.depth-5 { margin-left: 20px; } } .learndash-wrapper .ld-focus-comment .ld-comment-avatar { position: relative; margin-bottom: 1em; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .learndash-wrapper .ld-focus-comment .ld-comment-avatar img { -webkit-box-sizing: border-box; box-sizing: border-box; max-width: 58px; height: auto; border-radius: 100%; margin-right: 16px; border: 4px solid transparent; } .learndash-wrapper .ld-focus-comment .ld-comment-avatar .ld-comment-avatar-author .ld-comment-author-name { color: black; font-size: 1.125em; margin-bottom: 5px; display: block; font-weight: bold; } .learndash-wrapper .ld-focus-comment .ld-comment-avatar .ld-comment-avatar-author a.ld-comment-permalink { color: #728188; font-size: 0.875em; text-decoration: none; display: block; } .learndash-wrapper .ld-focus-comment .ld-comment-body { overflow: hidden; position: relative; margin-left: 74px; } .learndash-wrapper .ld-focus-comment .ld-comment-reply { margin: 1em 0; } .learndash-wrapper .ld-focus-comment .ld-comment-reply a.comment-reply-link { border: 0; display: inline-block; padding: 0.5em 1.75em; color: black; font-weight: bold; font-size: 0.875em; position: relative; z-index: 9; background-color: #e2e7ed; border-radius: 18px; } .learndash-wrapper .ld-focus-comment.bypostauthor > .ld-comment-wrapper, .learndash-wrapper .ld-focus-comment.role-group_leader > .ld-comment-wrapper, .learndash-wrapper .ld-focus-comment.role-administrator > .ld-comment-wrapper { border-radius: 6px; background: #f2fafd; padding: 1em; } .learndash-wrapper .ld-focus-comment.bypostauthor > .ld-comment-wrapper > .ld-comment-avatar img, .learndash-wrapper .ld-focus-comment.role-group_leader > .ld-comment-wrapper > .ld-comment-avatar img, .learndash-wrapper .ld-focus-comment.role-administrator > .ld-comment-wrapper > .ld-comment-avatar img { border-color: #00a2e8; } .learndash-wrapper .ld-focus-comment.bypostauthor.ptype-sfwd-assignment > .ld-comment-wrapper { border-radius: 0; background: transparent; padding: 0; } .learndash-wrapper .ld-focus-comment.bypostauthor.ptype-sfwd-assignment > .ld-comment-wrapper > .ld-comment-avatar img { border-color: transparent; } .learndash-wrapper .ld-focus-comment.ld-no-avatar-image .ld-comment-body { margin-left: 0; } /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNldHVwL192YXJpYWJsZXMuc2NzcyIsInNldHVwL19pY29ucy5zY3NzIiwic2V0dXAvX2dsb2JhbC5zY3NzIiwic2V0dXAvX21peGlucy5zY3NzIiwic2V0dXAvX2llLnNjc3MiLCJsZWFybmRhc2guY3NzIiwiY29tcG9uZW50cy9faXRlbS1saXN0LnNjc3MiLCJjb21wb25lbnRzL190YWJsZS1saXN0LnNjc3MiLCJjb21wb25lbnRzL19wcm9ncmVzcy5zY3NzIiwiY29tcG9uZW50cy9fcGFnaW5hdGlvbi5zY3NzIiwiY29tcG9uZW50cy9fdWkuc2NzcyIsImNvbXBvbmVudHMvX2NvdXJzZS1saXN0LnNjc3MiLCJjb21wb25lbnRzL2xlc3Nvbi1saXN0LnNjc3MiLCJjb21wb25lbnRzL190b3BpYy1saXN0LnNjc3MiLCJjb21wb25lbnRzL190b3BpYy5zY3NzIiwiY29tcG9uZW50cy9fcXVpei5zY3NzIiwiY29tcG9uZW50cy9fY291cnNlLW5hdmlnYXRpb24uc2NzcyIsImNvbXBvbmVudHMvX3Byb2ZpbGUuc2NzcyIsImNvbXBvbmVudHMvX3RhYnMuc2NzcyIsImNvbXBvbmVudHMvX2JyZWFkY3J1bWJzLnNjc3MiLCJjb21wb25lbnRzL19hbGVydHMuc2NzcyIsImNvbXBvbmVudHMvX2ZvY3VzLW1vZGUuc2NzcyIsImNvbXBvbmVudHMvX3Rvb2x0aXBzLnNjc3MiLCJjb21wb25lbnRzL19jb3Vyc2Utc3RhdHVzLnNjc3MiLCJjb21wb25lbnRzL19tb2RhbC5zY3NzIiwiY29tcG9uZW50cy9fbm8tYWNjZXNzLnNjc3MiLCJjb21wb25lbnRzL19jb3Vyc2UtaW5mby5zY3NzIiwiY29tcG9uZW50cy9fY29tbWVudHMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEyQjZCLHlCQUF5QjtBQzNCdEQsYUFDRSx3QkFBdUIsQ0FDdkIseUNBQXlDLENBQ3pDLG9QQUc0RCxDQUM1RCxvQkFBbUIsQ0FDbkIsbUJBQWtCLEVBQUE7O0FBR3BCLFdBQ0UsZ0ZBQWdGLENBQ2hGLG1DQUFrQyxDQUNsQyxZQUFXLENBQ1gsbUJBQWtCLENBQ2xCLG9CQUFtQixDQUNuQixxQkFBb0IsQ0FDcEIscUJBQW9CLENBQ3BCLGVBQWMsQ0FFZCx1Q0FBdUMsQ0FDdkMsb0NBQW1DLENBQ25DLG1DQUFrQyxDQUVsQyxzQkFBb0IsRUFDckI7O0FBR0Qsd0JBQ0UsaUJBQWdCLEVBQ2pCOztBQUNELDJCQUNFLGlCQUFnQixFQUNqQjs7QUFDRCx1QkFDRSxpQkFBZ0IsRUFDakI7O0FBQ0QsNEJBQ0UsaUJBQWdCLEVBQ2pCOztBQUNELDJCQUNFLGlCQUFnQixFQUNqQjs7QUFDRCxpQ0FDRSxpQkFBZ0IsRUFDakI7O0FBQ0QsMEJBQ0UsaUJBQWdCLEVBQ2pCOztBQUNELHNEQUVFLGlCQUFnQixFQUNqQjs7QUFDRCx3QkFDRSxpQkFBZ0IsRUFDakI7O0FBQ0QsOEJBQ0UsaUJBQWdCLEVBQ2pCOztBQUNELDJCQUNFLGlCQUFnQixFQUNqQjs7QUFDRCw2QkFDRSxpQkFBZ0IsRUFDakI7O0FBQ0QsMkJBQ0UsaUJBQWdCLEVBQ2pCOztBQUNELDhCQUNFLGlCQUFnQixFQUNqQjs7QUFDRCw2QkFDRSxpQkFBZ0IsRUFDakI7O0FBQ0QsNkJBQ0UsaUJBQWdCLEVBQ2pCOztBQUNELHdCQUNFLGlCQUFnQixFQUNqQjs7QUFDRCxpREFFRSxpQkFBZ0IsRUFDakI7O0FBQ0QsMkJBQ0UsaUJBQWdCLEVBQ2pCOztBQUNELHlCQUNFLGlCQUFnQixFQUNqQjs7QUMxRkQsdUJBR0UsK0JBQ0EsQ0FBQSx1QkFBQSxFQUFBOztBQUpGLGlEQU1FLG9CQUFtQixFQUNuQjs7QUFQRiw2REMwREMsVUFBUSxDQUNSLG9CQUFrQixDQUNsQiwwQkgzQ2EsQ0c0Q2IsYUg3Q1ksQ0c4Q1oseUJBQ0EsQ0FBQSxpQkFDQSxDQUFBLHFCQUNBLENBQUEscUJBQ0EsQ0FBQSxpQkFDQSxDQUFBLGtCQUNBLENBQUEsbUJBQ0EsQ0FBQSxzQkFDTSxDQUFBLGdCQUNJLENBQUEsWUFDVixDQUFBLGlCQUNBLENBQUEsb0JBQ00sQ0FBQSxrQkFFTixDQUFBLFVBQVcsQ0FBQSxXQUFBLENBQUEsc0NBRUssQ0FBQSw4QkFFaEIsQ0FBQSxxQkFDUyxDQUFBLHFCRHRFRyxDQUFBLGNBQ1gsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxhQUFBLENBQUEscUJBQUEsQ0FBQSxlQUFBLEVBQUE7O0FDc0VELCtFQUNDLG1CQUFpQixFQUNqQjs7QUFDRCwrRUFDQyxlQUFhLENBQ2Isb0JBQ1UsQ0FBQyxZQUNYLENBQUEsUUFBQSxDQUFBLG1CQUFBLEVBQUE7O0FBQ0QsdUZBQ0MsaUJBQWUsRUFDZjs7QUFDRCxtRkFDQyxXQUFTLENBQ1QsWUFBVSxDQUNWLGFBQVcsQ0FDWCxvQkFBa0IsQ0FDbEIsOEJBQ1csQ0FBQyxpQkFFWixDQUFBLHFCQUNBLENBQUEsZUFBZ0IsQ0FBQSxXQVFoQixDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxFQUFBOztBQVBBLHFHQUNDLGdCQUFjLENBQ2Qsa0JBQWdCLEVBQ2hCOztBQUNELHFHQUNDLFdBQVMsRUFDVDs7QUFFRixxR0FDQyx3QkFBc0IsQ0FDdEIsZUhoR1ksQ0dpR1osV0FBUyxFQW9CVDs7QUFuQkEsdUhBQ0Msb0JIbkdXLENHb0dYLGFIckdVLENHc0dWLG9CQUFrQixDQUNsQixZQUFXLENBQ1gsYUFBWSxDQUNaLG9CQUNBLENBQUEsbUJBQ0EsQ0FBVyxlQUNYLENBQUEsYUFDQSxDQUFBLGtCQUNBLENBQUEsbUJBQVcsQ0FBQSxrQkFBQSxDQUFBLDBEQUNYLENBQUEsa0RBQUEsRUFBQTs7QUFDRCx1SEFDQyxvQkFBbUIsRUFDbkI7O0FBQ0QsaUhBQ0Msd0JBQXNCLEVBQ3RCOztBQUVGLHlHQXhGQSxlSDlCYSxDRytCYix3QkFBc0IsRUF5RnJCOztBQXhGRCwrSUFDQyxlSDFCYSxFRzJCYjs7QUFDRCxxSEFDQyx3QkFBc0IsRUFDdEI7O0FBb0ZELGlHQUNDLGtCSDNIVyxDRzRIWCxlSDNIWSxFR2dJWjs7QUFKQSw2R0FDQyxvQkg3SFcsQ0c4SFgsYUgvSFUsRUdnSVY7O0FBRUYseUVBQ0MsY0FBWSxDQUNaLDBCSG5JWSxFR29JWjs7QUFDRCx5RUFDQyxjQUFhLENBQ2IsY0FBYSxFQUNiOztBRHpKRixnQ0MwREMsVUFBUSxDQUNSLG9CQUFrQixDQUNsQiwwQkgzQ2EsQ0c0Q2IsYUg3Q1ksQ0c4Q1oseUJBQ0EsQ0FBQSxpQkFDQSxDQUFBLHFCQUNBLENBQUEscUJBQ0EsQ0FBQSxpQkFDQSxDQUFBLGtCQUNBLENBQUEsbUJBQ0EsQ0FBQSxzQkFDTSxDQUFBLGdCQUNJLENBQUEsWUFDVixDQUFBLGlCQUNBLENBQUEsb0JBQ00sQ0FBQSxrQkFFTixDQUFBLFVBQVcsQ0FBQSxXQUFBLENBQUEsc0NBRUssQ0FBQSw4QkFFaEIsQ0FBQSxxQkFDUyxDQUFBLHFCRHZEUixDQUFBLGNBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxhQUFBLENBQUEscUJBQUEsRUFBQTs7QUN3REQseUNBQ0MsbUJBQWlCLEVBQ2pCOztBQUNELHlDQUNDLGVBQWEsQ0FDYixvQkFDVSxDQUFDLFlBQ1gsQ0FBQSxRQUFBLENBQUEsbUJBQUEsRUFBQTs7QUFDRCw2Q0FDQyxpQkFBZSxFQUNmOztBQUNELDJDQUNDLFdBQVMsQ0FDVCxZQUFVLENBQ1YsYUFBVyxDQUNYLG9CQUFrQixDQUNsQiw4QkFDVyxDQUFDLGlCQUVaLENBQUEscUJBQ0EsQ0FBQSxlQUFnQixDQUFBLFdBUWhCLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEseUJBQUEsQ0FBQSxzQkFBQSxDQUFBLHdCQUFBLEVBQUE7O0FBUEEsb0RBQ0MsZ0JBQWMsQ0FDZCxrQkFBZ0IsRUFDaEI7O0FBQ0Qsb0RBQ0MsV0FBUyxFQUNUOztBQUVGLG9EQUNDLHdCQUFzQixDQUN0QixlSGhHWSxDR2lHWixXQUFTLEVBb0JUOztBQW5CQSw2REFDQyxvQkhuR1csQ0dvR1gsYUhyR1UsQ0dzR1Ysb0JBQWtCLENBQ2xCLFlBQVcsQ0FDWCxhQUFZLENBQ1osb0JBQ0EsQ0FBQSxtQkFDQSxDQUFXLGVBQ1gsQ0FBQSxhQUNBLENBQUEsa0JBQ0EsQ0FBQSxtQkFBVyxDQUFBLGtCQUFBLENBQUEsMERBQ1gsQ0FBQSxrREFBQSxFQUFBOztBQUNELDZEQUNDLG9CQUFtQixFQUNuQjs7QUFDRCwwREFDQyx3QkFBc0IsRUFDdEI7O0FBRUYsc0RBeEZBLGVIOUJhLENHK0JiLHdCQUFzQixFQXlGckI7O0FBeEZELHlFQUNDLGVIMUJhLEVHMkJiOztBQUNELDREQUNDLHdCQUFzQixFQUN0Qjs7QUFvRkQsa0RBQ0Msa0JIM0hXLENHNEhYLGVIM0hZLEVHZ0laOztBQUpBLHdEQUNDLG9CSDdIVyxDRzhIWCxhSC9IVSxFR2dJVjs7QUFFRixzQ0FDQyxjQUFZLENBQ1osMEJIbklZLEVHb0laOztBQUNELHNDQUNDLGNBQWEsQ0FDYixjQUFhLEVBQ2I7O0FEekpGLHlDQWdCRywwQ0FDQSxDQUFBLGtDQUFBLEVBQUE7O0FBakJILDJEQW9CSSxtQ0FDQSxDQUFBLCtCQUFBLENBQUEsMkJBQUEsRUFBQTs7QUFyQkosMERBdUJJLG9DQUNBLENBQUEsZ0NBQUEsQ0FBQSw0QkFBQSxFQUFBOztBQXhCSix1QkE0QkUsc0JBQXFCLENBQ3JCLGtCQUFpQixDQUNqQiwrQkFBOEIsQ0FDOUIsb0NBSUEsQ0FBQSw0QkFBQSxFQUFBOztBQW5DRiw2QkFpQ0csc0JBQW9CLEVBQ3BCOztBQWxDSCxrQ0FxQ0UscUJBQ0EsQ0FBTyxxQkFDRyxDQUFBLGNBQ0gsQ0FBQSxlQUNQLENBQUEsa0JBQUEsQ0FBQSxhQUFBLEVBQUE7O0FBekNGLHNDQTJDRSxvQkFDQSxDQUFBLGlCQUNBLENBQUEsYUFBQSxDQUFBLG9CQUFBLEVBQUE7O0FBN0NGLHlDQStDRSxvQkFDQSxDQUFBLG9CQUNBLENBQUEsZ0JBQUEsQ0FBQSxtQkFBQSxFQUFBOztBQWpERix3Q0FtREUsb0JBQWtCLENBQ2xCLGlCQUFlLEVBTWY7O0FBMURGLDRDQXNERyxZQUFVLENBQ1YsYUFBVyxFQUVYOztBQzVDRCw2QkRiRixrQ0E2REcsNkJBQ0EsQ0FBQSw4QkFBQSxDQUFBLDJCQUFBLENBQUEsdUJBQUEsRUFBQTtFQTlESCxzQ0FnRUcsbUJBQWlCLEVBQ2pCLEVBQUE7O0FBakVILGlGQXFFRSxtQkFBaUIsQ0FDakIsZUFBYSxDQUNiLGlCQUFlLEVBVWY7O0FBakZGLCtGQ3lLRSxtQ0FBa0MsQ0FDbEMsWUFBVyxDQUNYLG1CQUFrQixDQUNsQixvQkFBbUIsQ0FDbkIscUJBQW9CLENBQ3BCLHFCQUFvQixDQUNwQixlQUFjLENBRWQsdUNBQXVDLENBQ3ZDLG9DQUFtQyxDQUNuQyxtQ0FBa0MsQ0FFbEMsc0JBQW9CLENEM0duQixpQkFBZ0IsQ0FDaEIsbUJBQWlCLENBQ2pCLFdBQVMsQ0FDVCxTQUFPLENBQ1Asb0NGOURLLENBQUEsZ0NFZ0VMLENBQUEsNEJBQUEsQ0FBQSxhQUFBLEVBQUE7O0FBaEZILHlHQzBEQyxVQUFRLENBQ1Isb0JBQWtCLENBQ2xCLDBCSDNDYSxDRzRDYixhSDdDWSxDRzhDWix5QkFDQSxDQUFBLGlCQUNBLENBQUEscUJBQ0EsQ0FBQSxxQkFDQSxDQUFBLGlCQUNBLENBQUEsa0JBQ0EsQ0FBQSxtQkFDQSxDQUFBLHNCQUNNLENBQUEsZ0JBQ0ksQ0FBQSxZQUNWLENBQUEsaUJBQ0EsQ0FBQSxvQkFDTSxDQUFBLGtCQUVOLENBQUEsVUFBVyxDQUFBLFdBQUEsQ0FBQSxzQ0FFSyxDQUFBLDhCQUVoQixDQUFBLHFCQUNTLENBQUEscUJESVIsQ0FBQSxjRjdEYSxDRThEYix5QkFDQSxDQUFBLHNCQU1BLENBQUEsd0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxhQUFBLENBQUEscUJBQUEsQ0FBQSwwQkFBQSxDQUFBLGFBQUEsQ0FBQSxtQkFBQSxFQUFBOztBQ1hELDJIQUNDLG1CQUFpQixFQUNqQjs7QUFDRCwySEFDQyxlQUFhLENBQ2Isb0JBQ1UsQ0FBQyxZQUNYLENBQUEsUUFBQSxDQUFBLG1CQUFBLEVBQUE7O0FBQ0QsbUlBQ0MsaUJBQWUsRUFDZjs7QUFDRCwrSEFDQyxXQUFTLENBQ1QsWUFBVSxDQUNWLGFBQVcsQ0FDWCxvQkFBa0IsQ0FDbEIsOEJBQ1csQ0FBQyxpQkFFWixDQUFBLHFCQUNBLENBQUEsZUFBZ0IsQ0FBQSxXQVFoQixDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxFQUFBOztBQVBBLGlKQUNDLGdCQUFjLENBQ2Qsa0JBQWdCLEVBQ2hCOztBQUNELGlKQUNDLFdBQVMsRUFDVDs7QUFFRixpSkFDQyx3QkFBc0IsQ0FDdEIsZUhoR1ksQ0dpR1osV0FBUyxFQW9CVDs7QUFuQkEsbUtBQ0Msb0JIbkdXLENHb0dYLGFIckdVLENHc0dWLG9CQUFrQixDQUNsQixZQUFXLENBQ1gsYUFBWSxDQUNaLG9CQUNBLENBQUEsbUJBQ0EsQ0FBVyxlQUNYLENBQUEsYUFDQSxDQUFBLGtCQUNBLENBQUEsbUJBQVcsQ0FBQSxrQkFBQSxDQUFBLDBEQUNYLENBQUEsa0RBQUEsRUFBQTs7QUFDRCxtS0FDQyxvQkFBbUIsRUFDbkI7O0FBQ0QsNkpBQ0Msd0JBQXNCLEVBQ3RCOztBQUVGLHFKQXhGQSxlSDlCYSxDRytCYix3QkFBc0IsRUF5RnJCOztBQXhGRCwyTEFDQyxlSDFCYSxFRzJCYjs7QUFDRCxpS0FDQyx3QkFBc0IsRUFDdEI7O0FBb0ZELDZJQUNDLGtCSDNIVyxDRzRIWCxlSDNIWSxFR2dJWjs7QUFKQSx5SkFDQyxvQkg3SFcsQ0c4SFgsYUgvSFUsRUdnSVY7O0FBRUYscUhBQ0MsY0FBWSxDQUNaLDBCSG5JWSxFR29JWjs7QUFDRCxxSEFDQyxjQUFhLENBQ2IsY0FBYSxFQUNiOztBRHpKRiwySEF5RkcsZ0JBQWUsQ0FDZixnQ0FBK0IsQ0FBRSxzQkFBc0IsQ0FDdkQsd0JBQXVCLEVBQ3ZCOztBQTVGSCx5Q0ErRkUsWUFBVyxDQUNYLDhCRjVGbUIsQ0U2Rm5CLGVBQWEsQ0FDYixxQkFDQSxDQUFBLHFCQUFnQixDQUFBLGNBeUNoQixDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSwrQkFBQSxFQUFBOztBQTVJRiw0REFxR0csb0JBQ0EsQ0FBQSxvQkFLQSxDQUFBLGdCQUFBLENBQUEsbUJBQUEsRUFBQTs7QUEzR0gsaUZBd0dJLGlCQUFnQixDQUNoQixjQUFhLEVBQ2I7O0FBMUdKLGdFQTZHRyw0QkFDQSxDQUFBLDJCQUFBLENBQUEsbUJBQUEsRUFBQTs7QUE5R0gsNkNBZ0hHLG9CQUNVLENBQUMsWUFDWCxDQUFBLFFBQVcsQ0FBQSxtQkFDWCxDQUFBLGlCQUFBLEVBQUE7O0FBbkhILG1IQXNIRyxtQkFBa0IsQ0FDbEIsVUFBUyxDQUNULG1CQUFrQixDQUNsQixlQUFjLENBQ2QsYUFBWSxDQUNaLFFBQU8sQ0FDUCxTQUFRLENBQ1IsZUZwSGdCLENFcUhoQixrQkFBaUIsRUFDakI7O0FDNUdELDRCRG5CRix5Q0FpSUcsNkJBQ0EsQ0FBQSw4QkFVRCxDQUFBLDJCQUFBLENBQUEsdUJBQUEsQ0FBQSx3QkFBQSxDQUFBLHFCQUFBLENBQUEsNEJBQUEsRUFBQTtFQTVJRiw0REFvSUksb0JBQ0EsQ0FBQSxZQUFBLENBQUEsUUFBQSxFQUFBO0VBcklKLDZDQXdJSSxtQkFBaUIsQ0FDakIsZUFBYSxFQUNiLEVBQUE7O0FBMUlKLHFDQThJRSx5QkFBd0IsRUFJeEI7O0FDekhBLDRCRHpCRixxQ0FnSkcsNEJBQTJCLEVBRTVCLEVBQUE7O0FDekhBLDRCRHpCRixvQ0FxSkcseUJBQXdCLEVBRXpCLEVBQUE7O0FBdkpGLGlDQXlKRSxtQkFBa0IsRUEyQmxCOztBQXBMRix3Q0EySkcsbUJBQWtCLENBQ2xCLFlBQVcsQ0FDWCxlQUFjLENBQ2QsWUFBVyxDQUNYLE9BQU0sQ0FDTixRQUFPLENBQ1AsU0FBUSxDQUNSLFVBQVMsQ0FDVCxxQ0FBZ0MsRUFDaEM7O0FBcEtILHlDQXNLRyxZQUFXLENBQ1gsZUFBYyxDQUNkLG1CQUFrQixDQUNsQixtQkFBa0IsQ0FDbEIsWUFBVyxDQUNYLGFBQVksQ0FDWixhQUFZLENBQ1osVUFBUyxDQUNULFNBQVEsQ0FDUix3QkFBdUIsQ0FDdkIscUNBQW9DLENBQ3BDLDhCRmhLVyxDRWlLWCxtREFDQSxDQUFBLDJDQUFBLEVBQUE7O0FBSUgsZ0NBRUUsT0FBQSxrQ0FBeUIsQ0FBQSwwQkFBQSxFQUFBLEVBQUE7O0FFeEwzQix3QkFBdUIsT0FBQSxrQ0FBQSxDQUFBLDBCQUFBLEVBQUEsRUFBQTs7QUN5TnZCLHVCRHJORTtBQ3NORix3RUR2TkMsdUNBYWdCLGlCQUdILEVBQUM7RUFoQmQsb0VBc0JpQiw4QkFEaEIsQ0FBQSxpQkFBQSxFQUFBO0VBckJELG9IQXdDSyw4QkFBQSxDQUFBLGlCQUFBLEVBQUE7RUF4Q0wsZ0tBdUNNLDhCQUFBLENBQUEsaUJBQUEsRUFBQTtFQXZDTix5RkE2Q2lCLGdCQUNiLEVBQUE7RUE5Q0osb0dBd0RJLGFBQUEsQ0FBQSxrQkFBQSxFQUFBO0VBeERKLHlFQTBEUyxrQkFDTCxFQUFBO0VBM0RKLG9FQWdFUSxvQkFDTixDQUFBLFlBQUEsQ0FBQSxRQUFBLEVBQUE7RUM4SkQsbUVBQW1FLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUU7RUNuT2pILDZEQUdFLFlBQUEsRUFBQSxFQUFBOztBQUhGLG9DQUtFLG1CQUFtQixFQW1VbkI7O0FBeFVGLG1DQU1FLG9CQUFjLEVBQUE7O0FBTmhCLG1FQVVZLDRCQUNULEVBQUE7O0FBWEgseURBYUcsZUFDQSxFQUFBOztBQWRILHVEQWlCSyxxQkFDZSxDQUFBLHFCQUNoQixDQUFBLGNBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsK0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxvQkFBQSxFQUFBOztBQW5CSiwwREFvQkcsa0JBQXNCLEVBQ3JCOztBQXJCSiw2RUF3QkkscUJBQ08sQ0FBQSxxQkFZTixDQUFBLGNBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxZQUFBLEVBQUE7O0FBckNMLDBGQTBCSyxvQkFDQyxDQUFBLFlBQVksQ0FBQSxRQUFRLEVBQ3BCOztBQTVCTiw2R0E4Qk0sdUJBQ0EsQ0FBQSxvQkFDQSxDQUFBLHNCQUFBLEVBQUE7O0FBaENOLDZHQWtDTSxxQk45QlEsQ0FBQSxpQk0rQlIsRUFBQTs7QUFuQ04sMkdBdUNnQiwwQkFDWCxFQUFBOztBSGZILCtGR3pCRixpQkFJQyxFQUFBOztBRDBQRCw0QkFBNEIsbUhBQW1ILG1CQUFtQixDQUFDLG9CQUFvQixFQUFFO0VDOVB6TCwrRk5TWSxrQk0rQ0QsRUFBQSxFQUFPOztBQXhEbEIseUVBNERJLHFCQUNXLENBQ1YscUJBQ0EsQ0FBQSxjQUNBLENBQUEsZUFDQSxDQUFBLGdCQUFBLENBQUEsaUJBQUEsQ0FBQSxtQkFBQSxDQUFBLG9DQUFBLENBQUEsNEJBQUEsRUFBQTs7QUFqRUwsa0ZBbUVLLFlObERTLENBQUEsYU1tRFQsQ0FBQSxpQkFBQSxDQUFBLGlCQUFBLEVBQUE7O0FBcEVMLCtFQXlFYyxlQUNBLEVBQUE7O0FBMUVkLG1EQTRFSyxhQUNPLENBQ1IsZ0JBQWMsQ0FBQSx5Q0FFZCxDQUFBLGlDQUFBLENBQUEsaUJBQUEsRUFBQTs7QUFoRkosc0RBaUZHLFVBQ0MsQ0FBQSxxQkFDRyxDQUFDLGtCQUNNLEVBQ1Y7O0FBckZKLDhEQWlGYSxtQkFTRyxDQUFBLFVBQ1gsQ0FBQSxZQUFtQixDQUNuQixnQkFBQSxDQUFBLGlCQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGNBQUEsQ0FBQSxtQkFBQSxFQUFBOztBQTVGTCxxRUE4RkcsYUFDUSxDQUFBLHFCQUNFLEVBQUE7O0FIL0RaLDJFQUFDLGNBQ08sQ0FBQSxtQkFDRSxDQUFBLG9CQUVULENBQUEsbUJBQ0ksQ0FBSSxjQUVSLENBQUEsa0JBQ0EsRUFBQTs7QUd6Q0Ysa0ZBdUdLLFlObkdTLENBQUEsbUJNb0dBLENBQ1QsWUFDQSxDQUFBLGFBQVcsQ0FFWCxVQUFBLENBQUEsV0FBQSxDQUFBLGtCQUFBLENBQUEsa0NBQUEsQ0FBQSw4QkFBQSxDQUFBLDBCQUFBLENBQUEsV0FBQSxFQUFBOztBSG5GSCxrRkdxRUMsb0JBQXVCLENBQUEsV0FpQmhCLENBQUEsV0FDSixDQUFLLGFBQ0wsRUFBQTs7QUFqSE4sNEJBSUMsa0ZBa0h1QixXQUNwQixDQUFBLFlBQWdCLEVBQUEsRUFBQTs7QUF2SHBCLDBFQXdITSxxQkFFRCxDQUFBLHFCQUNBLENBQUEsY0FBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxzQkFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSwrQkFBQSxFQUFBOztBQTNITCw4RUE0SFUsb0JBRUwsQ0FBQSxZQUFjLENBQUEsUUFDZCxDQUFBLG1CQUNBLEVBQUE7O0FBaElMLGdGQUFBLGVBQUEsQ0FBQSxxQkF1RUUsQ0FBQSxtQkE2Q0MsQ0FBQSxlQWVDLEVBQUE7O0FBbklKLGdLQXNLSyxhQUFBLENBQUEsMEJBQUEsQ0FBQSxrQkFBQSxDQUFBLGlCQUFBLENBQUEsWUFBQSxDQUFBLGlCQUFBLEVBQUE7O0FBdEtMLCtGQTZJSyxtQkFDQyxFQUFBOztBQTlJTixnSEE2SXFCLG1CQWNMLENBQUcsWUFDWixDQUFBLFlBQ0EsQ0FBQSxpQkFBUyxDQUFBLGdCQUNULENBQUEsaUJBQUEsQ0FBQSxhQUFBLENBQUEsZUFBQSxDQUFBLGtCQUFBLENBQUEsZUFBQSxDQUFBLHNCQUFBLENBQUEsc0JBQUEsRUFBQTs7QUhySUwsd0hHa0hzQixhQUVuQixDQUFBLHFCQXFCQyxDQUFBLHNCQUFBLEVBQUE7O0FBbEtOLDRCQUlDLGdIQWlLSyxXQUFBLEVBQUEsRUFBQTs7QUFyS04sZ0hBMkttQixZQUNkLEVBQUE7O0FBNUtMLGlHQThLSyxvQkFDUSxDQUFBLG9CQUNRLENBQUMsZ0JBQ1IsQ0FBQyxpQkh0SGQsRUFBQTs7QUF1QkEsNEdBQUEsYUFDQyxDQUFBLHlCQUNBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxDQUFBLFVBQUEsQ0FBQSxVQUFBLENBQUEsb0JBQUEsQ0FBQSwwQkFBQSxDQUFBLGFBQUEsQ0FBQSx5QkFBQSxDQUFBLGlCQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGlCQUFBLENBQUEsa0JBQUEsQ0FBQSxtQkFBQSxDQUFBLHNCQUFBLENBQUEsZ0JBQUEsQ0FBQSxZQUFBLENBQUEsaUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGtCQUFBLENBQUEsVUFBQSxDQUFBLFdBQUEsQ0FBQSxzQ0FBQSxDQUFBLDhCQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGNBQUEsQ0FBQSx3QkFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGFBQUEsQ0FBQSxxQkFBQSxDQUFBLFVBQUEsRUFBQTs7QUFDRCxxSEFDQyxtQkFDQSxFQUFJOztBQUdMLHFIQUFHLGVBQ1MsQ0FBQSxvQkFDWCxDQUFBLFlBQUEsQ0FBQSxRQUFBLENBQUEsbUJBQUEsRUFBQTs7QUFDRCx5SEFDQyxpQkFDTSxFQUFBOztBQVFOLHVIQUFBLFdBQ0MsQ0FBQSxZQUFjLENBQUEsYUFDSixDQUFBLG9CQUNWLENBQUEsOEJBQUEsQ0FBQSxpQkFBQSxDQUFBLHFCQUFBLENBQUEsZUFBQSxDQUFBLFdBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsRUFBQTs7QUFDRCxnSUFDQyxnQkFDQSxDQUFBLGtCQUFBLEVBQUE7O0FBRUYsZ0lBQ0MsV0FBVSxFQUFDOztBQUdYLGdJQUFBLHdCSGxHSyxDQUFBLGVBREMsQ0FBQSxXR3NHTCxFQUFBOztBQVVELHlJQUNDLG9CQUFtQixDQUFBLGFBQ25CLENBQUEsb0JBQUEsQ0FBQSxZQUFBLENBQUEsYUFBQSxDQUFBLG9CQUFBLENBQUEsbUJBQUEsQ0FBQSxlQUFBLENBQUEsYUFBQSxDQUFBLGtCQUFBLENBQUEsbUJBQUEsQ0FBQSxrQkFBQSxDQUFBLDBEQUFBLENBQUEsa0RBQUEsRUFBQTs7QUFDRCx5SUFDQyxvQkFBc0IsRUFBQTs7QUFHeEIsc0lBeEZBLHdCQUNXLEVBQUE7O0FBQ1gsa0lBQUMsZUFBQSxDQUFtQix3QkFFbkIsRUFBQTs7QUFDRCxxSkFDWSxlQUNYLEVBQUE7O0FBb0ZELHdJQUNXLHdCSDFIRSxFR2dJWjs7QUFKQSw4SEFIa0Isa0JIekhiLENBQUEsZUFEQyxFQUFBOztBR2tJUCxvSUFFQyxvQkhuSUssQ0FBQSxhR29JTCxFQUFBOztBQUNELGtIQUNDLGNBQWEsQ0FDYiwwQkFDQSxFQUFBOztBQWhJQSxrSEc4SkcsY0FjRCxDQUFBLGNBQUEsRUFBQTs7QUQwSUosNEJDM1VDLDBFQTBMSyw2QkFDTSxDQUFBLDhCQUlOLENBQUEsMkJBQUEsQ0FBQSx1QkFBQSxFQUFBO0VBbk1OLDhFQTZMSyxZQUFBLENBQUEsbUJBSUUsQ0FBQSxpQkFDQSxFQUFBO0VEK0lMLGlHQUFpRyx5QkFBeUIsQ0FBQyxzQkFBc0IsQ0FBQyx3QkFBd0IsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFO0VDalZ6Tiw0R0EwTUcsYUFDQSxFQUFBLEVBQUE7O0FBM01ILHNEQXVNb0IsMEJOdExiLENBQUEsbUJNNkxILENBQUEsb0JBQUEsQ0FBQSxpQkFBQSxFQUFBOztBQTlNSixpRUErTUcsc0JBQ0MsRUFBTzs7QUFoTlgsaUZBb05JLGNBQWdCLENBQUEscUJBQ0csQ0FDbEIscUJBQ0EsQ0FBQSxjQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLCtCQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLEVBQUE7O0FBdk5MLGlHQTJOa0Isb0JBRWQsQ0FBQSxtQkFJQSxFQUFBOztBSHhNRixvRUc4S0EscUJBa0JDLENBQUEscUJBUUMsQ0FBQSxjQUFBLENBQUEsb0JBQUEsQ0FBQSxtQkFBQSxDQUFBLGVBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEsaUJBQUEsQ0FBQSxlQUFBLEVBQUE7O0FBak9KLDRCQUlDLG9FQWdPbUIsb0JBQ2hCLENBQUEsWUFBQSxDQUFBLFFBQUEsRUFBQSxFQUFBOztBQXJPSiw4REFzT0ksZUFFQyxDQUFBLGlCQU9BLEVBQUE7O0FBL09MLDJFQXlPSyxlQUNDLEVBQUE7O0FBMU9OLDhHQXFQSyxlQUNBLEVBQUE7O0FBdFBMLHlGQTJQYSxpQkFDUixDQUFBLGVBQWtCLENBQUEsbUJBQ2xCLENBQUEsa0JBQUEsQ0FBQSxlQUFBLEVBQUE7O0FBN1BMLGdGQThQSSxzQkFDQyxDQUFBLG1CQUNBLEVBQUE7O0FBaFFMLHFHQXFRZ0IsbUJBQ1osRUFBZTs7QUF0UW5CLHVFQXVRSSxxQkFDQyxDQUFBLHFCQUNBLENBQUEsY0FBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLHNCQUFBLENBQUEsbUJBQUEsQ0FBQSwwQkFBQSxFQUFBOztBQXpRTCx5RkEwUXdCLGlCQUNMLEVBQUE7O0FBM1FuQiw0RkFrUmEsbUJBQ0YsQ0FBQSxnQkFDSSxDQUFBLGVBQ0YsRUFBQTs7QUhwUFosa0ZBQUMsbUJBQ1UsQ0FDVixhQUFTLENBQUEsZ0JBQ0gsQ0FBSSxpQkFFVixDQUFBLHlDQUdBLENBQUEsaUNBQ08sRUFBRTs7QUcxQ1gseUZBeVJLLFlBQVMsQ0FDVCxtQkFBQSxDQUFBLFlBQUEsQ0FBQSxhQUFBLENBQUEsVUFBQSxDQUFBLFdBQUEsQ0FBQSxrQkFBQSxDQUFBLGtDQUFBLENBQUEsOEJBQUEsQ0FBQSwwQkFBQSxDQUFBLFdBQUEsRUFBQTs7QUExUkwseUZBMlJJLFdBQ0MsRUFBQTs7QUE1UkwsK0ZBK1JJLG9CQUNTLENBQUEscUJBQ1IsRUFBQTs7QUFqU0wsb0dBbVNLLHFCQUNBLEVBQUE7O0FIM1FILCtGR2tSRSxjQUNDLEVBQUE7O0FEa0ZMLDRCQzFYQyxpRkE2U2dCLDZCQUVWLENBQVksOEJBQ1osQ0FBQSwyQkFBQSxDQUFBLHVCQUFBLENBQUEseUJBQUEsQ0FBQSxzQkFBQSxDQUFBLHdCQUFBLEVBQUE7RUFwVFAsa0dBcVRNLGdCQUFrQixDQUFBLGlCQUNKLEVBQ2I7RUF2VFAsNkdBQUEsZUFJQyxDQUFBLGtCQXNTRSxFQUFrQjtFQTFTckIsb0hBbVVtQixlQUNiLEVBQUE7RUQ4REosa01BQWtNLGlCQUFpQixFQUFFO0VFbFl2TixvR0EwS0UsZUFBQSxFQUFBLEVBQUE7O0FBMUtGLG9DQUtFLG1CQUFxQixDQUFBLGlCQUx2QixDQUFBLGdCQUNlLEVBS2I7O0FBTkYseUhBWUcscUJBRUMsQ0FBQSxxQkFBQSxDQUFBLGNBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsK0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxnQkFBQSxDQUFBLDBCQUFBLEVBQUE7O0FBZEosNkhBTUUsZUFTQyxFQUFBOztBQWZILG1LQW1CSSxvQkFFQyxDQUFBLFlBQVksQ0FBQSxRQUNaLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGNBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsRUFBQTs7QUF0QkwsdUtBeUJJLHFCQUNBLENBQUEscUJBQWdCLENBQUEsY0FDTCxDQUFBLDBCQUVYLENBQUEsdUJBT0EsQ0FBQSxvQkFBQSxFQUFBOztBQXBDSix1S0F3QkcscUJBTUMsQ0FBQSxxQkFBc0IsQ0FDckIsY0FDQSxDQUFBLDBCQUNZLENBQUEsdUJBQ0MsQ0FBRSwrQkFDZixDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLG9CQUFBLENBQUEsWUFBQSxDQUFBLFFBQUEsQ0FBQSxrQkFBQSxFQUFBOztBQW5DTCxtTkEyQ0csb0JBQUEsQ0FBQSxZQUFBLENBQUEsUUFBQSxDQUFBLG1CQUFBLENBQUEscUJBQUEsQ0FBQSxzQkFBQSxFQUFBOztBQTNDSCxpRUFzQzhCLGVQckJ2QixFQUFBOztBT2pCUCx1RUE2Q0csZUFDQSxFQUFBOztBQTlDSCwwREFtREcsMEJBQ08sQ0FBRyxhUGhEQyxDQUFPLGlCT2tEbEIsQ0FBQSxtQkFDQSxFQUFBOztBSjlCRCx5REl4QkQsZ0JBaURDLENBQUEsMEJBUWlCLENBQUEsY0FFaEIsQ0FBQSxpQkFBQSxDQUFBLG1CQUFBLENBQUEsaUJBQUEsRUFBQTs7QUE1REgsNEJBQ0MseURQR2EsZ0JPMkRYLEVBQVksRUFBRTs7QUEvRGpCLHdEQTZEcUIsaUNBTWpCLENBQUEsZ0JBQUEsQ0FBQSxpQkFBQSxFQUFBOztBQW5FSixtRUFvRUcsaUJBRU8sRVBoRUc7O0FPTmIsK0VBcUVLLGVQcERFLEVBQUE7O0FPakJQLHFGUFNZLGVPcUVSLEVBQUE7O0FBOUVKLDRFQWdGTSxlUHZFTSxDQUFPLGlCT3lFZCxDQUFBLGlCQUFBLEVBQUE7O0FBbEZMLDhFQW1GSSxlQUFrQixFQUNqQjs7QUFwRkwsOEZBd0hHLGlCQUFBLENBQUEscUNBQUEsQ0FBQSxpQ0FBQSxDQUFBLDZCQUFBLEVBQUE7O0FBeEhILGlFQTJGRyxvQkFDQyxFQUFBOztBSjNESCxnRkFBQyxtQkFDVSxFQUNWOztBSW5DRix1RkErRkssWUFBUyxDQUNULG1CQUFBLENBQUEsWUFBQSxDQUFBLGFBQUEsQ0FBQSxVQUFBLENBQUEsV0FBQSxDQUFBLGtCQUFBLENBQUEsa0NBQUEsQ0FBQSw4QkFBQSxDQUFBLDBCQUFBLENBQUEsV0FBQSxFQUFBOztBQWhHTCx1RkFpR0ksV0FBQSxFQUFzQjs7QUFqRzFCLHNHQXNHSywwQkFDVSxDUG5HRCxlT29HVCxFQUFBOztBQXhHTCxxR0F5R3VCLGVBQ2xCLENBQUEsb0JQL0ZZLEVBQUE7O0FPWGpCLGdIQTZHSyw4QlBsR1ksRUFBQTs7QU9YakIsb0dBNEd1QiwrQ0FJakIsRUFBQTs7QUFoSE4sK0dBbUhLLGlCQUNBLEVBQUE7O0FBcEhMLDRHQStIRyxjQUFBLENBQUEsZ0JBQUEsQ0FBQSxpQkFBQSxFQUFBOztBQS9ISCwwREE0SEcsb0JBQ0MsQ0FBQSxjQUNBLEVBQUE7O0FBOUhKLHlFQXFJc0IsaUJBQ25CLEVBQUE7O0FBdElILHFEQWlJRyxpQ0FDVyxFQUFFOztBQWxJaEIsMkVBd0lHLHdCQUNDLENBQXFCLFdBQ3BCLEVBQVM7O0FBMUlkLHVHQXlJeUIsa0JBQUEsQ0FBQSxvQkFLbkIsQ0FBQSxvQkFDQSxDQUFBLGdCQUFBLEVBQUE7O0FBL0lOLHFJQXVKUyxvQkFDSixDQUFBLFlBQWtCLENBUWxCLFFBQUEsQ0FBQSxrQkFBQSxFQUFBOztBQWhLTCw2R0F5SkssbUJBQ0MsQ0FBQSxvQkFDQSxDQUFBLG9CQUFBLENBQUEsZ0JBQUEsQ0FBQSxtQkFBQSxFQUFBOztBQTNKTiw4SEE2Sk0sY0FDQSxFQUFBOztBQTlKTiw2SEF1S0ssb0JBQUEsQ0FBQSxZQUFBLENBQUEsUUFBQSxDQUFBLGtCQUFBLEVBQUE7O0FKcEpILHdHSTRKRSxpQkFDUyxFQUFJOztBRm1TakIsNEJFdFNFLGlGQVlHLGNBQUEsRUFBQTtFQXpMTCxnRUEwTEksNkJBQ00sQ0FBQyw4QkFFTixDQUFBLDJCQUNBLENBQUEsdUJBQ0EsQ0FBQSx5QkFTQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsRUFBQTtFQXhNTCxxRkFnTUssWUFBQSxFQUFBO0VBaE1MLHVGQWdNSyxZQUFBLENBQUEsNkJBSUUsQ0FBQSw4QkFDUSxDQUFBLDJCQUNSLENBQUEsdUJBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsQ0FBQSxxQkFBQSxDQUFBLG1CQUFBLEVBQUE7RUF0TVAsNkdBNk1VLG9CQUNKLENBQUEsaUJBQUEsQ0FBQSxhQUFBLENBQUEsb0JBQUEsRUFBQTtFRjBRSiw4SEFBOEgsc0JBQXNCLENBQUMsb0JBQW9CLEVBQUU7RUYvYjNLLHdHSStMRSxvQkFBQSxDQUFBLFlBQUEsQ0FBQSxRQUFBLEVBQUEsRUFBQTs7QUZtUUosNEJBQTRCLDBEQUEwRCxXQUFXLEVBQUU7RUczZG5HLDZFQUlRLFdBeUROLEVBQUEsRUFBQTs7QUE3REYsa0NBS0UscUJBQ0MsQ0FBQSxxQkFDQSxDQUFBLGNBQWdCLENBQUEsNkJBRWhCLENBQUEsOEJBaUJBLENBQUEsMkJBQUEsQ0FBQSx1QkFBQSxDQUFBLGNBQUEsRUFBQTs7QUExQkgsdURBVUcscUJBQ0MsQ0FBQSxxQkFBZSxDQUFTLGNBQ2IsQ0FBQywwQkFFWixDQUFBLHVCQUFBLENBQUEsK0JBQUEsQ0FBQSxrQkFBQSxDQUFBLGlCQUFBLEVBQUE7O0FBZEosMEVBZ0JJLDBCQUNXLENBQUEsaUJBQ1gsRUFBQTs7QUFsQkosMEVBbUJJLHFCQUF1QixDQUFDLHFCQUNSLENBQUEsY0FDZixDQUFBLG9CUkdHLENBQUEsZ0JRREgsQ0FBWSx3QkFDWixDQUFBLHFCQUFBLENBQUEsNEJBQUEsRUFBQTs7QUF4Qkwsa0dBOEJHLDBCQUVBLENBQUEsaUJBQWUsQ0FLZixlQUFBLENBQUEsb0JBQUEsRUFBQTs7QUFyQ0gsbURBaUNHLFlBQUEsQ0FBQSx3QkFDUSxDQUFBLG1CUlZILENBQUEsY1FZSixDQUFBLGlCQUFBLEVBQUE7O0FBcENKLCtFQXVDa0IsWUFDZixDQUFBLG9CQVdBLEVBQUE7O0FBbkRILHFEQTRDRywrQkFFQyxDQUFBLCtCQUNBLENBQUEsZ0NBQUEsQ0FBQSw0QkFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxFQUFBOztBQS9DSixzRUFpREksb0JBQ0EsQ0FBQSxpQkFBQSxDQUFBLGFBQUEsQ0FBQSxrQkFBQSxFQUFBOztBTHpCRixnRUs0QkMsaUJBQXFCLEVBQ3BCOztBSDRiSiw0QkFBNEIsdURBQXVELDZCQUE2QixDQUFDLDhCQUE4QixDQUFDLDJCQUEyQixDQUFDLHVCQUF1QixFQUFFO0VHbGZyTSwwRUFnRUUsNkJBQUEsQ0FBQSw4QkFBQSxDQUFBLDJCQUFBLENBQUEsdUJBQUEsRUFBQSxFQUFBOztBQWhFRix3REFtRUcsV0FBZSxFQVdmOztBQTlFSCxtREFvRUcsb0JBQXFCLENBQ3BCLGdCQUNBLEVBQUE7O0FBdEVKLHdFQTBFSSw2QkFDSyxDQUFFLGtCQUNLLENBQUEsU0FDWixDQUFBLDZCQUFBLENBQUEsOEJBQUEsQ0FBQSwyQkFBQSxDQUFBLHVCQUFBLENBQUEsaUJBQUEsRUFBQTs7QUM1RUosb0VBR0MsMEJBQ0ssQ0FBQSxZQUNMLENBQUEsZ0JBQWUsRUFBQTs7QUFMaEIsbUJBYUcsZUFDVSxDQUFBLDRCQUVYLENBQUEsNEJBQ0EsQ0FBQSxxQkFDQSxDQUFBLDBCQUNVLENBQUUsdUJBQ1osQ0FBQSwrQkFTQSxDQUFBLGVBQUEsQ0FBQSwwQkFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGdCQUFBLENBQUEsaUJBQUEsQ0FBQSwwQkFBQSxDQUFBLGtCQUFBLENBQUEsb0JBQUEsQ0FBQSxlQUFBLEVBQUE7O0FBN0JGLHFCQWFFLGdCQWJGLENBQUEsZUFzQlUsQ0FBQyxpQ0FFUixDQUFBLHdCQUFBLENBQUEsZ0JBQUEsQ0FBQSxvQ0FBQSxDQUFBLDRCQUFBLENBQUEsaUJBQUEsRUFBQTs7QUF4Qkgsd0RBMkJXLGNBQ1IsRUFBQTs7QUE1QkgsOEJBOEJhLGFBRVgsQ0FBQSxnQkFBQSxFQUFBOztBQWhDRiwrQkFpQ2UsNkJBR2IsQ0FBQSxrQkFBQSxDQUFBLFNBQUEsRUFBQTs7QUFwQ0YsaUNBc0NFLDZCQUNBLENBQUEsa0JBQUEsQ0FBQSxTQUFBLENBQUEsZUFBQSxFQUFBOztBQUdGLGdDQUVDLDZCQUVDLENBQUEsa0JBQ0EsQ0FBQSxTVHZDVSxFQUFPOztBU2tDbkIsb0NBV0UscUJBQ0MsQ0FBQSxxQkFDSyxDQUFBLGNBQ0wsQ0FBQSxzQkFDQSxDQUFBLG1CQUNBLENBQUEsMEJBQ0EsQ0FBTyxlQUNQLENBQUEsMEJBQ1MsQ0FBQSwwQkF5QlQsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEsa0JBQUEsQ0FBQSxpQkFBQSxDQUFBLG1CQUFBLEVBQUE7O0FBNUNILDhDQXFCSywwQkFFRCxDQUFBLG9CQUNBLENBQUEsb0JBQW9CLENBQUEsZ0JBQ3BCLENBQUEscUJBQ0EsQ0FBSyxxQkFDRSxDQUFBLGNBQ1AsQ0FBQSwwQkFJQSxDQUFBLHVCQUFBLENBQUEsK0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxlQUFBLENBQUEsb0JBQUEsQ0FBQSxpQkFBQSxDQUFBLGVBQUEsRUFBQTs7QUFoQ0osZ0RBcUJJLGVUL0NHLENBQUEseUJTeURGLENBQUEsNEJBQUEsQ0FBQSw2QkFBQSxDQUFBLGVBQUEsQ0FBQSxnQkFBQSxDQUFBLG9DQUFBLENBQUEsNEJBQUEsRUFBQTs7QUEvQkwsc0RBa0NTLGVBQ0wsRUFBQTs7QUFuQ0osZ0RBaUNJLGVBSVEsQ0FBQSwwQ0FDUCxDQUFBLGtDQUFBLEVBQUE7O0FBdENMLHNEQXVDYyxZQUNULEVBQUE7O0FOMURILHlETW9CRCxxQkE0Q0UsQ0FBZSxjQUVoQixFQUFBOztBQWhERiw0QkFpREMsb0NBRUUseUJBQ2UsQ0FBQSxzQkFFZCxDQUFBLHdCQUFBLEVBQUEsRUFBQTs7QUF0REosMEVBNERTLG9CQUNMLENBQUEsb0JBQUEsQ0FBQSxnQkFBQSxDQUFBLGdCQUFBLEVBQUE7O0FDeEdKLG9FQUtTLG9CQUNOLENBQUEsb0JBQUEsQ0FBQSxnQkFBQSxFQUFBOztBQU5ILDRDQVdjLGdCQU9aLENBQUEsZ0JBQUEsRUFBQTs7QUFsQkYsK0JBVVUsaUJWWUQsRUFBQTs7QVV0QlQseUNBZWUsZVZTQSxFQUFBOztBVXhCZiwwQ1AwREMsZUFDQSxFQUFBOztBQXVCQSx1Q0FBQSxVQUNDLENBQUEsb0JBQ0EsQ0FBQSwwQkFBQSxDQUFBLGFBQUEsQ0FBQSx5QkFBQSxDQUFBLGlCQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGlCQUFBLENBQUEsa0JBQUEsQ0FBQSxtQkFBQSxDQUFBLHNCQUFBLENBQUEsZ0JBQUEsQ0FBQSxZQUFBLENBQUEsaUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGtCQUFBLENBQUEsVUFBQSxDQUFBLFdBQUEsQ0FBQSxzQ0FBQSxDQUFBLDhCQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGNBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxhQUFBLENBQUEscUJBQUEsQ0FBQSxjQUFBLENBQUEsb0JBQUEsRUFBQTs7QUFDRCxnREFDQyxtQkFDQSxFQUFJOztBQUdMLGdEQUFHLGVBQ1MsQ0FBQSxvQkFDWCxDQUFBLFlBQUEsQ0FBQSxRQUFBLENBQUEsbUJBQUEsRUFBQTs7QUFDRCxvREFDQyxpQkFDTSxFQUFBOztBQVFOLGtEQUFBLFdBQ0MsQ0FBQSxZQUFjLENBQUEsYUFDSixDQUFBLG9CQUNWLENBQUEsOEJBQUEsQ0FBQSxpQkFBQSxDQUFBLHFCQUFBLENBQUEsZUFBQSxDQUFBLFdBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsRUFBQTs7QUFDRCwyREFDQyxnQkFDQSxDQUFBLGtCQUFBLEVBQUE7O0FBRUYsMkRBQ0MsV0FBVSxFQUFDOztBQUdYLDJEQUFBLHdCSGxHSyxDQUFBLGVBREMsQ0FBQSxXR3NHTCxFQUFBOztBQVVELG9FQUNDLG9CQUFtQixDQUFBLGFBQ25CLENBQUEsb0JBQUEsQ0FBQSxZQUFBLENBQUEsYUFBQSxDQUFBLG9CQUFBLENBQUEsbUJBQUEsQ0FBQSxlQUFBLENBQUEsYUFBQSxDQUFBLGtCQUFBLENBQUEsbUJBQUEsQ0FBQSxrQkFBQSxDQUFBLDBEQUFBLENBQUEsa0RBQUEsRUFBQTs7QUFDRCxvRUFDQyxvQkFBc0IsRUFBQTs7QUFHeEIsaUVBeEZBLHdCQUNXLEVBQUE7O0FBQ1gsNkRBQUMsZUFBQSxDQUFtQix3QkFFbkIsRUFBQTs7QUFDRCxnRkFDWSxlQUNYLEVBQUE7O0FBb0ZELG1FQUNXLHdCSDFIRSxFR2dJWjs7QUFKQSx5REFIa0Isa0JIekhiLENBQUEsZUFEQyxFQUFBOztBR2tJUCwrREFFQyxvQkhuSUssQ0FBQSxhR29JTCxFQUFBOztBQUNELDZDQUNDLGNBQWEsQ0FDYiwwQkFDQSxFQUFBOztBT3pKRiw2Q0FvQmtCLGNBS04sQ0FDUixjQUFVLEVBQUE7O0FBMUJkLDREQThCRyxtQ0FFQyxDQUFBLCtCQUFBLENBQUEsMkJBQUEsRUFBQTs7QUFoQ0osb0VBdUNFLGlCQUNBLEVBQUE7O0FBeENGLGdDQW1EQyxvQkFDWSxDQUFJLDBCQUVSLENBQUEsbUJBRVAsQ0FBQSxrQkFBa0IsQ0FDbEIsMEJBQ0EsQ0FBQSxpQkFDQSxDQUFBLHNCQW1CQSxDQUFBLGdCQUFBLENBQUEsaUJBQUEsQ0FBQSxlQUFBLENBQUEsZUFBQSxFQUFBOztBQTlFRixxQ0E0REUsOEJBUUMsQ0FBQSxpQkFBQSxDQUFBLHFCQUFBLENBQUEsZUFBQSxDQUFBLGFBQUEsQ0FBQSxZQUFBLENBQUEsb0JBQUEsQ0FBQSxzQkFBQSxDQUFBLG1CQUFBLENBQUEsbUJBQUEsRUFBQTs7QUFwRUgsOENBNERVLGlCQUdHLEVBQUE7O0FBL0RiLHFEQXFFc0IsbUJBRWxCLENBQUEsU0FDQSxDQUFBLFVBQUEsQ0FBQSxxREFBQSxDQUFBLGlEQUFBLENBQUEsNkNBQUEsRUFBQTs7QUF4RUosaUVWd0JRLGVVb0RMLEVBQUE7O0FBNUVILHNEQWtGRSxlQUNBLEVBQUE7O0FBbkZGLHlDQXNGcUIsMEJBQ25CLENBQUEsYUFBQSxFQUFBOztBQXZGRiwrSUFnR0UsYUFBQSxFQUFBOztBQWhHRix3Q0FpR3FCLDBCVmxFRCxDQUFBLDJCVXFFbEIsRUFBQTs7QUFwR0YseUNBc0dzQiwwQkFDYixDQUFBLGVWbkdZLEVVb0duQjs7QUF4R0YsMERBNEdhLDBCQUNYLENBQUEsd0JBQ0EsRUFBQTs7QUE5R0YsNENBb0hFLDBCQUVBLENBQUEsMkJBQ08sQ0FBQywwQkFFUixDQUFBLGtDQUFBLENBQUEsOEJBQUEsQ0FBQSwwQkFBQSxDQUFBLHdCQUFBLEVBQUE7O0FBekhGLDBDQTRIRSxZQUFhLENBQU0sYUFDUixDQUFBLG9CQUNJLENBQUEsZUFZZixDQUFBLGFBQUEsRUFBQTs7QUExSUYsbUNBMkhjLHFCQUtYLENBQUEscUJBQUEsQ0FBQSxlVjFHTSxDQUFBLGlCVTRHTixFQUFBOztBQWxJSCxnREEySGMsa0NBU1gsQ0FBQSxlVjVHSyxFQUFPOztBVXhCZixvREF1SXVCLGlDQUVwQixDQUFBLGVBQUEsRUFBQTs7QUF6SUgsc0RBNklpQixlVm5JUyxFVXFJeEI7O0FBL0lGLHFDQTRJZ0IsaUJWdElILENBQUEsZVU0SVYsQ0FBQSxxQkFBQSxFQUFBOztBQWxKSCwyQ1ZXaUIsZVU0SWYsRUFBUzs7QUF2SlgsbUNBcUpjLGVBTVgsQ0FBQSxrQkFDQSxDQUFBLHFCQUFBLENBQUEsMkJBQUEsRUFBQTs7QUE1SkgseUNBaUtFLHNCQUNBLEVBQVc7O0FBbEtiLHNDQXVLRSxlQUFTLENBQUEsaUJBY1QsQ0FBQSxnQkFBQSxFQUFBOztBQXJMRixzQ0FzS2lCLG1CUEdGLEVBQUE7O0FPektmLDRDQWtMUyxtQ0FFTixDQUFBLFlBQUEsQ0FBQSxtQkFBQSxDQUFBLG9CQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGVBQUEsQ0FBQSx1Q0FBQSxDQUFBLG9DQUFBLENBQUEsbUNBQUEsQ0FBQSxzQkFBQSxDQUFBLGlCQUFBLENBQUEsbUJBQUEsQ0FBQSxTQUFBLENBQUEsYUFBQSxDQUFBLFdBQUEsQ0FBQSxvQ0FBQSxDQUFBLGdDQUFBLENBQUEsNEJBQUEsQ0FBQSxxQkFBQSxFQUFBOztBQXBMSCw2Q0F5TFMseUJBQ1MsQ1ZyTEwsc0JVc0xFLENBQUEsaUJBQ04sRUFBSzs7QUE1TGQscUNBNkxFLGVBQUEsQ0FBQSwwQkFFQyxDQUFBLG1CQUNBLENBQUEsY0FLQSxFQUFBOztBQXJNSCw2REFpTUcsZUFDQyxDQUFXLGlCQUNGLENBQUMsaUJBQ1YsRUFBQTs7QUFwTUosa0VBdU1VLGlCQUNHLENBQUEsaUJBQ0MsRUFBQzs7QUF6TWYsMERBME1HLHFCQUNNLENBQUUscUJBQ00sQ0FDYixjQUNBLENBQUEsZ0JBQ0EsQ0FBQSwwQkFDTyxDQUFFLHVCQUNULENBQUEsb0JBQUEsRUFBQTs7QUFqTkoseUVBa05vQixhQUNiLENBQUEsY0FDQSxDQUFBLFdBQVksQ0FDWixpQkFDQSxDQUFBLG1CQUNBLENBQUEsWUFBQSxFQUFBOztBQXZOUCxpRkE0Tk8saUJBQ0MsQ0FBQSxxQkFDQSxDQUFBLHFCVjlNQSxDQUFBLGNVZ05RLENBQUEsb0JBQ0UsQ0FBQSxZQUNWLENBQUEsUUFBQSxDQUFBLHdCQUFBLENBQUEsNkJBQUEsQ0FBQSxnQ0FBQSxDQUFBLGlCQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLEVBQUE7O0FBbE9SLHdGQW9PUSwwQkFDVSxDQUFBLGlCQUNBLENBQUEsYUFDYixDQUFBLG1CQUF1QixDQUFDLG1CQUN4QixFQUFBOztBQXhPTCxzRkFpUEksZUFDQSxDQUFBLG1CQUNBLENBQUEsbUJBQWdCLENBQUEsOEJBRVQsQ0FBQSxpQ0FDUCxDQUFBLG1CQUFBLENBQUEsb0JBQUEsQ0FBQSx3QkFBQSxDQUFBLGlCQUFBLEVBQUE7O0FBdFBKLHFFQXVQRyxvQkFDQyxDQUFBLG9CQUVBLENBQUEsZ0JBQUEsQ0FBQSxhQUFBLENBQUEsbUJBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsQ0FBQSxtQkFBQSxDQUFBLGFBQUEsRUFBQTs7QUExUEoseUZBZ1FZLFdBQ1IsRUFBQTs7QUFqUUosaUZBcVEwQixnQkFyUTFCLENBQUEsOEJBc01FLENBQUEsaUNBZ0VlLENBQUEsb0JBQ2IsRUFBTzs7QUF2UVgsaUxBOFFJLHlCQUFBLENBQUEsMkNBQUEsRUFBQTs7QVByUEYsa0ZPeVBDLGlCQUNDLENBQWMsZ0JBZWQsQ0FBQSxtQkFBQSxFQUFBOztBTHlYSiw0QktuZUMsMERBaUdJLDZCQWpHSixDQUFBLDhCQTRGRyxDQUFBLDJCQU1NLENBQ0osdUJBQ0EsRUFBQTtFQTVSTixpRkFnU0ssNkJBQ0EsQ0FBQSw4QkFBQSxDQUFBLDJCQUFBLENBQUEsdUJBQUEsQ0FBQSxpQkFBQSxDQUFBLG1CQUFBLENBQUEsWUFBQSxFQUFBO0VMNFhILDZLQUE2SyxZQUFZLEVBQUU7RUs3cEI3TCxxRUF5U0Usb0JBQUEsQ0FBQSxZQUFBLENBQUEsUUFBQSxDQUFBLGdCQUFBLEVBQUEsRUFBQTs7QUN6U0YsOEJBQ0MsY0FBYSxFQUFBOztBQURkLDJJQUdxQixxQkFJakIsRUFBQTs7QUFQSixpSkFHRSxVQUFBLENBQUEsV0FPQyxDQUFBLGdCQUNDLEVBQUE7O0FSY0YsdUxRVmdCLFlBQ2QsQ0FBQSxzQkFDUyxDQUFDLG1CQVFYLENBQUEsMEJBQUEsRUFBQTs7QU4rb0JILDRCQUE0QiwySUFBMkkscUJBQXFCLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLEVBQUU7RU14cUJ2UCx1VUErQkcsb0JBQUEsQ0FBQSxtQkFBQSxDQUFBLGVBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsK0JBQUEsRUFBQSxFQUFBOztBQy9CSCx5SkEyQkMsZ0JBQUEsQ0FBQSxlQUFBLENBQUEsc0JBQUEsQ0FBQSxrQkFBQSxFQUFBOztBQTNCRCxxQkFLQyxpQ0FFQyxFQUFBOztBQVBGLG9GQWNJLGlCQUFBLENBQW9CLGNBQ1gsQ0FFUixVQUFBLEVBQUE7O0FDakJMLHlHQUtxQixVQUNqQixFQUFBOztBQU5KLHVGQVFJLG1CQUNBLEVBQUE7O0FWVUYscUZVaEJBLGdCQVFFLEVBQUE7O0FSNHFCSiw0QkFBNEIsdUZBQXVGLGtCQUFrQixDQUFDLG1CQUFtQixFQUFFO0VRdnJCM0oscUZBMEJVLGNBQ1AsRUFBQSxFQUFBOztBQTNCSCxnRkE4QkcscUJBQUEsQ0FBd0IscUJBQ1IsQ0FBQSxjQUNmLENBQUEsMEJBQ1ksQ0FBQSx1QkFDQyxDQUFHLG9CQUFPLENBQUEsa0JBQ3ZCLENBQUEsaUJBQUEsRUFBQTs7QUFuQ0oseUdBcUNJLDBCQUNBLENBQUEsb0JBQUEsQ0FBQSxtQkFBQSxDQUFBLGlEQUFBLEVBQUE7O0FBdENKLHNHQTBDSSxvQkFBZ0IsRUFBQTs7QUExQ3BCLGtHQTZDSSx3QkFDQyxDQUFBLHFCQUNBLENBQUEsNEJBQUEsQ0FBQSwrQkFBQSxDQUFBLDhCQUFBLENBQUEsd0JBQUEsQ0FBQSxvQkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxFQUFBOztBQS9DTCxrSEFrRGlCLG9CQUliLEVBQUE7O0FBdERKLG1HQW1ESSxlQUNDLEVBQUE7O0FBcERMLDhHQTRESyxzQkFFQSxFQUFBOztBVnJDSCw4R1UwQ0UsYUFBcUIsRUFDckI7O0FSc29CSiw0QkFBNEIsd0VBQXdFLDZCQUE2QixDQUFDLDhCQUE4QixDQUFDLDJCQUEyQixDQUFDLHVCQUF1QixDQUFDLDJCQUEyQixDQUFDLHdCQUF3QixDQUFDLHFCQUFxQixFQUFFO0VTMXNCalMsZ0ZBSUUsa0JBSUEsRUFBQSxFQUFBOztBQVJGLHNDQUtFLG1CQUNDLENBQU8sb0JBQ1AsQ0FBQSxpQkFBQSxFQUFBOztBQ1BILG1EQUVXLGVBQ1QsRUFBQTs7QUFIRix5Q0FPRSxxQmZGVyxDQUFBLHFCZUdDLENBQUksY0FDTCxDQUFFLDBCQUNJLENBQUEsOEJBRWpCLENBQU0sYUFDTixFQUFBOztBQWJGLHNDQWVFLDhCQUNTLENBQUEsaUJBQ1IsQ0FBQSxrQkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGVBQUEsQ0FBQSxxQkFBQSxDQUFBLHFCQUFBLENBQUEsY0FBQSxDQUFBLCtCQUFBLENBQUEsK0JBQUEsQ0FBQSxnQ0FBQSxDQUFBLDRCQUFBLEVBQUE7O0FBakJILDBEQW1CRyxlQUNBLEVBQUE7O0FBcEJILHdEQXNCUSxlQUNHLENBQUEsb0JBQ1IsRUFBQTs7QUF4QkgsMkRBeUJhLGVBekJiLEVBQUE7O0FabUJFLGtJWXFCQSxvQkFBQSxFQUFBOztBVnFyQkYsNEJBQTRCLHNDQUFzQyw2QkFBNkIsQ0FBQyw4QkFBOEIsQ0FBQywyQkFBMkIsQ0FBQyx1QkFBdUIsRUFBRTtFVTd0QnBMLDJLQStDRSxtQkFBQSxDQUFBLGtCQUFBLENBQUEsbUJBQUEsQ0FBQSxZQUFBLEVBQUEsRUFBQTs7QUEvQ0YseUNBMENvQixvQmZsQlosRUFBQTs7QWV4QlIsK0NBaURTLG9CQUNRLEVBQ2Y7O0FBbkRGLHNDQXVERSxZQUFBLENBQUEsZ0JBQ08sQ0FBQywwQmZoQ0ssQ2VrQ1osbUJBQUEsQ0FBQSxjQUFBLENBQUEsaUJBQUEsRUFBQTs7QUExREgsNERBQUEsWUFBQSxDQUFrQixvQkE4RGhCLEVBQUE7O0FBOURGLDRQQWdFRSw2QkFJVyxDQUFBLG9CQUNULENBQUEsMEJBQUEsQ0FBQSxtQkFBQSxDQUFBLGNBQUEsQ0FBQSwwQkFBQSxDQUFBLGVBQUEsQ0FBQSxtQkFBQSxDQUFBLGlCQUFBLEVBQUE7O0FBckVKLG9RQTBGRyxVQUFBLENBQUEsV0FBQSxFQUFBOztBQTFGSCwrREE0RUcsMEJBaEJGLENBQUEsbUJBWUMsQ0FBQSxXQUFBLEVBQUE7O0FBeEVGLCtJQW1GSSxVQUFBLEVBQUE7O0FBbkZKLDhFQW9GRyxjQUNDLENBQUEscUJBQ0EsRUFBQTs7QUF0RkosMEZBd0ZJLHlCQUNBLENBQUEsaUJBQUEsRUFBQTs7QUF6RkoscUZBMkhHLG1CQUFBLEVBQUE7O0FBM0hILCtEQTZGSSxtQkFDUSxFQUFDOztBQTlGYiwwRUFBQSxVQTREQyxDQUFBLG9CQWlFQyxDQUFBLDBCWmxFRCxDQUFBLGFBQWtCLENBQUEseUJIMUNaLENBQU8saUJHNkNiLENBQUEsc0JBQ0EsQ0FBQSxxQkFDQSxDQUFBLHFCQUNBLENBQUEsaUJBQ0EsQ0FBQSxpQkFDQSxDQUFBLHNCQUNBLENBQUEsbUJBQ0EsQ0FBTSxtQkFDQSxDQUFBLHdCQUVOLENBQUEscUJBQ0EsQ0FBQSw0QkFFQSxDQUFBLDBCQUNXLENBQUEsdUJBQ0gsQ0FBQSxvQkFDTyxDQUFDLHNCQUNKLENBQUEsZ0JBQ0wsQ0FBQSxvQkFDRSxDQUFBLGtCWThDUCxDQUFBLFVBQ0EsQ0FBQSxXQWFBLENBQUEscUNBQUEsQ0FBQSw2QkFBQSxFQUFBOztBWjNERixvSFkyQ0MsVVozQ0QsQ0FBQSxvQkFDVyxDQUFBLDBCQUNWLENBQUEsYUFBQSxDQUFBLHlCQUFBLENBQUEsaUJBQUEsQ0FBQSxxQkFBQSxDQUFBLHFCQUFBLENBQUEsaUJBQUEsQ0FBQSxrQkFBQSxDQUFBLG1CQUFBLENBQUEsc0JBQUEsQ0FBQSxnQkFBQSxDQUFBLFlBQUEsQ0FBQSxpQkFBQSxDQUFBLG9CQUFBLENBQUEsa0JBQUEsQ0FBQSxVQUFBLENBQUEsV0FBQSxDQUFBLHNDQUFBLENBQUEsOEJBQUEsQ0FBQSxxQkFBQSxDQUFBLHFCQUFBLENBQUEsY0FBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGFBQUEsQ0FBQSxxQkFBQSxDQUFBLHNCQUFBLENBQUEsWUFBQSxFQUFBOztBQUNELHNJQUNDLG1CQUNBLEVBQUk7O0FBR0wsc0lBQUcsZUFDRixDQUFBLG9CQUNBLENBQUEsWUFBQSxDQUFBLFFBQUEsQ0FBQSxtQkFBQSxFQUFBOztBQUNELDhJQUNDLGlCQUNNLEVBQUk7O0FBUVYsMElBVkEsV0FVQSxDQUFBLFlBQ0MsQ0FBQSxhQUNBLENBQUEsb0JBQ0EsQ0FBQSw4QkFBQSxDQUFBLGlCQUFBLENBQUEscUJBQUEsQ0FBQSxlQUFBLENBQUEsV0FBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxFQUFBOztBQUNELDRKQUNDLGdCQUNBLENBQUEsa0JBQUEsRUFBQTs7QUFFRiw0SkFDQyxXQUFVLEVBQUM7O0FBR1gsNEpBSkEsd0JBS0MsQ0FBQSxlQUNBLENBQUEsV0hyR1UsRUdzR1Y7O0FBVUQsOEtBQ0Msb0JBQW1CLENBQUEsYUFDbkIsQ0FBQSxvQkFBQSxDQUFBLFlBQUEsQ0FBQSxhQUFBLENBQUEsb0JBQUEsQ0FBQSxtQkFBQSxDQUFBLGVBQUEsQ0FBQSxhQUFBLENBQUEsa0JBQUEsQ0FBQSxtQkFBQSxDQUFBLGtCQUFBLENBQUEsMERBQUEsQ0FBQSxrREFBQSxFQUFBOztBQUNELDhLQUNDLG9CQUNBLEVBQUE7O0FBRUYsd0tIdEhNLHdCRytCSyxFQUFBOztBQUNYLGdLQXNGQyxlQUFBLENBdEZBLHdCQUNBLEVBQUE7O0FBRUQsc01BRUMsZUFBQSxFQUFBOztBQW9GRCw0S0FFQyx3QkFLQSxFQUFBOztBQUpBLHdKQUhBLGtCQUlDLENBQUEsZUFDQSxFQUFBOztBQUdGLG9LSGpJTSxvQkdvSUwsQ0FBQSxhQUFBLEVBQUE7O0FBQ0QsZ0lBQ0MsY0FBYSxDQUNiLDBCQUNBLEVBQUE7O0FBaElBLGdJWW9HQSxjQUFtQixDQUFBLGNBS0YsRUFBQzs7QVY0cEJwQiw0QkFBNEIsb0hBQW9ILDhCQUE4QixDQUFDLDZCQUE2QixDQUFDLG1CQUFtQixDQUFDLHVCQUF1QixFQUFFO0VVOXhCMVAsNEpaK0RDLGdCQUNBLENBQUEsYUFBYSxDQUFBLHNCQUNELENBQUcsWUFDTixFQUFDLEVBQUE7O0FBZ0JWLDZEQUFBLFVBQ0MsQ0FBQSxvQkFDQSxDQUFBLDBCQUFBLENBQUEsYUFBQSxDQUFBLHlCQUFBLENBQUEsaUJBQUEsQ0FBQSxxQkFBQSxDQUFBLHFCQUFBLENBQUEsaUJBQUEsQ0FBQSxrQkFBQSxDQUFBLG1CQUFBLENBQUEsc0JBQUEsQ0FBQSxnQkFBQSxDQUFBLFlBQUEsQ0FBQSxpQkFBQSxDQUFBLG9CQUFBLENBQUEsa0JBQUEsQ0FBQSxVQUFBLENBQUEsV0FBQSxDQUFBLHNDQUFBLENBQUEsOEJBQUEsQ0FBQSxxQkFBQSxDQUFBLHFCQUFBLENBQUEsY0FBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGFBQUEsQ0FBQSxxQkFBQSxDQUFBLG1CQUFBLENBQUEsMEJBQUEsQ0FBQSw4QkFBQSxDQUFBLG9CQUFBLEVBQUE7O0FBQ0Qsc0VBQ0MsbUJBQ0EsRUFBSTs7QUFHTCxzRUFBRyxlQUNTLENBQUEsb0JBQ1gsQ0FBQSxZQUFBLENBQUEsUUFBQSxDQUFBLG1CQUFBLEVBQUE7O0FBQ0QsMEVBQ0MsaUJBQ00sRUFBQTs7QUFRTix3RUFBQSxXQUNDLENBQUEsWUFBYyxDQUFBLGFBQ0osQ0FBQSxvQkFDVixDQUFBLDhCQUFBLENBQUEsaUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGVBQUEsQ0FBQSxXQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEseUJBQUEsQ0FBQSxzQkFBQSxDQUFBLHdCQUFBLEVBQUE7O0FBQ0QsaUZBQ0MsZ0JBQ0EsQ0FBQSxrQkFBQSxFQUFBOztBQUVGLGlGQUNDLFdBQVUsRUFBQzs7QUFHWCxpRkFBQSx3QkhsR0ssQ0FBQSxlQURDLENBQUEsV0dzR0wsRUFBQTs7QUFVRCwwRkFDQyxvQkFBbUIsQ0FBQSxhQUNuQixDQUFBLG9CQUFBLENBQUEsWUFBQSxDQUFBLGFBQUEsQ0FBQSxvQkFBQSxDQUFBLG1CQUFBLENBQUEsZUFBQSxDQUFBLGFBQUEsQ0FBQSxrQkFBQSxDQUFBLG1CQUFBLENBQUEsa0JBQUEsQ0FBQSwwREFBQSxDQUFBLGtEQUFBLEVBQUE7O0FBQ0QsMEZBQ0Msb0JBQXNCLEVBQUE7O0FBR3hCLHVGQXhGQSx3QkFDVyxFQUFBOztBQUNYLG1GQUFDLGVBQUEsQ0FBbUIsd0JBRW5CLEVBQUE7O0FBQ0Qsc0dBQ1ksZUFDWCxFQUFBOztBQW9GRCx5RkFDVyx3QkgxSEUsRUdnSVo7O0FBSkEsK0VBSGtCLGtCSHpIYixDQUFBLGVBREMsRUFBQTs7QUdrSVAscUZBRUMsb0JIbklLLENBQUEsYUdvSUwsRUFBQTs7QUFDRCxtRUFDQyxjQUFhLENBQ2IsMEJBQ0EsRUFBQTs7QVl6SkYsbUVBcUpHLGNBQWtCLENBQ2xCLGNBQUEsRUFBQTs7QUF0SkgsNERBdUpJLG9CQUNXLEVBQ1o7O0FBekpILGtFQStKSSxjQUFXLENBQVYsd0JBQ0MsQ0FBQSxVQUNELENBQUEsV0FBVyxDQUFBLGlCQUNYLENBQUEsMkJBQUEsQ0FBQSwwQkFBQSxDQUFBLHdDQUFBLEVBQUE7O0FBbEtMLG1IQTJLSSxvQkFDQSxDQUFBLGdCQUFBLEVBQUE7O0FBNUtKLGdHQStLSSxnQkFBQSxDQUFBLFVBQUEsRUFBQTs7QUEvS0osdUVBbUxHLGdCQU1BLEVBQUE7O0FBekxILGtFQW9MSyxhQUNPLEVBQUE7O0FBckxaLHFFQTJMYSxxQkFDQyxDQUFBLHNCQUNPLENBQUEsOEJBQ2xCLEVBQUE7O0FBOUxILDJEQStMRSxnQkFDTyxDQUFDLGtCQUNHLENBQUMsbUJBQ0wsRUFBQzs7QUFsTVYsb0VBc01HLGNBQ0EsQ0FBQSx3QkFDQSxDQUFBLFVBQVEsQ0FBQSxXQUNSLEVBQUE7O0FBek1ILG9FQTJNRyxXQUFRLENBQUEseUJBRVIsQ0FBQSxzQkFDQSxFQUFBOztBQTlNSCxrRUFvTkcsc0JBQ0MsQ0FBQSxVQUFRLENBQUssb0JBQ2IsQ0FBQSxtQkFBQSxDQUFBLHdCQUFBLENBQUEsbUJBQUEsQ0FBQSx5QkFBQSxDQUFBLGlCQUFBLEVBQUE7O0FBdE5KLHVGZktvQixjZXFOTixFQUNYOztBWjFMRiw4REFBQywwQkFFQSxDQUFBLGFBQ0EsQ0FBQSxtQkFDTSxDQUFDLGNBQ0gsQ0FBSSxZQUNDLENBQUEsc0JBRVQsQ0FBQSxjQUFVLENBQUEsVUFDVixDQUFBLGlCQUNBLEVBQUE7O0FZM0NGLHFFQW1PSSxZQUNBLENBQUEsbUJBQ0ksQ0FBQSxZQUNKLENBQUEsYWZqT1MsQ0FBQSxVZWtPVCxDQUFBLFdBQUEsQ0FBQSxrQkFBQSxDQUFBLGtDQUFBLENBQUEsOEJBQUEsQ0FBQSwwQkFBQSxDQUFBLFdBQUEsRUFBQTs7QUF2T0oscUVBeU9JLFVBQWMsQ0FBQSxhQUNkLENBQUEsVUFDQSxDQUFBLDBCQUNBLEVBQUE7O0FBNU9KLGlFQStPeUIsa0JBQVcsQ0FBQSxrQkFFaEMsQ0FBQSwwQkFDYyxDQUFBLGlCQUNkLEVBQUE7O0FBblBKLDRGQXVQRyxrQkFDQSxDQUFBLHNCQUNBLEVBQUE7O0FBelBILG9FQTBQSyxxQkFFRCxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxjQUFBLENBQUEsNkJBQUEsQ0FBQSw4QkFBQSxDQUFBLDJCQUFBLENBQUEsdUJBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsRUFBQTs7QUE1UEosc0VBNlBHLGlCQUFvQixFQUNuQjs7QUE5UEosd0ZBNlBzQiwwQlpwRlAsQ0FBQSxtQkFDYixDQUFBLHdCQUNZLENBQUEscUJBQ0MsQ0FBQSxxQkFDQyxDQUFBLGNBQ2QsQ0FBQSxhQUNBLENBQUEsMEJBRUEsQ0FBQSx1QkFBQSxDQUF1QyxvQkFDdkMsQ0FBQSx5QkFDQSxDQUFBLGlCQUF5QixDQUFBLFlBRXpCLEVBQUE7O0FZckxGLCtGQTZRVSxtQ0FDTixDQUFBLFlBQUEsQ0FBQSxtQkFBQSxDQUFBLG9CQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGVBQUEsQ0FBQSx1Q0FBQSxDQUFBLG9DQUFBLENBQUEsbUNBQUEsQ0FBQSxzQkFBQSxDQUFBLGlCQUFBLENBQUEsa0JBQUEsRUFBQTs7QUE5UUoseUZBaVJJLGNBQVksRUFBQTs7QUFqUmhCLDBFQXNSSSxxQkFDYyxDQUFBLHFCQUNiLENBQUEsY0FBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLDBCQUFBLENBQUEsbUJBQUEsQ0FBQSxhQUFBLENBQUEsWUFBQSxFQUFBOztBQXhSTCxnRkF5UlMsa0JBQUEsRUFBQTs7QUF6UlQscUhBNERDLFVBeUxDLENBQUEseUJBMkNDLENBQUEsaUJBQW1CLENBQ2xCLFlBQVksRWZoUlQ7O0FlakJQLDRLQXVTWSxzQkFDUixFQUFBOztBQXhTSixxR0EwU0ksMEJBU0EsQ0FBQSxtQkFBQSxDQUFBLFlBQUEsQ0FBQSxhQUFBLEVBQUE7O0FBblRKLDRGQTJTSSx3QmZqUmtCLEVBQU87O0FlMUI3QixrR0ErU0ksb0JBQ0MsQ0FBQSxhZnRSd0IsRWV1UnhCOztBQWpUTCxnSEFxVGUsb0JBT1gsQ0FBQSxhQUFBLEVBQUE7O0FBNVRKLDhGQXNUSSx3QmYzUnVCLEVlNlJ0Qjs7QUF4VEwsb0dBeVRJLGtCQUNDLEVBQUE7O0FBMVRMLGtIQThUZSxrQkFDWCxFQUFNOztBQS9UVixzR0FnVUksd0JmdFNrQixDQUFBLHlDZXdTakIsRUFBQTs7QUFsVUwsNEdBbVVJLHNCQUNDLEVBQUE7O0FBcFVMLDBIZkljLHNCQXlCRSxFQUFBOztBZTdCaEIscUZBNFVJLHNCQUVJLENBQUEsb0JBQWtCLENBQUEsbUJBQ3JCLENBQUEsbUJBQUEsRUFBQTs7QUEvVUwsMkZBcVZtQixVQUFVLENBQUEsOEJBSXZCLEVBQ0Y7O0FBMVZKLDRFQWdXTSwwQkFLTyxDQUFBLFVBQ1IsQ0FBQSxrQkFHQSxDQUFBLDBCQTJCQSxDQUFBLG1CQUFBLENBQUEseUJBQUEsRUFBQTs7QUFwWUwsK0VBZ1dNLFVBQ2EsQ0FBQSxzQkFDSyxDQUFBLGtCQUNsQixDQUFBLG9CQUFBLEVBQUE7O0FBbldOLDJGQTBXSyxnQ0FFQyxFQUFBOztBQTVXTiwwR0F1WEssZUFDVSxDQUFBLGtFQUNULENBQUEsYUFJQSxDQUFBLDJCQUVBLENBQUEsOEJBQ0EsRUFBQTs7QUFoWU4sK0dBd1lLLGVBZUEsQ0FBQSxrRUFBQSxDQUFBLGVBQUEsQ0FBQSxhQUFBLENBQUEsMEJBQUEsQ0FBQSw2QkFBQSxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxjQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLEVBQUE7O0FBdlpMLG9HQXlZTyxzQmYvV2UsRUFBQTs7QWUxQnRCLHVHQTRZTSwwQkFBMEIsQ0FDekIsc0JBQXFCLEVBQ3JCOztBQTlZUCxrSUFnWk0sdUJBQ0MsQ0FBQSxZQUNDLEVBQUE7O0FBbFpSLGlLQWdhSyx1QkFBQSxDQUFBLFlBQUEsRUFBQTs7QUFoYUwsc0dBNFpPLGtCZmpZaUIsRUFBRzs7QWUzQjNCLHlHQW9hRyxrQkFDQyxFQUFBOztBQXJhSiwySEF3YU0sMEJBR0QsQ0FBQSxtQkFBQSxDQUFBLGFBQUEsRUFBQTs7QUEzYUwsNkhBK2FJLFVmdGFRLENBQUEsV2V1YUQsRUFBRTs7QUFoYmIscUdBcWJJLDRCQUVDLENBQUEsNEJBRUEsQ0FBQSxxQkFBQSxDQUFBLGVBQUEsQ0FBQSxXQUFBLENBQUEsVUFBQSxDQUFBLGlCQUFBLENBQUEsWUFBQSxDQUFBLGtCQUFBLEVBQUE7O0FBemJMLDJHQTZiRyxvQkFDQyxDQUFBLGNBQ0MsQ0FBQSxhQUFBLEVBQXlCOztBQS9iOUIsZ0tBa2NnQywwQkFFMUIsRUFBQTs7QUFwY04sa0tBNGNHLHNCQUFBLEVBQUE7O0FBNWNILDBEQTZjc0Isa0JaaFRaLENBQUEsZ0JBQ1QsRUFBQTs7QVk5SkQsNERBb2RLLDZCQUdELENBQUEsb0JBQUEsQ0FBQSwwQkFBQSxDQUFBLG1CQUFBLENBQUEsY0FBQSxDQUFBLDBCQUFBLENBQUEsZUFBQSxDQUFBLG1CQUFBLENBQUEsaUJBQUEsQ0FBQSxjQUFBLENBQUEsMEJBQUEsQ0FBQSxtQkFBQSxDQUFBLHlCQUFBLENBQUEsaUJBQUEsQ0FBQSxpQkFBQSxFQUFBOztBQXZkSiw4REF3ZE8sVUFDSCxDQUFTLFdBQ1QsRUFBQTs7QUExZEosZ0VBOGRHLGdCQUNHLENBQUEsYUFBQSxFQUFBOztBQS9kTiwwR0FxZUksVUFDQyxDQUFBLFdBQWMsRUFBQTs7QUF0ZW5CLGtIQThlRyxlQUNBLEVBQUE7O0FBL2VILDhEQTJldUIsY0FRWixDQUFBLDBCQUVQLENBQUEsbUJBQ0ssQ0FBRyxtQkFFUixDQUFNLGFBQ04sRUFBTzs7QUF6ZlgscUVBOGZJLFlmcmZRLENBQU8sbUJldWZmLENBQUEsWUFBQSxDQUFBLFVBQUEsQ0FBQSxXQUFBLENBQUEsWUFBQSxDQUFBLFdBQUEsQ0FBQSxrQkFBQSxFQUFBOztBQWhnQkosb0VBa2dCRyxlQUNDLEVBQUE7O0FBbmdCSixrRkF5aUJJLFdBQUEsQ0FBQSxtQkFBQSxDQUFBLDBCQUFBLENBQUEsWUFBQSxDQUFBLGlCQUFBLEVBQUE7O0FBemlCSiwrREE4Z0JNLFlBQ0MsRUFBQTs7QUEvZ0JQLGlGQXFoQlcsYUFyaEJYLENBQUEsaUJBNERDLENBQUEsaUJBK2NDLEVBQUE7O0FBM2dCRiw4T0E2aEJnQixZQUNSLEVBQUE7O0FBOWhCUiwrTkFzaUJPLHNCQUFBLENBQUEsbUJBQUEsRUFBQTs7QUF0aUJQLDBHQW1pQk8scUJBQ2MsQ0FBQSxxQkFDYixDQUFBLGNBQUEsRUFBQTs7QVo1Z0JOLGlIWXNoQkssaUJBQXNCLEVBQWU7O0FWb2E1Qyw0QlV2NUJDLDBHQXlmYyxvQkFDTCxDQUFBLGdCQUFBLEVBQUE7RVY4WlIsaUhBQWlILG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDLGNBQWMsRUFBRTtFVXA5Qi9MLDZIQW1rQkcsb0JBQ00sQ0FBQSxtQkFDRCxDQUFBLGVBQ0csRUFBSSxFQUNaOztBQXZrQkgsK0RBeWtCRyxlQUFpQixDQUFBLDBCQUVoQixDQUFPLG1CQUNQLENBQWEsY0FDUCxDQUFBLGNBQ00sQ0FBQyxvQkFDYixDQUFBLG1CQUFBLENBQUEsZUFBQSxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxjQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLCtCQUFBLEVBQUE7O0FBL2tCSixnRkFnbEJzQixrQlpyaEJyQixDQUFBLGFBQWtCLENBQUEsbUJIMUNaLENBQUEsb0JBRE0sQ0FBQSxZRzhDRixDQUFFLFFBQ1osQ0FBQSxrQkFBb0IsRUFDcEI7O0FBa0JBLGtGQUFBLFVBQ0MsQ0FBQSxvQkFDQSxDQUFBLDBCQUFBLENBQUEsYUFBQSxDQUFBLHlCQUFBLENBQUEsaUJBQUEsQ0FBQSxxQkFBQSxDQUFBLHFCQUFBLENBQUEsaUJBQUEsQ0FBQSxrQkFBQSxDQUFBLG1CQUFBLENBQUEsc0JBQUEsQ0FBQSxnQkFBQSxDQUFBLFlBQUEsQ0FBQSxpQkFBQSxDQUFBLG9CQUFBLENBQUEsa0JBQUEsQ0FBQSxVQUFBLENBQUEsV0FBQSxDQUFBLHNDQUFBLENBQUEsOEJBQUEsQ0FBQSxxQkFBQSxDQUFBLHFCQUFBLENBQUEsY0FBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGFBQUEsQ0FBQSxxQkFBQSxDQUFBLGlCQUFBLEVBQUE7O0FBQ0QsMkZBQ0MsbUJBQ0EsRUFBSTs7QUFHTCwyRkFBRyxlQUNTLENBQUEsb0JBQ1gsQ0FBQSxZQUFBLENBQUEsUUFBQSxDQUFBLG1CQUFBLEVBQUE7O0FBQ0QsK0ZBQ0MsaUJBQ00sRUFBQTs7QUFRTiw2RkFBQSxXQUNDLENBQUEsWUFBYyxDQUFBLGFBQ0osQ0FBQSxvQkFDVixDQUFBLDhCQUFBLENBQUEsaUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGVBQUEsQ0FBQSxXQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEseUJBQUEsQ0FBQSxzQkFBQSxDQUFBLHdCQUFBLEVBQUE7O0FBQ0Qsc0dBQ0MsZ0JBQ0EsQ0FBQSxrQkFBQSxFQUFBOztBQUVGLHNHQUNDLFdBQVUsRUFBQzs7QUFHWCxzR0FBQSx3QkhsR0ssQ0FBQSxlQURDLENBQUEsV0dzR0wsRUFBQTs7QUFVRCwrR0FDQyxvQkFBbUIsQ0FBQSxhQUNuQixDQUFBLG9CQUFBLENBQUEsWUFBQSxDQUFBLGFBQUEsQ0FBQSxvQkFBQSxDQUFBLG1CQUFBLENBQUEsZUFBQSxDQUFBLGFBQUEsQ0FBQSxrQkFBQSxDQUFBLG1CQUFBLENBQUEsa0JBQUEsQ0FBQSwwREFBQSxDQUFBLGtEQUFBLEVBQUE7O0FBQ0QsK0dBQ0Msb0JBQXNCLEVBQUE7O0FBR3hCLDRHQXhGQSx3QkFDVyxFQUFBOztBQUNYLHdHQUFDLGVBQUEsQ0FBbUIsd0JBRW5CLEVBQUE7O0FBQ0QsMkhBQ1ksZUFDWCxFQUFBOztBQW9GRCw4R0FDVyx3QkgxSEUsRUdnSVo7O0FBSkEsb0dBSGtCLGtCSHpIYixDQUFBLGVBREMsRUFBQTs7QUdrSVAsMEdBRUMsb0JIbklLLENBQUEsYUdvSUwsRUFBQTs7QUFDRCx3RkFDQyxjQUFhLENBQ2IsMEJBQ0EsRUFBQTs7QVl6SkYsd0ZBNGxCYSxjQUNYLENBQUEsY0FBQSxFQUFBOztBQTdsQkYsMENBOGxCQyxlQTlsQkQsQ0FBQSxrQkErbEJDLENBQUEsaUJBQ1MsRUFBRzs7QUFobUJiLG9GQTRtQlcsYUFDUixDQUFBLHlCQUNjLENBaUJkLHNCQUFBLENBQUEsd0JBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSwwQkFBQSxDQUFBLG1CQUFBLENBQUEsY0FBQSxDQUFBLDBCQUFBLENBQUEsZUFBQSxFQUFBOztBQS9uQkgsdURBK21CSyxvQkFFRCxDQUFBLFVBQ0EsQ0FBQSxtQkFZQSxDQUFBLGVBQUEsRUFBQTs7QUE5bkJKLDBEQSttQkssc0JBQUEsQ0FBQSxjQUtBLENBQUEsVUFDQSxDQUFBLG1CZnBtQkUsRUFBQTs7QWVqQlAseUZBeW5CSyxzQkFDQSxDQUFBLGNBQUEsQ0FBQSwwQkFBQSxDQUFBLFlBQUEsRUFBQTs7QUExbkJMLHlGQTRuQkssWUFBVyxFQUNYOztBQTduQkwseUZBb29CRSxZQUFrQixFQUFDOztBQXBvQnJCLDBDQXFvQkUsbUJBQUEsQ0FBQSxvQmZob0JXLENBQUEsaUNlbW9CSyxFQUFHOztBQXhvQnJCLG9FQXlvQkssb0JBRUQsQ0FBQSxVQUNBLENBQUEsbUJBWUEsRUFBQTs7QUF4cEJKLHVFQXlvQkssc0JBQUEsQ0FBQSxjQUtBLENBQUEsVUFDQSxDQUFBLG1CZjluQkUsRUFBQTs7QWVqQlAsc0dBbXBCSyxzQkFDQSxDQUFBLGNBQUEsQ0FBQSwwQkFBQSxDQUFBLFlBQUEsRUFBQTs7QUFwcEJMLHNHQXNwQkssWUFBVyxFQUNYOztBQ3ZwQkwsc0dBbU1DLFlBQUEsRUFBQTs7QUFuTUQscUJBQ0Msc0NBQ0MsQ0FBQSxxQ0FDd0IsRWhCQ1o7O0FnQkpkLHlFQUtLLGlDQUVELENBQUEscUJBQUEsRUFBQTs7QUFQSiw0RUFVRyxjQUNDLEVBQUE7O0FBWEosdUZBYUcsZUFDWSxFQUFDOztBQWRoQiwyRkFnQkksZUFDQyxDQUFBLGdCQUNBLEVBQUE7O0FBbEJMLG9HQXlCZ0IsZ0JBRWIsRUFBQTs7QUEzQkgsMkRBOEJHLFlBQUEsQ0FBQSxhYjdCRixDQUFBLG9CQUNBLENBQUEsbUJhOEJHLENBQUEsZUFBQSxDQUFBLFVBQUEsQ0FBQSxtQkFBQSxDQUFBLG1CQUFBLENBQUEsbUJBQUEsRUFBQTs7QUFoQ0osOEVBaUMwQixtQkFDWCxDQUFLLGdCQUNoQixFQUFBOztBQW5DSixpRkF1Q0ksMEJoQm5DaUIsQ2dCb0NqQiwyQkFBQSxDQUFBLDBCQUFBLEVBQUE7O0FBeENKLGdGQTBDSSwwQkFDWSxFQUFJOztBQTNDcEIseUVBZ0RHLGlCQUNBLENBQUEsaUJBQ0EsRUFBQTs7QUFsREgseURBbURpQixZQUNkLENBQUEsYUFDQSxDQUFBLGVBUUEsRUFBQTs7QUE3REgsMERBc0RHLHlCQUNlLENBQUEsc0JoQjlDTixDQUFBLHdCZ0JtRFIsQ0FBQSxjQUFBLEVBQUE7O0FBNURKLG9FQXlESyxvQkF4REosQ0FBQSxvQkFBcUIsQ0FrRHBCLGdCQUdDLENBQUEsMEJoQnRDSyxFQUFLOztBZ0JoQmIsOElBK0VHLGFBQUEsRUFBQTs7QUEvRUgsMkRBcUVpQixpQ0FFUyxFQUFBOztBQXZFMUIsZ05BcUVpQixlQUdTLENBQUEsa0JBR3RCLEVBQUE7O0FBM0VKLDRQQW1GRywwQkFBQSxFQUFBOztBQW5GSCxtREFvRkUsZUFBQSxDQUFBLGtCQUNXLEVBQUU7O0FBckZmLDJFQXNGRyxnQkFBQSxFQUFBOztBQXRGSCxzR0FrSUcsZUFBQSxDQUFBLGtCQUFBLENBQUEsc0JBQUEsQ0FBQSxpQkFBQSxDQUFBLGVBQUEsRUFBQTs7QUFsSUgsbUVBZ0dHLGdCQUFBLEVBQUE7O0FBaEdILG1HQXNHb0MscUJBS2hDLENBQUEscUJBQUEsQ0FBQSxjQUFBLENBQUEsd0JBQUEsQ0FBQSxxQkFBQSxDQUFBLDRCQUFBLENBQUEsK0JBQUEsQ0FBQSw4QkFBQSxDQUFBLHdCQUFBLENBQUEsb0JBQUEsQ0FBQSxvQkFBQSxFQUFBOztBQTNHSixvR0FzR21DLGVoQnJGNUIsRUFBQTs7QWdCakJQLDBHQThHSSxlQUFlLEVBQ2Y7O0FBL0dKLG9GQWlISSxtQkFDQyxDQUFBLGlCQUlBLENBQUEsb0JBQUEsQ0FBQSxZQUFBLENBQUEsUUFBQSxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxjQUFBLEVBQUE7O0FBdEhMLG9HQW1ISyxtQmJsSEssRUFBQzs7QWFEWCw2R0EwSEksbUJBQWdCLENBQUEsZ0JBQ0osRUFBQzs7QUEzSGpCLHFGQThISSw4QkFFQyxDQUFBLGlCQUFBLENBQUEsd0JBQUEsQ0FBQSxxQkFBQSxDQUFBLDRCQUFBLENBQUEsa0JBQUEsQ0FBQSxtQkFBQSxDQUFBLGVBQUEsRUFBQTs7QUFoSUwsOEZBcUljLG1CQUNBLEVBQUE7O0FBdElkLG9FQW1JMEIsYUFVdEIsQ0FBQSxnQkFDUyxDQUFBLHlDQUdDLENBQUEsaUNBR1YsQ0FBQSxpQkFBYSxDQUFBLG9CQUNiLENBQUEsbUJBQWMsQ0FBQSxzQkFDRixDQUFBLG1CQUNaLEVBQUE7O0FBdkpKLDRFQW1JMEIsWUFzQnRCLENBQUEsZUFDQSxDQUFBLFdBQWUsQ0FBQSxTQUNmLENBQUEsbUJBQUEsQ0FBQSxTQUFBLENBQUEsVUFBQSxDQUFBLG1DQUFBLENBQUEsb0NBQUEsQ0FBQSwyQkFBQSxFQUFBOztBQTNKSixnRkE0Skcsb0JBQ1UsQ0FBQSxtQkFDVCxFQUFBOztBQTlKSix5RkFrS0csbUJBQUEsRUFBQTs7QUFsS0gsaUVBb0tHLGNBQVksRUFBQTs7QUFwS2YsaUVBMktnQix3QkFrQmIsQ0FBQSwyQkFBQSxFQUFBOztBQTdMSCx3RUE2S0csVUFBQSxFQUFBOztBQTdLSCw2RkFrTEksVUFBVSxDQUFBLGlCQUNWLEVBQWE7O0FBbkxqQiw0RkFxTEksaUJBQUEsQ0FBQSxpQkFDQyxDQUFBLG1CQUNBLEVBQUE7O0FBdkxMLHdIQXFMK0IseUJBSXpCLENBQUEsc0JBQ0EsQ0FBQSx3QkFBQSxDQUFBLGVBQUEsRUFBQTs7QUExTE4sMklBa01FLGtCQUFBLEVBQUE7O0FDbE1GLDJDQUVFLGdCQThDQSxDQUFBLGlCQUFBLEVBQUE7O0FBaERGLHlDQUdFLGNBQWdCLEVBQUM7O0FBSG5CLDBEQVNHLHFCQUNDLENBQUEscUJBQ08sQ0FBQSxjQUNBLENBQUcsNkJBQ1YsQ0FBQSw4QkFBQSxDQUFBLDJCQUFBLENBQUEsdUJBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxZQUFBLENBQUEsZ0JBQUEsRUFBQTs7QUFiSiw2RUFjdUIsYUFDVCxDQUFBLGNBQ0MsQ0FBQSwwQkFFWCxFQUFBOztBQWxCSiw4RUFtQnlCLGVqQlZiLENBQU8saUJpQllELENBQUEsY0FDZCxFQUFBOztBQXRCSixnRkEwQkcsZUFBZ0IsQ0FBQSxnQkFxQmhCLEVBQUE7O0FBL0NILDJEQTJCRyxxQkFDSyxDQUFBLHFCQUNNLENBQUEsY0FDVixDQUFBLHlCakIxQmlCLENBQUEsc0JpQjBDakIsQ0FBQSx3QkFBQSxFQUFBOztBQTlDSiw0RUFnQ0ksb0JBQ1MsQ0FBSyxtQkFFYixDQUFBLGVBQWUsQ0FBQSxtQkFDQSxDQUFBLGdDQUNmLENBQUEsZ0JBQUEsRUFBQTs7QUFyQ0wsbUZBdUNLLGVBQ0EsQ0FBQSxnQkFDQSxDQUFBLG1CQUFBLENBQUEsaUJBQUEsRUFBQTs7QUF6Q0wsaUZBMkJtQixlQWlCZCxDQUFBLGdCQUNBLEVBQUE7O0FBN0NMLHVGQW9ERyxnQkFBQSxFQUFBOztBQXBESCxxREFzREcsbUJBQTJCLEVBQUE7O0FBdEQ5QiwwR0F3REksa0JBQ0MsRUFBQTs7QUF6REwseUhBZ0VJLGNBQUEsRUFBQTs7QWR2Q0YsdUVjMENDLG9CQUVDLEVBQUE7O0Fab2tDSiw0Qll4bENDLDJFQXNDRywwQkFBQSxDQUFBLHVCQUFBLENBQUEsK0JBQUEsRUFBQTtFQXZGSix1RUFpRkssZUFDTSxDQUFBLGlCQUVOLEVBQU07RVp1akNULG1EQUFtRCxvQkFBb0IsQ0FBQyxnQkFBZ0IsRUFBRTtFWS9pQzVGLG9FZGhDQyxXSDNDTSxDQUFBLFVHNENELENIN0NFLG9CRzhDSyxDQUFBLFlBQ1osQ0FBQSxRQUFnQixDQUFBLDZCQUVoQixDQUFBLDBCQUNVLEVBQUEsRUFBQTs7QUFnQlYsMkJBQUEsVUFDQyxDQUFBLG9CQUNBLENBQUEsMEJBQUEsQ0FBQSxhQUFBLENBQUEseUJBQUEsQ0FBQSxpQkFBQSxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxpQkFBQSxDQUFBLGtCQUFBLENBQUEsbUJBQUEsQ0FBQSxzQkFBQSxDQUFBLGdCQUFBLENBQUEsWUFBQSxDQUFBLGlCQUFBLENBQUEsb0JBQUEsQ0FBQSxrQkFBQSxDQUFBLFVBQUEsQ0FBQSxXQUFBLENBQUEsc0NBQUEsQ0FBQSw4QkFBQSxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxjQUFBLENBQUEseUJBQUEsQ0FBQSxzQkFBQSxDQUFBLHdCQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEsYUFBQSxDQUFBLHFCQUFBLENBQUEsaUJBQUEsRUFBQTs7QUFDRCxvQ0FDQyxtQkFDQSxFQUFJOztBQUdMLG9DQUFHLGVBQ1MsQ0FBQSxvQkFDWCxDQUFBLFlBQUEsQ0FBQSxRQUFBLENBQUEsbUJBQUEsRUFBQTs7QUFDRCx3Q0FDQyxpQkFDTSxFQUFBOztBQVFOLHNDQUFBLFdBQ0MsQ0FBQSxZQUFjLENBQUEsYUFDSixDQUFBLG9CQUNWLENBQUEsOEJBQUEsQ0FBQSxpQkFBQSxDQUFBLHFCQUFBLENBQUEsZUFBQSxDQUFBLFdBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsRUFBQTs7QUFDRCwrQ0FDQyxnQkFDQSxDQUFBLGtCQUFBLEVBQUE7O0FBRUYsK0NBQ0MsV0FBVSxFQUFDOztBQUdYLCtDQUFBLHdCSGxHSyxDQUFBLGVBREMsQ0FBQSxXR3NHTCxFQUFBOztBQVVELHdEQUNDLG9CQUFtQixDQUFBLGFBQ25CLENBQUEsb0JBQUEsQ0FBQSxZQUFBLENBQUEsYUFBQSxDQUFBLG9CQUFBLENBQUEsbUJBQUEsQ0FBQSxlQUFBLENBQUEsYUFBQSxDQUFBLGtCQUFBLENBQUEsbUJBQUEsQ0FBQSxrQkFBQSxDQUFBLDBEQUFBLENBQUEsa0RBQUEsRUFBQTs7QUFDRCx3REFDQyxvQkFBc0IsRUFBQTs7QUFHeEIscURBeEZBLHdCQUNXLEVBQUE7O0FBQ1gsaURBQUMsZUFBQSxDQUFtQix3QkFFbkIsRUFBQTs7QUFDRCxvRUFDWSxlQUNYLEVBQUE7O0FBb0ZELHVEQUNXLHdCSDFIRSxFR2dJWjs7QUFKQSw2Q0FIa0Isa0JIekhiLENBQUEsZUFEQyxFQUFBOztBR2tJUCxtREFFQyxvQkhuSUssQ0FBQSxhR29JTCxFQUFBOztBQUNELGlDQUNDLGNBQWEsQ0FDYiwwQkFDQSxFQUFBOztBY3pERixpQ0FFRSxjQUFrQixDQUFDLGNqQjdGRCxFaUI4RmxCOztBQUhGLDZCQUtJLGlDQUVELENBQUEsZ0JBQ0EsQ0FBQSxpQkFBQSxFQUFBOztBQVJILGtDQVVNLGdCQUNKLENBQUEsaUJBQ0EsRUFBQTs7QUFaRiw4Q0FlSSxtQkFmSixDQUFBLDBCQWVLLENBQUEsd0JBZkwsQ0FBQSxVQVVNLEVBQUE7O0FBVk4saUpBd0JHLHdCQUNBLEVBQVc7O0FBekJkLHVEQWtCVSxvQkFTTixDQUFBLFlBQWUsQ0FBQSxpQkFDZixDQUFBLG1CQUFBLENBQUEsZ0JBQUEsQ0FBQSxlQUFBLENBQUEsb0JBQUEsRUFBQTs7QUE1QkosbUVBOEJJLHlCQUF3QixFQUN4Qjs7QUEvQkosa0VBbUNNLHlCQUVELEVBQUE7O0FBckNMLHFFQW1DTSxvQkFuQ04sQ0FBQSxjQVVDLENBQUEsaUNBd0JJLENBQUEsZUFDQyxDQUFBLG9CQVNZLENBQUksbUJBQ2hCLEVBQUE7O0FBN0NOLGdLQXFFSyxpQkFBQSxFQUFBOztBQXJFTCwwREFrRE8sY0FDTyxDQUFBLG9CQUNSLENBQUEsZ0JBQUEsQ0FBQSxtQkFBQSxFQUFBOztBQXBETiw0REFpRE0sa0JBU0EsRUFBVTs7QUExRGhCLHNFQTZETSw0Q0FDQSxDQUFBLG9DQUFBLEVBQUE7O0FBOUROLHFFQStEb0IsNkNBRWQsQ0FBQSxxQ0FBQSxFQUFBOztBQWpFTix1RUFtRU0saUJBQW1CLEVBQUE7O0FBbkV6QixxRUF1RU8sc0VBR0EsQ0FBQSw4REFBQSxFQUFBOztBQTFFUCxrRkFnR0ksbUJBQUEsRUFBQTs7QUFoR0osdURBa0ZNLGlCakI3S08sRUFBQTs7QWlCMkZiLDBEQWtGTSxvQkFRQSxDQUFBLFVBQWUsQ0FBQSxjQUNmLENBQUEsb0JBQUEsQ0FBQSxnQkFBQSxDQUFBLG1CQUFBLEVBQUE7O0FBM0ZOLHNFQTZGTSx5QkFBd0IsRUFDeEI7O0FDN0xOLHFFQXVFRSx5QkFBQSxFQUFBOztBQXZFRiw4QkFHRSxjQUFBLEVBQUE7O0FBSEYsa0RBR3FCLG1CQVFqQixDQUFBLFVBQVUsQ0FBQSxXQUNBLENBQUEscUJBQ0QsQ0FBQSxxQkFFVCxDQUFBLGNBQ08sQ0FBQSwwQkFFUCxDQUFBLHVCQUFBLENBQUEsb0JBQUEsRUFBQTs7QUFsQkosd0RBbUJXLFlBQ0MsQ0FBQSxZQUNELENBQUMsb0JBQ0ksQ0FBQSxtQkFDSCxDQUFBLFVBQ1QsQ0FBQSxRQUFXLENBQUMsU0FDWixDQUFLLFdBQ0wsRUFBQTs7QUExQkosMERBNkJJLHFCQUNXLENBQUEscUJBQ0csQ0FBQSxjQUNiLENBQUEsZUFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLG1CQUFBLENBQUEsaUJBQUEsQ0FBQSxlQUFBLENBQUEsZ0JBQUEsQ0FBQSxvQ0FBQSxDQUFBLDRCQUFBLENBQUEsb0JBQUEsRUFBQTs7QUFoQ0wsbUVBa0NLLGlCQUNNLENBQUMscUJBQ0ksRUFBQTs7QUFwQ2hCLGdFQW1CVSxZbEJISCxDQUFBLFlrQm1DRixDQUFBLHdCQUFBLENBQUEsbUJBQUEsQ0FBQSxVQUFBLENBQUEsUUFBQSxDQUFBLFNBQUEsQ0FBQSxXQUFBLENBQUEsV0FBQSxDQUFBLHlDQUFBLENBQUEsaUNBQUEsRUFBQTs7QUFuREwsb0VBNkNlLGVBSVQsRUFBVTs7QWZ6QmQsMEVlckJBLG9CQWtEVSxFQUFFOztBQXJEZCw0QkF5REUsMERBR1MsYUFJUCxFQUFBLEVBQUE7O0FBaEVKLCtEQTBEa0IsY0FJYixDQUFBLGVBQ0EsRUFBQTs7QUEvREwsMEVBcUVJLGVBQUEsRUFBQTs7QUN0RUosNkRBR0UsV0FBYSxFbkIwQkM7O0FtQjdCaEIscUNBUUUsb0JBQUEsQ0FBQSxtQkFDVyxDQUFBLG1CQUNLLENBQUEscUJBQ0csQ0FDbEIscUJBQWMsQ0FBQSxjQUNkLENBQUEsMEJBZUEsQ0FBQSx1QkFBQSxDQUFBLCtCQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLEVBQUE7O0FBNUJILDhEQWNHLGtCQUNTLENBQUEsaUJBWVIsQ0FBQSxvQkFBQSxDQUFBLHdCQUFBLENBQUEsbUJBQUEsRUFBQTs7QUEzQkosbUVBZ0JNLGdCQUNXLEVBQUc7O0FBakJwQixxRUFjTyxpQkFNUyxFQUNYOztBQXJCTCx5RUFjTyxhQVVELEVBQUE7O0FBeEJOLG9GQXVDRyxjQUFBLEVBQUE7O0FBdkNILGdEQTZCWSxvQkFHUixFQUFBOztBQWhDSixtRUFvQ0ksb0JuQlpXLENtQmFYLFlBQVcsRUFDWDs7QWhCYkYsbUVnQmlCQyxvQkFBcUIsQ0FBQSxZQUNWLEVBQUM7O0FkeXRDZiw0QmNud0NDLHFDQWdERyw2QkFDQSxDQUFBLDhCQUFBLENBQUEsMkJBQUEsQ0FBQSx1QkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxFQUFBO0VkbXRDRiw4REFBOEQsWUFBWSxFQUFFO0VjNXNDOUUsZ0RBR0csWUFBQSxDQUFBLGdCQUdHLEVBQUEsRUFBQTs7QUMvRE4sOEVBR0UsYUFBQSxFQUFBOztBQUhGLHVDakI2SlEsWUFBRSxFQUFBOztBaUI3SlYsK0JBU0UsNkJBQ0MsQ0FBQSxvQkFDQSxDQUFBLDBCQUNjLENBQUEsbUJBQ0QsQ0FBSyxjQUNQLENBQUEsMEJBRVgsQ0FBQSxlQUNLLENBQUEsbUJBQ00sQ0FBQSxpQkFLWCxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxjQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLCtCQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLEVBQUE7O0FBdkJILDhDQVNnQiwwQkFXQSxDQUFBLG9CQUVaLENBQUEsZUFBQSxDQUFBLG9CQUFBLENBQUEsZ0JBQUEsQ0FBQSxtQkFBQSxDQUFBLFdBQUEsQ0FBQSxTQUFBLENBQUEsb0NBQUEsQ0FBQSxnQ0FBQSxDQUFBLDRCQUFBLEVBQUE7O0FBdEJKLDREQXlCZ0IsYUFDRixDQUFBLGdCQUNYLEVBQUE7O0FBM0JILDhDQTZCRyxlQUNBLENBQUEsaUJBQ0EsRUFBQTs7QUEvQkgsMENBb0NHLGlCQUNTLENBQUEsaUJBQ0YsQ0FBQSxzQkFFTixDQUFBLGFBQVcsQ0FBQSwyQkFDWCxDQUFBLG1CQUFBLENBQUEsaUJBQUEsRUFBQTs7QUF6Q0osbURBQUEsbUJBSUMsQ0FBQSxXQXdDQyxDQUFBLFNBQ0MsQ0FBQSxvQ0FDTyxDQUFBLGdDQUNQLENBQUEsNEJBQUEsRUFBQTs7QWpCNUJELDRGaUIrQmEsMkJBQ1csQ0FBQSwwQkFjeEIsRUFBQTs7QWZ5dENGLDRCZXR4Q0MsK0JBcURTLGVBQ0csQ0FBRSxtQkFDWCxDQUFBLHdCQUNBLEVBQUE7RUE1REosaURBOERJLGtCQUNBLEVBQUE7RWY2dENGLHdDQUF3QyxVQUFVLENBQUMsVUFBVSxDQUFDLG9DQUFvQyxDQUFDLGdDQUFnQyxDQUFDLDRCQUE0QixDQUFDLFNBQVMsRUFBRTtFZTV4QzlLLDBDQW1FTyxlcEJoRE8sRUFBQSxFQUFBOztBb0JuQmQsdUNBc0VFLDJCQUNDLENBQUEsc0JBQ0EsQ0FBQSwwQkFBQSxFQUFBOztBQXhFSCxzREEwRUcsMEJBQ0EsRUFBSzs7QUEzRVIsa0RBK0VFLDBCQUVDLENBQUEsMkJBQ1csRUFBQTs7QUFsRmQsc0RBOEVzQixtQnBCbkVMLENBQU8saUJvQjZFckIsQ0FBQSxpQkFBQSxDQUFBLFlBQUEsQ0FBQSxpQ0FBQSxFQUFBOztBQXhGSCw0REE0RkUsZXBCcEVhLEVvQnFFYjs7QUE3RkYsdUNBOEZFLGFBQWUsQ0FBQSxzQnBCdEVULENBQUEseUNvQnlFTCxFQUFBOztBQWpHSCxzREFtR0csMEJBS0EsQ0FBQSxhQUFBLEVBQUE7O0FBeEdILGtEQW9HRywwQkFDQyxFQUFBOztBQ3JHSixvRUE2YkUsa0JBQUEsQ0FBQSxnQkFBQSxFQUFBOztBQTdiRiwrQkFHRSxxQkFDUSxDQUFBLHFCQUFxQixDQUFBLGNBQUssRUFBQTs7QUFKcEMscU1BWUksZUFBQSxDQUFBLDhCQUFBLENBQUEsY0FBQSxDQUFBLG1CQUFBLEVBQUE7O0FBWkosbUdBZUkseUJBQUEsRUFBQTs7QUFmSiw0RUFnQmtDLG1CQWhCbEMsRUFDQzs7QUFERCw2SkF1QkksVUFBUyxDQUNULHdCQUFpQixFQUFBOztBQXhCckIsNkpBa0NvQixVckI5QkMsQ3FCK0JsQiw2QkFDQSxFQUFBOztBQXBDSCxpREF1Q0csZ0JBQUEsQ0FBQSxRQUEwQixDQUN6QixTQUFBLENBQVUsVUFBUSxDQUNsQixhQUFXLENBQUEsd0JBRVgsQ0FBQSxnQ0FBQSxDQUFBLGtCQUFBLENBQUEsc0JBQUEsQ0FBQSxrQ0FBQSxDQUFBLDBCQUFBLENBQUEsWUFBQSxFQUFBOztBQTNDSiwyRUE2Q0ksb0JBQ0EsQ0FBQSxpQkFDQSxDQUFLLGFBQ0EsRUFBRTs7QUFoRFgsMkVBdURJLG1CQUNVLENBQUEsYUFDVCxDQUFBLFlBQWMsQ0FBQSxTQUNkLENBQUEsT0FBVyxDQUFBLFVBQ1gsQ0FBSyxvQkFFTCxDQUFBLFlBQVUsQ0FBQSxnQkFBaUIsQ0FBQSxhQUMzQixFQUFBOztBQTlETCxvRkFtRUssbUJBRUUsQ0FBTyxvQkFDUCxDQUFBLG9CQUFBLENBQUEsU0FBQSxDQUFBLFNBQUEsQ0FBQSxvREFBQSxDQUFBLGdEQUFBLENBQUEsNENBQUEsQ0FBQSxpQkFBQSxDQUFBLGFBQUEsQ0FBQSxXQUFBLEVBQUE7O0FBdEVQLGlHckJpQk8sYXFCMkRILEVBQUs7O0FBNUVULCtFQXdGTSwwQkFFRCxDQUFBLGFBQUEsQ0FBQSxpQkFBQSxDQUFBLGlCQUFBLENBQUEsa0JBQUEsQ0FBQSxhQUFBLENBQUEsbUJBQUEsQ0FBQSxXQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGNBQUEsQ0FBQSw2QkFBQSxDQUFBLDhCQUFBLENBQUEsMkJBQUEsQ0FBQSx1QkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxDQUFBLG1DQUFBLEVBQUE7O0FBMUZMLGlGQTJGTyxZQUNRLEVBQUE7O0FBNUZmLGtGQXNHTyxlckJ0Rk0sQ0FBQSxVcUJ3RlAsQ0FBQSxvQkFBQSxDQUFBLHFCQUFBLENBQUEsa0JBQUEsQ0FBQSxXQUFBLENBQUEsc0NBQUEsQ0FBQSw4QkFBQSxDQUFBLGFBQUEsQ0FBQSxtQkFBQSxDQUFBLGFBQUEsRUFBQTs7QUF4R04sb0ZBeUdLLGFBQ0MsRUFBUTs7QUExR2QsMkZBK0dJLG1CckIvRlMsQ3FCaUdSLFVBQUEsQ0FBQSxTQUFBLEVBQUE7O0FBakhMLGlHQXNISyxhQUNBLENBQUEsa0NBRUEsQ0FBVyxjQUNYLEVBQUE7O0FBMUhMLDZGQThISSxhQUFTLENBQUEsV0FrRFQsQ0FBQSxlQUFBLENBQUEsZUFBQSxFQUFBOztBQWhMSix1RUErSEksbUJBQUEsQ0FBQSxrQkFDVSxFQUNUOztBQWpJTCxrR0FvSUssV0FDQSxDQUFBLHNDQUN1QixDQUFBLDhCQUt2QixFQUFBOztBQTNJTCxnR0F1SUssVUFBQSxDQUFBLGlCQUNRLENBQUEsd0JBRVAsRUFBQTs7QUExSU4scUhBNkltQixlQUlkLEVBQUE7O0FBakpMLHVHQThJSyxlQUFBLEVBQUE7O0FBOUlMLGtJQW9KSyxpQkFDQSxFQUFBOztBbEJwSEosb0dBQUMsMEJBRUEsQ0FBQSxpQkFDQSxDQUFLLGlCQUNFLENBQUEsbUJBRUgsQ0FBQSxVQUNKLEVBQUE7O0FrQnhDRiwyR0EwSk0sWUFBQSxDQUFBLG1CQUNTLENBQUEsWUFDQyxDQUFBLGFBQ0MsQ0FBQSxVQUNILENBQUEsV0FDUixDQUFBLGtCQUFBLENBQUEsa0NBQUEsQ0FBQSw4QkFBQSxDQUFBLDBCQUFBLENBQUEsV0FBQSxFQUFBOztBQS9KTiwyR0FnS0ssd0JBQ1csQ0FBQSxXQUtWLENBQUEsWUFBQSxDQUFBLGFBQUEsQ0FBQSxVQUFBLEVBQUE7O0FBdEtOLHdIQWtLTSxtQkFBQSxFQUFBOztBQWxLTixvSkEyS0ssZUFJQSxDQUFBLG9CQUFBLEVBQUE7O0FBL0tMLHVGQTRLSyxpQ0FDUyxDQUFBLHdCQUNSLENBQUEsV0FBQSxFQUFBOztBQTlLTiwrR0EyTEksYUFBQSxFQUFBOztBQTNMSixnRUFvTEksY0FDQyxDQUFBLHlCQUNBLENBQUksc0JBSUosQ0FBQSx3QkFBQSxFQUFBOztBQTFMTCwwRUF1TE0sMEJBdExMLENBQUEsb0JBMEJrQixDQXNKaEIsb0JBR0MsQ0FBQSxnQkFJTyxFckJ4S0g7O0FxQmhCUiwwSkFxTkcsYUFBQSxFQUFBOztBQXJOSCw4Q0FrTUcsb0JBQ0MsQ0FBQSxpQkFDTSxDQUFBLGFBQ04sQ0FBQSxtQkFlQSxDQUFBLGtDQUFBLENBQUEsMEJBQUEsQ0FBQSwwQ0FBQSxDQUFBLGtDQUFBLEVBQUE7O0FBcE5KLGdFQXNNTSxhQUNRLENBQ1QsaUJBQ0EsQ0FBQSxpQkFDQSxFQUFBOztBQTFNTCxtRUEyTUksVUFBQSxDQUFnQixXQUNmLENBQUEscUJBRUMsRUFBQTs7QUE5TU4sOEZBQUEsY0FDVSxFQTRMUjs7QUE3TEYsa0tBK05HLG1CQUFnQixFQUFBOztBQS9ObkIsZ0RBa09HLGdCQUNDLENBQUEsa0JBQ08sQ0FBQSxPQUFNLENBd0JiLFFBQUEsQ0FBQSxTQUFBLENBQUEsYUFBQSxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxjQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLCtCQUFBLENBQUEsaUNBQUEsQ0FBQSxZQUFBLEVBQUE7O0FBNVBKLCtEQXFPTSxZQUNRLENBQUEsY0FDQSxFQUFBOztBQXZPZCxpRUF5T1EsZUFDTSxDQUFBLGdCQUVULEVBQUE7O0FBNU9MLG9FQWtPaUIsZUFpQlgsQ0FBQSxZQUFXLENBQUEsWUFBZSxDQUFBLGNBQUEsQ0FBb0IsdUJBQzlDLENBQUEsMENBQUEsQ0FBQSxrQ0FBQSxFQUFBOztBQXBQTiwrRUFzUE0sdURBQ0EsQ0FBQSxtREFBQSxDQUFBLCtDQUFBLEVBQUE7O0FBdlBOLCtFQXlQTSxXQUFXLEVBQUE7O0FBelBqQiwrRUE4UG9CLHVEQUdMLENBQUEsbURBTVgsQ0FBQSwrQ0FBQSxFQUFBOztBQXZRSiwrREFtUUksd0JBRU0sQ0FBQyxvQkFDTixDQUFBLG9CQUFBLENBQUEsZ0JBQUEsQ0FBQSxhQUFBLENBQUEsK0NBQUEsQ0FBQSx1Q0FBQSxDQUFBLDJCQUFBLENBQUEsMkVBQUEsQ0FBQSxtQkFBQSxFQUFBOztBQXRRTCxtRUF3UXVCLGFBRW5CLENBQUEsWUFBWSxFQUNaOztBQTNRSixvRUFnUkksb0JBY0EsQ0FBQSxjQUFBLENBQUEsVUFBQSxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxjQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEsc0JBQUEsQ0FBQSxtQkFBQSxDQUFBLDBCQUFBLENBQUEsaUJBQUEsRUFBQTs7QUE5UkosbUVBaVJJLG1CQWpSSixFQUFBOztBQUFBLHVLQW1TSSxtQkFDQSxDQUFBLFFBQWMsQ0FBQSxZQUNkLENBQUEsU0FBQSxDQUFBLG1CQUFBLENBQUEsT0FBQSxDQUFBLGlCQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGNBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsRUFBQTs7QUFyU0osK0hBd1NJLGFBQUEsQ0FBQSxxQkFBQSxDQUFBLHFCQUFBLENBQUEsY0FBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxDQUFBLDZCQUFBLENBQUEsOEJBQUEsQ0FBQSwyQkFBQSxDQUFBLHVCQUFBLEVBQUE7O0FBeFNKLDZEQXlTRyxnQ3JCclNXLEVBQUE7O0FxQkpkLG1FQXlTcUIsZ0NBeFNwQixFQUFBOztBQURELHlKQW1UVSxVckIzUkssRXFCNFJWOztBQXBUTCxtSkFpVHNCLGVBSUYsRUFBQzs7QUFyVHJCLHFLQXlUSSxlQUFBLEVBQUE7O0FsQnhRSCw2WWtCcUtDLGVBMkZDLENBQUEsd0JBUUMsQ0FBQSxlbEJ4UUYsQ0FBQSxtQ0h6QmEsRUcyQmI7O0FBQ0QseWRBRUMsZUFBQSxFQUFBOztBa0J0REYscWFBaVVJLHdCQUFBLEVBQUE7O0FBalVKLDZEQWtVRyx1QkFFQyxDQUFBLG9CQUNBLENBQUEsc0JBQUEsRUFBQTs7QUFyVUosa0VBc1VzQixZQUNWLENBS1IsaUJBQUEsRUFBQTs7QUE1VUosbUVBd1VJLG9CQXhVSixDQUFBLGNBQUEsQ0FBQSxVQUNDLEVBcU5DOztBQXRORiw2S0F1VkksY0FBQSxFQUFBOztBQXZWSiw2REFvVkksb0JBQ0MsQ0FBQSxtQkFDQSxDQUFBLGVBQUEsQ0FBQSxtQkFBQSxDQUFBLFdBQUEsQ0FBQSxVQUFBLENBQUEsbUJBQUEsQ0FBQSxtQkFBQSxFQUFBOztBQXRWTCw4RUF5VmtCLG9CQUVkLEVBQUE7O0FBM1ZKLDhEQWlXSSxvQnJCeFZRLENBQUEsb0JxQjBWRyxDQUFNLGdCQUNoQixDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxjQUFBLENBQUEsc0JBQUEsQ0FBQSxtQkFBQSxDQUFBLDBCQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEsbUJBQUEsQ0FBQSxhQUFBLENBQUEsbUJBQUEsQ0FBQSwrQkFBQSxFQUFBOztBQXBXTCx1RUFxV0ksZUFDTSxDQUFBLGtCQUNFLEVBQUk7O0FBdldoQixpRkEwV3dCLFlBQ1YsQ0FBQSxhQUNMLENBQUEsaUJBRUosRUFBQTs7QUE5V0wsa0ZBMFd1QixtQkFTUCxDQUNWLFVBQVMsQ0FBQSxTQUNULENBQUEsV0FDQSxDQUFBLFdBQ0EsQ0FBQSxtQkFFQSxDQUFBLGtCQUFhLEVBQUE7O0FBelhuQix5RkFnWU0sWUFBVSxDQUFRLG1CQUVsQixDQUFBLFVBQVcsQ0FBQyxXQUNaLENBQUEsU0FBQSxDQUFBLFVyQmxYQyxDQUFPLG1DcUJxWFIsQ0FBQSxvQ0FDVSxDQUFBLGlDQUNlLENBQUEsWUFBQSxFQUFBOztBQXhZL0Isb0ZBK1hNLG1CQVdhLENBQUEsZUFDWixDQUFBLG9CQUFBLENBQUEsMEJBQUEsQ0FBQSxhQUFBLENBQUEsaUJBQUEsQ0FBQSxzQkFBQSxDQUFBLG1CQUFBLENBQUEsa0RBQUEsRUFBQTs7QUEzWVAsMEZBK1hNLGFBY0MsRUFBQTs7QUE3WVAsK0ZBb1phLGlCQUNJLEVBQUE7O0FBclpqQix3RkFrYkcsV0FBQSxDQUFBLG9CQVVBLEVBQUE7O0FBNWJILDBEQTJaRyw0REFFVyxFQUFBOztBQTdaZCw0RUErWkcsOEJBQ0MsQ0FBeUIsMERBRW9CLENBQUEsOENBQzNDLENBQUEsMENBQUEsRUFBQTs7QUFuYU4sdUhBNmFLLG1FQUFBLENBQUEsK0RBQUEsQ0FBQSwyREFBQSxFQUFBOztBQTdhTCw4R0EwYU8sT0FDRCxFQUFBOztBQTNhTixpSEErYUssV0FDQSxFQUFBOztBQWhiTCwyR0EwYlUsV0FBaUIsRUFDdkI7O0FsQnBiRix5RWtCeWJDLGtCQUVFLENBQUEsaUNBQ0EsQ0FBQSx5QkFBQSxFQUFBOztBaEJraENMLDZCZ0J0aENFLDZEQVVJLG9CQUFBLENBQUEsWUFBQSxDQUFBLFFBQUEsRUFBQTtFaEI2Z0NKLDhEQUE4RCxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFO0VGejhDOUcsdUVrQm1jQyxjQUNDLEVBQ0MsRUFBQTs7QWhCdWdDTCw2QmdCMWdDRSx1RUFlRyxjQUFBLEVBQUE7RWhCNC9CSCwrREFBK0Qsb0JBQW9CLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLEVBQUU7RUZ2OEMzSCxnRWtCaWRDLGtCQUNTLEVBQUUsRUFBQTs7QWhCdy9CZCw0QmdCMS9CRSxnREFVWSxtQkFFVCxDQUFBLG9CQUFBLENBQUEsZ0JBQUEsQ0FBQSwrQkFBQSxDQUFBLDhCQUFBLENBQUEsd0JBQUEsQ0FBQSxvQkFBQSxDQUFBLGFBQUEsRUFBQTtFQS9lTCwrREFpZkssY0FDQSxFQUFPO0VBbGZaLCtEQXNmSyxlQUFtQixDQUFBLDZCQUVYLENBQUUsa0JBQ1QsQ0FBQSxTQUFBLEVBQUE7RUF6Zk4sNkRBMGZLLDZCQUNDLENBQUEsa0JBQ0EsQ0FBQSxTQUFlLENBQUEsZUFDZixDQUFBLFVBQUEsQ0FBQSwwQkFBQSxDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxnQkFBQSxFQUFBO0VBN2ZOLGdGQStmTSxtQkFDQSxDQUFBLGVBQUEsRUFBQTtFQWhnQk4scUZBa2dCWSxpQkFDTixDQUFBLHFCQUFBLEVBQUE7RUFuZ0JOLGdGQXVnQkssY0FDQSxFQUFBO0VBeGdCTCw4RUEwZ0JlLFVBQUUsRUFBQTtFQTFnQmpCLDhEQXlnQkksNkJBU0UsQ0FBQSxrQkFBQSxDQUFBLFNBQUEsQ0FBQSxlQUFBLEVBQUE7RUFsaEJOLG9FQW1oQkssOEJBQ1MsQ0FBSSxpQkFFWixDQUFBLFdBQUEsQ0FBQSw2QkFBQSxDQUFBLGtCQUFBLENBQUEsU0FBQSxDQUFBLCtCQUFBLENBQUEsOEJBQUEsQ0FBQSx3QkFBQSxDQUFBLG9CQUFBLENBQUEsdUJBQUEsQ0FBQSxlQUFBLENBQUEsV0FBQSxFQUFBO0VBdGhCTix3RUEyaEJJLFVBQUEsRUFBQTtFQTNoQkosdUZBK2hCZ0IsYUFBQSxDQUFBLHNCQUlYLENBQUEsY0FBQSxDQUFBLFVBQUEsRUFBQTtFQW5pQkwsaURBbWVXLGlCQTJEUCxFQUFBO0VBOWhCSiw0RUFxaUJLLHFDQUVBLENBQUEsaUNBQUEsQ0FBQSw2QkFBQSxFQUFBO0VBdmlCTCxzR0E0aUJJLGNBQUEsRUFBQTtFQTVpQkoseUVBOGlCYyxpQkFDVixDQUFBLFlBQUEsRUFBQTtFQS9pQkosOENBZ2pCRyxlQUNDLENBQUEsWUFDQSxFQUFBO0VBbGpCSiw2REFxakJJLGlCQUNBLEVBQUE7RWhCeTdCRixxREFBcUQsZUFBZSxFQUFFO0VGdDlDdEUsaURrQm1pQkEsU0FBUyxDQUFBLGVBQUEsQ0FBQSxjQUNxQixDQUFBLG1CQTdqQmhDLEVBQUEsRUFBQTs7QWhCay9DQSw0QkFBNEIsc0hBQXNILGVBQWUsRUFBRTtFZ0J6NkJuSywwSkFPRyx1QkFBQSxDQUFBLGtCQUFBLEVBQUEsRUFBQTs7QWxCN2pCRCxxRGtCdWpCRCxVQUNDLEVBQUE7O0FBRkYsNEJBQ0MscURBWUUsT0FBQSxFQUFBLEVBQUE7O0FsQm5rQkQsc0RrQnVqQkQsVUFPQyxFQUFBOztBQVNGLDRCQUNDLHNEQW1CQSxVQUFBLEVBQUEsRUFBQTs7QUFwQkQsd0JBQXFCLFVBQXJCLENBQUksV0FBQSxDQUFBLGlCQU1GLEVBQUE7O0FBTkYsOERBVUUsY0FBQSxFQUFBOztBQVZGLDJDQVlFLGlCQU9BLEVBQUE7O0FsQjFsQkEsa0NrQnVrQkUsa0JBQWlCLEVBQUE7O0FoQjI2QnJCLDRCQUE0QixrQ0FBa0MsZUFBZSxFQUFFO0VpQnBnRC9FLG9EQUNhLFVBQUEsRUFBQSxFQUFBOztBQURiLHNCQVNDLDBEdEJPYSxDc0JKWixtQkFDQSxDQUFBLE9BQVksQ0FBQSxTQUNaLENBQUEsUUFBYSxDQUFDLFVBQ2QsQ0FBQSxhQUFrQixDQUFBLGFBQ1IsQ0FBQSxnQkFBZSxDQUFBLHFCQUN6QixFQUFBOztBQWpCRixrQ0FTWSxtQkFpQlQsQ0FBQSwwQkFFQSxDQUFBLGF0QlpJLENBQUEsaUJzQmFLLENBQUEsbUJBQ0UsQ0FDWCxvQkFBVSxDQUFBLG9EQUVWLENBQUEsZ0RBQUEsQ0FBQSw0Q0FBQSxDQUFBLDJEQUFBLENBQUEsbURBQUEsQ0FBQSxrQkFBQSxDQUFBLFdBQUEsQ0FBQSx3Q0FBQSxDQUFBLGdDQUFBLENBQUEsbUJBQUEsQ0FBQSxpQkFBQSxDQUFBLGlCQUFBLEVBQUE7O0FBakNILHdDQVNZLFlBMEJPLENBQ1QsWUFDRSxDQUFBLFdBQ1IsQ0FBQSxvQkFBQSxDQUFBLG1CQUFBLENBQUEsYUFBQSxDQUFBLGtEQUFBLENBQUEsOENBQUEsQ0FBQSwwQ0FBQSxDQUFBLFNBQUEsRUFBQTs7QUF0Q0osd0RBeUNHLFVBQVUsRUFBQTs7QUF6Q2IsbURBd0NvQix1REFLaEIsQ0FBQSxtREFBQSxDQUFBLCtDQUFBLEVBQUE7O0FBN0NKLHlEQWdEWSxXQUNULENBQUEsV0FBQSxFQUFBOztBQ2xESCw2Q0FFa0IsV0FBQSxFQUFBOztBQUZsQixxRUFRSSxxQkFFRCxDQUFBLHFCQUNBLENBQUEsY0FBaUIsQ0FBWSxvQkFDWCxDQUFBLGVBQ0osQ0FBQSxjQUFBLENBQUEsbUJBQ0QsRUFJYjs7QUFsQkgseUVBUUssb0JBUUQsQ0FBQSxpQkFDQSxDQUFBLGFBQUEsQ0FBQSxXQUFBLENBQUEsMEJBQUEsQ0FBQSw4QkFBQSxDQUFBLG1CQUFBLENBQUEsZ0NBQUEsQ0FBQSxlQUFBLEVBQUE7O0FBakJKLG9GQW9CRyxnQkFDQSxFQUFBOztBQXJCSCxnRkF1QkcsVUFBUSxFQUFBOztBQXZCWCxnRkEwQkUsc0JBQ1EsQ0FBQSxZQUNQLEVBQUE7O0FBNUJILCtGQW1DRyxxQkFDQSxDQUFBLHFCQUNBLENBQVUsY0FDVixDQUFBLDBCQUNBLENBQUEsdUJBQ0EsQ0FBQSxvQnZCL0JTLENBQUEsMEJ1QmtDVCxDQUFBLDhCQVVBLENBQUEsbUJBQUEsQ0FBQSxxQkFBQSxDQUFBLG9CQUFBLEVBQUE7O0FBckRILDZGQTRDRyxxQkFDWSxDQUFBLHFCQUNLLENBQ2hCLGNBQWEsQ0FBQSwwQkFDYixDQUFBLHVCQUFBLENBQUEsb0JBQUEsQ0FBQSxtQkFBQSxDQUFBLDBCQUFBLENBQUEsOEJBQUEsQ0FBQSxnQkFBQSxDQUFBLGtCQUFBLENBQUEsZUFBQSxDQUFBLGlCQUFBLENBQUEsZUFBQSxFQUFBOztBQWhESixzR0FpREcsZ0JBQ1ksQ0FBQSxpQkFDQyxDQUFFLG9CQUNkLEVBQUE7O0FBcERKLDBHQXVEVyxnQnZCOUNDLENBQU8scUJ1QmlEaEIsRUFBQTs7QUExREgsNkZBNkQyQixlQUNYLENBQ2IsZUFBYSxDQUFBLGtCQUNiLENBQUEsa0JBQ0EsQ0FBQSxtQkF5Q0EsRUFBQTs7QUExR0gsOEZBa0VHLHFCQUNTLENBQUUscUJBQ1YsQ0FBQSxjQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEsMEJBQUEsQ0FBQSw4QkFBQSxDQUFBLG9CQUFBLENBQUEsZ0JBQUEsRUFBQTs7QUFwRUosMEdBc0VJLG1CQUNLLEV2QjlERzs7QXVCVFosdUdBMkVJLGdCQUNDLENBQUEsZUFBUyxDQUFBLHNCQUNPLENBQ2hCLG9CQUFpQixDQUFBLG9CQUNKLEVBQUE7O0FBL0VsQixzSEFtRkcsc0JBRUMsQ0FBQSxpQkFBQSxDQUFBLDJCQUFBLENBQUEsa0JBQUEsRUFBQTs7QXBCOUVGLDBIb0JzRHlCLGVBNkJULEVBQUM7O0FsQjA5Q25CLDZCa0JsakRDLDhGQWdHSSw2QkFDQSxDQUFBLDhCQUFBLENBQUEsMkJBQUEsQ0FBQSx1QkFBQSxDQUFBLHdCQUFBLENBQUEscUJBQUEsQ0FBQSw0QkFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxFQUFBO0VsQms5Q0gsa1BBQWtQLGdCQUFnQixFQUFFO0VrQnJqRHRRLHlIQTZHSSxxQkFDQSxFQUFBLEVBQUE7O0FwQnJGRix5SG9Cd0ZzQixvQkFZdEIsRUFBQTs7QWxCNjdDRiw0QmtCeGpEQyxxRUFzSEksNkJBQ0EsQ0FBQSw4QkFBQSxDQUFBLDJCQUFBLENBQUEsdUJBQUEsRUFBQTtFbEJrOENILHlFQUF5RSxnQkFBZ0IsQ0FBQyxpQ0FBaUMsQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFO0VrQjNqRDVKLG9GdkJLYSxpQnVCMkhYLEVBQWEsRXZCbkdDOztBdUI3QmhCLGlFQW1JRSwwQkFFQyxDQUFBLG1CQUVBLENBQUEsbUJBRUEsQ0FBQSxxQkFBQSxDQUFBLHFCQUFBLENBQUEsY0FBQSxFQUFBOztBcEJoSEQsOEVvQnFHZ0IsVUFBQSxDQUFBLFdBYWYsQ0FBQSxvQkEyQkQsQ0FBQSxZQUFBLENBQUEsUUFBQSxDQUFBLG1CQUFBLEVBQUE7O0FsQjQ1Q0YsNEJrQnA4Q0MsaUVBa0JHLDZCQUVNLENBQUEsOEJBRUwsQ0FBQSwyQkFBQSxDQUFBLHVCQUFBLEVBQUE7RUFwSkwsOEVBcUpJLDZCQUNDLENBQUEsOEJBSUEsQ0FBQSwyQkFBQSxDQUFBLHVCQUFBLENBQUEsaUJBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsRUFBQTtFQTFKTCxtR0F1SkssZUFBbUIsQ0FBQSxZQUNQLENBQUEsbUJBQ1gsRUFBQTtFQXpKTixpR0E0SkssNkJBRUEsQ0FBQSw4QkFBQSxDQUFBLDJCQUFBLENBQUEsdUJBQUEsRUFBQTtFbEJ3NkNILG9IQUFvSCxlQUFlLEVBQUU7RWtCdGtEdkksK0ZBbUtVLFlBQUUsQ0FBWSxjQUNiLEVBQU0sRUFBQTs7QUFwS2pCLDRFQWtMRyxZQUFBLENBQUEsc0JBQUEsQ0FBQSxlQUFBLEVBQUE7O0FBbExILGtEQXdLWSxpQkFFWSxFQUNwQjs7QUEzS0oscUVBK0tJLG9CdkJ2SlcsQ3VCd0pYLFlBQVcsRUFDWDs7QUFqTEoscUVBc0xFLG9CQUNBLENBQVcsWUFDWCxFQUFBOztBQXhMRiw0Q0EwTEUsbUJBQ1EsQ0FBRSxxQkFDVCxDQUFBLHFCQUNTLENBQUEsY0FDVCxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxDQUFBLGNBQUEsRUFBQTs7QUE5TEgsdURBK0xFLHNCQUNZLENBQUEsbUJBQ0csQ0FBQSxnQkFDZCxFQUFBOztBQUtILGlFQUFBLGdCQUFBLENBQUEsa0JBQUEsRUFBQTs7QWxCZzVDQTs7R0FFRztBa0IvNENILG9CQUVDLDhDQUNLLENBQUEsc0NwQmxCTCxFQUFBOztBb0JlRCxpRkFHWSxVQVFGLENBQUEsV0FDRyxDQUFBLHlCQUNWLENBQUssaUJBQWtCLENBQUEsbUJBQ3ZCLENBQUEsb0JBQUEsQ0FBQSxxQkFBQSxDQUFBLHFCQUFBLENBQUEsbUJBQUEsQ0FBQSxnQkFBQSxDQUFBLGlCQUFBLENBQUEsVUFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxlQUFBLENBQUEsbUJBQUEsQ0FBQSxtQkFBQSxDQUFBLDJCQUFBLEVBQUE7O0FBZEgsNkZBa0JFLCtCQUFBLENBQUEsMEJBQUEsRUFBQTs7QUM1TkYsZ0NBQ0MsY0FBQSxFQUFBOztBQURELG9EQVFFLG1CQUFVLEVBQUE7O0FBUlosK0JBc0JFLG1CQUNDLENBQUEscURBSUEsQ0FBQSxpREFHQSxDQUFBLDZDQUVBLENBQUEsYUFBQSxDQUFBLFlBQUEsQ0FBQSxjQUFBLENBQUEsa0JBQUEsQ0FBQSxrQkFBQSxDQUFBLGtCQUFBLENBQUEsbUJBQUEsQ0FBQSxpQkFBQSxDQUFBLGlCQUFBLENBQUEsdURBQUEsQ0FBQSwrQ0FBQSxDQUFBLFdBQUEsQ0FBQSxtQkFBQSxDQUFBLGtDQUFBLENBQUEsMEJBQUEsRUFBQTs7QUFoQ0gsZ0RBa0NHLG1CQUNDLENBQUEsV0FDQSxDQUFBLFNBQUEsQ0FBQSxXQUFBLENBQUEsZUFBQSxDQUFBLGdCQUFBLENBQUEsaUJBQUEsQ0FBQSxhQUFBLENBQUEsaUJBQUEsRUFBQTs7QUFwQ0osZ0VBeUNFLFlBQUEsRUFBQTs7QUF6Q0YscUNBMkNFLHlCQUVDLEVBQUE7O0FBN0NILDZDQWtEUyxXQUNQLENBQUEsb0JBQ0EsRUFBTTs7QUFwRFIscUNBaUVFLHFCQUNDLENBQUEscUJBQ0EsQ0FBQSxjQUNBLENBQUEsbUJBQ08sQ0FBQSx5QkFDUCxDQUFBLDJHQUFBLEVBQUE7O0FBdEVILHVEQXVFRSxpQkFDVSxDQUFBLGtCQUNFLENBQUssVUFDaEIsQ0FBUyxnQkFDRCxFQUFBOztBQTNFWCw2REE4RUcsY0FDQSxDQUFBLGlCQUNBLENBQU8sZUFDUCxDQUFBLGVBQXFCLEVBQ3JCOztBQWxGSCwyREFtRkcsb0JBQ0MsQ0FBQSxZeEJuRVUsQ0FBQSxRd0JvRVYsQ0FBQSxrQkFBQSxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxjQUFBLENBQUEsNkJBQUEsQ0FBQSw4QkFBQSxDQUFBLDJCQUFBLENBQUEsdUJBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsRUFBQTs7QUFyRkosNkVBdUZJLGVBQ0EsRUFBQTs7QUF4RkosMEVBNkZHLGV4QjVFSSxDQUFPLG1Cd0I4RVgsRUFBQTs7QUEvRkgsOERBa0dHLG9CQUVFLENBQUEsWUFDQSxDQUFBLFFBQVksQ0FBQSxvQkFBQSxDQUFBLHFCQUNaLENBQUEscUJBQUEsQ0FBQSxjQUFBLENBQUEsNkJBQUEsQ0FBQSw4QkFBQSxDQUFBLDJCQUFBLENBQUEsdUJBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsQ0FBQSxhQUFBLEVBQUE7O0FBdEdMLCtFQXlHYSxXQUNULENBQUEsOENBRVcsQ0FBQSxzQ0FDWCxFQUFBOztBQTdHSixvRUE4R0csZUFDQyxDQUFBLGtCQUNBLENBQUEscUJBQUEsQ0FBQSxnQkFBQSxFQUFBOztBQWhISixnRkFBQSxjQUFBLEVBQUE7O0FBQUEsc1BBbUhTLHVCQVlKLENBQUEsVUFBZ0IsQ0FBQSxtQkFDaEIsQ0FBQSxXQUFBLENBQUEsZUFBQSxDQUFBLDBCQUFBLENBQUEsa0JBQUEsQ0FBQSxpQkFBQSxDQUFBLFlBQUEsQ0FBQSwwQ0FBQSxDQUFBLGtDQUFBLEVBQUE7O0FBaElMLHdRQXFJSSxpQkFBQSxFQUFBOztBQXJJSiw0RUF1SUksbUJBQ0EsRUFBQTs7QUF4SUoseUVBb0plLGVBZ0VaLENBQUEsaUJBQUEsQ0FBQSxtQkFBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxDQUFBLFVBQUEsQ0FBQSxrQkFBQSxDQUFBLG9CQUFBLENBQUEsa0JBQUEsQ0FBQSxnQkFBQSxDQUFBLHVCQUFBLEVBQUE7O0FBcE5ILDBEQXFKRyxjQUNTLEVBQUE7O0FBdEpaLCtEQTJKSSxxQkFJQSxDQUFBLHFCQUFBLENBQUEsY0FBQSxDQUFBLDZCQUFBLENBQUEsOEJBQUEsQ0FBQSwyQkFBQSxDQUFBLHVCQUFBLEVBQUE7O0FBL0pKLDREQTBKSSxVQUVjLEVBQUM7O0FBNUpuQix5RUFpS2EsbUJ4QnhKRCxFQUFPOztBd0JUbkIsZ0VBdUtHLGVBQ0MsQ0FBQSxlQVNBLENBQUEsa0JBQUEsQ0FBQSxxQkFBQSxDQUFBLGdCQUFBLEVBQUE7O0FBakxKLDBFQXVLa0IsbUJyQkVMLEVBQUU7O0FxQnpLZixpRkFtTEksbUNBU0EsQ0FBQSxZQUFBLENBQUEsbUJBQUEsQ0FBQSxvQkFBQSxDQUFBLHFCQUFBLENBQUEscUJBQUEsQ0FBQSxlQUFBLENBQUEsdUNBQUEsQ0FBQSxvQ0FBQSxDQUFBLG1DQUFBLENBQUEsc0JBQUEsQ0FBQSxpQkFBQSxDQUFBLG1CQUFBLENBQUEsZUFBQSxDQUFBLFdBQUEsQ0FBQSxZQUFBLEVBQUE7O0FBNUxKLDBFQWtMa0IsbUJyQlRMLEVBQUU7O0FxQnpLZixpRkE4TDRCLG1DQUVaLENBQUEsWUFDWixDQUFBLG1CQWtCQSxDQUFBLG9CQUFBLENBQUEscUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGVBQUEsQ0FBQSx1Q0FBQSxDQUFBLG9DQUFBLENBQUEsbUNBQUEsQ0FBQSxzQkFBQSxDQUFBLGlCQUFBLENBQUEsbUJBQUEsQ0FBQSxlQUFBLENBQUEsV0FBQSxDQUFBLFlBQUEsRUFBQTs7QUFuTkosbUZBOEwyQixtQkFLWixDQUNWLGlCQUNBLENBQUEsZ0JBQWlCLEVBQ2pCOztBQXRNTCwwRkErTUssWUFBYyxDQUFBLGVBQ0YsQ0FBQSxtQkFFWixDQUFBLFlBQUEsQ0FBQSxZQUFBLENBQUEsMEJBQUEsQ0FBQSxVQUFBLENBQUEsT0FBQSxDQUFBLG9DQUFBLENBQUEsZ0NBQUEsQ0FBQSw0QkFBQSxFQUFBOztBQWxOTCx1RkFpREMsZ0JBcUtZLENBQUEsa0JBdE5iLENBQUEsYUFpREMsRUFBQTs7QUFqREQsc1JBaURDLDBCQXdLbUIsQ0FZVixVQUNOLENBQUEsbUJBQ0EsQ0FBQSxXQUFBLENBQUEsZUFBQSxDQUFBLDBCQUFBLENBQUEsZUFBQSxDQUFBLGtCQUFBLENBQUEsbUJBQUEsQ0FBQSxZQUFBLENBQUEsMENBQUEsQ0FBQSxrQ0FBQSxFQUFBOztBQXZPSixvVEEyT0csc0JBQUEsRUFBQTs7QUEzT0gsaUVBNk9HLDBEQUVVLEVBQU87O0FBL09wQiw0REFBQSwwREFtUFUsRUFBQTs7QUFuUFYsbURBNFBhLDBEQUlWLEVBQUE7O0FBaFFILDhEQWtRVyxlQUNLLENBQUEsMkJBQ1osQ0FBQSxtQkFBQSxFQUFBOztBckJ2UEYseUdxQjRQWSxpQkFhWixDQUFBLGlCQUFBLENBQUEsbUJBQUEsQ0FBQSx5QkFBQSxDQUFBLHNCQUFBLENBQUEsd0JBQUEsQ0FBQSxVQUFBLENBQUEsb0JBQUEsQ0FBQSxrQkFBQSxDQUFBLGdCQUFBLEVBQUE7O0FuQjA1Q0YsMERBQTBELG9CQUFvQixDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQywwQ0FBMEMsQ0FBQyxrQ0FBa0MsRUFBRTs7QUFFak4sZ0VBQWdFLGFBQWEsRUFBRTs7QUFFL0UsNkJBQTZCLHFDQUFxQyxXQUFXLENBQUMsV0FBVyxDQUFDLG9DQUFvQyxDQUFDLGdDQUFnQyxDQUFDLDRCQUE0QixFQUFFO0VtQnByRDlMLHNFQWtTRSxlQUFBLEVBQUEsRUFBQTs7QUFsU0YsNEJBdVJDLHFDQUdFLDZCQUNBLENBQUEsOEJBQUEsQ0FBQSwyQkFBQSxDQUFBLHVCQUFBLEVBQUEsRUFBQTs7QUEzUkgsNEJBdVJDLHFDQU1FLFlBQWlCLEVBQUEsRUFBQTs7QUE3UnBCLGdEQXVSMkIscUJBUXZCLENBQUEscUJBQ0EsQ0FBQSxjQUFBLEVBQUE7O0FDL1JKLDBEQUVHLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSwrQkFBQSxFQUFBOztBcEI0ckRILHlEQUF5RCx3QkFBd0IsQ0FBQyxxQkFBcUIsQ0FBQyw0QkFBNEIsRUFBRTs7QUFFdEksa0VBQWtFLG1CQUFtQixFQUFFOztBQUV2RixnQkFBZ0I7QW9COXJEaEIsNFNBR0Msb0JBQUEsQ0FBdUIscUJBRnhCLEVBQUE7O0FBREEsdTNCQXNCRSxvQkFBQSxDQUFBLHFCQUFBLEVBQUE7O0FBdEJGLHVqQ0FpQ0csb0JBQUEsRUFBQTs7QUFqQ0gsd1pBNEJJLG9CQUErQixFQTNCbkM7O0FBb0NBLDhFQUFtRSxvQkFBQSxDQUFBLHFCQUFBLEVBQUE7O0FwQm9xRG5FLDZPQUE2TyxnQkFBZ0IsQ0FBQyxvQkFBb0IsRUFBRTs7QW9CdnBEcFIseXBCQWFFLGdCQUFBLENBQUEsb0JBQUEsRUFBQTs7QUFiRixtRUFRRztBcEJvcERILHVGQUF1RixnQkFBZ0IsQ0FBQyxvQkFBb0IsRUFBRTs7QUFFOUgsaUNBQWlDO0FxQnJ0RGpDLHVlQW9DSSxnQkFBQSxDQUFBLG9CQUFBLEVBQUE7O0FBcENKLDYzQ0FtQ0ssZ0JBQUEsQ0FBQSxvQkFBQSxFQUFBOztBQW5DTCx5Y0ErQlMsMkJBQUEsQ0FBQSwrQkFBQSxFQUFBOztBQS9CVCxxQkFDSSx3bUJBVVMsRUFBQTs7QUFYYixrREFHUSxlQUFjLEVBQUE7O0FBSHRCLG1GQVlZLFVBQUEsQ0FBQSxpQ0FHUSxDQUFBLGlCQUNBLENBQUEsZ0JBQWtCLENBQ3JCLGVBQUEsRUFBQTs7QUFqQmpCLDhGQVlZLGlCQU1JLEVBQUE7O0FBbEJoQiw4R0FrQmdCLFdBQUEsRUFBQTs7QUFsQmhCLDZIQWtCZ0IsZ0JBUWdCLENBQ1IsbUJBQ0gsRUFBQTs7QUE1QnJCLGtJQWtDUyxpQkFBQSxFQUFBOztBQ2xDVCx1SUFxSUssZUFBQSxDQUFBLGtCQUFBLENBQUEsZ0JBQUEsQ0FBQSxtQkFBQSxFQUFBOztBQXJJTCw4SUFVUyxjQUFBLEVBQUE7O0FBVlQsaUVBT1ksd0JBRUMsQ0FBQSxxQkFBQSxDQUFBLDRCQUFBLEVBQUE7O0FBVGIsd0NBV1EsY0FDSSxFQUFBOztBQVpaLCtEQWVZLFVBQ1UsQ0FBQSx1QkFDWSxDQUNsQiwyQkFDSyxFQUFDOztBQW5CdEIsd0VBdUJnQixZQUFhLEVBQUE7O0FBdkI3QixxREFzQlksb0JBT1csRUFBQzs7QUE3QnhCLG1FQXFDWSxVQUNDLENBQU8sbUJBQ0osQ0FBQSxvQkFlSCxDQUFBLGFBQUEsRUFBQTs7QUF0RGIsc0VBd0NnQixxQkFDVSxDQUFBLGlCQUNNLENBQUEsb0JBRVosQ0FBQSwwQkFDYSxDQUFBLG1CQUNoQixDQUFBLGVBQUEsRUFBQTs7QUE5Q2pCLDRFQStDZ0Isd0JBRUksQ0FBQSxXQUNBLENBQUEseUJBQ1csQ0FBQSxpQkFDRSxFQUFJOztBQXBEckMsdUVBeURtQixxQkFDSSxDQUFBLHFCQWNkLENBQUEsY0FBQSxDQUFBLCtCQUFBLENBQUEsOEJBQUEsQ0FBQSx3QkFBQSxDQUFBLG9CQUFBLEVBQUE7O0FBeEVULHFGeEIyRGMsVUFDYixDQUFBLGlCSDNDTSxDQUFBLGVBREMsQ0FBQSxZRzhDUCxDQUFBLGtCQUNBLEVBQUE7O0FBbUJBLGlGQUNXLFVBQ1YsQ0FBQSxrQkFBQSxDQUFBLGVBQUEsQ0FBQSxZQUFBLENBQUEsa0JBQUEsRUFBQTs7QUFDRCxxRHdCMUJXLHVCeEIyQlYsQ0FBTywyQkFFUCxFQUFVOztBQUVYLDZEQUFHLFVBQVUsQ0FBQyxvQkFDRSxDQUNmLDBCQUFBLENBQUEsYUFBQSxDQUFBLHlCQUFBLENBQUEsaUJBQUEsQ0FBQSxxQkFBQSxDQUFBLHFCQUFBLENBQUEsaUJBQUEsQ0FBQSxrQkFBQSxDQUFBLG1CQUFBLENBQUEsc0JBQUEsQ0FBQSxnQkFBQSxDQUFBLFlBQUEsQ0FBQSxpQkFBQSxDQUFBLG9CQUFBLENBQUEsa0JBQUEsQ0FBQSxVQUFBLENBQUEsV0FBQSxDQUFBLHNDQUFBLENBQUEsOEJBQUEsQ0FBQSxxQkFBQSxDQUFBLHFCQUFBLENBQUEsY0FBQSxDQUFBLHlCQUFBLENBQUEsc0JBQUEsQ0FBQSx3QkFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGFBQUEsQ0FBQSxxQkFBQSxDQUFBLGVBQUEsQ0FBQSxzQkFBQSxDQUFBLG9CQUFBLENBQUEsY0FBQSxDQUFBLGFBQUEsQ0FBQSxnQkFBQSxDQUFBLGlCQUFBLENBQUEsaUJBQUEsQ0FBQSxhQUFBLENBQUEsaUNBQUEsRUFBQTs7QUFDRCxzRUFBYSxtQkFFUCxFQUFDOztBQVFOLHNFQUFBLGVBQ0MsQ0FBQSxvQkFDQSxDQUFTLFlBQ1QsQ0FBQSxRQUFBLENBQUEsbUJBQUEsRUFBQTs7QUFDRCwwRUFBQSxpQkFDVSxFQUFBOztBQUdYLHdFQUFDLFdBQ0EsQ0FBQSxZQUFXLENBQUEsYUFDWCxDQUFLLG9CQUNHLENBQUMsOEJBb0JULENBQUEsaUJBQUEsQ0FBQSxxQkFBQSxDQUFBLGVBQUEsQ0FBQSxXQUFBLENBQUEsMEJBQUEsQ0FBQSx1QkFBQSxDQUFBLG9CQUFBLENBQUEseUJBQUEsQ0FBQSxzQkFBQSxDQUFBLHdCQUFBLEVBQUE7O0FBbkJBLGlGQUFBLGdCQUNDLENBQUEsa0JBQ0ssRUhyR0E7O0FHZ0hOLGlGQUFBLFdBQ0MsRUFBQTs7QUFFRCxpRkFwQm9CLHdCQXFCUixDQUFBLGVBQ1gsQ0FBQSxXQUFBLEVBQUE7O0FBRUYsMEZIdEhNLG9CRytCSSxDQUFDLGFBQVcsQ0F5RnJCLG9CQUFBLENBQUEsWUFBQSxDQUFBLGFBQUEsQ0FBQSxvQkFBQSxDQUFBLG1CQUFBLENBQUEsZUFBQSxDQUFBLGFBQUEsQ0FBQSxrQkFBQSxDQUFBLG1CQUFBLENBQUEsa0JBQUEsQ0FBQSwwREFBQSxDQUFBLGtEQUFBLEVBQUE7O0FBeEZELDBGQUFDLG9CSHpCTSxFQUFBOztBRzRCUCx1RkFBUSx3QkFDSSxFQUFXOztBQXFGdkIsbUZBQ0MsZUFDQSxDQUFBLHdCQUtBLEVBQUE7O0FBSkEsc0dINUhLLGVBREMsRUFBSzs7QUdrSVoseUZBRUMsd0JBQ0EsRUFBQTs7QUFDRCwrRUFDVSxrQkFDSSxDQUNiLGVBQUEsRUFBQTs7QXdCekpGLHFGQTJFNEIsb0JBQ2hCLENBQUEsYUFDQSxFQUFBOztBQTdFWixtRUFpRmdCLGNBQ0ksQ0FBQSwwQkFDUyxFQUFDOztBQW5GOUIsbUVBc0ZnQixjQUNJLENBQUEsY0FDSCxFQUFBOztBQXhGakIsaURBNEZZLHFCQUNVLENBQUcscUJBQ0ssQ0FBQSxjQUNMLENBQUEsMEJBQ2hCLENBQUEsdUJBQUEsQ0FBQSwrQkFBQSxDQUFBLDBCQUFBLENBQUEsdUJBQUEsQ0FBQSxvQkFBQSxDQUFBLGlDQUFBLENBQUEscUJBQUEsRUFBQTs7QUFoR1QsNEVBbUdZLHFCQUFXLENBQUEsZUFDRCxFQUFBOztBQXBHdEIsNEVBd0c2QixrQkFXcEIsRUFBQTs7QUFuSFQsZ0RBdUdRLG9CQUdpQixDQUFBLFlBQ0MsQ0FBQSxRQUNWLENBQUEsZUFBWSxDQUFNLG9CQUNKLENBQUEsb0JBQ2pCLEVBQUE7O0FBOUdiLGtEQXVHUSxpQkFTUSxDQUFBLHlDQUVILENBQUEsaUNBQUEsQ0FBQSxlQUFBLENBQUEsb0JBQUEsRUFBQTs7QUFsSGIseURBcUhpQixtQkFHSixDQUFBLGVBQUEsRUFBQTs7QUF4SGIsc0VBMkhxQixpQkFDTyxDQUFBLG9CQUNmLENBQUEsc0JBQUEsRUFBQTs7QUE3SGIsK0RBK0h5QixpQkFFRCxDQUFBLGtCQUVYLEVBQUE7O0FBbkliLDREQXlPSyxjQUFBLEVBQUE7O0FBek9MLHlFQTBJUyxjQUFBLEVBQUE7O0FBMUlULHVFQTZJUyxjQUFBLEVBQUE7O0FBN0lULHVDQXNJcUIsY0F0SXJCLEVBQUE7O0F4Qm1CRSxrRHdCbUhFLG1CQUFpQixFQUFBOztBQXRJckIsK0NBdUpRLGVBQ0ksRUFBQTs7QUF4SloseUxBa0t1QixrQkFDVixFQUFBOztBQW5LYiw0QkFzSUkseUxBc0NhLGtCQUFBLEVBQUEsRUFBQTs7QUE1S2pCLDBEQW9LWSxtQkFBQSxDQUFBLG1CQVNLLENBQUEscUIzQnBLTCxDQUFBLHFCMkJzSzBCLENBQUEsY0FDbEIsQ0FBQSwwQkFHSCxDQUFBLHVCQUFBLENBQUEsb0JBQUEsRUFBQTs7QUFuTGpCLDhEQXVMWSwrQkFDa0IsQ0FDbEIsdUJBQ0gsQ0FBQSxnQkFBQSxDQUFBLGFBQUEsQ0FBQSxvQkFBQSxDQUFBLG1CQUFBLENBQUEsOEJBQUEsRUFBQTs7QUExTFQsNEdBeU1TLGFBQUEsQ0FBQSxtQkFBQSxDQUFBLG1CQUFBLENBQUEsZUFBQSxDQUFBLGtCQUFBLEVBQUE7O0FBek1ULDJHQStMeUIsZUFDQSxDQUFBLG1CQUNILENBQUEsc0JBQ00sQ0FBSSxlQUNOLEVBQUE7O0FBbk0xQix3REE2TWMsaUJBN01kLENBQUEsbUJBc0lJLENBQUEsa0JBQWlCLEVBQUE7O0FBdElyQix5REE2TWMsY0FBbUIsRUFBQTs7QUE3TWpDLDhFQXlOYyxVQUFBLENBQUEsc0JBQ2dCLENBQUMsc0JBQ0osQ0FBQSxhQUNILENBQUMsa0JBTVosQ0FBQSxtQkFBQSxDQUFBLG1CQUFBLENBQUEsV0FBQSxDQUFBLDBCQUFBLENBQUEsb0JBQUEsRUFBQTs7QUFsT2IsdU9BZ09xQixtQkFBQSxDQUFBLG9CQUFBLENBQUEsYUFBQSxFQUFBOztBQWhPckIsa1RBdU9hLHNCQUFBLEVBQUE7O0F0QnFuRGIsZ0dBQWdHLGlCQUFpQixDQUFDLHdCQUF3QixDQUFDLFdBQVcsRUFBRTs7QUFFeEoseUhBQXlILDBCQUEwQixFQUFFOztBQUVySiwyRUFBMkUsZUFBZSxFQUFFIiwiZmlsZSI6InRvLmNzcyJ9 */ /*# sourceMappingURL=learndash.css.map */ PKc\`7themes/ld30/assets/css/learndash.quiz.front.min-rtl.cssnuW+A.learndash-wrapper .wpProQuiz_content .wpProQuiz_addToplist{margin-top:10px;background-color:rgb(0,162,232,.1);padding:10px;border:1px solid #00a2e8}.learndash-wrapper .wpProQuiz_content .wpProQuiz_toplistTable th{background:#00a2e8}.learndash-wrapper .wpProQuiz_content .wpProQuiz_toplistTrOdd{background-color:rgba(0,162,232,.1)}.learndash-wrapper .wpProQuiz_content a#quiz_continue_link:hover{opacity:.75;background-color:#019e7c}.learndash-wrapper .wpProQuiz_content .wpProQuiz_button_reShowQuestion:hover,.learndash-wrapper .wpProQuiz_content .wpProQuiz_button_restartQuiz:hover{background-color:#019e7c;opacity:.75}.learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewColor{height:15px;width:15px;display:inline-block;margin-left:2px}.learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewLegend span.wpProQuiz_reviewColor_Answer{background-color:#019e7c}.learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewLegend span.wpProQuiz_reviewColor_Review{background-color:#ffd200}.learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewDiv li.wpProQuiz_reviewQuestionTarget{background-color:#00a2e8}.learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionSolved,.learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionSolved{background-color:#019e7c}.learndash-wrapper .wpProQuiz_content .wpProQuiz_box li.wpProQuiz_reviewQuestionReview,.learndash-wrapper .wpProQuiz_content .wpProQuiz_reviewQuestion li.wpProQuiz_reviewQuestionReview{background-color:#ffd200}PKc\J00&themes/ld30/assets/js/learndash.min.jsnuW+Afunction ldGetUrlVars(){var t={};window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(e,a,l){t[a]=l});return t}jQuery(document).ready(function(t){function e(){t(window).width()<768?a():l()}function a(){t(".ld-focus").addClass("ld-focus-sidebar-collapsed"),t(".ld-mobile-nav").removeClass("expanded"),p()}function l(){t(".ld-focus").removeClass("ld-focus-sidebar-collapsed"),t(".ld-mobile-nav").addClass("expanded"),p()}function s(e,a){var l=t(a)[0].hasAttribute("data-ld-expand-text")?t(a).attr("data-ld-expand-text"):"Expand",s=t(a)[0].hasAttribute("data-ld-collapse-text")?t(a).attr("data-ld-collapse-text"):"Collapse";"collapse"==e?(t(a).removeClass("ld-expanded"),"false"!==s&&t(a).find(".ld-text").text(l)):(t(a).addClass("ld-expanded"),"false"!==s&&t(a).find(".ld-text").text(s))}function o(e,a){void 0===a&&(a=!1);var l=t(e).hasClass("ld-expanded");if(t(e)[0]&&t(e)[0].hasAttribute("data-ld-expands")){var n=t(e).attr("data-ld-expands"),r=t("#"+n),c=t("#"+n).find(".ld-item-list-item-expanded");c.length&&(r=c);var u=0;if(r.find("> *").each(function(){u+=t(this).outerHeight()}),r.attr("data-height",""+(u+50)),t("#"+n)[0].hasAttribute("data-ld-expand-list")){var f=t("#"+n),h=f.find(".ld-expand-button");l?(s("collapse",e),h.each(function(){o(t(this),!0)})):(s("expand",e),h.each(function(){o(t(this))}))}else t("#"+n).length?l||1==a?d(e,t("#"+n),r):i(e,t("#"+n),r):console.log("LearnDash: No expandable content was found");p()}}function d(t,e,a){e.removeClass("ld-expanded"),s("collapse",t),a.css({"max-height":0})}function i(t,e,a){e.addClass("ld-expanded"),s("expand",t),a.css({"max-height":a.data("height")})}function n(){if(t("#learndash-tooltips").length&&(t("#learndash-tooltips").remove(),k=t("*[data-ld-tooltip]")),k.length){t("body").prepend('
      ');k.each(function(){var e=t(this);e.hasClass("ld-item-list-item")&&(e=e.find(".ld-item-title"));e.offset().top,e.offset().left,e.outerWidth();var a=t(this).attr("data-ld-tooltip"),l=Math.floor(99999*Math.random()),s=''+a+"";t(this).attr("data-ld-tooltip-id",l),t("#learndash-tooltips").append(s),0;s=t("#ld-tooltip-"+l);t(this).hover(function(){s.addClass("ld-visible")},function(){s.removeClass("ld-visible")})}),t(window).on("resize",function(){p()}),t(window).add(".ld-focus-sidebar-wrapper").on("scroll",function(){t(".ld-visible.ld-tooltip").removeClass("ld-visible"),p()}),p()}}function r(){var e=t(".learndash-wrapper-login-modal");void 0!==e&&e.length&&t(e).prependTo("body")}function c(){var e=t(".learndash-wrapper-login-modal");void 0!==e&&e.length&&(t(e).addClass("ld-modal-open"),t(e).removeClass("ld-modal-closed"),t("html, body").animate({scrollTop:t(".ld-modal",e).offset().top},50))}function u(){var e=t(".learndash-wrapper-login-modal");void 0!==e&&e.length&&(t(e).removeClass("ld-modal-open"),t(e).addClass("ld-modal-closed"))}function p(){void 0!==k&&setTimeout(function(){k.each(function(){var e=t(this),a=e.attr("data-ld-tooltip-id");$tooltip=t("#ld-tooltip-"+a),e.hasClass("ld-item-list-item")&&(e=e.find(".ld-status-icon"));var l=jQuery(e).parents(".ld-focus-sidebar"),s=e.offset().left+(e.outerWidth()+10);l.length&&(s=e.offset().left+(e.outerWidth()-18)),$tooltip.css({top:e.offset().top+-3,left:s,"margin-left":0,"margin-right":0}).removeClass("ld-shifted-left ld-shifted-right"),$tooltip.offset().left<=0&&$tooltip.css({"margin-left":Math.abs($tooltip.offset().left)}).addClass("ld-shifted-left");var o=t(window).width()-($tooltip.offset().left+$tooltip.outerWidth());o<=0&&$tooltip.css({"margin-right":Math.abs(o)}).addClass("ld-shifted-right")})},500)}function f(t){t.preventDefault();var e=jQuery(this).data("ref-id"),a=jQuery(this).data("quiz-id"),l=jQuery(this).data("user-id"),s=jQuery(this).data("statistic-nonce"),o={action:"wp_pro_quiz_admin_ajax",func:"statisticLoadUser",data:{quizId:a,userId:l,refId:e,statistic_nonce:s,avg:0}};jQuery("#wpProQuiz_user_overlay, #wpProQuiz_loadUserData").show();var d=jQuery("#wpProQuiz_user_content").hide();console.log("- learndash.js"),jQuery.ajax({type:"POST",url:ajaxurl,dataType:"json",cache:!1,data:o,error:function(t,e,a){},success:function(t){void 0!==t.html&&(d.html(t.html),jQuery("#wpProQuiz_user_content").show(),console.log("trigger event change - learndash.js"),jQuery("body").trigger("learndash-statistics-contentchanged"),jQuery("#wpProQuiz_loadUserData").hide(),d.find(".statistic_data").click(function(){return jQuery(this).parents("tr").next().toggle("fast"),!1}))}}),jQuery("#wpProQuiz_overlay_close").click(function(){jQuery("#wpProQuiz_user_overlay").hide()})}function h(e){var a=0;e.find("> *").each(function(){a+=t(this).outerHeight()}),e.attr("data-height",""+(a+50)),e.css({"max-height":a+50})}var v=window.location.hash;if(r(),"#login"==v&&c(),void 0!==ldGetUrlVars().login){var m=ldGetUrlVars().login;"failed"==m&&c()}if(void 0!==ldGetUrlVars()["ld-topic-page"]){var _=ldGetUrlVars()["ld-topic-page"],g=_.split("-"),b=Object.values(g)[0],x=t("#ld-expand-"+b),w=t(x).find(".ld-expand-button");o(w),t("html, body").animate({scrollTop:t(x).offset().top},500)}t("body").on("click",'a[href="#login"]',function(t){t.preventDefault(),c()}),t("body").on("click",".ld-modal-closer",function(t){t.preventDefault(),u()}),t("body").on("click","#ld-comments-post-button",function(e){t(this).addClass("ld-open"),t("#ld-comments-form").removeClass("ld-collapsed"),t("textarea#comment").focus()}),t(document).keyup(function(t){27===t.keyCode&&u()}),t(".learndash-wrapper").on("click","a.user_statistic",f),e(),t("body").on("click",".ld-focus-sidebar-trigger",function(e){t(".ld-focus").hasClass("ld-focus-sidebar-collapsed")?l():a()}),t("body").on("click",".ld-mobile-nav a",function(e){e.preventDefault(),t(".ld-focus").hasClass("ld-focus-sidebar-collapsed")?l():a()}),t(".ld-js-register-account").click(function(e){e.preventDefault(),t(".ld-login-modal-register .ld-modal-text").slideUp("slow"),t(".ld-login-modal-register .ld-alert").slideUp("slow"),t(this).slideUp("slow",function(){t("#ld-user-register").slideDown("slow")})});var C=t(window).width();if(t(window).on("orientationchange",function(){C=t(window).width()}),t(window).on("resize",function(){t(this).width()!==C&&setTimeout(function(){e()},50)}),t(".ld-course-status-content").length){var y=0;t(".ld-course-status-content").each(function(){t(this).height()>y&&(y=t(this).height())}),t(".ld-course-status-content").height(y)}t(".ld-file-input").each(function(){var e=t(this),a=e.next("label"),l=a.html();e.on("change",function(e){var s="";this.files&&this.files.length>1?s=(this.getAttribute("data-multiple-caption")||"").replace("{count}",this.files.length):e.target.value&&(s=e.target.value.split("\\").pop()),s?(a.find("span").html(s),a.addClass("ld-file-selected"),t("#uploadfile_btn").attr("disabled",!1)):(a.html(l),a.removeClass("ld-file-selected"),t("#uploadfile_btn").attr("disabled",!0))}),e.on("focus",function(){e.addClass("has-focus")}).on("blur",function(){e.removeClass("has-focus")})}),t("body").on("click",".ld-expand-button",function(e){e.preventDefault(),o(t(this)),p()}),t("body").on("click",".ld-search-prompt",function(e){e.preventDefault(),t("#course_name_field").focus(),o(t(this))}),t("body").on("click",".ld-closer",function(e){o(t(".ld-search-prompt"),!0)}),t("body").on("click",".ld-tabs-navigation .ld-tab",function(){var e=t("#"+t(this).attr("data-ld-tab"));e.length&&(t(".ld-tabs-navigation .ld-tab.ld-active").removeClass("ld-active"),t(this).addClass("ld-active"),t(".ld-tabs-content .ld-tab-content.ld-visible").removeClass("ld-visible"),e.addClass("ld-visible")),p()});var k=t("*[data-ld-tooltip]");if(n(),t("body").on("click","#ld-profile .ld-reset-button",function(e){e.preventDefault();var a={shortcode_instance:t("#ld-profile").data("shortcode_instance")};t("#ld-profile #ld-main-course-list").addClass("ld-loading"),t.ajax({type:"GET",url:ajaxurl+"?action=ld30_ajax_profile_search",data:a,success:function(e){void 0!==e.data.markup&&t("#ld-profile").html(e.data.markup)}})}),t("body").on("submit",".ld-item-search-fields",function(e){e.preventDefault();var a={shortcode_instance:t("#ld-profile").data("shortcode_instance")};a["ld-profile-search"]=t(this).parents(".ld-item-search-wrapper").find("#course_name_field").val(),t("#ld-profile #ld-main-course-list").addClass("ld-loading"),t.ajax({type:"GET",url:ajaxurl+"?action=ld30_ajax_profile_search",data:a,success:function(e){void 0!==e.data.markup&&t("#ld-profile").html(e.data.markup)}})}),t("body").on("click",".ld-pagination a",function(e){e.preventDefault();var a={};t(this).attr("href").replace(/[?&]+([^=&]+)=([^&]*)/gi,function(t,e,l){a[e]=l}),a.pager_results=t(this).parents(".ld-pagination").data("pager-results"),a.context=t(this).data("context"),"profile"!=a.context&&(a.lesson_id=t(this).data("lesson_id"),a.course_id=t(this).data("course_id"),t(".ld-course-nav-"+a.course_id).length&&(a.widget_instance=t(".ld-course-nav-"+a.course_id).data("widget_instance"))),"course_topics"==a.context&&(t("#ld-topic-list-"+a.lesson_id).addClass("ld-loading"),t("#ld-nav-content-list-"+a.lesson_id).addClass("ld-loading")),"course_lessons"==a.context&&(t("#ld-item-list-"+a.course_id).addClass("ld-loading"),t("#ld-lesson-list-"+a.course_id).addClass("ld-loading")),"profile"==a.context&&(t("#ld-profile #ld-main-course-list").addClass("ld-loading"),a.shortcode_instance=t("#ld-profile").data("shortcode_instance")),"course_content_shortcode"==a.context&&(t(".ld-course-content-"+a.course_id).addClass("ld-loading"),a.shortcode_instance=t(".ld-course-content-"+a.course_id).data("shortcode_instance")),"course_info_courses"==a.context&&(t(".ld-user-status").addClass("ld-loading"),a.shortcode_instance=t(".ld-user-status").data("shortcode-atts"),console.log(a)),t.ajax({type:"GET",url:ajaxurl+"?action=ld30_ajax_pager",data:a,success:function(e){"course_topics"==a.context&&(t("#ld-topic-list-"+a.lesson_id).length&&(void 0!==e.data.topics&&t("#ld-topic-list-"+a.lesson_id).html(e.data.topics),void 0!==e.data.pager&&t("#ld-expand-"+a.lesson_id).find(".ld-table-list-footer").html(e.data.pager),h(t(".ld-lesson-item-"+a.lesson_id).find(".ld-item-list-item-expanded")),t("#ld-topic-list-"+a.lesson_id).removeClass("ld-loading")),t("#ld-nav-content-list-"+a.lesson_id).length&&(void 0!==e.data.nav_topics&&t("#ld-nav-content-list-"+a.lesson_id).find(".ld-table-list-items").html(e.data.topics),void 0!==e.data.pager&&t("#ld-nav-content-list-"+a.lesson_id).find(".ld-table-list-footer").html(e.data.pager),t("#ld-nav-content-list-"+a.lesson_id).removeClass("ld-loading"))),"course_lessons"==a.context&&(t("#ld-item-list-"+a.course_id).length&&void 0!==e.data.lessons&&t("#ld-item-list-"+a.course_id).html(e.data.lessons).removeClass("ld-loading"),t("#ld-lesson-list-"+a.course_id).length&&void 0!==e.data.nav_lessons&&t("#ld-lesson-list-"+a.course_id).html(e.data.nav_lessons).removeClass("ld-loading")),"profile"==a.context&&void 0!==e.data.markup&&t("#ld-profile").html(e.data.markup),"course_content_shortcode"==a.context&&void 0!==e.data.markup&&t("#learndash_post_"+a.course_id).replaceWith(e.data.markup),"course_info_courses"==a.context&&void 0!==e.data.markup&&t(".ld-user-status").replaceWith(e.data.markup),t("body").trigger("ld_has_paginated"),n()}})}),t("#learndash_timer").length){var j=jQuery("#learndash_timer"),Q=j.attr("data-timer-seconds"),D=jQuery(j.attr("data-button")),z=j.attr("data-cookie-key");if(void 0!==z)var U="learndash_timer_cookie_"+z;else U="learndash_timer_cookie";cookie_timer_seconds=jQuery.cookie(U),"undefined"!=typeof cookie_timer_seconds&&(Q=parseInt(cookie_timer_seconds)),0==Q&&t(j).hide(),t(D).on("learndash-time-finished",function(){t(j).hide()})}t(document).on("learndash_video_disable_assets",function(e,a){if("undefined"==typeof learndash_video_data)return!1;"BEFORE"==learndash_video_data.videos_shown&&(1==a?(t(".ld-lesson-topic-list").hide(),t(".ld-lesson-navigation").find("#ld-nav-content-list-"+ldVars.postID).addClass("user_has_no_access"),t(".ld-quiz-list").hide()):(t(".ld-lesson-topic-list").slideDown(),t(".ld-quiz-list").slideDown(),t(".ld-lesson-navigation").find("#ld-nav-content-list-"+ldVars.postID).removeClass("user_has_no_access")))}),t(".learndash-wrapper").on("click",'.wpProQuiz_questionListItem input[type="radio"]',function(e){t(this).parents(".wpProQuiz_questionList").find("label").removeClass("is-selected"),t(this).parents("label").addClass("is-selected")})});PKc\ tallest){ tallest = $(this).height(); } }); $('.ld-course-status-content').height(tallest); } function focusMobileCheck() { if ($(window).width() < 768) { closeFocusSidebar(); } else { openFocusSidebar(); } } function closeFocusSidebar() { $('.ld-focus').addClass('ld-focus-sidebar-collapsed'); $('.ld-mobile-nav').removeClass('expanded'); positionTooltips(); } function openFocusSidebar() { $('.ld-focus').removeClass('ld-focus-sidebar-collapsed'); $('.ld-mobile-nav').addClass('expanded'); positionTooltips(); } $('.ld-file-input' ).each( function() { var $input = $( this ), $label = $input.next( 'label' ), labelVal = $label.html(); $input.on( 'change', function( e ) { var fileName = ''; if( this.files && this.files.length > 1 ) fileName = ( this.getAttribute( 'data-multiple-caption' ) || '' ).replace( '{count}', this.files.length ); else if( e.target.value ) fileName = e.target.value.split( '\\' ).pop(); if( fileName ) { $label.find( 'span' ).html( fileName ); $label.addClass('ld-file-selected'); $('#uploadfile_btn').attr( 'disabled', false ); } else { $label.html( labelVal ); $label.removeClass('ld-file-selected'); $('#uploadfile_btn').attr( 'disabled', true ); } }); // Firefox bug fix $input .on( 'focus', function(){ $input.addClass( 'has-focus' ); }) .on( 'blur', function(){ $input.removeClass( 'has-focus' ); }); }); $('body').on('click', '.ld-expand-button', function(e) { e.preventDefault(); ld_expand_element( $(this) ); positionTooltips(); }); $('body').on('click', '.ld-search-prompt', function(e) { e.preventDefault(); $('#course_name_field').focus(); ld_expand_element( $(this) ); }); function ld_expand_button_state(state, elm) { var $expandText = ($(elm)[0].hasAttribute('data-ld-expand-text')) ? $(elm).attr('data-ld-expand-text') : 'Expand'; var $collapseText = ($(elm)[0].hasAttribute('data-ld-collapse-text')) ? $(elm).attr('data-ld-collapse-text') : 'Collapse'; if (state == 'collapse') { $(elm).removeClass('ld-expanded'); if ($collapseText !== 'false') { $(elm).find('.ld-text').text($expandText); } } else { $(elm).addClass('ld-expanded'); if ($collapseText !== 'false') { $(elm).find('.ld-text').text($collapseText); } } } function ld_expand_element( elm, collapse ) { if ( collapse === undefined ) { collapse = false; } // Get the button's state var $expanded = $(elm).hasClass('ld-expanded'); // Get the element to expand if ( $(elm)[0] && $(elm)[0].hasAttribute('data-ld-expands') ) { var $expands = $(elm).attr('data-ld-expands'); var $expandElm = $('#' + $expands); var $expandsChild = $('#' + $expands).find('.ld-item-list-item-expanded'); if ($expandsChild.length) { $expandElm = $expandsChild; } var totalHeight = 0; $expandElm.find('> *').each(function() { totalHeight += $(this).outerHeight(); }); $expandElm.attr('data-height', '' + (totalHeight + 50) + ''); // If the element expands a list if ($('#' + $expands)[0].hasAttribute('data-ld-expand-list')) { var $container = $('#' + $expands); var innerButtons = $container.find('.ld-expand-button'); if ($expanded) { ld_expand_button_state('collapse', elm); innerButtons.each(function() { ld_expand_element($(this), true); }); } else { ld_expand_button_state('expand', elm); innerButtons.each(function() { ld_expand_element($(this)); }); } // If the element expands an item } else if ($('#' + $expands).length) { if ($expanded || collapse == true) { ld_expand_singular_item(elm, $('#' + $expands), $expandElm); } else { ld_collapse_singular_item(elm, $('#' + $expands), $expandElm); } } else { console.log('LearnDash: No expandable content was found'); } positionTooltips(); } } function ld_expand_singular_item(elm, $containerElm, $expandElm) { $containerElm.removeClass('ld-expanded'); ld_expand_button_state('collapse', elm); $expandElm.css({ 'max-height': 0 }); } function ld_collapse_singular_item(elm, $containerElm, $expandElm) { $containerElm.addClass('ld-expanded'); ld_expand_button_state('expand', elm); $expandElm.css({ 'max-height': $expandElm.data('height') }); } $('body').on('click', '.ld-closer', function(e) { ld_expand_element( $('.ld-search-prompt'), true ); }); $('body').on('click', '.ld-tabs-navigation .ld-tab', function() { var $tab = $('#' + $(this).attr('data-ld-tab')); if ($tab.length) { $('.ld-tabs-navigation .ld-tab.ld-active').removeClass('ld-active'); $(this).addClass('ld-active'); $('.ld-tabs-content .ld-tab-content.ld-visible').removeClass('ld-visible'); $tab.addClass('ld-visible'); } positionTooltips(); }); var $tooltips = $('*[data-ld-tooltip]'); initTooltips(); function initTooltips() { // Clear out old tooltips if( $('#learndash-tooltips').length ) { $('#learndash-tooltips').remove(); $tooltips = $('*[data-ld-tooltip]'); } if ($tooltips.length) { $('body').prepend('
      '); var $ctr =1; $tooltips.each(function() { var anchor = $(this); if (anchor.hasClass('ld-item-list-item')) { anchor = anchor.find('.ld-item-title'); } var elementOffsets = { top: anchor.offset().top, left: anchor.offset().left + (anchor.outerWidth() / 2) }; var $content = $(this).attr('data-ld-tooltip'); var $rel_id = Math.floor((Math.random() * 99999)); //var $tooltip = '' + $content + ''; var $tooltip = '' + $content + ''; $(this).attr('data-ld-tooltip-id', $rel_id); $('#learndash-tooltips').append($tooltip); $ctr++; var $tooltip = $('#ld-tooltip-' + $rel_id); $(this).hover( function() { $tooltip.addClass('ld-visible'); }, function() { $tooltip.removeClass('ld-visible'); } ); }); $(window).on('resize', function() { // Reposition tooltips after resizing positionTooltips(); }); $(window).add('.ld-focus-sidebar-wrapper').on('scroll', function() { // Hide tooltips so they don't persist while scrolling $('.ld-visible.ld-tooltip').removeClass('ld-visible'); // Reposition tooltips after scrolling positionTooltips(); }); positionTooltips(); } } function initLoginModal() { var modal_wrapper = $('.learndash-wrapper-login-modal'); if ((typeof modal_wrapper !== 'undefined') && (modal_wrapper.length)) { // Move the model to be first element of the body. See LEARNDASH-3503 $(modal_wrapper).prependTo('body'); } } function openLoginModal() { var modal_wrapper = $('.learndash-wrapper-login-modal'); if ((typeof modal_wrapper !== 'undefined') && ( modal_wrapper.length ) ) { $(modal_wrapper).addClass('ld-modal-open'); $(modal_wrapper).removeClass('ld-modal-closed'); // Removed LEARNDASH-3867 #4 $('html, body').animate({ scrollTop: $('.ld-modal', modal_wrapper).offset().top }, 50); } } function closeLoginModal() { var modal_wrapper = $('.learndash-wrapper-login-modal'); if ((typeof modal_wrapper !== 'undefined') && (modal_wrapper.length)) { $(modal_wrapper).removeClass('ld-modal-open'); $(modal_wrapper).addClass('ld-modal-closed'); } } function positionTooltips() { if ( typeof $tooltips !== 'undefined' ) { setTimeout(function() { $tooltips.each(function() { var anchor = $(this); var $rel_id = anchor.attr('data-ld-tooltip-id'); $tooltip = $('#ld-tooltip-' + $rel_id); if (anchor.hasClass('ld-item-list-item')) { //anchor = anchor.find('.ld-item-title'); anchor = anchor.find('.ld-status-icon'); } var parent_focus = jQuery(anchor).parents('.ld-focus-sidebar'); var left_post = anchor.offset().left + (anchor.outerWidth() + 10); if (parent_focus.length) { left_post = anchor.offset().left + (anchor.outerWidth() -18); } $tooltip.css({ 'top' : anchor.offset().top + -3, //'left' : anchor.offset().left + (anchor.outerWidth() / 2), 'left': left_post, //anchor.offset().left + (anchor.outerWidth() +10), 'margin-left' : 0, 'margin-right' : 0 }).removeClass('ld-shifted-left ld-shifted-right'); if ($tooltip.offset().left <= 0) { $tooltip.css({ 'margin-left' : Math.abs($tooltip.offset().left) }).addClass('ld-shifted-left'); } var $tooltipRight = $(window).width() - ($tooltip.offset().left + $tooltip.outerWidth()); if ($tooltipRight <= 0) { $tooltip.css({ 'margin-right' : Math.abs($tooltipRight) }).addClass('ld-shifted-right'); } }); }, 500); } } $('body').on( 'click', '#ld-profile .ld-reset-button', function(e) { e.preventDefault(); var searchVars = { shortcode_instance : $('#ld-profile').data('shortcode_instance') }; $('#ld-profile #ld-main-course-list').addClass('ld-loading'); $.ajax({ type: 'GET', url: ajaxurl + '?action=ld30_ajax_profile_search', data: searchVars, success: function( response ) { if( typeof response.data.markup !== 'undefined' ) { $('#ld-profile').html( response.data.markup ); } } }); }); $('body').on( 'submit', '.ld-item-search-fields', function(e) { e.preventDefault(); var searchVars = { shortcode_instance : $('#ld-profile').data('shortcode_instance') }; searchVars['ld-profile-search'] = $(this).parents('.ld-item-search-wrapper').find('#course_name_field').val(); $('#ld-profile #ld-main-course-list').addClass('ld-loading'); $.ajax({ type: 'GET', url: ajaxurl + '?action=ld30_ajax_profile_search', data: searchVars, success: function( response ) { if( typeof response.data.markup !== 'undefined' ) { $('#ld-profile').html( response.data.markup ); } } }); }); $('body').on( 'click', '.ld-pagination a', function(e) { e.preventDefault(); var linkVars = {}; $(this).attr('href').replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { linkVars[key] = value; }); linkVars.pager_results = $(this).parents('.ld-pagination').data('pager-results'); linkVars.context = $(this).data('context'); if( linkVars.context != 'profile' ) { linkVars.lesson_id = $(this).data('lesson_id'); linkVars.course_id = $(this).data('course_id'); if( $('.ld-course-nav-' + linkVars.course_id ).length ) { linkVars.widget_instance = $('.ld-course-nav-' + linkVars.course_id ).data('widget_instance'); } } if( linkVars.context == 'course_topics' ) { $('#ld-topic-list-' + linkVars.lesson_id ).addClass('ld-loading'); $('#ld-nav-content-list-' + linkVars.lesson_id ).addClass('ld-loading'); } if( linkVars.context == 'course_lessons' ) { $('#ld-item-list-' + linkVars.course_id ).addClass('ld-loading'); $('#ld-lesson-list-' + linkVars.course_id ).addClass('ld-loading'); } if( linkVars.context == 'profile' ) { $('#ld-profile #ld-main-course-list').addClass('ld-loading'); linkVars.shortcode_instance = $('#ld-profile').data('shortcode_instance'); } if( linkVars.context == 'course_content_shortcode' ) { $('.ld-course-content-' + linkVars.course_id ).addClass('ld-loading'); linkVars.shortcode_instance = $('.ld-course-content-' + linkVars.course_id ).data('shortcode_instance'); } if( linkVars.context == 'course_info_courses' ) { $('.ld-user-status').addClass('ld-loading'); linkVars.shortcode_instance = $('.ld-user-status').data('shortcode-atts'); console.log(linkVars); } $.ajax({ type: 'GET', url: ajaxurl + '?action=ld30_ajax_pager', data: linkVars, success: function( response ) { // If we have a course listing, update if( linkVars.context == 'course_topics' ) { if( $('#ld-topic-list-' + linkVars.lesson_id ).length ) { if( typeof response.data.topics !== 'undefined' ) { $('#ld-topic-list-' + linkVars.lesson_id ).html( response.data.topics ); } if( typeof response.data.pager !== 'undefined' ) { $('#ld-expand-' + linkVars.lesson_id ).find('.ld-table-list-footer').html( response.data.pager ); } learndashSetMaxHeight( $('.ld-lesson-item-' + linkVars.lesson_id ).find('.ld-item-list-item-expanded') ); $('#ld-topic-list-' + linkVars.lesson_id ).removeClass('ld-loading'); } if( $('#ld-nav-content-list-' + linkVars.lesson_id ).length ) { if( typeof response.data.nav_topics !== 'undefined' ) { $('#ld-nav-content-list-' + linkVars.lesson_id ).find('.ld-table-list-items' ).html( response.data.topics ); } if( typeof response.data.pager !== 'undefined' ) { $('#ld-nav-content-list-' + linkVars.lesson_id ).find('.ld-table-list-footer' ).html( response.data.pager ); } $('#ld-nav-content-list-' + linkVars.lesson_id ).removeClass('ld-loading'); } } if( linkVars.context == 'course_lessons') { if( $('#ld-item-list-' + linkVars.course_id ).length ) { if( typeof response.data.lessons !== 'undefined' ) { $( '#ld-item-list-' + linkVars.course_id ).html( response.data.lessons ).removeClass('ld-loading'); } } if( $( '#ld-lesson-list-' + linkVars.course_id ).length ) { if( typeof response.data.nav_lessons !== 'undefined' ) { $( '#ld-lesson-list-' + linkVars.course_id ).html( response.data.nav_lessons ).removeClass('ld-loading'); } } } if( linkVars.context == 'profile' ) { if( typeof response.data.markup !== 'undefined' ) { $('#ld-profile').html( response.data.markup ); } } if( linkVars.context == 'course_content_shortcode' ) { if( typeof response.data.markup !== 'undefined' ) { $('#learndash_post_' + linkVars.course_id ).replaceWith( response.data.markup ); } } if( linkVars.context == 'course_info_courses' ) { if( typeof response.data.markup !== 'undefined' ) { $('.ld-user-status').replaceWith( response.data.markup ); } } $('body').trigger( 'ld_has_paginated' ); initTooltips(); } }); }); if( $('#learndash_timer').length ) { var timer_el = jQuery( '#learndash_timer' ); var timer_seconds = timer_el.attr('data-timer-seconds'); var timer_button_el = jQuery( timer_el.attr('data-button') ); var cookie_key = timer_el.attr('data-cookie-key'); if (typeof cookie_key !== 'undefined') { var cookie_name = 'learndash_timer_cookie_'+cookie_key; } else { var cookie_name = 'learndash_timer_cookie'; } cookie_timer_seconds = jQuery.cookie(cookie_name); if (typeof cookie_timer_seconds !== 'undefined') { timer_seconds = parseInt( cookie_timer_seconds ); } if ( timer_seconds == 0 ) { $(timer_el).hide(); } $(timer_button_el).on( 'learndash-time-finished', function() { $(timer_el).hide(); }); } $(document).on( 'learndash_video_disable_assets', function( event, status ) { if ( typeof learndash_video_data == 'undefined' ) { return false; } if (learndash_video_data.videos_shown == 'BEFORE' ) { if ( status == true ) { $('.ld-lesson-topic-list').hide(); $('.ld-lesson-navigation').find( '#ld-nav-content-list-' + ldVars.postID ).addClass('user_has_no_access'); $('.ld-quiz-list').hide(); } else { $('.ld-lesson-topic-list').slideDown(); $('.ld-quiz-list').slideDown(); $('.ld-lesson-navigation').find( '#ld-nav-content-list-' + ldVars.postID ).removeClass('user_has_no_access'); } } }); $('.learndash-wrapper').on( 'click', '.wpProQuiz_questionListItem input[type="radio"]', function(e) { $(this).parents('.wpProQuiz_questionList').find('label').removeClass('is-selected'); $(this).parents('label').addClass('is-selected'); }); function learndash_ld30_show_user_statistic( e ) { e.preventDefault(); var refId = jQuery(this).data('ref-id'); var quizId = jQuery(this).data('quiz-id'); var userId = jQuery(this).data('user-id'); var statistic_nonce = jQuery(this).data('statistic-nonce'); var post_data = { 'action': 'wp_pro_quiz_admin_ajax', 'func': 'statisticLoadUser', 'data': { 'quizId': quizId, 'userId': userId, 'refId': refId, 'statistic_nonce': statistic_nonce, 'avg': 0 } } jQuery('#wpProQuiz_user_overlay, #wpProQuiz_loadUserData').show(); var content = jQuery('#wpProQuiz_user_content').hide(); console.log('- learndash.js'); jQuery.ajax({ type: "POST", url: ajaxurl, dataType: "json", cache: false, data: post_data, error: function(jqXHR, textStatus, errorThrown ) { }, success: function(reply_data) { if ( typeof reply_data.html !== 'undefined' ) { content.html(reply_data.html); jQuery('#wpProQuiz_user_content').show(); console.log('trigger event change - learndash.js'); jQuery('body').trigger('learndash-statistics-contentchanged'); jQuery('#wpProQuiz_loadUserData').hide(); content.find('.statistic_data').click(function() { jQuery(this).parents('tr').next().toggle('fast'); return false; }); } } }); jQuery('#wpProQuiz_overlay_close').click(function() { jQuery('#wpProQuiz_user_overlay').hide(); }); } function learndashSetMaxHeight( elm ) { var totalHeight = 0; elm.find('> *').each(function() { totalHeight += $(this).outerHeight(); }); elm.attr('data-height', '' + (totalHeight + 50) + ''); elm.css({ 'max-height': totalHeight + 50 }); } }); function ldGetUrlVars() { var vars = {}; var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { vars[key] = value; }); return vars; } PKc\8[&themes/ld30/assets/fonts/ld-icons.woffnuW+AwOFF OS/2``)cmaph\\SgaspglyfFCheadP66fhhea$$hmtx``VIloca 220+maxp@ "name`J post 3 @@@ @   797979c,<!5>3265&'.'&3!2654&##!"&5463!2zkE>WL2271,,B(1N77NN7$E1FZW=7//CB,+2F+8NN8a7Oa!0K2#!"&5463%!"3!2654#7'3373#'#"'&06?64'.#18OO88PP8P>54&'.+4&+"#"2##!"&5463!54631!"3!2657   ''(J## q , q D'>7OO87P'6  .(''##J  `(O88OO8'b!2DTfv2#!"&=463%!"3!26=42#!"&=463!5!"3!26=42#!"&=463%!"3!26=42#!"&=463%!"3!26=42222$:RR:%:RS:2222$:RR:%:RS:2222$:RR:%:RS:2222$:RR:%:RS:vF;::;;::;F;::;;::;F;::;;:::F;::;;::;}!&+05:2#!"&5463%!"3!2654!!5!!5!!5!!5!!58OO88PO86~~~~bZO88OO88O((((((((((u"'&67>'. 2K7E # 2JK8IZ"'.'&547>7632"327>7654'.'&##"&546;2#'762"/&47i\]((((\]ii\]((((\]iWMLs!!!!sLMWWMLs!!!!sLMW 6 6  A' & <((\]ii\]((((\]ii\]((!!sLMWWMLs!!!!sLMWWMLs!! 4  ' &   v %*/49=G%!"&5463!2"3!2654&#!!!5!!5!!5!!53#5!3#'7'7(88(8(88 8 wLLYY8) 22 )8 8((88(T(8 T  i''i&&x&&i&&'''&3(88(R)9I!"3!2654&!"&5!#";26=4&%#";26=4&32+"&=4652GG2k1HH2PPPPʮUG3c2HG32Hm n 5I[o!!5!!5!!5!!5!!5#!"&5463!5!"3!265#"&=463121'+"&=467";2654'.'=~~~~~?8OO88OY(($#J'7 (((J##----------tZO88OO8 6'(J#$'6  /(''##Jf&O&B_#"&/#"&'&4?'&47627627#"'.'&547>76324'.'&#"327>765  `` ``' ``' aa nIJSSJJn nJJSSJIn ]U89@@99TT99@@98U[' ``' ``' aa ' ```SJJn nJJSSJIn nIJS@98UU89@@99TT99@J )Eb2#"&54635"327>765&'.'&#3267#!"&547>76773!2654'.'&'#"&'1IggIIggI1+,@@,+11+,@A++1/u>>u/#& "" '#0('8E2x1F9'(0)rBAs)ogIIggIIg>@,+11+,@@,+11+,@'**'$$P,-."".-,P$$P +*f:9?1EE1?9:f*+ .66. 9QU"'.'&547>7632#"327>7654'.'&#467>32#"&'.7#3i]\((((\]ii\]((((]\iWMMr!!!!rMMWWLMr!!!!rMLW< fSv<((\]ii\]((((\]ii\]((!!sLMWWMLs!!!!sLMWWMLs!! L#"&' "'&47>32  C  "C sC &"'.5467 &4762bC sC %  svCR  &27>54&' 64'&"C sCS %  tvCQ  64'.#" &"3267  C  ^C sCS ]}$@%'676&'&'.#"7672?64'%"'&'&'&47676762$ .3II355.89y==6> $--^.-$$$$--^.-$$j6==y89.37635CCBC5. #> $$$--^.-$$$$--_--2|@ JXf!";3267>7326=4&#+"&'.7>'.+"&=463!201'!"3!2654&!"3!2654&vJjjJ9    @f[JjjKQ9g e?  N8RR89Q =  = @jJJj>! $m&jJJja9Q#n#/Q Q99QQ9%%W%%     G_< **ppb}RnfJ ] z*rZ NB `6u K   g = |   R 4icomoonicomoonVersion 1.0Version 1.0icomoonicomoonicomoonicomoonRegularRegularicomoonicomoonFont generated by IcoMoon.Font generated by IcoMoon.PKc\qb``%themes/ld30/assets/fonts/ld-icons.eotnuW+A`LPGicomoonRegularVersion 1.0icomoon 0OS/2)`cmapS\gaspxglyfFCheadf6hhea<$hmtxVI``loca0+2maxp" nameJ post 3 @@@ @   797979c,<!5>3265&'.'&3!2654&##!"&5463!2zkE>WL2271,,B(1N77NN7$E1FZW=7//CB,+2F+8NN8a7Oa!0K2#!"&5463%!"3!2654#7'3373#'#"'&06?64'.#18OO88PP8P>54&'.+4&+"#"2##!"&5463!54631!"3!2657   ''(J## q , q D'>7OO87P'6  .(''##J  `(O88OO8'b!2DTfv2#!"&=463%!"3!26=42#!"&=463!5!"3!26=42#!"&=463%!"3!26=42#!"&=463%!"3!26=42222$:RR:%:RS:2222$:RR:%:RS:2222$:RR:%:RS:2222$:RR:%:RS:vF;::;;::;F;::;;::;F;::;;:::F;::;;::;}!&+05:2#!"&5463%!"3!2654!!5!!5!!5!!5!!58OO88PO86~~~~bZO88OO88O((((((((((u"'&67>'. 2K7E # 2JK8IZ"'.'&547>7632"327>7654'.'&##"&546;2#'762"/&47i\]((((\]ii\]((((\]iWMLs!!!!sLMWWMLs!!!!sLMW 6 6  A' & <((\]ii\]((((\]ii\]((!!sLMWWMLs!!!!sLMWWMLs!! 4  ' &   v %*/49=G%!"&5463!2"3!2654&#!!!5!!5!!5!!53#5!3#'7'7(88(8(88 8 wLLYY8) 22 )8 8((88(T(8 T  i''i&&x&&i&&'''&3(88(R)9I!"3!2654&!"&5!#";26=4&%#";26=4&32+"&=4652GG2k1HH2PPPPʮUG3c2HG32Hm n 5I[o!!5!!5!!5!!5!!5#!"&5463!5!"3!265#"&=463121'+"&=467";2654'.'=~~~~~?8OO88OY(($#J'7 (((J##----------tZO88OO8 6'(J#$'6  /(''##Jf&O&B_#"&/#"&'&4?'&47627627#"'.'&547>76324'.'&#"327>765  `` ``' ``' aa nIJSSJJn nJJSSJIn ]U89@@99TT99@@98U[' ``' ``' aa ' ```SJJn nJJSSJIn nIJS@98UU89@@99TT99@J )Eb2#"&54635"327>765&'.'&#3267#!"&547>76773!2654'.'&'#"&'1IggIIggI1+,@@,+11+,@A++1/u>>u/#& "" '#0('8E2x1F9'(0)rBAs)ogIIggIIg>@,+11+,@@,+11+,@'**'$$P,-."".-,P$$P +*f:9?1EE1?9:f*+ .66. 9QU"'.'&547>7632#"327>7654'.'&#467>32#"&'.7#3i]\((((\]ii\]((((]\iWMMr!!!!rMMWWLMr!!!!rMLW< fSv<((\]ii\]((((\]ii\]((!!sLMWWMLs!!!!sLMWWMLs!! L#"&' "'&47>32  C  "C sC &"'.5467 &4762bC sC %  svCR  &27>54&' 64'&"C sCS %  tvCQ  64'.#" &"3267  C  ^C sCS ]}$@%'676&'&'.#"7672?64'%"'&'&'&47676762$ .3II355.89y==6> $--^.-$$$$--^.-$$j6==y89.37635CCBC5. #> $$$--^.-$$$$--_--2|@ JXf!";3267>7326=4&#+"&'.7>'.+"&=463!201'!"3!2654&!"3!2654&vJjjJ9    @f[JjjKQ9g e?  N8RR89Q =  = @jJJj>! $m&jJJja9Q#n#/Q Q99QQ9%%W%%     G_< **ppb}RnfJ ] z*rZ NB `6u K   g = |   R 4icomoonicomoonVersion 1.0Version 1.0icomoonicomoonicomoonicomoonRegularRegularicomoonicomoonFont generated by IcoMoon.Font generated by IcoMoon.PKc\? ִ11%themes/ld30/assets/fonts/ld-icons.svgnuW+A Generated by IcoMoon PKc\%themes/ld30/assets/fonts/ld-icons.ttfnuW+A 0OS/2)`cmapS\gaspxglyfFCheadf6hhea<$hmtxVI``loca0+2maxp" nameJ post 3 @@@ @   797979c,<!5>3265&'.'&3!2654&##!"&5463!2zkE>WL2271,,B(1N77NN7$E1FZW=7//CB,+2F+8NN8a7Oa!0K2#!"&5463%!"3!2654#7'3373#'#"'&06?64'.#18OO88PP8P>54&'.+4&+"#"2##!"&5463!54631!"3!2657   ''(J## q , q D'>7OO87P'6  .(''##J  `(O88OO8'b!2DTfv2#!"&=463%!"3!26=42#!"&=463!5!"3!26=42#!"&=463%!"3!26=42#!"&=463%!"3!26=42222$:RR:%:RS:2222$:RR:%:RS:2222$:RR:%:RS:2222$:RR:%:RS:vF;::;;::;F;::;;::;F;::;;:::F;::;;::;}!&+05:2#!"&5463%!"3!2654!!5!!5!!5!!5!!58OO88PO86~~~~bZO88OO88O((((((((((u"'&67>'. 2K7E # 2JK8IZ"'.'&547>7632"327>7654'.'&##"&546;2#'762"/&47i\]((((\]ii\]((((\]iWMLs!!!!sLMWWMLs!!!!sLMW 6 6  A' & <((\]ii\]((((\]ii\]((!!sLMWWMLs!!!!sLMWWMLs!! 4  ' &   v %*/49=G%!"&5463!2"3!2654&#!!!5!!5!!5!!53#5!3#'7'7(88(8(88 8 wLLYY8) 22 )8 8((88(T(8 T  i''i&&x&&i&&'''&3(88(R)9I!"3!2654&!"&5!#";26=4&%#";26=4&32+"&=4652GG2k1HH2PPPPʮUG3c2HG32Hm n 5I[o!!5!!5!!5!!5!!5#!"&5463!5!"3!265#"&=463121'+"&=467";2654'.'=~~~~~?8OO88OY(($#J'7 (((J##----------tZO88OO8 6'(J#$'6  /(''##Jf&O&B_#"&/#"&'&4?'&47627627#"'.'&547>76324'.'&#"327>765  `` ``' ``' aa nIJSSJJn nJJSSJIn ]U89@@99TT99@@98U[' ``' ``' aa ' ```SJJn nJJSSJIn nIJS@98UU89@@99TT99@J )Eb2#"&54635"327>765&'.'&#3267#!"&547>76773!2654'.'&'#"&'1IggIIggI1+,@@,+11+,@A++1/u>>u/#& "" '#0('8E2x1F9'(0)rBAs)ogIIggIIg>@,+11+,@@,+11+,@'**'$$P,-."".-,P$$P +*f:9?1EE1?9:f*+ .66. 9QU"'.'&547>7632#"327>7654'.'&#467>32#"&'.7#3i]\((((\]ii\]((((]\iWMMr!!!!rMMWWLMr!!!!rMLW< fSv<((\]ii\]((((\]ii\]((!!sLMWWMLs!!!!sLMWWMLs!! L#"&' "'&47>32  C  "C sC &"'.5467 &4762bC sC %  svCR  &27>54&' 64'&"C sCS %  tvCQ  64'.#" &"3267  C  ^C sCS ]}$@%'676&'&'.#"7672?64'%"'&'&'&47676762$ .3II355.89y==6> $--^.-$$$$--^.-$$j6==y89.37635CCBC5. #> $$$--^.-$$$$--_--2|@ JXf!";3267>7326=4&#+"&'.7>'.+"&=463!201'!"3!2654&!"3!2654&vJjjJ9    @f[JjjKQ9g e?  N8RR89Q =  = @jJJj>! $m&jJJja9Q#n#/Q Q99QQ9%%W%%     G_< **ppb}RnfJ ] z*rZ NB `6u K   g = |   R 4icomoonicomoonVersion 1.0Version 1.0icomoonicomoonicomoonicomoonRegularRegularicomoonicomoonFont generated by IcoMoon.Font generated by IcoMoon.PKc\.;;1themes/ld30/assets/iconfont/simple-arrow-down.svgnuW+A PKc\fd@@2themes/ld30/assets/iconfont/simple-arrow-right.svgnuW+A PKc\|$themes/ld30/assets/iconfont/quiz.svgnuW+APKc\><<1themes/ld30/assets/iconfont/simple-arrow-left.svgnuW+A PKc\Dyy%themes/ld30/assets/iconfont/clock.svgnuW+A PKc\xI (themes/ld30/assets/iconfont/calendar.svgnuW+A PKc\_~\\(themes/ld30/assets/iconfont/unlocked.svgnuW+A PKc\vwNN+themes/ld30/assets/iconfont/certificate.svgnuW+A PKc\Ttt(themes/ld30/assets/iconfont/arrow-up.svgnuW+A PKc\d(themes/ld30/assets/iconfont/download.svgnuW+A PKc\t-&themes/ld30/assets/iconfont/search.svgnuW+A PKc\)y%YY&themes/ld30/assets/iconfont/remove.svgnuW+A PKc\Fss+themes/ld30/assets/iconfont/arrow-right.svgnuW+A PKc\V )themes/ld30/assets/iconfont/materials.svgnuW+A PKc\OII/themes/ld30/assets/iconfont/simple-arrow-up.svgnuW+A PKc\&%themes/ld30/assets/iconfont/login.svgnuW+A PKc\H)themes/ld30/assets/iconfont/checkmark.svgnuW+A PKc\]jBthemes/ld30/assets/iconfont/admin-icons/learndash-admin-icon-6.svgnuW+A PKc\ Bthemes/ld30/assets/iconfont/admin-icons/learndash-admin-icon-8.svgnuW+A PKc\}TVV?themes/ld30/assets/iconfont/admin-icons/browser-checkmark-2.svgnuW+A PKc\  Bthemes/ld30/assets/iconfont/admin-icons/learndash-admin-icon-9.svgnuW+A PKc\͍Bthemes/ld30/assets/iconfont/admin-icons/learndash-admin-icon-7.svgnuW+A PKc\gr J  Bthemes/ld30/assets/iconfont/admin-icons/learndash-admin-icon-3.svgnuW+A PKc\XXBthemes/ld30/assets/iconfont/admin-icons/learndash-admin-icon-4.svgnuW+A PKc\gOz@themes/ld30/assets/iconfont/admin-icons/learndash-admin-icon.svgnuW+A PKc\sf~ ~ Bthemes/ld30/assets/iconfont/admin-icons/learndash-admin-icon-5.svgnuW+A PKc\g!Bthemes/ld30/assets/iconfont/admin-icons/learndash-admin-icon-2.svgnuW+A PKc\n  =themes/ld30/assets/iconfont/admin-icons/browser-checkmark.svgnuW+A PKc\ Ethemes/ld30/assets/iconfont/admin-icons/browser-checkmark-outline.svgnuW+A PKc\)[G.themes/ld30/assets/iconfont/course-outline.svgnuW+A PKc\1ZZ*themes/ld30/assets/iconfont/assignment.svgnuW+A PKc\#(themes/ld30/assets/iconfont/comments.svgnuW+A PKc\Ett*themes/ld30/assets/iconfont/arrow-down.svgnuW+A PKc\' //%themes/ld30/assets/iconfont/alert.svgnuW+A PKc\p\(themes/ld30/assets/iconfont/complete.svgnuW+A PKc\r}1"rr*themes/ld30/assets/iconfont/arrow-left.svgnuW+A PKc\z='themes/ld30/assets/iconfont/content.svgnuW+A PKc\'themes/ld30/index.phpnuW+Atheme_settings_sections[ $section_key ] ) ) ) { self::$_instances[ $theme_key ]->theme_settings_sections[ $section_key ] = $section_instance; } } } /** * Get the instance of the current active theme. * * @since 3.0 * @return object instance of active theme. */ final public static function get_active_theme_instance() { $theme_key = LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Themes', 'themes' ); if ( empty( $theme_key ) ) { $themes = get_option( 'learndash_settings_courses_themes' ); if ( ( isset( $themes['active_theme'] ) ) && ( ! empty( $themes['active_theme'] ) ) ) { $theme_key = esc_attr( $themes['active_theme'] ); } } self::init(); if ( ! isset( self::$_instances[ $theme_key ] ) ) { $ld_prior_version = learndash_data_upgrades_setting( 'prior_version' ); if ( 'new' === $ld_prior_version ) { $theme_key = LEARNDASH_DEFAULT_THEME; } else { $theme_key = LEARNDASH_LEGACY_THEME; } } return self::$_instances[ $theme_key ]; } /** * Get the Slug of the current active theme. * * @since 3.0 * @return string Key (slug) for active theme. */ final public static function get_active_theme_key() { $theme = self::get_active_theme_instance(); if ( $theme ) { return $theme->get_theme_key(); } } /** * Get the Name of the current active theme. * * @since 3.0 * @return string Name active theme. */ final public static function get_active_theme_name() { $theme = self::get_active_theme_instance(); if ( $theme ) { return $theme->get_theme_name(); } } /** * Get the base directory of the current active theme. * * @since 3.0 * @return string base directory path of active theme. */ final public static function get_active_theme_base_dir() { $theme = self::get_active_theme_instance(); if ( $theme ) { return $theme->get_theme_base_dir(); } } /** * Get the base URL of the current active theme. * * @since 3.0 * @return string base URL of active theme. */ final public static function get_active_theme_base_url() { $theme = self::get_active_theme_instance(); if ( $theme ) { return $theme->get_theme_base_url(); } } /** * Get the template directory of the current active theme. * * @since 3.0 * @return string directory path of active theme templates. */ final public static function get_active_theme_template_dir() { $theme = self::get_active_theme_instance(); if ( $theme ) { return $theme->get_theme_template_dir(); } } /** * Get the URL of the current active theme. * * @since 3.0 * @return string URL of active theme templates. */ final public static function get_active_theme_template_url() { $theme = self::get_active_theme_instance(); if ( $theme ) { return $theme->get_theme_template_url(); } } /** * Get the template directory of the current active theme. * * @since 3.0 * @return string directory path of active theme templates. */ final public static function get_active_theme_dir() { //if ( function_exists( '_deprecated_function' ) ) { // _deprecated_function( __FUNCTION__, '3.0.3', 'LearnDash_Theme_Register::get_theme_template_dir()' ); //} return self::get_theme_template_dir(); } /** * Get the URL of the current active theme. * * @since 3.0 * @return string URL of active theme templates. */ final public static function get_active_theme_url() { //if ( function_exists( '_deprecated_function' ) ) { // _deprecated_function( __FUNCTION__, '3.0.3', 'LearnDash_Theme_Registerget_theme_template_dir()' ); //} return self::get_theme_template_url(); } /** * Utility function to check if a class theme_key is the active theme. * * @since 3.0 * @return boolean true if theme_key is the active theme, otherwise false. */ public function is_active() { if ( self::get_active_theme_key() === $this->theme_key ) { return true; } return false; } /** * Get the Slug of the current theme. * * @since 3.0 * @return string Key (slug) for a theme. */ public function get_theme_key() { return $this->theme_key; } /** * Get the Name of the current theme. * * @since 3.0 * @return string Name of a theme. */ public function get_theme_name() { return $this->theme_name; } /** * Get the base directory of the current theme. * * @since 3.0 * @return string base directory path of current theme templates. */ public function get_theme_base_dir() { return $this->theme_base_dir; } /** * Get the base URL of the current theme. * * @since 3.0 * @return string base URL of current theme templates. */ public function get_theme_base_url() { return $this->theme_base_url; } /** * Get the template directory of the current theme. * * @since 3.0 * @return string template directory path of current theme. */ public function get_theme_template_dir() { return $this->theme_template_dir; } /** * Get the template directory of the current theme. * * @since 3.0 * @return string directory path of current theme templates. */ public function get_theme_dir() { //if ( function_exists( '_deprecated_function' ) ) { // _deprecated_function( __FUNCTION__, '3.0.3', 'get_theme_template_dir()' ); //} return $this->get_theme_template_dir(); } /** * Get the URL of the current theme. * * @since 3.0 * @return string URL of current theme templates. */ public function get_theme_url() { //if ( function_exists( '_deprecated_function' ) ) { // _deprecated_function( __FUNCTION__, '3.0.3', 'get_theme_template_url()' ); //} return $this->get_theme_template_url(); } /** * Get the settings sections registered for the theme. * * @since 3.0 * @return array Array of settings sections. */ public function get_theme_settings_sections() { if ( ! empty( $this->theme_settings_sections ) ) { return $this->theme_settings_sections; } return array(); } /** * Get Theme instance names * * @since 3.0 * @param boolean only return selectable themes. * @return array Array of themes by theme_key. */ final public static function get_themes( $selectable = true ) { self::init(); $themes = array(); if ( ! empty( self::$_instances ) ) { foreach ( self::$_instances as $theme_key => $theme_instance ) { if ( true === $theme_instance->theme_selectable ) { $themes[ $theme_instance->get_theme_name() ] = array( 'theme_key' => $theme_key, 'theme_name' => $theme_instance->get_theme_name(), 'theme_directory' => $theme_instance->get_theme_template_dir(), ); } } } if ( ! empty( $themes ) ) { ksort( $themes ); } return $themes; } } } /** * Utility function to check if a theme_key is the active theme. * * @since 3.0 * @param string $theme_key Key/Slug for theme to check. * @return boolean true if theme_key is the active theme, otherwise false. */ function learndash_is_active_theme( $theme_key = '' ) { if ( ( ! empty( $theme_key ) ) && ( LearnDash_Theme_Register::get_active_theme_key() === $theme_key ) ) { return true; } return false; } PKc\#88includes/class-ld-lms.phpnuW+Afile = __FILE__; $this->name = 'LMS'; $this->plugin_name = 'SFWD LMS'; $this->name = 'LMS Options'; $this->prefix = 'sfwd_lms_'; $this->parent_option = 'sfwd_lms_options'; parent::__construct(); register_activation_hook( $this->plugin_path['basename'], array( $this, 'activate' ) ); register_deactivation_hook( $this->plugin_path['basename'], array( $this, 'deactivate' ) ); add_action( 'init', array( $this, 'trigger_actions' ), 1 ); add_action( 'init', array( $this, 'add_post_types' ), 2 ); // WPMU (Multisite) actions when a new blog is added/deleted. add_action( 'wpmu_new_blog', array( $this, 'wpmu_new_blog' ) ); add_action( 'delete_blog', array( $this, 'delete_blog' ), 10, 2 ); //add_action( 'plugins_loaded', array( $this, 'add_post_types' ), 1 ); add_filter( 'query_vars', array( $this, 'add_query_vars' ) ); add_action( 'parse_request', array( $this, 'parse_ipn_request' ) ); add_action( 'generate_rewrite_rules', array( $this, 'paypal_rewrite_rules' ) ); add_filter( 'sfwd_cpt_loop', array( $this, 'cpt_loop_filter' ) ); add_filter( 'edit_term_count', array( $this, 'tax_term_count' ), 10, 3 ); add_action( 'init', array( $this, 'add_tag_init' ) ); add_action( 'plugins_loaded', array( $this, 'i18nize') ); add_shortcode( 'usermeta', array( $this, 'usermeta_shortcode' ) ); add_filter( 'all_plugins', array( $this, 'all_plugins_proc' ) ); add_action( 'pre_current_active_plugins', array( $this, 'pre_current_active_plugins_proc' ) ); add_filter( 'option_active_plugins', array( $this, 'option_active_plugins_proc' ) ); add_filter( 'site_option_active_sitewide_plugins', array( $this, 'site_option_active_sitewide_plugins_proc' ) ); add_filter( 'pre_update_option_active_plugins', array( $this, 'pre_update_option_active_plugins' ) ); add_filter( 'pre_update_site_option_active_sitewide_plugins', array( $this, 'pre_update_site_option_active_sitewide_plugins' ) ); add_action( 'after_setup_theme', array( $this, 'load_template_functions' ) ); add_filter( 'category_row_actions', array( $this, 'ld_course_category_row_actions' ), 10, 2 ); add_filter( 'post_tag_row_actions', array( $this, 'ld_course_category_row_actions' ), 10, 2 ); add_action( 'shutdown', array( $this, 'wp_shutdown' ), 0 ); if ( is_admin() ) { require_once( LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/class-learndash-admin-groups-edit.php' ); $this->ld_admin_groups_edit = new Learndash_Admin_Groups_Edit(); //require_once( LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/class-learndash-admin-settings-support-panel.php' ); //$this->ld_admin_settings_support_panel = new Learndash_Admin_Settings_Support_Panel(); require_once( LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/class-learndash-admin-groups-users-list.php' ); $this->ld_admin_groups_users_list = new Learndash_Admin_Groups_Users_list(); require_once( LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/class-learndash-admin-data-upgrades.php' ); $this->ld_admin_data_upgrades = Learndash_Admin_Data_Upgrades::get_instance(); require_once( LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/class-learndash-admin-settings-data-reports.php' ); $this->ld_admin_settings_data_reports = new Learndash_Admin_Settings_Data_Reports(); require_once( LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/class-learndash-admin-user-profile-edit.php' ); $this->ld_admin_user_profile_edit = new Learndash_Admin_User_Profile_Edit(); //require_once( LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/class-learndash-admin-course-edit.php' ); //$this->ld_admin_course_edit = new Learndash_Admin_Course_Edit(); //require_once( LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/class-learndash-admin-quiz-edit.php' ); //$this->ld_admin_quiz_edit = new Learndash_Admin_Quiz_Edit(); //require_once( LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/class-learndash-admin-question-edit.php' ); //$this->ld_admin_question_edit = new Learndash_Admin_Question_Edit(); //require_once( LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/class-learndash-admin-question-listing.php' ); //$this->ld_admin_question_listing = new Learndash_Admin_Question_Listing(); require_once( LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/class-learndash-admin-posts-edit.php' ); require_once( LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/class-learndash-admin-posts-listing.php' ); /** * WP-admin pionters functions */ require_once ( LEARNDASH_LMS_PLUGIN_DIR . '/includes/admin/class-learndash-admin-pointers.php' ); } add_action( 'wp_ajax_select_a_lesson', array( $this, 'select_a_lesson_ajax' ) ); add_action( 'wp_ajax_select_a_lesson_or_topic', array( $this, 'select_a_lesson_or_topic_ajax' ) ); add_action( 'wp_ajax_select_a_quiz', array( $this, 'select_a_quiz_ajax' ) ); } function trigger_actions() { $this->upgrade_plugin(); if ( is_admin() ) { if ( ( is_multisite() ) && ( !is_network_admin() ) ) { if ( isset( $_GET['learndash_activate'] ) ) { $this->activate(); } } do_action('learndash_admin_init'); } do_action('learndash_init'); do_action('learndash_settings_sections_fields_init'); do_action('learndash_settings_sections_init'); //do_action('learndash_themes_init'); if ( is_admin() ) { do_action('learndash_settings_pages_init'); } } /** * Called when new Multisite blog is created * this is used to trigger the activate logic * * @since 2.5.5 */ function wpmu_new_blog( $blog_id = 0 ) { if ( !empty( $blog_id ) ) { switch_to_blog( $blog_id ); $this->activate(); restore_current_blog(); } } /** * Called when Multisite blog is deleted * this is used to remove any custom DB tables. * * @since 2.5.5 */ function delete_blog( $blog_id = 0, $drop_tables = false ) { if ( ( !empty( $blog_id ) ) && ( $drop_tables === true ) ) { switch_to_blog( $blog_id ); learndash_delete_all_data(); restore_current_blog(); } } function get_post_args_section( $section = '', $sub_section = '' ) { if ( ( !empty( $section ) ) && ( isset( $this->post_args[$section] ) ) ) if ( ( !empty( $sub_section ) ) && ( isset( $this->post_args[$section][$sub_section] ) ) ) return $this->post_args[$section][$sub_section]; else return $this->post_args[$section]; } function wp_shutdown() { // If we are activating LD then we wait to flush the rewrite on the next page load because the $this->post_args is not setup yet if ( defined( 'LEARNDASH_ACTIVATED' ) && LEARNDASH_ACTIVATED ) { return; } if ( defined( 'LEARNDASH_SETTINGS_UPDATING' ) && LEARNDASH_SETTINGS_UPDATING ) { return; } // check if we triggered the rewrite flush $sfwd_lms_rewrite_flush_transient = get_option( 'sfwd_lms_rewrite_flush' ); if ( $sfwd_lms_rewrite_flush_transient ) { delete_option( 'sfwd_lms_rewrite_flush' ); $ld_rewrite_post_types = array( 'sfwd-courses' => 'courses', 'sfwd-lessons' => 'lessons', 'sfwd-topic' => 'topics', 'sfwd-quiz' => 'quizzes' ); // First, we update the $post_args array item with the new permalink slug. foreach ( $ld_rewrite_post_types as $cpt_key => $custom_label_key ) { if ( isset( $this->post_args[$cpt_key] ) ) { $this->post_args[$cpt_key]['slug_name'] = LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_Permalinks', $custom_label_key ); $this->post_args[$cpt_key]['cpt_options']['has_archive'] = learndash_post_type_has_archive( $cpt_key ); } } // Second, we allow external filters. This is the same filter used when the post types are registered. $this->post_args = apply_filters( 'learndash_post_args', $this->post_args ); // Last we need to update the registered post type. foreach ( $ld_rewrite_post_types as $cpt_key => $custom_label_key ) { $post_type_object = get_post_type_object( $cpt_key ); if ( $post_type_object instanceof WP_Post_Type ) { $post_type_object->rewrite['slug'] = $this->post_args[$cpt_key]['slug_name']; $post_type_object->has_archive = $this->post_args[$cpt_key]['cpt_options']['has_archive']; register_post_type( $cpt_key, $post_type_object ); } } flush_rewrite_rules(); } } /** * Load functions used for templates * * @since 2.1.0 */ function load_template_functions() { $this->init_ld_templates_dir(); $template_file = $this->get_template( 'learndash_template_functions', array(), false, true ); if ( ( ! empty( $template_file ) ) && ( file_exists( $template_file ) ) && ( is_file( $template_file ) ) ) { include_once( $template_file ); } // Add support for generic name functions.php file in our template directory. $template_functions_file = LEARNDASH_TEMPLATES_DIR; $template_functions_file = trailingslashit( $template_functions_file ) . 'functions.php'; if ( file_exists( $template_functions_file ) ) { include_once( $template_functions_file ); } } /** * Register Courses, Lessons, Quiz CPT's and set up their admin columns on post list view */ function add_tag_init() { // LearnDash v2.4 - This tag init logic and taxonomy association has been moved to the add_post_types() functions // where each of the custom post types can have their own relatve taxonimies. //$tag_args = array( 'taxonomies' => array( 'post_tag', 'category' ) ); //register_post_type( 'sfwd-courses', $tag_args ); //Tag arguments for $post_type='sfwd-courses' //register_post_type( 'sfwd-lessons', $tag_args ); //Tag arguments for $post_type='sfwd-courses' //register_post_type( 'sfwd-quiz', $tag_args ); //Tag arguments for $post_type='sfwd-courses' add_filter( 'manage_edit-sfwd-lessons_columns', 'add_course_data_columns' ); add_filter( 'manage_edit-sfwd-quiz_columns', 'add_shortcode_data_columns' ); add_filter( 'manage_edit-sfwd-quiz_columns', 'add_course_data_columns' ); add_filter( 'manage_edit-sfwd-topic_columns', 'add_lesson_data_columns' ); add_filter( 'manage_edit-sfwd-assignment_columns', 'add_course_data_columns' ); add_filter( 'manage_edit-sfwd-assignment_columns', 'add_assignment_data_columns' ); add_filter( 'manage_edit-sfwd-essays_columns', 'add_essays_data_columns' ); add_filter( 'manage_edit-sfwd-transactions_columns', 'add_course_data_columns' ); //add_filter( 'manage_edit-sfwd-quiz_columns', 'remove_tags_column' ); //add_filter( 'manage_edit-sfwd-quiz_columns', 'remove_categories_column' ); add_action( 'manage_sfwd-lessons_posts_custom_column', 'manage_asigned_course_columns', 10, 3 ); add_action( 'manage_sfwd-quiz_posts_custom_column', 'manage_asigned_course_columns', 10, 3 ); add_action( 'manage_sfwd-topic_posts_custom_column', 'manage_asigned_course_columns', 10, 3 ); add_action( 'manage_sfwd-assignment_posts_custom_column', 'manage_asigned_course_columns', 10, 3 ); add_action( 'manage_sfwd-assignment_posts_custom_column', 'manage_asigned_assignment_columns', 10, 3 ); add_action( 'manage_sfwd-transactions_posts_custom_column', 'manage_asigned_course_columns', 10, 3 ); add_action( 'restrict_manage_posts', 'restrict_listings_by_course' ); add_filter( 'parse_query', 'course_table_filter' ); } /** * Loads the plugin's translated strings * * @since 2.1.0 */ function i18nize() { if ( ( defined( 'LD_LANG_DIR' ) ) && ( LD_LANG_DIR ) ) { load_plugin_textdomain( LEARNDASH_LMS_TEXT_DOMAIN, false, LD_LANG_DIR ); } else { load_plugin_textdomain( LEARNDASH_LMS_TEXT_DOMAIN, false, dirname( plugin_basename( dirname( __FILE__ ) ) ) . '/languages' ); } } /** * Update count of posts with a term * * Callback for add_filter 'edit_term_count' * There is no apply_filters or php call to execute this function * * @todo consider for deprecation, other docblock tags removed * * @since 2.1.0 */ function tax_term_count( $columns, $id, $tax ) { if ( empty( $tax ) || ( $tax != 'courses' ) ) { return $columns; } if ( ! empty( $_GET ) && ! empty( $_GET['post_type'] ) ) { $post_type = $_GET['post_type']; $wpq = array( 'tax_query' => array( array( 'taxonomy' => $tax, 'field' => 'id', 'terms' => $id ) ), 'post_type' => $post_type, 'post_status' => 'publish', 'posts_per_page' => -1 ); $q = new WP_Query( $wpq ); $this->count = $q->found_posts; add_filter( 'number_format_i18n', array( $this, 'column_term_number' ) ); } return $columns; } /** * Set column term number * * This function is called by the 'tax_term_count' method and is no longer being ran * See tax_term_count() * * @todo consider for deprecation, other docblock tags removed * * @since 2.1.0 */ function column_term_number( $number ) { remove_filter( 'number_format_i18n', array( $this, 'column_term_number' ) ); if ( $this->count !== null ) { $number = $this->count; $this->count = null; } return $number; } /** * [usermeta] shortcode * * This shortcode takes a parameter named field, which is the name of the user meta data field to be displayed. * Example: [usermeta field="display_name"] would display the user's Display Name. * * @since 2.1.0 * * @param array $attr shortcode attributes * @param string $content content of shortcode * @return string output of shortcode */ function usermeta_shortcode( $attr, $content = '' ) { global $learndash_shortcode_used; $learndash_shortcode_used = true; // We clear out content because there is no reason to retain it. $content = ''; $attr = shortcode_atts( array( 'field' => '', 'user_id' => get_current_user_id() ), $attr ); /** * Added logic to allow admin and group_leader to view certificate from other users. Should proably be somewhere else * @since 2.3 */ //$post_type = ''; //if ( get_query_var( 'post_type' ) ) { // $post_type = get_query_var( 'post_type' ); // if ( $post_type == 'sfwd-certificates' ) { // if ( ( ( learndash_is_admin_user() ) || ( learndash_is_group_leader_user() ) ) // && ( ( isset( $_GET['user'] ) ) && (!empty( $_GET['user'] ) ) ) ) { // $attr['user_id'] = intval( $_GET['user'] ); // } // } //} if ( ( !empty( $attr['user_id'] ) ) && ( !empty( $attr['field'] ) ) ) { if ( ( learndash_is_admin_user() ) || ( $attr['user_id'] == get_current_user_id() ) ) { $usermeta_available_fields = array( $attr['field'] => $attr['field'] ); } else { $usermeta_available_fields = learndash_get_usermeta_shortcode_available_fields( $attr ); } if ( !is_array( $usermeta_available_fields ) ) $usermeta_available_fields = array( $usermeta_available_fields ); if ( array_key_exists( $attr['field'], $usermeta_available_fields ) === true ) { $value = ''; // First check the userdata fields $userdata = get_userdata( intval( $attr['user_id'] ) ); if ( ( ( $userdata ) && ( $userdata instanceof WP_User ) ) ) { $value = $userdata->{$attr['field']}; } /** * Added logic to allow formatting of value before returning * @since 2.4 */ $content = apply_filters( 'learndash_usermeta_shortcode_field_value_display', $value, $attr, $usermeta_available_fields ); } } return $content; } /** * Callback for add_filter 'sfwd_cpt_loop' * There is no apply_filters or php call to execute this function * * @since 2.1.0 * * @todo consider for deprecation, other docblock tags removed */ function cpt_loop_filter( $content ) { global $post; if ( $post->post_type == 'sfwd-quiz' ) { $meta = get_post_meta( $post->ID, '_sfwd-quiz' ); if ( is_array( $meta ) && ! empty( $meta ) ) { $meta = $meta[0]; if ( is_array( $meta ) && ( ! empty( $meta['sfwd-quiz_lesson'] ) ) ) { $content = ''; } } } return $content; } public function upgrade_plugin( ) { $ld_current_version = learndash_data_upgrades_setting( 'current_version' ); if ( version_compare( LEARNDASH_VERSION, $ld_current_version, 'ne' ) ) { $this->activate(); } } /** * Fire on plugin activation * * Currently sets 'sfwd_lms_rewrite_flush' to true * * @todo consider if needed, transient is not being used anywhere else in LearnDash * * @since 2.1.0 */ public function activate() { learndash_setup_rewrite_flush(); if ( ! defined( 'LEARNDASH_ACTIVATED' ) ) { define( 'LEARNDASH_ACTIVATED', true ); } /** * Remove legacy option item * * @since 2.5.7 */ delete_option( 'ld-repositories' ); /** * Ensure we call WPProQuiz activate functions * @since 2.4.6.1 */ WpProQuiz_Helper_Upgrade::upgrade(); require_once( LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/class-learndash-admin-data-upgrades.php' ); $ld_prior_version = learndash_data_upgrades_setting( 'prior_version' ); if ( 'new' === $ld_prior_version ) { // As this is a new install we want to set the prior data run on the Courses and Quizzes. $data_upgrade_courses = Learndash_Admin_Data_Upgrades::get_instance( 'Learndash_Admin_Data_Upgrades_User_Meta_Courses' ); if ( $data_upgrade_courses ) { $data_upgrade_courses->set_last_run_info(); } $data_upgrade_quizzes = Learndash_Admin_Data_Upgrades::get_instance( 'Learndash_Admin_Data_Upgrades_User_Meta_Quizzes' ); if ( $data_upgrade_quizzes ) { $data_upgrade_quizzes->set_last_run_info(); } $data_upgrade_course_access_list = Learndash_Admin_Data_Upgrades::get_instance( 'Learndash_Admin_Data_Upgrades_Course_Access_List_Convert' ); if ( $data_upgrade_course_access_list ) { $data_upgrade_course_access_list->set_last_run_info(); } $data_upgrade_quiz_questions = Learndash_Admin_Data_Upgrades::get_instance( 'Learndash_Admin_Data_Upgrades_Quiz_Questions' ); if ( $data_upgrade_quiz_questions ) { $data_upgrade_quiz_questions->set_last_run_info(); } } $ld_admin_settings_data_upgrades_db = Learndash_Admin_Data_Upgrades::get_instance( 'Learndash_Admin_Data_Upgrades_User_Activity_DB_Table' ); $ld_admin_settings_data_upgrades_db->upgrade_data_settings(); $ld_admin_data_upgrades = Learndash_Admin_Data_Upgrades::get_instance(); $ld_admin_data_upgrades->set_data_settings( 'translations_installed', false ); /** * If the prior version is not empty we check if there are existing questions. If * none found we set the questions data upgrade to completed. */ if ( 'new' !== $ld_prior_version ) { global $wpdb; $data_upgrade_quiz_questions = Learndash_Admin_Data_Upgrades::get_instance( 'Learndash_Admin_Data_Upgrades_Quiz_Questions' ); if ( $data_upgrade_quiz_questions ) { $questions_data_settings = $data_upgrade_quiz_questions->get_data_settings( 'pro-quiz-questions' ); $question_proquiz_count = $wpdb->get_var( $wpdb->prepare( 'SELECT id FROM ' . LDLMS_DB::get_table_name( 'quiz_question' ) . ' LIMIT %d', 1 ) ); $question_post_count = $wpdb->get_var( $wpdb->prepare( 'SELECT ID FROM ' . $wpdb->posts . ' WHERE post_type=%s LIMIT %d', learndash_get_post_type_slug( 'question' ), 1 ) ); if ( ( empty( $question_proquiz_count ) ) && ( empty( $question_post_count ) ) ) { $data_upgrade_quiz_questions->set_last_run_info(); } else if ( ( ! empty( $question_proquiz_count ) ) && ( empty( $question_post_count ) ) ) { $data_upgrade_quiz_questions->set_data_settings( 'pro-quiz-questions', false ); } else if ( ( ! empty( $question_proquiz_count ) ) && ( ! empty( $question_post_count ) ) ) { if ( false === $questions_data_settings ) { $data_upgrade_quiz_questions->set_last_run_info(); } } } } /** * Secure the Assignments & Essay uploads directory from browseing * * @since 2.5.5 */ $wp_upload_dir = wp_upload_dir(); $wp_upload_base_dir = str_replace( '\\', '/', $wp_upload_dir['basedir'] ); $ld_dirs = array( 'assignments', 'essays' ); foreach( array( 'assignments', 'essays' ) as $ld_dir ) { $_dir = trailingslashit( $wp_upload_base_dir ) . $ld_dir; if ( ! file_exists( $_dir ) ) { if ( is_writable( dirname( $_dir ) ) ) { wp_mkdir_p( $_dir ); } } if ( file_exists( $_dir ) ) { $_index = trailingslashit( $_dir ) . 'index.php'; if ( ! file_exists( $_index ) ) { file_put_contents( $_index , '//LearnDash is THE Best LMS' ); } } } do_action( 'learndash_activated' ); } function deactivate() { do_action( 'learndash_deactivated' ); } /** * Add 'sfwd-lms' to query vars * Fired on filter 'query_vars' * * @since 2.1.0 * * @param array $vars query vars * @return array $vars query vars */ function add_query_vars( $vars ) { //$courses_options = learndash_get_option( 'sfwd-courses' ); //if ((isset($courses_options['paypal_email'])) && (!empty($courses_options['paypal_email']))) { // $vars = array_merge( array( 'sfwd-lms' ), $vars ); //} $paypal_email = LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_PayPal', 'paypal_email' ); if ( !empty( $paypal_email ) ) { $vars = array_merge( array( 'sfwd-lms' ), $vars ); } return $vars; } /** * Include PayPal IPN if request is for PayPal IPN * Fired on action 'parse_request' * * @since 2.1.0 * * @param object $wp wp query */ function parse_ipn_request( $wp ) { //$courses_options = learndash_get_option( 'sfwd-courses' ); //if ((isset($courses_options['paypal_email'])) && (!empty($courses_options['paypal_email']))) { // if ( array_key_exists( 'sfwd-lms', $wp->query_vars ) // && $wp->query_vars['sfwd-lms'] == 'paypal' ) { /** * include PayPal IPN */ // require_once( 'vendor/paypal/ipn.php' ); // } //} $paypal_email = LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_PayPal', 'paypal_email' ); if ( !empty( $paypal_email ) ) { if ( ( array_key_exists( 'sfwd-lms', $wp->query_vars ) ) && ( $wp->query_vars['sfwd-lms'] == 'paypal' ) ) { /** * include PayPal IPN */ //require_once( __DIR__ . '/vendor/paypal/ipn.php' ); require_once( LEARNDASH_LMS_LIBRARY_DIR . '/paypal/ipn.php' ); } } } /** * Adds paypal to already generated rewrite rules * Fired on action 'generate_rewrite_rules' * * @since 2.1.0 * * @param object $wp_rewrite */ function paypal_rewrite_rules( $wp_rewrite ) { //$courses_options = learndash_get_option( 'sfwd-courses' ); //if ((isset($courses_options['paypal_email'])) && (!empty($courses_options['paypal_email']))) { // $wp_rewrite->rules = array_merge( array( 'sfwd-lms/paypal' => 'index.php?sfwd-lms=paypal' ), $wp_rewrite->rules ); //} $paypal_email = LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_PayPal', 'paypal_email' ); if ( !empty( $paypal_email ) ) { $wp_rewrite->rules = array_merge( array( 'sfwd-lms/paypal' => 'index.php?sfwd-lms=paypal' ), $wp_rewrite->rules ); } } /** * Sets up CPT's and creates a 'new SFWD_CPT_Instance()' of each * * @since 2.1.0 */ function add_post_types() { $post = 0; if ( is_admin() && ! empty( $_GET ) && ( isset( $_GET['post'] ) ) ) { $post_id = $_GET['post']; } if ( ! empty( $post_id ) ) { $this->quiz_json = get_post_meta( $post_id, '_quizdata', true ); if ( ! empty( $this->quiz_json ) ) { $this->quiz_json = $this->quiz_json['workingJson']; } } $options = get_option( 'sfwd_cpt_options' ); $level1 = $level2 = $level3 = $level4 = $level5 = ''; if ( ! empty( $options['modules'] ) ) { $options = $options['modules']; if ( ! empty( $options['sfwd-quiz_options'] ) ) { $options = $options['sfwd-quiz_options']; foreach ( array( 'level1', 'level2', 'level3', 'level4', 'level5' ) as $level ) { $$level = ''; if ( ! empty( $options["sfwd-quiz_{$level}"] ) ) { $$level = $options["sfwd-quiz_{$level}"]; } } } } if ( empty( $this->quiz_json ) ) { $this->quiz_json = '{"info":{"name":"","main":"","results":"","level1":"' . $level1 . '","level2":"' . $level2 . '","level3":"' . $level3 . '","level4":"' . $level4 . '","level5":"' . $level5 . '"}}'; } $posts_per_page = LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_General_Per_Page', 'per_page' ); if ( empty( $posts_per_page ) ) { $posts_per_page = get_option( 'posts_per_page' ); if ( empty( $posts_per_page ) ) { $posts_per_page = 5; } } $course_capabilities = array( 'read_post' => 'read_course', 'publish_posts' => 'publish_courses', 'edit_posts' => 'edit_courses', 'edit_others_posts' => 'edit_others_courses', 'delete_posts' => 'delete_courses', 'delete_others_posts' => 'delete_others_courses', 'read_private_posts' => 'read_private_courses', 'edit_private_posts' => 'edit_private_courses', 'delete_private_posts' => 'delete_private_courses', 'delete_post' => 'delete_course', 'edit_published_posts' => 'edit_published_courses', 'delete_published_posts' => 'delete_published_courses', ); if ( is_admin() ) { $admin_role = get_role( 'administrator' ); if ( ( $admin_role ) && ( $admin_role instanceof WP_Role ) ) { if ( ! $admin_role->has_cap( 'delete_private_courses' ) ) { foreach ( $course_capabilities as $key => $cap ) { if ( ! $admin_role->has_cap( $cap ) ) { $admin_role->add_cap( $cap ); } } } if ( ! $admin_role->has_cap( 'enroll_users' ) ) { $admin_role->add_cap( 'enroll_users' ); } } } $lcl_topic = LearnDash_Custom_Label::get_label( 'topic' ); $lcl_topics = LearnDash_Custom_Label::get_label( 'topics' ); $lesson_topic_labels = array( 'name' => $lcl_topics, 'singular_name' => $lcl_topic, 'add_new' => esc_html_x( 'Add New', 'Add New Topic Label', 'learndash' ), 'add_new_item' => sprintf( esc_html_x( 'Add New %s', 'Add New Topic Label', 'learndash' ), $lcl_topic ), 'edit_item' => sprintf( esc_html_x( 'Edit %s', 'Edit Topic Label', 'learndash' ), $lcl_topic ), 'new_item' => sprintf( esc_html_x( 'New %s', 'New Topic Label', 'learndash' ), $lcl_topic ), 'all_items' => $lcl_topics, 'view_item' => sprintf( esc_html_x( 'View %s', 'View Topic Label', 'learndash' ), $lcl_topic ), 'view_items' => sprintf( esc_html_x( 'View %s', 'View Topics Label', 'learndash' ), $lcl_topics ), 'search_items' => sprintf( esc_html_x( 'Search %s', 'Search Topic Label', 'learndash' ), $lcl_topics ), 'not_found' => sprintf( esc_html_x( 'No %s found', 'No Topic found Label', 'learndash' ), $lcl_topics ), 'not_found_in_trash' => sprintf( esc_html_x( 'No %s found in Trash', 'No Topic found in Trash', 'learndash' ), $lcl_topics ), 'parent_item_colon' => '', 'menu_name' => $lcl_topics, 'item_published' => sprintf( esc_html_x( '%s Published', 'Topic Published', 'learndash' ), $lcl_topic ), 'item_published_privately' => sprintf( esc_html_x( '%s Published Privately', 'Topic Published Privately', 'learndash' ), $lcl_topic ), 'item_reverted_to_draft' => sprintf( esc_html_x( '%s Reverted to Draft', 'Topic Reverted to Draft', 'learndash' ), $lcl_topic ), 'item_scheduled' => sprintf( esc_html_x( '%s Scheduled', 'Topic Scheduled', 'learndash' ), $lcl_topic ), 'item_updated' => sprintf( esc_html_x( '%s Updated', 'Topic Updated', 'learndash' ), $lcl_topic ), ); $lcl_quiz = LearnDash_Custom_Label::get_label( 'quiz' ); $lcl_quizzes = LearnDash_Custom_Label::get_label( 'quizzes' ); $quiz_labels = array( 'name' => $lcl_quizzes, 'singular_name' => $lcl_quiz, 'add_new' => esc_html_x( 'Add New', 'Add New Quiz Label', 'learndash' ), 'add_new_item' => sprintf( esc_html_x( 'Add New %s', 'Add New Quiz Label', 'learndash' ), $lcl_quiz ), 'edit_item' => sprintf( esc_html_x( 'Edit %s', 'Edit Quiz Label', 'learndash' ), $lcl_quiz ), 'new_item' => sprintf( esc_html_x( 'New %s', 'New Quiz Label', 'learndash' ), $lcl_quiz ), 'all_items' => $lcl_quizzes, 'view_item' => sprintf( esc_html_x( 'View %s', 'View Quiz Label', 'learndash' ), $lcl_quiz ), 'view_items' => sprintf( esc_html_x( 'View %s', 'View Quizzes Label', 'learndash' ), $lcl_quizzes ), 'search_items' => sprintf( esc_html_x( 'Search %s', 'Search Quiz Label', 'learndash' ), $lcl_quizzes ), 'not_found' => sprintf( esc_html_x( 'No %s found', 'No Quiz found Label', 'learndash' ), $lcl_quizzes ), 'not_found_in_trash' => sprintf( esc_html_x( 'No %s found in Trash', 'No Quiz found in Trash Label', 'learndash' ), $lcl_quizzes ), 'parent_item_colon' => '', 'menu_name' => $lcl_quizzes, 'item_published' => sprintf( esc_html_x( '%s Published', 'Quiz Published', 'learndash' ), $lcl_quiz ), 'item_published_privately' => sprintf( esc_html_x( '%s Published Privately', 'Quiz Published Privately', 'learndash' ), $lcl_quiz ), 'item_reverted_to_draft' => sprintf( esc_html_x( '%s Reverted to Draft', 'Quiz Reverted to Draft', 'learndash' ), $lcl_quiz ), 'item_scheduled' => sprintf( esc_html_x( '%s Scheduled', 'Quiz Scheduled', 'learndash' ), $lcl_quiz ), 'item_updated' => sprintf( esc_html_x( '%s Updated', 'Quiz Updated', 'learndash' ), $lcl_quiz ), ); $lcl_question = LearnDash_Custom_Label::get_label( 'question' ); $lcl_questions = LearnDash_Custom_Label::get_label( 'questions' ); $question_labels = array( 'name' => $lcl_questions, 'singular_name' => $lcl_question, 'add_new' => esc_html_x( 'Add New', 'Add New Question Label', 'learndash' ), 'add_new_item' => sprintf( esc_html_x( 'Add New %s', 'Add New Question Label', 'learndash' ), $lcl_question ), 'edit_item' => sprintf( esc_html_x( 'Edit %s', 'Edit Question Label', 'learndash' ), $lcl_question ), 'new_item' => sprintf( esc_html_x( 'New %s', 'New Question Label', 'learndash' ), $lcl_question ), 'all_items' => $lcl_questions, 'view_item' => sprintf( esc_html_x( 'View %s', 'View Question Label', 'learndash' ), $lcl_question ), 'view_items' => sprintf( esc_html_x( 'View %s', 'View Questions Label', 'learndash' ), $lcl_questions ), 'search_items' => sprintf( esc_html_x( 'Search %s', 'Search Question Label', 'learndash' ), $lcl_questions ), 'not_found' => sprintf( esc_html_x( 'No %s found', 'No Question found Label', 'learndash' ), $lcl_questions ), 'not_found_in_trash' => sprintf( esc_html_x( 'No %s found in Trash', 'No Question found in Trash Label', 'learndash' ), $lcl_questions ), 'parent_item_colon' => '', 'menu_name' => $lcl_questions, 'item_published' => sprintf( esc_html_x( '%s Published', 'Question Published', 'learndash' ), $lcl_question ), 'item_published_privately' => sprintf( esc_html_x( '%s Published Privately', 'Question Published Privately', 'learndash' ), $lcl_question ), 'item_reverted_to_draft' => sprintf( esc_html_x( '%s Reverted to Draft', 'Question Reverted to Draft', 'learndash' ), $lcl_question ), 'item_scheduled' => sprintf( esc_html_x( '%s Scheduled', 'Question Scheduled', 'learndash' ), $lcl_question ), 'item_updated' => sprintf( esc_html_x( '%s Updated', 'Question Updated', 'learndash' ), $lcl_question ), ); $lcl_lesson = LearnDash_Custom_Label::get_label( 'lesson' ); $lcl_lessons = LearnDash_Custom_Label::get_label( 'lessons' ); $lesson_labels = array( 'name' => $lcl_lessons, 'singular_name' => $lcl_lesson, 'add_new' => esc_html_x( 'Add New', 'Add New Lesson Label', 'learndash' ), 'add_new_item' => sprintf( esc_html_x( 'Add New %s', 'Add New Lesson Label', 'learndash' ), $lcl_lesson ), 'edit_item' => sprintf( esc_html_x( 'Edit %s', 'Edit Lesson Label', 'learndash' ), $lcl_lesson ), 'new_item' => sprintf( esc_html_x( 'New %s', 'New Lesson Label', 'learndash' ), $lcl_lesson ), 'all_items' => $lcl_lessons, 'view_item' => sprintf( esc_html_x( 'View %s', 'View Lesson Label', 'learndash' ), $lcl_lesson ), 'view_items' => sprintf( esc_html_x( 'View %s', 'View Lessons Label', 'learndash' ), $lcl_lessons ), 'search_items' => sprintf( esc_html_x( 'Search %s', 'Search Lesson Label', 'learndash' ), $lcl_lessons ), 'not_found' => sprintf( esc_html_x( 'No %s found', 'No Lesson found Label', 'learndash' ), $lcl_lessons ), 'not_found_in_trash' => sprintf( esc_html_x( 'No %s found in Trash', 'No Lesson found in Trash Label', 'learndash' ), $lcl_lessons ), 'parent_item_colon' => '', 'menu_name' => $lcl_lessons, 'item_published' => sprintf( esc_html_x( '%s Published', 'Lesson Published', 'learndash' ), $lcl_lesson ), 'item_published_privately' => sprintf( esc_html_x( '%s Published Privately', 'Lesson Published Privately', 'learndash' ), $lcl_lesson ), 'item_reverted_to_draft' => sprintf( esc_html_x( '%s Reverted to Draft', 'Lesson Reverted to Draft', 'learndash' ), $lcl_lesson ), 'item_scheduled' => sprintf( esc_html_x( '%s Scheduled', 'Lesson Scheduled', 'learndash' ), $lcl_lesson ), 'item_updated' => sprintf( esc_html_x( '%s Updated', 'Lesson Updated', 'learndash' ), $lcl_lesson ), ); $lcl_course = LearnDash_Custom_Label::get_label( 'course' ); $lcl_courses = LearnDash_Custom_Label::get_label( 'courses' ); $course_labels = array( 'name' => $lcl_courses, 'singular_name' => $lcl_course, 'add_new' => esc_html_x( 'Add New', 'Add New Course Label', 'learndash' ), 'add_new_item' => sprintf( esc_html_x( 'Add New %s', 'Add New Course Label', 'learndash' ), $lcl_course ), 'edit_item' => sprintf( esc_html_x( 'Edit %s', 'Edit Course Label', 'learndash' ), $lcl_course ), 'new_item' => sprintf( esc_html_x( 'New %s', 'New Course Label', 'learndash' ), $lcl_course ), 'all_items' => $lcl_courses, 'view_item' => sprintf( esc_html_x( 'View %s', 'View Course Label', 'learndash' ), $lcl_course ), 'view_items' => sprintf( esc_html_x( 'View %s', 'View Courses Label', 'learndash' ), $lcl_courses ), 'search_items' => sprintf( esc_html_x( 'Search %s', 'Search Courses Label', 'learndash' ), $lcl_courses ), 'not_found' => sprintf( esc_html_x( 'No %s found', 'No Courses found Label', 'learndash' ), $lcl_courses ), 'not_found_in_trash' => sprintf( esc_html_x( 'No %s found in Trash', 'No Courses found in Trash Label', 'learndash' ), $lcl_courses ), 'parent_item_colon' => '', 'menu_name' => $lcl_courses, 'item_published' => sprintf( esc_html_x( '%s Published', 'Course Published', 'learndash' ), $lcl_course ), 'item_published_privately' => sprintf( esc_html_x( '%s Published Privately', 'Course Published Privately', 'learndash' ), $lcl_course ), 'item_reverted_to_draft' => sprintf( esc_html_x( '%s Reverted to Draft', 'Course Reverted to Draft', 'learndash' ), $lcl_course ), 'item_scheduled' => sprintf( esc_html_x( '%s Scheduled', 'Course Scheduled', 'learndash' ), $lcl_course ), 'item_updated' => sprintf( esc_html_x( '%s Updated', 'Course Updated', 'learndash' ), $lcl_course ), ); $course_taxonomies = array(); if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Courses_Taxonomies', 'wp_post_category' ) == 'yes') { $course_taxonomies['category'] = 'category'; } if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Courses_Taxonomies', 'wp_post_tag' ) == 'yes') { $course_taxonomies['post_tag'] = 'post_tag'; } $learndash_settings_permalinks_taxonomies = get_option( 'learndash_settings_permalinks_taxonomies' ); if ( !is_array( $learndash_settings_permalinks_taxonomies ) ) $learndash_settings_permalinks_taxonomies = array(); $learndash_settings_permalinks_taxonomies = wp_parse_args( $learndash_settings_permalinks_taxonomies, array( 'ld_course_category' => 'course-category', 'ld_course_tag' => 'course-tag', 'ld_lesson_category' => 'lesson-category', 'ld_lesson_tag' => 'lesson-tag', 'ld_topic_category' => 'topic-category', 'ld_topic_tag' => 'topic-tag', 'ld_quiz_category' => 'quiz-category', 'ld_quiz_tag' => 'quiz-tag', 'ld_question_category' => 'question-category', 'ld_question_tag' => 'question-tag' ) ); //$learndash_settings_permalinks_cpt = get_option( 'learndash_settings_permalinks' ); /* if ( !is_array( $learndash_settings_permalinks_cpt ) ) $learndash_settings_permalinks_cpt = array(); $learndash_settings_permalinks_cpt = wp_parse_args( $learndash_settings_permalinks_cpt, array( 'ld_course_category' => 'course-category', 'ld_course_tag' => 'course-tag', 'ld_lesson_category' => 'lesson-category', 'ld_lesson_tag' => 'lesson-tag', 'ld_topic_category' => 'topic-category', 'ld_topic_tag' => 'topic-tag' ) ); */ if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Courses_Taxonomies', 'ld_course_category' ) == 'yes' ) { $course_taxonomies['ld_course_category'] = array( 'public' => true, 'hierarchical' => true, 'show_ui' => true, 'show_in_menu' => true, 'show_admin_column' => true, 'query_var' => true, 'show_in_rest' => LearnDash_REST_API::enabled( 'sfwd-courses' ) || LearnDash_REST_API::gutenberg_enabled( 'sfwd-courses' ), //'rest_base' => $learndash_settings_permalinks_taxonomies['ld_course_category'], //'rest_controller_class' => 'LD_REST_Terms_Course_Category_Controller_V1', 'rewrite' => array( 'slug' => $learndash_settings_permalinks_taxonomies['ld_course_category'] ), 'capabilities' => array( 'manage_terms' => 'manage_categories', 'edit_terms' => 'edit_categories', 'delete_terms' => 'delete_categories', 'assign_terms' => 'assign_categories', ), 'labels' => array( 'name' => sprintf( esc_html_x( '%s Categories', 'placeholder: Course', 'learndash' ), $lcl_course ), 'singular_name' => sprintf( esc_html_x( '%s Category', 'placeholder: Course', 'learndash' ), $lcl_course ), 'search_items' => sprintf( esc_html_x( 'Search %s Categories', 'placeholder: Course', 'learndash' ), $lcl_course ), 'all_items' => sprintf( esc_html_x( 'All %s Categories', 'placeholder: Course', 'learndash' ), $lcl_course ), 'parent_item' => sprintf( esc_html_x( 'Parent %s Category', 'placeholder: Course', 'learndash' ), $lcl_course ), 'parent_item_colon' => sprintf( esc_html_x( 'Parent %s Category:', 'placeholder: Course', 'learndash' ), $lcl_course ), 'edit_item' => sprintf( esc_html_x( 'Edit %s Category', 'placeholder: Course', 'learndash' ), $lcl_course ), 'update_item' => sprintf( esc_html_x( 'Update %s Category', 'placeholder: Course', 'learndash' ), $lcl_course ), 'add_new_item' => sprintf( esc_html_x( 'Add New %s Category', 'placeholder: Course', 'learndash' ), $lcl_course ), 'new_item_name' => sprintf( esc_html_x( 'New %s Category Name', 'placeholder: Course', 'learndash' ), $lcl_course ), 'menu_name' => sprintf( esc_html_x( '%s Categories', 'placeholder: Course', 'learndash' ), $lcl_course ), ), ); } if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Courses_Taxonomies', 'ld_course_tag' ) == 'yes') { $course_taxonomies['ld_course_tag'] = array( 'public' => true, 'hierarchical' => false, 'show_ui' => true, 'show_in_menu' => true, 'show_admin_column' => true, 'query_var' => true, 'show_in_rest' => LearnDash_REST_API::enabled( 'sfwd-courses' ) || LearnDash_REST_API::gutenberg_enabled( 'sfwd-courses' ), //'rest_base' => $learndash_settings_permalinks_taxonomies['ld_course_tag'], //'rest_controller_class' => 'LD_REST_Terms_Course_Tag_Controller_V1', 'rewrite' => array( 'slug' => $learndash_settings_permalinks_taxonomies['ld_course_tag'] ), 'labels' => array( 'name' => sprintf( esc_html_x( '%s Tags', 'placeholder: Course', 'learndash' ), $lcl_course ), 'singular_name' => sprintf( esc_html_x( '%s Tag', 'placeholder: Course', 'learndash' ), $lcl_course ), 'search_items' => sprintf( esc_html_x( 'Search %s Tag', 'placeholder: Course', 'learndash' ), $lcl_course ), 'all_items' => sprintf( esc_html_x( 'All %s Tags', 'placeholder: Course', 'learndash' ), $lcl_course ), 'parent_item' => sprintf( esc_html_x( 'Parent %s Tag', 'placeholder: Course', 'learndash' ), $lcl_course ), 'parent_item_colon' => sprintf( esc_html_x( 'Parent %s Tag:', 'placeholder: Course', 'learndash' ), $lcl_course ), 'edit_item' => sprintf( esc_html_x( 'Edit %s Tag', 'placeholder: Course', 'learndash' ), $lcl_course ), 'update_item' => sprintf( esc_html_x( 'Update %s Tag', 'placeholder: Course', 'learndash' ), $lcl_course ), 'add_new_item' => sprintf( esc_html_x( 'Add New %s Tag', 'placeholder: Course', 'learndash' ), $lcl_course ), 'new_item_name' => sprintf( esc_html_x( 'New %s Tag Name', 'placeholder: Course', 'learndash' ), $lcl_course ), 'menu_name' => sprintf( esc_html_x( '%s Tags', 'placeholder: Course', 'learndash' ), $lcl_course ), ), ); } $lesson_taxonomies = array(); if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Lessons_Taxonomies', 'wp_post_category' ) == 'yes') { $lesson_taxonomies['category'] = 'category'; } if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Lessons_Taxonomies', 'wp_post_tag' ) == 'yes') { $lesson_taxonomies['post_tag'] = 'post_tag'; } if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Lessons_Taxonomies', 'ld_lesson_category' ) == 'yes') { $lesson_taxonomies['ld_lesson_category'] = array( 'public' => true, 'hierarchical' => true, 'show_ui' => true, 'show_in_menu' => true, 'show_admin_column' => true, 'query_var' => true, 'show_in_rest' => LearnDash_REST_API::enabled( 'sfwd-lessons' ) || LearnDash_REST_API::gutenberg_enabled( 'sfwd-lessons' ), //'rest_base' => $learndash_settings_permalinks_taxonomies['ld_lesson_category'], //'rest_controller_class' => 'LD_REST_Terms_Lesson_Category_Controller_V1', 'rewrite' => array( 'slug' => $learndash_settings_permalinks_taxonomies['ld_lesson_category'] ), 'capabilities' => array( 'manage_terms' => 'manage_categories', 'edit_terms' => 'edit_categories', 'delete_terms' => 'delete_categories', 'assign_terms' => 'assign_categories', ), 'labels' => array( 'name' => sprintf( esc_html_x( '%s Categories', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), 'singular_name' => sprintf( esc_html_x( '%s Category', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), 'search_items' => sprintf( esc_html_x( 'Search %s Categories', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), 'all_items' => sprintf( esc_html_x( 'All %s Categories', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), 'parent_item' => sprintf( esc_html_x( 'Parent %s Category', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), 'parent_item_colon' => sprintf( esc_html_x( 'Parent %s Category:', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), 'edit_item' => sprintf( esc_html_x( 'Edit %s Category', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), 'update_item' => sprintf( esc_html_x( 'Update %s Category', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), 'add_new_item' => sprintf( esc_html_x( 'Add New %s Category', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), 'new_item_name' => sprintf( esc_html_x( 'New %s Category Name', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), 'menu_name' => sprintf( esc_html_x( '%s Categories', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), ), ); } if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Lessons_Taxonomies', 'ld_lesson_tag' ) == 'yes') { $lesson_taxonomies['ld_lesson_tag'] = array( 'public' => true, 'hierarchical' => false, 'show_ui' => true, 'show_in_menu' => true, 'show_admin_column' => true, 'query_var' => true, 'show_in_rest' => LearnDash_REST_API::enabled( 'sfwd-lessons' ) || LearnDash_REST_API::gutenberg_enabled( 'sfwd-lessons' ), //'rest_base' => $learndash_settings_permalinks_taxonomies['ld_lesson_tag'], //'rest_controller_class' => 'LD_REST_Terms_Lesson_Tag_Controller_V1', 'rewrite' => array( 'slug' => $learndash_settings_permalinks_taxonomies['ld_lesson_tag'] ), 'labels' => array( 'name' => sprintf( esc_html_x( '%s Tags', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), 'singular_name' => sprintf( esc_html_x( '%s Tag', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), 'search_items' => sprintf( esc_html_x( 'Search %s Tag', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), 'all_items' => sprintf( esc_html_x( 'All %s Tags', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), 'parent_item' => sprintf( esc_html_x( 'Parent %s Tag', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), 'parent_item_colon' => sprintf( esc_html_x( 'Parent %s Tag:', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), 'edit_item' => sprintf( esc_html_x( 'Edit %s Tag', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), 'update_item' => sprintf( esc_html_x( 'Update %s Tag', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), 'add_new_item' => sprintf( esc_html_x( 'Add New %s Tag', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), 'new_item_name' => sprintf( esc_html_x( 'New %s Tag Name', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), 'menu_name' => sprintf( esc_html_x( '%s Tags', 'placeholder: Lesson', 'learndash' ), $lcl_lesson ), ), ); } $topic_taxonomies = array(); if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Topics_Taxonomies', 'wp_post_category' ) == 'yes') { $topic_taxonomies['category'] = 'category'; } if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Topics_Taxonomies', 'wp_post_tag' ) == 'yes') { $topic_taxonomies['post_tag'] = 'post_tag'; } if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Topics_Taxonomies', 'ld_topic_category' ) == 'yes') { $topic_taxonomies['ld_topic_category'] = array( 'public' => true, 'hierarchical' => true, 'show_ui' => true, 'show_in_menu' => true, 'show_admin_column' => true, 'query_var' => true, 'show_in_rest' => LearnDash_REST_API::enabled( 'sfwd-topic' ) || LearnDash_REST_API::gutenberg_enabled( 'sfwd-topic' ), //'rest_base' => $learndash_settings_permalinks_taxonomies['ld_topic_category'], //'rest_controller_class' => 'LD_REST_Terms_Topic_Category_Controller_V1', 'rewrite' => array( 'slug' => $learndash_settings_permalinks_taxonomies['ld_topic_category'] ), 'capabilities' => array( 'manage_terms' => 'manage_categories', 'edit_terms' => 'edit_categories', 'delete_terms' => 'delete_categories', 'assign_terms' => 'assign_categories', ), 'labels' => array( 'name' => sprintf( esc_html_x( '%s Categories', 'placeholder: Topic', 'learndash' ), $lcl_topic ), 'singular_name' => sprintf( esc_html_x( '%s Category', 'placeholder: Topic', 'learndash' ), $lcl_topic ), 'search_items' => sprintf( esc_html_x( 'Search %s Categories', 'placeholder: Topic', 'learndash' ), $lcl_topic ), 'all_items' => sprintf( esc_html_x( 'All %s Categories', 'placeholder: Topic', 'learndash' ), $lcl_topic ), 'parent_item' => sprintf( esc_html_x( 'Parent %s Category', 'placeholder: Topic', 'learndash' ), $lcl_topic ), 'parent_item_colon' => sprintf( esc_html_x( 'Parent %s Category:', 'placeholder: Topic', 'learndash' ), $lcl_topic ), 'edit_item' => sprintf( esc_html_x( 'Edit %s Category', 'placeholder: Topic', 'learndash' ), $lcl_topic ), 'update_item' => sprintf( esc_html_x( 'Update %s Category', 'placeholder: Topic', 'learndash' ), $lcl_topic ), 'add_new_item' => sprintf( esc_html_x( 'Add New %s Category', 'placeholder: Topic', 'learndash' ), $lcl_topic ), 'new_item_name' => sprintf( esc_html_x( 'New %s Category Name', 'placeholder: Topic', 'learndash' ), $lcl_topic ), 'menu_name' => sprintf( esc_html_x( '%s Categories', 'placeholder: Topic', 'learndash' ), $lcl_topic ), ), ); } if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Topics_Taxonomies', 'ld_topic_tag' ) == 'yes' ) { $topic_taxonomies['ld_topic_tag'] = array( 'public' => true, 'hierarchical' => false, 'show_ui' => true, 'show_in_menu' => true, 'show_admin_column' => true, 'query_var' => true, 'show_in_rest' => LearnDash_REST_API::enabled( 'sfwd-topic' ) || LearnDash_REST_API::gutenberg_enabled( 'sfwd-topic' ), //'rest_base' => $learndash_settings_permalinks_taxonomies['ld_topic_tag'], //'rest_controller_class' => 'LD_REST_Terms_Topic_Tag_Controller_V1', 'rewrite' => array( 'slug' => $learndash_settings_permalinks_taxonomies['ld_topic_tag'] ), 'labels' => array( 'name' => sprintf( esc_html_x( '%s Tags', 'placeholder: Topic', 'learndash' ), $lcl_topic ), 'singular_name' => sprintf( esc_html_x( '%s Tag', 'placeholder: Topic', 'learndash' ), $lcl_topic ), 'search_items' => sprintf( esc_html_x( 'Search %s Tag', 'placeholder: Topic', 'learndash' ), $lcl_topic ), 'all_items' => sprintf( esc_html_x( 'All %s Tags', 'placeholder: Topic', 'learndash' ), $lcl_topic ), 'parent_item' => sprintf( esc_html_x( 'Parent %s Tag', 'placeholder: Topic', 'learndash' ), $lcl_topic ), 'parent_item_colon' => sprintf( esc_html_x( 'Parent %s Tag:', 'placeholder: Topic', 'learndash' ), $lcl_topic ), 'edit_item' => sprintf( esc_html_x( 'Edit %s Tag', 'placeholder: Topic', 'learndash' ), $lcl_topic ), 'update_item' => sprintf( esc_html_x( 'Update %s Tag', 'placeholder: Topic', 'learndash' ), $lcl_topic ), 'add_new_item' => sprintf( esc_html_x( 'Add New %s Tag', 'placeholder: Topic', 'learndash' ), $lcl_topic ), 'new_item_name' => sprintf( esc_html_x( 'New %s Tag Name', 'placeholder: Topic', 'learndash' ), $lcl_topic ), 'menu_name' => sprintf( esc_html_x( '%s Tags', 'placeholder: Topic', 'learndash' ), $lcl_topic ), ), ); } $quiz_taxonomies = array(); if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Quizzes_Taxonomies', 'ld_quiz_category' ) == 'yes') { $quiz_taxonomies['ld_quiz_category'] = array( 'public' => true, 'hierarchical' => true, 'show_ui' => true, 'show_in_menu' => true, 'show_admin_column' => true, 'query_var' => true, 'show_in_rest' => LearnDash_REST_API::enabled( 'sfwd-quiz' ) || LearnDash_REST_API::gutenberg_enabled( 'sfwd-quiz' ), //'rest_base' => $learndash_settings_permalinks_taxonomies['ld_topic_category'], //'rest_controller_class' => 'LD_REST_Terms_Topic_Category_Controller_V1', 'rewrite' => array( 'slug' => $learndash_settings_permalinks_taxonomies['ld_quiz_category'] ), 'capabilities' => array( 'manage_terms' => 'manage_categories', 'edit_terms' => 'edit_categories', 'delete_terms' => 'delete_categories', 'assign_terms' => 'assign_categories', ), 'labels' => array( 'name' => sprintf( esc_html_x( '%s Categories', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), 'singular_name' => sprintf( esc_html_x( '%s Category', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), 'search_items' => sprintf( esc_html_x( 'Search %s Categories', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), 'all_items' => sprintf( esc_html_x( 'All %s Categories', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), 'parent_item' => sprintf( esc_html_x( 'Parent %s Category', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), 'parent_item_colon' => sprintf( esc_html_x( 'Parent %s Category:', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), 'edit_item' => sprintf( esc_html_x( 'Edit %s Category', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), 'update_item' => sprintf( esc_html_x( 'Update %s Category', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), 'add_new_item' => sprintf( esc_html_x( 'Add New %s Category', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), 'new_item_name' => sprintf( esc_html_x( 'New %s Category Name', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), 'menu_name' => sprintf( esc_html_x( '%s Categories', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), ), ); } if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Quizzes_Taxonomies', 'ld_quiz_tag' ) == 'yes' ) { $quiz_taxonomies['ld_quiz_tag'] = array( 'public' => true, 'hierarchical' => false, 'show_ui' => true, 'show_in_menu' => true, 'show_admin_column' => true, 'query_var' => true, 'show_in_rest' => LearnDash_REST_API::enabled( 'sfwd-quiz' ) || LearnDash_REST_API::gutenberg_enabled( 'sfwd-quiz' ), //'rest_base' => $learndash_settings_permalinks_taxonomies['ld_topic_tag'], //'rest_controller_class' => 'LD_REST_Terms_Topic_Tag_Controller_V1', 'rewrite' => array( 'slug' => $learndash_settings_permalinks_taxonomies['ld_quiz_tag'] ), 'labels' => array( 'name' => sprintf( esc_html_x( '%s Tags', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), 'singular_name' => sprintf( esc_html_x( '%s Tag', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), 'search_items' => sprintf( esc_html_x( 'Search %s Tag', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), 'all_items' => sprintf( esc_html_x( 'All %s Tags', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), 'parent_item' => sprintf( esc_html_x( 'Parent %s Tag', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), 'parent_item_colon' => sprintf( esc_html_x( 'Parent %s Tag:', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), 'edit_item' => sprintf( esc_html_x( 'Edit %s Tag', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), 'update_item' => sprintf( esc_html_x( 'Update %s Tag', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), 'add_new_item' => sprintf( esc_html_x( 'Add New %s Tag', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), 'new_item_name' => sprintf( esc_html_x( 'New %s Tag Name', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), 'menu_name' => sprintf( esc_html_x( '%s Tags', 'placeholder: Quiz', 'learndash' ), $lcl_quiz ), ), ); } if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Quizzes_Taxonomies', 'wp_post_category' ) == 'yes') { $quiz_taxonomies['category'] = 'category'; } if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Quizzes_Taxonomies', 'wp_post_tag' ) == 'yes') { $quiz_taxonomies['post_tag'] = 'post_tag'; } $question_taxonomies = array(); if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Questions_Taxonomies', 'ld_question_category' ) == 'yes') { $question_taxonomies['ld_question_category'] = array( 'public' => false, 'hierarchical' => true, 'show_ui' => true, 'show_in_menu' => true, 'show_admin_column' => true, 'query_var' => true, 'show_in_rest' => LearnDash_REST_API::enabled( 'sfwd-question' ) || LearnDash_REST_API::gutenberg_enabled( 'sfwd-question' ), //'rest_base' => $learndash_settings_permalinks_taxonomies['ld_topic_category'], //'rest_controller_class' => 'LD_REST_Terms_Topic_Category_Controller_V1', 'rewrite' => array( 'slug' => $learndash_settings_permalinks_taxonomies['ld_question_category'] ), 'capabilities' => array( 'manage_terms' => 'manage_categories', 'edit_terms' => 'edit_categories', 'delete_terms' => 'delete_categories', 'assign_terms' => 'assign_categories', ), 'labels' => array( 'name' => sprintf( esc_html_x( '%s Categories', 'placeholder: Question', 'learndash' ), $lcl_question ), 'singular_name' => sprintf( esc_html_x( '%s Category', 'placeholder: Question', 'learndash' ), $lcl_question ), 'search_items' => sprintf( esc_html_x( 'Search %s Categories', 'placeholder: Question', 'learndash' ), $lcl_question ), 'all_items' => sprintf( esc_html_x( 'All %s Categories', 'placeholder: Question', 'learndash' ), $lcl_question ), 'parent_item' => sprintf( esc_html_x( 'Parent %s Category', 'placeholder: Question', 'learndash' ), $lcl_question ), 'parent_item_colon' => sprintf( esc_html_x( 'Parent %s Category:', 'placeholder: Question', 'learndash' ), $lcl_question ), 'edit_item' => sprintf( esc_html_x( 'Edit %s Category', 'placeholder: Question', 'learndash' ), $lcl_question ), 'update_item' => sprintf( esc_html_x( 'Update %s Category', 'placeholder: Question', 'learndash' ), $lcl_question ), 'add_new_item' => sprintf( esc_html_x( 'Add New %s Category', 'placeholder: Question', 'learndash' ), $lcl_question ), 'new_item_name' => sprintf( esc_html_x( 'New %s Category Name', 'placeholder: Question', 'learndash' ), $lcl_question ), 'menu_name' => sprintf( esc_html_x( '%s Categories', 'placeholder: Question', 'learndash' ), $lcl_question ), ), ); } if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Questions_Taxonomies', 'ld_question_tag' ) == 'yes' ) { $question_taxonomies['ld_question_tag'] = array( 'public' => false, 'hierarchical' => false, 'show_ui' => true, 'show_in_menu' => true, 'show_admin_column' => true, 'query_var' => true, 'show_in_rest' => LearnDash_REST_API::enabled( 'sfwd-question' ) || LearnDash_REST_API::gutenberg_enabled( 'sfwd-question' ), //'rest_base' => $learndash_settings_permalinks_taxonomies['ld_topic_tag'], //'rest_controller_class' => 'LD_REST_Terms_Topic_Tag_Controller_V1', 'rewrite' => array( 'slug' => $learndash_settings_permalinks_taxonomies['ld_question_tag'] ), 'labels' => array( 'name' => sprintf( esc_html_x( '%s Tags', 'placeholder: Question', 'learndash' ), $lcl_question ), 'singular_name' => sprintf( esc_html_x( '%s Tag', 'placeholder: Question', 'learndash' ), $lcl_question ), 'search_items' => sprintf( esc_html_x( 'Search %s Tag', 'placeholder: Question', 'learndash' ), $lcl_question ), 'all_items' => sprintf( esc_html_x( 'All %s Tags', 'placeholder: Question', 'learndash' ), $lcl_question ), 'parent_item' => sprintf( esc_html_x( 'Parent %s Tag', 'placeholder: Question', 'learndash' ), $lcl_question ), 'parent_item_colon' => sprintf( esc_html_x( 'Parent %s Tag:', 'placeholder: Question', 'learndash' ), $lcl_question ), 'edit_item' => sprintf( esc_html_x( 'Edit %s Tag', 'placeholder: Question', 'learndash' ), $lcl_question ), 'update_item' => sprintf( esc_html_x( 'Update %s Tag', 'placeholder: Question', 'learndash' ), $lcl_question ), 'add_new_item' => sprintf( esc_html_x( 'Add New %s Tag', 'placeholder: Question', 'learndash' ), $lcl_question ), 'new_item_name' => sprintf( esc_html_x( 'New %s Tag Name', 'placeholder: Question', 'learndash' ), $lcl_question ), 'menu_name' => sprintf( esc_html_x( '%s Tags', 'placeholder: Question', 'learndash' ), $lcl_question ), ), ); } if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Questions_Taxonomies', 'wp_post_category' ) == 'yes') { $question_taxonomies['category'] = 'category'; } if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Questions_Taxonomies', 'wp_post_tag' ) == 'yes') { $question_taxonomies['post_tag'] = 'post_tag'; } $course_lessons_options_labels = array( //'orderby' => LearnDash_Settings_Section_Lessons_Display_Order::get_setting_select_option_label( 'orderby' ), 'orderby' => LearnDash_Settings_Section::get_section_setting_select_option_label( 'LearnDash_Settings_Section_Lessons_Display_Order', 'orderby' ), //'order' => LearnDash_Settings_Section_Lessons_Display_Order::get_setting_select_option_label( 'order' ) 'order' => LearnDash_Settings_Section::get_section_setting_select_option_label( 'LearnDash_Settings_Section_Lessons_Display_Order', 'order' ), ); $this->post_args = array( 'sfwd-courses' => array( 'plugin_name' => LearnDash_Custom_Label::get_label( 'course' ), 'slug_name' => LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_Permalinks', 'courses' ), 'post_type' => 'sfwd-courses', 'template_redirect' => true, 'taxonomies' => $course_taxonomies, 'cpt_options' => array( 'has_archive' => learndash_post_type_has_archive( 'sfwd-courses' ), 'hierarchical' => false, 'supports' => array_merge( array( 'title', 'editor', 'author', 'page-attributes' ), LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_CPT', 'supports' ) ), 'labels' => $course_labels, 'capability_type' => 'course', 'exclude_from_search' => (LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Courses_CPT', 'include_in_search' ) !== 'yes' ) ? true : false, 'capabilities' => $course_capabilities, 'map_meta_cap' => true, 'show_in_rest' => LearnDash_REST_API::enabled( 'sfwd-courses' ) || LearnDash_REST_API::gutenberg_enabled( 'sfwd-courses' ), //'rest_base' => LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_Permalinks', 'courses' ), 'rest_controller_class' => LearnDash_REST_API::get_controller( 'sfwd-courses' ), ), 'options_page_title' => sprintf( // translators: placeholder: Course. esc_html_x( 'LearnDash %s Settings', 'placeholder: Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'fields' => array( 'course_materials' => array( 'name' => sprintf( esc_html_x( '%s Materials', 'Course Materials Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'type' => 'textarea', 'help_text' => sprintf( esc_html_x( 'Options for %s materials', 'Options for course materials', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'show_in_rest' => LearnDash_REST_API::enabled(), 'rest_args' => array( 'schema' => array( 'type' => 'html' ) ) ), 'course_price_type' => array( 'name' => sprintf( esc_html_x( '%s Price Type', 'Course Price Type Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'type' => 'select', 'initial_options' => array( 'open' => esc_html__( 'Open', 'learndash' ), 'closed' => esc_html__( 'Closed', 'learndash' ), 'free' => esc_html__( 'Free', 'learndash' ), 'paynow' => esc_html__( 'Buy Now', 'learndash' ), 'subscribe' => esc_html__( 'Recurring', 'learndash' ), ), 'default' => 'open', 'help_text' => esc_html__( 'Is it open to all, free join, one time purchase, or a recurring subscription?', 'learndash' ), 'show_in_rest' => LearnDash_REST_API::enabled(), 'rest_args' => array( 'schema' => array( 'type' => 'string', 'default' => 'open', 'enum' => array( 'open', 'closed', 'free', 'buynow', 'subscribe', ), ) ) ), 'custom_button_label' => array( 'name' => esc_html__( 'Custom Button Label', 'learndash' ), 'type' => 'text', 'placeholder' => esc_html__( 'Optional', 'learndash' ), 'show_in_rest' => LearnDash_REST_API::enabled() ), 'custom_button_url' => array( 'name' => esc_html__( 'Custom Button URL', 'learndash' ), 'type' => 'text', 'placeholder' => esc_html__( 'Optional', 'learndash' ), 'help_text' => sprintf( esc_html_x( 'Entering a URL in this field will enable the "%s" button. The button will not display if this field is left empty. Relative URL beginning with a slash is acceptable.', 'placeholders: "Take This Course" button label', 'learndash' ), LearnDash_Custom_Label::get_label( 'button_take_this_course' )), 'show_in_rest' => LearnDash_REST_API::enabled() ), 'course_price' => array( 'name' => sprintf( esc_html_x( '%s Price', 'Course Price Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'type' => 'text', 'help_text' => sprintf( esc_html_x( 'Enter %s price here. Leave empty if the %s is free.', 'Enter course price here. Leave empty if the course is free.', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'course_price_billing_cycle' => array( 'name' => esc_html__( 'Billing Cycle', 'learndash' ), 'type' => 'html', 'default' => $this->learndash_course_price_billing_cycle_html(), 'help_text' => esc_html__( 'Billing Cycle for the recurring payments in case of a subscription.', 'learndash' ), 'show_in_rest' => false, //LearnDash_REST_API::enabled(), ), 'course_access_list' => array( 'name' => sprintf( esc_html_x( '%s Access List', 'Course Access List Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'type' => 'textarea', 'help_text' => esc_html__( 'This field is auto-populated with the UserIDs of those who have access to this course.', 'learndash' ), 'show_in_rest' => false, //LearnDash_REST_API::enabled(), ), 'course_lesson_orderby' => array( 'name' => sprintf( esc_html_x( 'Sort %s By', 'Sort Lesson By Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'type' => 'select', 'initial_options' => array( '' => esc_html__( 'Use Default', 'learndash' ) . ' ( '. $course_lessons_options_labels['orderby'] .' )', 'title' => esc_html__( 'Title', 'learndash' ), 'date' => esc_html__( 'Date', 'learndash' ), 'menu_order' => esc_html__( 'Menu Order', 'learndash' ), ), 'default' => '', 'help_text' => sprintf( esc_html_x( 'Choose the sort order of %1$s in this %2$s.', 'Choose the sort order of lessons in this course.', 'learndash' ), learndash_get_custom_label_lower('lessons'), learndash_get_custom_label_lower('course') ), 'show_in_rest' => false, //LearnDash_REST_API::enabled(), ), 'course_lesson_order' => array( 'name' => sprintf( esc_html_x( 'Sort %s Direction', 'Sort Lesson Direction Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'type' => 'select', 'initial_options' => array( '' => esc_html__( 'Use Default', 'learndash' ) . ' ( '. $course_lessons_options_labels['order'] .' )', 'ASC' => esc_html__( 'Ascending', 'learndash' ), 'DESC' => esc_html__( 'Descending', 'learndash' ), ), 'default' => '', 'help_text' => sprintf( esc_html_x( 'Choose the sort order of %1$s in this %2$s.', 'Choose the sort order of lessons in this course.', 'learndash' ), learndash_get_custom_label_lower('lessons'), learndash_get_custom_label_lower('course' ) ), 'show_in_rest' => false, //LearnDash_REST_API::enabled(), ), 'course_lesson_per_page' => array( 'name' => sprintf( esc_html_x( '%s Per Page', 'placeholder: Lessons', 'learndash' ), LearnDash_Custom_Label::get_label( 'lessons' ) ), 'type' => 'select', 'initial_options' => array( '' => esc_html__( 'Use Default', 'learndash' ) . ' ( '. LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_Lessons_Display_Order', 'posts_per_page' ) . ' )', 'CUSTOM' => esc_html__( 'Custom', 'learndash' ), ), 'default' => '', 'help_text' => sprintf( esc_html_x( 'Choose the per page of %s in this %s.', 'Choose the per page of lessons in this course.', 'learndash' ), learndash_get_custom_label_lower('lessons'), learndash_get_custom_label_lower('course')), 'show_in_rest' => false, ), 'course_lesson_per_page_custom' => array( 'name' => sprintf( esc_html_x( 'Custom %s Per Page', 'Custom lessons per page', 'learndash' ), LearnDash_Custom_Label::get_label('lessons') ), 'type' => 'number', 'min' => '0', 'help_text' => sprintf( esc_html_x( 'Enter %s per page value. Set to zero for no paging', 'Enter lesson per page value. Set to zero for no paging', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'default' => 0, 'show_in_rest' => false, ), 'course_prerequisite_enabled' => array( 'name' => sprintf( esc_html_x( 'Enable %s Prerequisites', 'placeholder: Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'type' => 'checkbox', 'checked_value' => 'on', 'help_text' => esc_html__( 'Leave this field unchecked if prerequisite not used.', 'learndash' ), 'show_in_rest' => LearnDash_REST_API::enabled(), 'rest_args' => array( 'schema' => array( 'type' => 'boolean', 'default' => false, ) ) ), 'course_prerequisite' => array( 'name' => sprintf( esc_html_x( '%s Prerequisites', 'Course prerequisites Label', 'learndash' ),LearnDash_Custom_Label::get_label( 'course' ) ), 'type' => 'multiselect', 'help_text' => sprintf( esc_html_x( 'Select one or more %1$s as prerequisites to view this %2$s', 'Select one or more course as prerequisites to view this course', 'learndash' ), learndash_get_custom_label_lower('course'), learndash_get_custom_label_lower('course') ), 'lazy_load' => true, 'initial_options' => '', 'default' => '', 'show_in_rest' => LearnDash_REST_API::enabled(), 'rest_args' => array( 'schema' => array( 'default' => array(), 'type' => 'array', ) ) ), 'course_prerequisite_compare' => array( 'name' => sprintf( esc_html_x( '%s Prerequisites Compare', 'Course Prerequisites Compare Label', 'learndash' ),LearnDash_Custom_Label::get_label( 'course' ) ), 'type' => 'select', 'initial_options' => array( 'ANY' => esc_html__( 'ANY (default) - The student must complete at least one of the prerequisites', 'learndash' ), 'ALL' => esc_html__( 'ALL - The student must complete all the prerequisites', 'learndash' ), ), 'default' => 'ANY', 'help_text' => sprintf( esc_html_x( 'Select how to compare the selected prerequisite %s.', 'pleaceholder: Course', 'learndash' ),learndash_get_custom_label_lower('course') ), 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'course_points_enabled' => array( 'name' => sprintf( esc_html_x( 'Enable %s Points', 'placeholder: Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'type' => 'checkbox', 'help_text' => esc_html__( 'Leave this field unchecked if points not used.', 'learndash' ), 'show_in_rest' => LearnDash_REST_API::enabled(), 'rest_args' => array( 'schema' => array( 'type' => 'boolean', ) ) ), 'course_points' => array( 'name' => sprintf( esc_html_x( '%s Points', 'Course Points', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'type' => 'number', 'step' => 'any', 'min' => '0', 'help_text' => sprintf( esc_html_x( 'Enter the number of points a user will receive for this %s.', 'placeholder: course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'course_points_access' => array( 'name' => sprintf( esc_html_x( '%s Points Access', 'Course Points Access', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'type' => 'number', 'step' => 'any', 'min' => '0', 'help_text' => sprintf( esc_html_x( 'Enter the number of points a user must have to access this %s.', 'placeholder: course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'course_disable_lesson_progression' => array( 'name' => sprintf( esc_html_x( 'Disable %s Progression', 'Disable Lesson Progression Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'type' => 'checkbox', 'default' => 0, 'help_text' => sprintf( esc_html_x( 'Disable the feature that allows attempting %s only in allowed order.', 'Disable the feature that allows attempting lessons only in allowed order.', 'learndash' ), learndash_get_custom_label_lower('lessons') ), 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'expire_access' => array( 'name' => esc_html__( 'Expire Access', 'learndash' ), 'type' => 'checkbox', 'help_text' => esc_html__( 'Leave this field unchecked if access never expires.', 'learndash' ), 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'expire_access_days' => array( 'name' => esc_html__( 'Expire Access After (days)', 'learndash' ), 'type' => 'number', 'min' => '0', 'help_text' => sprintf( esc_html_x( 'Enter the number of days a user has access to this %s.', 'Enter the number of days a user has access to this course.', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'expire_access_delete_progress' => array( 'name' => sprintf( esc_html_x( 'Delete %1$s and %2$s Data After Expiration', 'Delete Course and Quiz Data After Expiration Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ), LearnDash_Custom_Label::get_label( 'quiz' ) ), 'type' => 'checkbox', 'help_text' => sprintf( esc_html_x( "Select this option if you want the user's %s progress to be deleted when their access expires.", 'placeholder: course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'course_disable_content_table' => array( 'name' => sprintf( esc_html_x( 'Hide %s Content Table', 'Hide Course Content Table Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'type' => 'checkbox', 'default' => 0, 'help_text' => sprintf( esc_html_x( 'Hide %s Content table when user is not enrolled.', 'Hide Course Content table when user is not enrolled.', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'show_in_rest' => false, //LearnDash_REST_API::enabled(), ), 'certificate' => array( 'name' => esc_html__( 'Associated Certificate', 'learndash' ), 'type' => 'select', 'help_text' => sprintf( esc_html_x( 'Select a certificate to be awarded upon %s completion (optional).', 'Select a certificate to be awarded upon course completion (optional).', 'learndash' ), learndash_get_custom_label_lower('course') ), 'default' => '', 'show_in_rest' => false, //LearnDash_REST_API::enabled(), ), ), ), 'sfwd-lessons' => array( 'plugin_name' => LearnDash_Custom_Label::get_label( 'lesson' ), 'slug_name' => LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_Permalinks', 'lessons' ), 'post_type' => 'sfwd-lessons', 'template_redirect' => true, 'taxonomies' => $lesson_taxonomies, 'cpt_options' => array( 'has_archive' => learndash_post_type_has_archive( 'sfwd-lessons' ), 'supports' => array_merge( array( 'title', 'editor', 'author', 'page-attributes' ), LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Lessons_CPT', 'supports' ) ), 'labels' => $lesson_labels , 'capability_type' => 'course', 'exclude_from_search' => (LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Lessons_CPT', 'include_in_search' ) !== 'yes' ) ? true : false, 'capabilities' => $course_capabilities, 'map_meta_cap' => true, 'show_in_rest' => LearnDash_REST_API::enabled( 'sfwd-lessons' ) || LearnDash_REST_API::gutenberg_enabled( 'sfwd-lessons' ), //'rest_base' => LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_Permalinks', 'lessons' ), 'rest_controller_class' => LearnDash_REST_API::get_controller( 'sfwd-lessons' ), ), 'options_page_title' => sprintf( // translators: placeholder: Lesson. esc_html_x( 'LearnDash %s Settings', 'placeholder: Lesson', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'fields' => array( 'lesson_materials' => array( 'name' => sprintf( esc_html_x( '%s Materials', 'Lesson Materials Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'type' => 'textarea', 'help_text' => sprintf( esc_html_x( 'Options for %s materials', 'Options for lesson materials', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'show_in_rest' => LearnDash_REST_API::enabled(), 'rest_args' => array( 'schema' => array( 'type' => 'html' ) ) ), 'course' => array( 'name' => sprintf( esc_html_x( 'Associated %s', 'Associated Course Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'type' => 'select', 'lazy_load' => true, 'help_text' => sprintf( esc_html_x( 'Associate this %1$s with a %2$s.', 'Associate this lesson with a course.', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'default' => '' , 'required' => true, 'show_in_rest' => false, //LearnDash_REST_API::enabled(), ), 'forced_lesson_time' => array( 'name' => sprintf( esc_html_x( 'Forced %s Timer', 'Forced Lesson Timer Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'type' => 'text', 'help_text' => sprintf( esc_html_x( 'Minimum time a user has to spend on %s page before it can be marked complete. Examples: 40 (for 40 seconds), 20s, 45sec, 2m 30s, 2min 30sec, 1h 5m 10s, 1hr 5min 10sec', 'placeholder: Lesson', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'default' => '', 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'lesson_assignment_upload' => array( 'name' => esc_html__( 'Upload Assignment', 'learndash' ), 'type' => 'checkbox', 'help_text' => esc_html__( 'Check this if you want to make it mandatory to upload assignment', 'learndash' ), 'default' => 0, 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'auto_approve_assignment' => array( 'name' => esc_html__( 'Auto Approve Assignment', 'learndash' ), 'type' => 'checkbox', 'help_text' => esc_html__( 'Check this if you want to auto-approve the uploaded assignment', 'learndash' ), 'default' => 'on', 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'assignment_upload_limit_count' => array( 'name' => esc_html__( 'Limit number of uploaded files', 'learndash' ), 'type' => 'number', 'placeholder' => esc_html__('Default is 1', 'learndash' ), 'help_text' => esc_html__( 'Enter the maximum number of assignment uploads allowed. Default is 1. Use 0 to unlimited.', 'learndash' ), 'default' => '1', 'class' => 'small-text', 'min' => '1', 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'lesson_assignment_deletion_enabled' => array( 'name' => esc_html__( 'Allow Student to Delete own Assignment(s)', 'learndash' ), 'type' => 'checkbox', 'help_text' => esc_html__( 'Allow Student to Delete own Assignment(s)', 'learndash' ), 'default' => 0, 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'lesson_assignment_points_enabled' => array( 'name' => esc_html__( 'Award Points for Assignment', 'learndash' ), 'type' => 'checkbox', 'help_text' => esc_html__( 'Allow this assignment to be assigned points when it is approved.', 'learndash' ), 'default' => 0, 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'lesson_assignment_points_amount' => array( 'name' => esc_html__( 'Set Number of Points for Assignment', 'learndash' ), 'type' => 'number', 'min' => 0, 'help_text' => esc_html__( 'Assign the max amount of points someone can earn for this assignment.', 'learndash' ), 'default' => 0, 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'assignment_upload_limit_extensions' => array( 'name' => esc_html__( 'Allowed File Extensions', 'learndash' ), 'type' => 'text', 'placeholder' => esc_html__('Example: pdf, xls, zip', 'learndash' ), 'help_text' => esc_html__( 'Enter comma-separated list of allowed file extensions: pdf, xls, zip or leave blank for any.', 'learndash' ), 'default' => '', 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'assignment_upload_limit_size' => array( 'name' => esc_html__( 'Allowed File Size', 'learndash' ), 'type' => 'text', 'placeholder' => sprintf( esc_html_x('Maximum upload file size: %s', 'placeholder: PHP file upload size', 'learndash'), ini_get('upload_max_filesize') ), 'help_text' => sprintf( esc_html_x( 'Enter maximim file upload size. Example: 100KB, 2M, 2MB, 1G. Maximum upload file size: %s', 'placeholder: PHP file upload size', 'learndash' ), ini_get('upload_max_filesize') ), 'default' => '', 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'sample_lesson' => array( 'name' => sprintf( esc_html_x( 'Sample %s', 'placeholder: Lesson', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'type' => 'checkbox', 'help_text' => sprintf( esc_html_x( 'Check this if you want this %1$s and all its %2$s to be available for free.', 'Check this if you want this lesson and all its topics to be available for free.', 'learndash' ), learndash_get_custom_label_lower('lesson'), learndash_get_custom_label_lower('topics') ), 'default' => 0, ), 'visible_after' => array( 'name' => sprintf( esc_html_x( 'Make %s visible X Days After Sign-up', 'Make Lesson Visible X Days After Sign-up', 'learndash' ), LearnDash_Custom_Label::get_label('lesson') ), 'type' => 'number', 'class' => 'small-text', 'min' => '0', 'help_text' => sprintf( esc_html_x( 'Make %s visible ____ days after sign-up', 'Make lesson visible ____ days after sign-up', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'default' => 0, 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'visible_after_specific_date' => array( 'name' => sprintf( esc_html_x( 'Make %s Visible on Specific Date', 'Make Lesson Visible on Specific Date', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'type' => 'wp_date_selector', 'class' => 'learndash-datepicker-field', 'help_text' => sprintf( esc_html_x( 'Set the date that you would like this %s to become available.', 'Set the date that you would like this lesson to become available.','learndash' ), learndash_get_custom_label_lower('lesson') ), 'show_in_rest' => LearnDash_REST_API::enabled(), ), ), /* The Lesson default_options section has been depricated and replace with the new Settings Section LearnDash_Settings_Section_Lessons_Display_Order class */ /* 'default_options' => array( 'orderby' => array( 'name' => esc_html__( 'Sort By', 'learndash' ), 'type' => 'select', 'initial_options' => array( '' => esc_html__( 'Select a choice...', 'learndash' ), 'title' => esc_html__( 'Title', 'learndash' ), 'date' => esc_html__( 'Date', 'learndash' ), 'menu_order' => esc_html__( 'Menu Order', 'learndash' ), ), 'default' => 'date', 'help_text' => esc_html__( 'Choose the sort order.', 'learndash' ), ), 'order' => array( 'name' => esc_html__( 'Sort Direction', 'learndash' ), 'type' => 'select', 'initial_options' => array( '' => esc_html__( 'Select a choice...', 'learndash' ), 'ASC' => esc_html__( 'Ascending', 'learndash' ), 'DESC' => esc_html__( 'Descending', 'learndash' ), ), 'default' => 'DESC', 'help_text' => esc_html__( 'Choose the sort order.', 'learndash' ), ), 'posts_per_page' => array( 'name' => esc_html__( 'Posts Per Page', 'learndash' ), 'type' => 'text', 'help_text' => esc_html__( 'Enter the number of posts to display per page.', 'learndash' ), 'default' => $posts_per_page, ), ) */ ), 'sfwd-topic' => array( 'plugin_name' => sprintf( esc_html_x( '%1$s %2$s', 'Lesson Topic Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ), LearnDash_Custom_Label::get_label( 'topic' ) ), 'slug_name' => LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_Permalinks', 'topics' ), 'post_type' => 'sfwd-topic', 'template_redirect' => true, 'taxonomies' => $topic_taxonomies, //array( 'courses' => esc_html__( 'Manage Course Associations', 'learndash' ) ), 'cpt_options' => array( 'supports' => array_merge( array( 'title', 'editor', 'author', 'page-attributes' ), LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Topics_CPT', 'supports' ) ), 'has_archive' => learndash_post_type_has_archive( 'sfwd-topic' ), 'labels' => $lesson_topic_labels, 'capability_type' => 'course', 'exclude_from_search' => (LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Topics_CPT', 'include_in_search' ) !== 'yes' ) ? true : false, 'capabilities' => $course_capabilities, 'map_meta_cap' => true, 'show_in_rest' => LearnDash_REST_API::enabled( 'sfwd-topic' ) || LearnDash_REST_API::gutenberg_enabled( 'sfwd-topic' ), //'rest_base' => LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_Permalinks', 'topics' ), 'rest_controller_class' => LearnDash_REST_API::get_controller( 'sfwd-topic' ), ), 'options_page_title' => sprintf( // translators: placeholder: Topic. esc_html_x( 'LearnDash %s Settings', 'placeholder: Topic', 'learndash' ), LearnDash_Custom_Label::get_label( 'topic' ) ), 'fields' => array( 'topic_materials' => array( 'name' => sprintf( esc_html_x( '%s Materials', 'Topic Materials Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'topic' ) ), 'type' => 'textarea', 'help_text' => sprintf( esc_html_x( 'Options for %s materials', 'Options for topic materials', 'learndash' ), LearnDash_Custom_Label::get_label( 'topic' ) ), 'show_in_rest' => LearnDash_REST_API::enabled(), 'rest_args' => array( 'schema' => array( 'type' => 'html' ) ) ), 'course' => array( 'name' => sprintf( esc_html_x( 'Associated %s', 'Associated Course Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'type' => 'select', 'lazy_load' => true, 'help_text' => sprintf( esc_html_x( 'Associate this %s with a %s.', 'placeholders: topic, course', 'learndash' ), LearnDash_Custom_Label::get_label( 'topic' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'default' => '', //'initial_options' => $this->select_a_course( 'sfwd-topic' ), // Move to topic_display_settings 'show_in_rest' => false, //LearnDash_REST_API::enabled(), ), 'lesson' => array( 'name' => sprintf( esc_html_x( 'Associated %s', 'Associated Lesson Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'type' => 'select', 'lazy_load' => true, 'help_text' => sprintf( esc_html_x( 'Associate this %1$s with a %2$s.', 'Associate this topic with a lesson.', 'learndash' ), LearnDash_Custom_Label::get_label('topic'), LearnDash_Custom_Label::get_label('lesson') ), 'default' => '' , //'initial_options' => $this->select_a_lesson(), // // Move to topic_display_settings 'show_in_rest' => false, //LearnDash_REST_API::enabled(), ), 'forced_lesson_time' => array( 'name' => sprintf( esc_html_x( 'Forced %s Timer', 'Forced Topic Timer Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'topic' ) ), 'type' => 'text', 'help_text' => sprintf( esc_html_x( 'Minimum time a user has to spend on %s page before it can be marked complete. Examples: 40 (for 40 seconds), 20s, 45sec, 2m 30s, 2min 30sec, 1h 5m 10s, 1hr 5min 10sec', 'Minimum time a user has to spend on Topic page Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'topic' ) ), 'default' => '', 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'lesson_assignment_upload' => array( 'name' => esc_html__( 'Upload Assignment', 'learndash' ), 'type' => 'checkbox', 'help_text' => esc_html__( 'Check this if you want to make it mandatory to upload assignment', 'learndash' ), 'default' => 0, 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'auto_approve_assignment' => array( 'name' => esc_html__( 'Auto Approve Assignment', 'learndash' ), 'type' => 'checkbox', 'help_text' => esc_html__( 'Check this if you want to auto-approve the uploaded assignment', 'learndash' ), 'default' => 'on', 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'assignment_upload_limit_count' => array( 'name' => esc_html__( 'Limit number of uploaded files', 'learndash' ), 'type' => 'number', 'placeholder' => esc_html__('Default is 1', 'learndash' ), 'help_text' => esc_html__( 'Enter the maximum number of assignment uploads allowed. Default is 1. Use 0 to unlimited.', 'learndash' ), 'default' => '1', 'show_in_rest' => LearnDash_REST_API::enabled(), 'class' => 'small-text', 'min' => '1', ), 'lesson_assignment_deletion_enabled' => array( 'name' => esc_html__( 'Allow Student to Delete own Assignment(s)', 'learndash' ), 'type' => 'checkbox', 'help_text' => esc_html__( 'Allow Student to Delete own Assignment(s)', 'learndash' ), 'default' => 0, ), 'lesson_assignment_points_enabled' => array( 'name' => esc_html__( 'Award Points for Assignment', 'learndash' ), 'type' => 'checkbox', 'help_text' => esc_html__( 'Allow this assignment to be assigned points when it is approved.', 'learndash' ), 'default' => 0, 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'lesson_assignment_points_amount' => array( 'name' => esc_html__( 'Set Number of Points for Assignment', 'learndash' ), 'type' => 'number', 'min' => 0, 'help_text' => esc_html__( 'Assign the max amount of points someone can earn for this assignment.', 'learndash' ), 'default' => 0, 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'assignment_upload_limit_extensions' => array( 'name' => esc_html__( 'Allowed File Extensions', 'learndash' ), 'type' => 'text', 'placeholder' => esc_html__('Example: pdf,xls,zip', 'learndash' ), 'help_text' => esc_html__( 'Enter comma-separated list of allowed file extensions: pdf,xls,zip or leave blank for any.', 'learndash' ), 'default' => '', 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'assignment_upload_limit_size' => array( 'name' => esc_html__( 'Allowed File Size', 'learndash' ), 'type' => 'text', 'placeholder' => sprintf( esc_html_x('Maximum upload file size: %s', 'placeholder: PHP file upload size', 'learndash'), ini_get('upload_max_filesize') ), 'help_text' => sprintf( esc_html_x( 'Enter maximim file upload size. Example: 100KB, 2M, 2MB, 1G. Maximum upload file size: %s', 'placeholder: PHP file upload size', 'learndash' ), ini_get('upload_max_filesize') ), 'default' => '', 'show_in_rest' => LearnDash_REST_API::enabled(), ), // 'visible_after' => array( // 'name' => esc_html__( 'Make lesson visible X days after sign-up', 'learndash' ), // 'type' => 'text', // 'help_text' => esc_html__( 'Make lesson visible ____ days after sign-up', 'learndash' ), // 'default' => 0, // ), ), 'default_options' => array( 'orderby' => array( 'name' => esc_html__( 'Sort By', 'learndash' ), 'type' => 'select', 'initial_options' => array( '' => esc_html__( 'Select a choice...', 'learndash' ), 'title' => esc_html__( 'Title', 'learndash' ), 'date' => esc_html__( 'Date', 'learndash' ), 'menu_order' => esc_html__( 'Menu Order', 'learndash' ), ), 'default' => 'date', 'help_text' => esc_html__( 'Choose the sort order.', 'learndash' ), ), 'order' => array( 'name' => esc_html__( 'Sort Direction', 'learndash' ), 'type' => 'select', 'initial_options' => array( '' => esc_html__( 'Select a choice...', 'learndash' ), 'ASC' => esc_html__( 'Ascending', 'learndash' ), 'DESC' => esc_html__( 'Descending', 'learndash' ), ), 'default' => 'DESC', 'help_text' => esc_html__( 'Choose the sort order.', 'learndash' ), ), ), ), 'sfwd-quiz' => array( 'plugin_name' => LearnDash_Custom_Label::get_label( 'quiz' ), 'slug_name' => LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_Permalinks', 'quizzes' ), 'post_type' => 'sfwd-quiz', 'template_redirect' => true, 'taxonomies' => $quiz_taxonomies /*array( 'category' => 'category', 'post_tag' =>'post_tag' ) */, 'cpt_options' => array( 'has_archive' => learndash_post_type_has_archive( 'sfwd-quiz' ), 'hierarchical' => false, 'supports' => array_merge( array( 'title', 'editor', 'author', 'page-attributes' ), LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Quizzes_CPT', 'supports' ) ), 'labels' => $quiz_labels, 'capability_type' => 'course', 'exclude_from_search' => (LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Quizzes_CPT', 'include_in_search' ) !== 'yes' ) ? true : false, 'capabilities' => $course_capabilities, 'map_meta_cap' => true, 'show_in_rest' => LearnDash_REST_API::enabled( 'sfwd-quiz' ) || LearnDash_REST_API::gutenberg_enabled( 'sfwd-quiz' ), //'rest_base' => LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_Permalinks', 'quizzes' ), 'rest_controller_class' => LearnDash_REST_API::get_controller( 'sfwd-quiz' ), ), 'options_page_title' => sprintf( // translators: placeholder: Quiz. esc_html_x( 'LearnDash %s Settings', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ), 'fields' => array( 'quiz_materials' => array( 'name' => sprintf( esc_html_x( '%s Materials', 'Quiz Materials Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ), 'type' => 'textarea', 'help_text' => sprintf( esc_html_x( 'Options for %s materials', 'Options for quiz materials', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ), 'show_in_rest' => LearnDash_REST_API::enabled(), 'rest_args' => array( 'schema' => array( 'type' => 'html' ) ) ), 'repeats' => array( 'name' => esc_html__( 'Repeats', 'learndash' ), 'type' => 'text', 'help_text' => sprintf( esc_html_x( 'Number of repeats allowed for %s. Blank = unlimited attempts. 0 = 1 attempt, 1 = 2 attempts, etc.', 'Number of repeats allowed for quiz', 'learndash' ), learndash_get_custom_label_lower('quiz') ), 'default' => '', ), 'threshold' => array( 'name' => esc_html__( 'Certificate Threshold', 'learndash' ), 'type' => 'text', 'help_text' => esc_html__( 'Minimum score required to award a certificate, between 0 and 1 where 1 = 100%.', 'learndash' ), 'default' => '0.8', 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'passingpercentage' => array( 'name' => esc_html__( 'Passing Percentage', 'learndash' ), 'type' => 'text', 'help_text' => sprintf( esc_html_x( 'Passing percentage required to pass the %s (number only). e.g. 80 for 80%%.', 'Passing percentage required to pass the quiz (number only). e.g. 80 for 80%.', 'learndash' ), learndash_get_custom_label_lower('quiz') ), 'default' => '80', 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'course' => array( 'name' => sprintf( esc_html_x( 'Associated %s', 'Associated Course Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'type' => 'select', 'lazy_load' => true, 'help_text' => sprintf( esc_html_x( 'Associate this %s with a %s.', 'Associate this %s with a course.', 'learndash' ), LearnDash_Custom_Label::get_label('quiz'), LearnDash_Custom_Label::get_label('course') ), 'default' => '', //'initial_options' => $this->select_a_course( 'sfwd-quiz' ), // Move to quiz_display_settings ), 'lesson' => array( 'name' => sprintf( esc_html_x( 'Associated %s', 'Associated Lesson Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'type' => 'select', 'help_text' => sprintf( esc_html_x( 'Associate this %s with a %s.', 'Associate this quiz with a lesson.', 'learndash' ), LearnDash_Custom_Label::get_label('quiz'), LearnDash_Custom_Label::get_label('lesson') ), 'default' => '', ), 'certificate' => array( 'name' => esc_html__( 'Associated Certificate', 'learndash' ), 'type' => 'select', 'help_text' => sprintf( esc_html_x( 'Optionally associate a %s with a certificate.', 'Optionally associate a quiz with a certificate.', 'learndash' ), learndash_get_custom_label_lower('quiz') ), 'default' => '', 'show_in_rest' => LearnDash_REST_API::enabled(), ), 'quiz_pro' => array( 'name' => esc_html__( 'Associated Settings', 'learndash' ), 'type' => 'select', 'help_text' => sprintf( esc_html_x( 'If you imported a %s, use this field to select it. Otherwise, create new settings below. After saving or publishing, you will be able to add questions.', 'If you imported a quiz, use this field to select it. Otherwise, create new settings below. After saving or publishing, you will be able to add questions.', 'learndash' ), learndash_get_custom_label_lower('quiz') ) . '', //'initial_options' => ( array( 0 => esc_html__( '-- Select Settings --', 'learndash' ) ) + LD_QuizPro::get_quiz_list() ), // Move to quiz_display_settings 'default' => '', ), ), /* 'metaboxes' => array( 'learndash_quiz_advanced' => array( 'title' => sprintf( // translators: placeholder: Quiz. esc_html_x( 'LearnDash %s Advanced Settings', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ), 'fields' => array( 'course_prerequisite_enabled' => array( 'name' => sprintf( // translators: placeholder: Course. esc_html_x( 'Enable %s Prerequisites', 'placeholder: Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'type' => 'checkbox', 'checked_value' => 'on', 'help_text' => esc_html__( 'Leave this field unchecked if prerequisite not used.', 'learndash' ), 'show_in_rest' => LearnDash_REST_API::enabled(), 'rest_args' => array( 'schema' => array( 'type' => 'boolean', 'default' => false, ), ) ), ), ), ), */ 'default_options' => array() ), 'sfwd-question' => array( 'plugin_name' => LearnDash_Custom_Label::get_label( 'question' ), 'slug_name' => 'sfwd-question', //LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_Permalinks', 'questions' ), 'post_type' => 'sfwd-question', 'template_redirect' => false, 'taxonomies' => $question_taxonomies, 'cpt_options' => array( 'public' => false, 'hierarchical' => false, 'supports' => array( 'title', 'thumbnail', 'editor' , 'author', 'revisions', 'page-attributes' ), 'labels' => $question_labels, 'capability_type' => 'course', 'exclude_from_search' => true, 'show_in_nav_menus' => false, 'capabilities' => $course_capabilities, 'map_meta_cap' => true, 'show_in_rest' => true, //LearnDash_REST_API::enabled( 'sfwd-question' ) || LearnDash_REST_API::gutenberg_enabled( 'sfwd-question' ), //'rest_base' => LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_Permalinks', 'quizzes' ), 'rest_controller_class' => LearnDash_REST_API::get_controller( 'sfwd-question' ), ), 'options_page_title' => sprintf( // translators: placeholder: Question esc_html_x( 'LearnDash %s Settings', 'placeholder: Question', 'learndash' ), LearnDash_Custom_Label::get_label( 'Question' ) ), 'fields' => array( 'quiz' => array( 'name' => sprintf( esc_html_x( 'Associated %s', 'Associated Quiz Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ), 'type' => 'select', 'lazy_load' => true, 'help_text' => sprintf( esc_html_x( 'Associate this %1$s with a %2$s.', 'Associate this question with a quiz.', 'learndash' ), LearnDash_Custom_Label::get_label( 'question' ), LearnDash_Custom_Label::get_label( 'quiz' ) ), 'default' => '' , 'required' => true, 'show_in_rest' => false, //LearnDash_REST_API::enabled(), ), ), 'default_options' => array() ), ); $cert_defaults = array( 'shortcode_options' => array( 'name' => 'Shortcode Options', 'type' => 'html', 'default' => '', 'save' => false, 'label' => 'none', ), ); $lcl_certificates = 'Certificates'; $lcl_certificate = 'Certificate'; $certificates_labels = array( 'name' => $lcl_certificates, 'singular_name' => $lcl_certificate, 'add_new' => esc_html_x( 'Add New', 'Add New Certificate Label', 'learndash' ), 'add_new_item' => sprintf( esc_html_x( 'Add New %s', 'Add New Certificate Label', 'learndash' ), $lcl_certificate ), 'edit_item' => sprintf( esc_html_x( 'Edit %s', 'Edit Certificate Label', 'learndash' ), $lcl_certificate ), 'new_item' => sprintf( esc_html_x( 'New %s', 'New Certificate Label', 'learndash' ), $lcl_certificate ), 'all_items' => $lcl_certificates, 'view_item' => sprintf( esc_html_x( 'View %s', 'View Certificate Label', 'learndash' ), $lcl_certificate ), 'search_items' => sprintf( esc_html_x( 'Search %s', 'Search Certificate Label', 'learndash' ), $lcl_certificate ), 'not_found' => sprintf( esc_html_x( 'No %s found', 'No Certificate found Label', 'learndash' ), $lcl_certificate ), 'not_found_in_trash' => sprintf( esc_html_x( 'No %s found in Trash', 'No Certificates found in Trash Label', 'learndash' ), $lcl_certificates ), 'parent_item_colon' => '', 'menu_name' => $lcl_certificates, 'item_published' => sprintf( esc_html_x( '%s Published', 'Certificate Published', 'learndash' ), $lcl_certificate ), 'item_published_privately' => sprintf( esc_html_x( '%s Published Privately', 'Certificate Published Privately', 'learndash' ), $lcl_certificate ), 'item_reverted_to_draft' => sprintf( esc_html_x( '%s Reverted to Draft', 'Certificate Reverted to Draft', 'learndash' ), $lcl_certificate ), 'item_scheduled' => sprintf( esc_html_x( '%s Scheduled', 'Certificate Scheduled', 'learndash' ), $lcl_certificate ), 'item_updated' => sprintf( esc_html_x( '%s Updated', 'Certificate Updated', 'learndash' ), $lcl_certificate ), ); $this->post_args['sfwd-certificates'] = array( 'plugin_name' => esc_html__( 'Certificates', 'learndash' ), 'slug_name' => 'certificates', 'post_type' => 'sfwd-certificates', 'template_redirect' => false, 'fields' => array(), 'options_page_title' => esc_html__( 'LearnDash Certificates Options', 'learndash' ), 'default_options' => $cert_defaults, 'cpt_options' => array( 'labels' => $certificates_labels, 'exclude_from_search' => true, 'has_archive' => false, 'hierarchical' => false, 'supports' => array( 'title', 'editor', 'thumbnail' , 'author', 'revisions'), 'show_in_nav_menus' => false, 'capability_type' => 'course', 'capabilities' => $course_capabilities, 'map_meta_cap' => true, 'show_in_rest' => false, //LearnDash_REST_API::enabled(), //'rest_base' => LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_Permalinks', 'courses' ), //'rest_controller_class' => 'LD_REST_Posts_Certificates_Controller_V1' ) ); if ( learndash_is_admin_user( ) ) { $this->post_args['sfwd-transactions'] = array( 'plugin_name' => esc_html__( 'Transactions', 'learndash' ), 'slug_name' => 'transactions', 'post_type' => 'sfwd-transactions', 'template_redirect' => false, 'options_page_title' => esc_html__( 'LearnDash Transactions Options', 'learndash' ), 'cpt_options' => array( 'supports' => array ( 'title', 'custom-fields' ), 'exclude_from_search' => true, 'publicly_queryable' => false, 'show_in_nav_menus' => false, 'show_in_admin_bar' => false, //'show_in_menu' => 'edit.php?post_type=sfwd-courses' ), 'fields' => array(), 'default_options' => array( null => array( 'type' => 'html', 'save' => false, 'default' => esc_html__( 'Click the Export button below to export the transaction list.', 'learndash' ), ) ) ); add_action( 'admin_init', array( $this, 'trans_export_init' ) ); } // Added in v2.5.4 to hide the lesson, topic and quiz post type from nav menu when shared steps enabed. if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $this->post_args['sfwd-lessons']['cpt_options']['show_in_nav_menus'] = false; $this->post_args['sfwd-topic']['cpt_options']['show_in_nav_menus'] = false; $this->post_args['sfwd-quiz']['cpt_options']['show_in_nav_menus'] = false; } if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { if ( isset( $this->post_args['sfwd-courses']['fields']['course_lesson_orderby'] ) ) unset( $this->post_args['sfwd-courses']['fields']['course_lesson_orderby'] ); if ( isset( $this->post_args['sfwd-courses']['fields']['course_lesson_order'] ) ) unset( $this->post_args['sfwd-courses']['fields']['course_lesson_order'] ); } // Remove the filter to prevent Course Grid from adding a 'Short Description' field to the legacy metabox. // See CG-118 remove_filter( 'learndash_post_args', 'learndash_course_grid_post_args' ); /** * Filter $post_args used to create the custom post types and everything * associated with them. * * @since 2.1.0 * * @param array $post_args */ $this->post_args = apply_filters( 'learndash_post_args', $this->post_args ); add_action( 'admin_init', array( $this, 'quiz_export_init' ) ); add_action( 'admin_init', array( $this, 'course_export_init' ) ); //add_action( 'show_user_profile', array( $this, 'show_course_info' ) ); //add_action( 'edit_user_profile', array( $this, 'show_course_info' ) ); foreach ( $this->post_args as $p ) { $this->post_types[ $p['post_type'] ] = new SFWD_CPT_Instance( $p ); } //add_action( 'publish_sfwd-courses', array( $this, 'add_course_tax_entry' ), 10, 2 ); add_action( 'init', array( $this, 'tax_registration' ), 11 ); //$sfwd_quiz = $this->post_types['sfwd-quiz']; //$quiz_prefix = $sfwd_quiz->get_prefix(); //add_filter( "{$quiz_prefix}display_settings", array( $this, 'quiz_display_settings' ), 10, 3 ); $sfwd_question = $this->post_types['sfwd-question']; $question_prefix = $sfwd_question->get_prefix(); add_filter( "{$question_prefix}display_settings", array( $this, 'question_display_settings' ), 10, 3 ); //$sfwd_courses = $this->post_types['sfwd-courses']; //$courses_prefix = $sfwd_courses->get_prefix(); //add_filter( "{$courses_prefix}display_settings", array( $this, 'course_display_settings' ), 10, 3 ); //$sfwd_lessons = $this->post_types['sfwd-lessons']; //$lessons_prefix = $sfwd_lessons->get_prefix(); //add_filter( "{$lessons_prefix}display_settings", array( $this, 'lesson_display_settings' ), 10, 3 ); //$sfwd_topics = $this->post_types['sfwd-topic']; //$topics_prefix = $sfwd_topics->get_prefix(); //add_filter( "{$topics_prefix}display_settings", array( $this, 'topic_display_settings' ), 10, 3 ); } /** * Returns output of users course information for bottom of profile * * @since 2.1.0 * * @param int $user_id user id * @return string output of course information */ static function get_course_info( $user_id, $atts = array() ) { $atts_defaults = apply_filters( 'learndash_ld_course_list_shortcode_defaults', array( 'return' => false, // Set to true to return the array data nstead of calling the template for output. // This function essentially produces the output of three sections. Registered Courses, // Course Progress and Quiz Attempts. This parameters lets us control which section to // return or all. 'type' => array('registered','course','quiz' ), // Defaults 'num' => LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_General_Per_Page', 'per_page' ), 'orderby' => 'title', 'order' => 'ASC', //'course_ids' => null, //'quiz_ids' => null, 'group_id' => null, // Registered Courses 'registered_num' => false, 'registered_show_thumbnail' => 'true', 'registered_orderby' => 'title', 'registered_order' => 'ASC', // Course Progress 'progress_num' => false, 'progress_orderby' => 'title', 'progress_order' => 'ASC', // Quizzes 'quiz_num' => false, 'quiz_orderby' => 'taken', 'quiz_order' => 'DESC', ) ); $atts = shortcode_atts( $atts_defaults, $atts ); if ( !empty( $atts['type'] ) ) { if ( is_string( $atts['type'] ) ) { $atts['type'] = explode(',', $atts['type'] ); } $atts['type'] = array_map( 'trim', $atts['type'] ); } if ( !empty( $atts['group_id'] ) ) { $atts['course_ids'] = learndash_group_enrolled_courses( $atts['group_id'] ); $atts['quiz_ids'] = learndash_get_group_course_quiz_ids( $atts['group_id'] ); } else { $atts['course_ids'] = null; $atts['quiz_ids'] = null; } if ( !is_null( $atts['course_ids'] ) ) { if ( is_string( $atts['course_ids'] ) ) { $atts['course_ids'] = explode(',', $atts['course_ids'] ); } $atts['course_ids'] = array_map( 'trim', $atts['course_ids'] ); } if ( !is_null( $atts['quiz_ids'] ) ) { if ( is_string( $atts['quiz_ids'] ) ) { $atts['quiz_ids'] = explode(',', $atts['quiz_ids'] ); } $atts['quiz_ids'] = array_map( 'trim', $atts['quiz_ids'] ); } if ( !is_null( $atts['course_ids'] ) ) { $courses_registered_all = $atts['course_ids']; } else { $courses_registered_all = ld_get_mycourses( $user_id ); } $courses_registered = array(); $courses_registered_pager = array(); if ( in_array( 'registered', $atts['type'] ) ) { if ( empty( $atts['registered_show_thumbnail'] ) ) { $atts['registered_show_thumbnail'] = $atts_defaults['registered_show_thumbnail']; } if ( !empty( $courses_registered_all ) ) { if ( $atts['registered_num'] === false ) $atts['registered_num'] = intval( $atts_defaults['num'] ); else $atts['registered_num'] = intval( $atts['registered_num'] ); if ( ( !isset( $atts['registered_orderby'] ) ) || ( empty( $atts['registered_orderby'] ) ) ) $atts['registered_orderby'] = $atts_defaults['registered_orderby']; if ( ( !isset( $atts['registered_order'] ) ) || ( empty( $atts['registered_order'] ) ) ) $atts['registered_order'] = $atts_defaults['registered_order']; $courses_registered_query_args = array( 'post_type' => 'sfwd-courses', 'fields' => 'ids', 'orderby' => $atts['registered_orderby'], 'order' => $atts['registered_order'], 'post__in' => $courses_registered_all ); $courses_registered_per_page = apply_filters( 'learndash_course_info_per_page', intval( $atts['registered_num'] ), 'registered', $user_id, $atts ); if ( intval( $courses_registered_per_page ) > 0 ) { $courses_registered_query_args['posts_per_page'] = intval( $courses_registered_per_page ); $courses_registered_query_args['paged'] = apply_filters('learndash_course_info_paged', 1, 'registered' ); } else { $courses_registered_query_args['nopaging'] = true; } $courses_registered_query_args = apply_filters( 'learndash_course_info_query_args', $courses_registered_query_args, 'registered', $user_id, $atts ); if ( !empty( $courses_registered_query_args ) ) { $course_registered_query = new WP_Query( $courses_registered_query_args ); if ( ( isset( $course_registered_query->posts ) ) && ( !empty( $course_registered_query->posts ) ) ) { $courses_registered = $course_registered_query->posts; if ( isset( $course_registered_query->query_vars['paged'] ) ) $courses_registered_pager['paged'] = $course_registered_query->query_vars['paged']; else $courses_registered_pager['paged'] = $courses_registered_query_args['paged']; $courses_registered_pager['total_items'] = $course_registered_query->found_posts; $courses_registered_pager['total_pages'] = $course_registered_query->max_num_pages; } else { $courses_registered = array(); } } else { $courses_registered = array(); } } } $course_progress = array(); $course_progress_pager = array(); if ( in_array( 'course', $atts['type'] ) ) { $usermeta = get_user_meta( $user_id, '_sfwd-course_progress', true ); $course_progress = empty( $usermeta ) ? array() : $usermeta; if ( !is_null( $atts['course_ids'] ) ) { //$course_progress_ids = $atts['course_ids']; $course_progress_tmp = array(); foreach( $atts['course_ids'] as $course_id ) { if ( isset( $course_progress[ $course_id ] ) ) { $course_progress_tmp[ $course_id ] = $course_progress[ $course_id ]; } } $course_progress = $course_progress_tmp; $course_progress_ids = array_keys( $course_progress ); } else { //$usermeta = get_user_meta( $user_id, '_sfwd-course_progress', true ); //$course_progress = empty( $usermeta ) ? array() : $usermeta; $course_progress_ids = array_merge( $courses_registered_all, array_keys( $course_progress ) ); } // The course_info_shortcode.php template is driven be the $courses_registered array. // We want to make sure we show ALL the courses from both the $courses_registered and // the course_progress. Also we want to run through WP_Query so we can ensure they still // exist as valid posts AND we want to sort these alphs by title //$courses_registered = array_merge( $courses_registered, array_keys( $course_progress ) ); if ( !empty( $course_progress_ids ) ) { if ( $atts['progress_num'] === false ) $atts['progress_num'] = intval( $atts_defaults['num'] ); else $atts['progress_num'] = intval( $atts['progress_num'] ); if ( ( !isset( $atts['progress_orderby'] ) ) || ( empty( $atts['progress_orderby'] ) ) ) $atts['progress_orderby'] = $atts_defaults['progress_orderby']; if ( ( !isset( $atts['progress_order'] ) ) || ( empty( $atts['progress_order'] ) ) ) $atts['progress_order'] = $atts_defaults['progress_order']; $course_progress_query_args = array( 'post_type' => 'sfwd-courses', 'fields' => 'ids', 'orderby' => $atts['progress_orderby'], 'order' => $atts['progress_order'], 'post__in' => $course_progress_ids ); $courses_per_page = apply_filters( 'learndash_course_info_per_page', intval( $atts['progress_num'] ), 'courses', $user_id, $atts ); if ( intval( $courses_per_page ) > 0 ) { $course_progress_query_args['posts_per_page'] = intval( $courses_per_page ); $course_progress_query_args['paged'] = apply_filters('learndash_course_info_paged', 1, 'courses' ); } else { $course_progress_query_args['nopaging'] = true; } $course_progress_query_args = apply_filters( 'learndash_course_info_query_args', $course_progress_query_args, 'courses', $user_id, $atts ); if ( !empty( $course_progress_query_args ) ) { $course_progress_query = new WP_Query( $course_progress_query_args ); if ( ( isset( $course_progress_query->posts ) ) && ( !empty( $course_progress_query->posts ) ) ) { $course_p = $course_progress; $course_progress = array(); foreach( $course_progress_query->posts as $course_id ) { if ( isset( $course_p[$course_id] ) ) { $course_progress[$course_id] = $course_p[$course_id]; } else { $course_progress[$course_id] = array(); } } $course_progress_pager = array(); if ( isset( $course_progress_query->query_vars['paged'] ) ) $course_progress_pager['paged'] = $course_progress_query->query_vars['paged']; else $course_progress_pager['paged'] = $course_progress_query_args['paged']; $course_progress_pager['total_items'] = $course_progress_query->found_posts; $course_progress_pager['total_pages'] = $course_progress_query->max_num_pages; } } else { $course_progress = array(); $course_progress_pager = array(); } } } $quizzes = array(); $quizzes_pager = array(); if ( in_array( 'quiz', $atts['type'] ) ) { $usermeta = get_user_meta( $user_id, '_sfwd-quizzes', true ); $quizzes = empty( $usermeta ) ? false : $usermeta; // We need to re-query the quiz (posts). This is partly to validate the listing. We don't // want to pass old or outdated quiz items to externals. if ( !empty( $quizzes ) ) { if ( $atts['quiz_num'] === false ) $atts['quiz_num'] = intval( $atts_defaults['num'] ); else $atts['quiz_num'] = intval( $atts['quiz_num'] ); if ( ( !isset( $atts['quiz_orderby'] ) ) || ( empty( $atts['quiz_orderby'] ) ) ) $atts['quiz_orderby'] = $atts_defaults['quiz_orderby']; if ( ( !isset( $atts['quiz_order'] ) ) || ( empty( $atts['quiz_order'] ) ) ) $atts['quiz_order'] = $atts_defaults['quiz_order']; if ( !is_null( $atts['quiz_ids'] ) ) { $quiz_ids = $atts['quiz_ids']; } else { $quiz_ids = wp_list_pluck( $quizzes, 'quiz' ); } $quiz_total_query_args = array( 'post_type' => 'sfwd-quiz', 'fields' => 'ids', 'orderby' => 'title', //$atts['quiz_orderby'], 'order' => 'ASC', //$atts['quiz_order'], 'nopaging' => true, 'post__in' => $quiz_ids ); if ( $quiz_total_query_args['orderby'] == 'taken' ) { $quiz_total_query_args['orderby'] = 'title'; } $quiz_query = new WP_Query( $quiz_total_query_args ); if ( ( $quiz_query ) && ( !is_wp_error( $quiz_query ) ) && is_a( $quiz_query, 'WP_Query' ) ) { if ( ( property_exists( $quiz_query, 'posts' ) ) && ( !empty( $quiz_query->posts ) ) ) { $quizzes_tmp = array(); foreach( $quiz_query->posts as $post_idx => $quiz_id ) { foreach( $quizzes as $quiz_idx => $quiz_attempt ) { if ( $quiz_attempt['quiz'] == $quiz_id ) { if ( $atts['quiz_orderby'] == 'taken' ) { $quiz_key = $quiz_attempt['time'] .'-'. $quiz_attempt['quiz']; } else if ( $atts['quiz_orderby'] == 'title' ) { $quiz_key = $post_idx .'-'. $quiz_attempt['time']; } else if ( $atts['quiz_orderby'] == 'id' ) { $quiz_key = $quiz_attempt['quiz'] .'-'. $quiz_attempt['time']; } if ( !empty( $quiz_key ) ) { $quizzes_tmp[$quiz_key] = $quiz_attempt; unset( $quizzes[$quiz_idx] ); } } } } $quizzes = $quizzes_tmp; if ( $atts['quiz_order'] == 'DESC' ) krsort( $quizzes ); else ksort( $quizzes ); $quizzes_per_page = apply_filters( 'learndash_quiz_info_per_page', $atts['quiz_num'], 'quizzes', $user_id ); if ( $quizzes_per_page > 0 ) { $quizzes_pager['paged'] = apply_filters('learndash_quiz_info_paged', 1 ); $quizzes_pager['total_items'] = count( $quizzes ); $quizzes_pager['total_pages'] = ceil( count( $quizzes ) / $quizzes_per_page ); $quizzes = array_slice ( $quizzes, ( $quizzes_pager['paged'] * $quizzes_per_page ) - $quizzes_per_page, $quizzes_per_page, false ); } } } } } /** * Filter Courses and Quizzes is showing the Group Admin > Report page * IF we are viewing the group_admin_page we want to filter the Courses and Quizzes listing * to only include those items related to the Group * * @since 2.3 */ global $pagenow; if ( ( !empty( $pagenow ) ) && ( $pagenow == 'admin.php' ) ) { if ( ( isset( $_GET['page'] ) ) && ( $_GET['page'] == 'group_admin_page' ) ) { if ( ( isset( $_GET['group_id'] ) ) && ( !empty( $_GET['group_id'] ) ) ) { $group_id = intval( $_GET['group_id'] ); /* $group_courses = learndash_group_enrolled_courses( $group_id ); if ( empty( $group_courses ) ) { $group_courses = array(); } if ( empty( $courses_registered ) ) { $courses_registered = array(); } $courses_registered = array_intersect( $group_courses, $courses_registered ); if ( empty( $course_progress ) ) { $course_progress = array(); } foreach( $course_progress as $course_id => $course_details ) { if ( !in_array( $course_id, $group_courses ) ) unset( $course_progress[$course_id] ); } $group_quizzes = learndash_get_group_course_quiz_ids( $group_id ); if ( empty( $group_quizzes ) ) { $group_quizzes = array(); } if ( empty( $quizzes ) ) { $quizzes = array(); } foreach( $quizzes as $quiz_idx => $quiz_details ) { if ( !in_array( $quiz_details['quiz'], $group_quizzes ) ) unset( $quizzes[$quiz_idx] ); } */ if ( ( isset( $_GET['user_id'] ) ) && ( !empty( $_GET['user_id'] ) ) ) { $user_id = intval( $_GET['user_id'] ); if ( learndash_is_group_leader_of_user( get_current_user_id(), $user_id ) ) { if (learndash_is_user_in_group( intval( $_GET['user_id'] ), intval( $_GET['group_id'] ) )) { if ( isset( $_POST['learndash_course_points'] ) ) { update_user_meta($user_id, 'course_points', intval( $_POST['learndash_course_points'] ) ); } } } } } } } if ( !empty( $atts['return'] ) ) { return array( 'user_id' => $user_id, 'courses_registered' => $courses_registered, 'courses_registered_pager' => $courses_registered_pager, 'course_progress' => $course_progress, 'course_progress_pager' => $course_progress_pager, 'quizzes' => $quizzes, 'quizzes_pager' => $quizzes_pager ); } else { if ( is_admin() ) { if ( !empty( $pagenow ) ) { if ( ( $pagenow == 'profile.php' ) || ( $pagenow == 'user-edit.php' ) ) { $atts['pagenow'] = $pagenow; $atts['pagenow_nonce'] = wp_create_nonce( $pagenow .'-'. $user_id ); } else if ( ( $pagenow == 'admin.php' ) && ( isset( $_GET['page'] ) ) && ( $_GET['page'] == 'group_admin_page' ) ) { $atts['pagenow'] = esc_attr( $_GET['page'] ); if ( ( isset( $_GET['group_id'] ) ) && ( !empty( $_GET['group_id'] ) ) ) { $atts['group_id'] = intval( $_GET['group_id'] ); } else { $atts['group_id'] = 0; } $atts['pagenow_nonce'] = wp_create_nonce( esc_attr( $_GET['page'] ) .'-'. $atts['group_id'] .'-'. $user_id ); } else { $atts['pagenow'] = 'learndash'; $atts['pagenow_nonce'] = wp_create_nonce( $atts['pagenow'] .'-'. $user_id ); } } } else { $atts['pagenow'] = 'learndash'; $atts['pagenow_nonce'] = wp_create_nonce( $atts['pagenow'] .'-'. $user_id ); } $atts['user_id'] = $user_id; unset( $atts['course_ids'] ); unset( $atts['quiz_ids'] ); return SFWD_LMS::get_template('course_info_shortcode', array( 'user_id' => $user_id, 'courses_registered' => $courses_registered, 'courses_registered_pager' => $courses_registered_pager, 'course_progress' => $course_progress, 'course_progress_pager' => $course_progress_pager, 'quizzes' => $quizzes, 'quizzes_pager' => $quizzes_pager, 'shortcode_atts' => $atts ) ); } } /** * Updates course price billy cycle on save * Fires on action 'save_post' * * @since 2.1.0 * * @param int $post_id */ function learndash_course_price_billing_cycle_save( $post_id ) { if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return; } if ( empty( $post_id ) || empty( $_POST['post_type'] ) ) { return ''; } // Check permissions if ( 'page' == $_POST['post_type'] ) { if ( ! current_user_can( 'edit_page', $post_id ) ) { return; } } else { if ( ! current_user_can( 'edit_post', $post_id ) ) { return; } } if ( isset( $_POST['course_price_billing_p3'] ) ) { update_post_meta( $post_id, 'course_price_billing_p3', $_POST['course_price_billing_p3'] ); } if ( isset( $_POST['course_price_billing_t3'] ) ) { update_post_meta( $post_id, 'course_price_billing_t3', $_POST['course_price_billing_t3'] ); } } /** * Billing Cycle field html output for courses * * @since 2.1.0 * * @return string */ function learndash_course_price_billing_cycle_html() { global $pagenow; add_action( 'save_post', array( $this, 'learndash_course_price_billing_cycle_save' ) ); if ( $pagenow == 'post.php' && ! empty( $_GET['post'] ) ) { $post_id = $_GET['post']; $post = get_post( $post_id ); if ( ( ! is_a( $post, 'WP_Post' ) ) || ( $post->post_type != 'sfwd-courses' ) ) { return; } $course_price_billing_p3 = get_post_meta( $post_id, 'course_price_billing_p3', true ); $course_price_billing_t3 = get_post_meta( $post_id, 'course_price_billing_t3', true ); $settings = learndash_get_setting( $post_id ); if ( ! is_array( $settings ) ) { $settings = array(); } if ( ! isset( $settings['course_price_type'] ) ) { $settings['course_price_type'] = 'open'; } if ( ! empty( $settings ) && $settings['course_price_type'] == 'paynow' && empty( $settings['course_price'] ) ) { if ( empty( $settings['course_join'] ) ) { learndash_update_setting( $post_id, 'course_price_type', 'open' ); } else { learndash_update_setting( $post_id, 'course_price_type', 'free' ); } } } else { if ( $pagenow == 'post-new.php' && ! empty( $_GET['post_type'] ) && $_GET['post_type'] == 'sfwd-courses' ) { $post_id = 0; $course_price_billing_p3 = $course_price_billing_t3 = ''; } else { return; } } $selected_D = $selected_W = $selected_M = $selected_Y = ''; ${'selected_'.$course_price_billing_t3} = 'selected="selected"'; return ' '; } static function course_progress_data( $course_id = null ) { set_time_limit( 0 ); global $wpdb; $current_user = wp_get_current_user(); if ( ( !learndash_is_admin_user( $current_user->ID ) ) && ( !learndash_is_group_leader_user( $current_user->ID ) ) ) { return; } $group_id = 0; if ( isset( $_GET['group_id'] ) ) { $group_id = $_GET['group_id']; } if ( learndash_is_group_leader_user( $current_user->ID ) ) { $users_group_ids = learndash_get_administrators_group_ids( $current_user->ID ); if ( ! count( $users_group_ids ) ) { return array(); } if ( !empty( $group_id ) ) { if ( ! in_array( $group_id, $users_group_ids ) ) { return; } $users_group_ids = array( $group_id ); } $all_user_ids = array(); // First get the user_ids for each group... foreach($users_group_ids as $users_group_id) { $user_ids = learndash_get_groups_user_ids( $users_group_id ); if (!empty($user_ids)) { if (!empty($all_user_ids)) { $all_user_ids = array_merge($all_user_ids, $user_ids); } else { $all_user_ids = $user_ids; } } } // Then once we have all the groups user_id run a last query for the complete user ids if (!empty($all_user_ids)) { $user_query_args = array( 'include' => $all_user_ids, 'orderby' => 'display_name', 'order' => 'ASC', ); $user_query = new WP_User_Query( $user_query_args ); if ( isset( $user_query->results ) ) { $users = $user_query->results; } } } else if ( learndash_is_admin_user( $current_user->ID ) ) { if ( ! empty( $group_id ) ) { $users = learndash_get_groups_users( $group_id ); } else { $users = get_users( 'orderby=display_name&order=ASC' ); } } else { return array(); } if ( empty( $users ) ) return array(); $course_access_list = array(); $course_progress_data = array(); set_time_limit( 0 ); $quiz_titles = array(); $lessons = array(); if ( ! empty( $course_id ) ) { $courses = array( get_post( $course_id ) ); } elseif ( ! empty( $group_id ) ){ $courses = learndash_group_enrolled_courses( $group_id ); $courses = array_map( 'intval', $courses ); $courses = ld_course_list( array( 'post__in' => $courses, 'array' => true ) ); } else { $courses = ld_course_list( array( 'array' => true ) ); } if ( ! empty( $users ) ) { foreach ( $users as $u ) { $user_id = $u->ID; $usermeta = get_user_meta( $user_id, '_sfwd-course_progress', true ); if ( ! empty( $usermeta ) ) { $usermeta = maybe_unserialize( $usermeta ); } if ( ! empty( $courses[0] ) ) { foreach ( $courses as $course ) { $c = $course->ID; if ( empty( $course->post_title) || ! sfwd_lms_has_access( $c, $user_id ) ) { continue; } $cv = ! empty( $usermeta[ $c] ) ? $usermeta[ $c ] : array( 'completed' => '', 'total' => '' ); $course_completed_meta = get_user_meta( $user_id, 'course_completed_'.$course->ID, true ); ( empty( $course_completed_meta ) ) ? $course_completed_date = '' : $course_completed_date = date_i18n( 'F j, Y H:i:s', $course_completed_meta ); $row = array( 'user_id' => $user_id, 'name' => $u->display_name, 'email' => $u->user_email, 'course_id' => $c, 'course_title' => $course->post_title, 'total_steps' => $cv['total'], 'completed_steps' => $cv['completed'], 'course_completed' => ( ! empty( $cv['total'] ) && $cv['completed'] >= $cv['total'] ) ? 'YES' : 'NO' , 'course_completed_on' => $course_completed_date ); $i = 1; if ( ! empty( $cv['lessons'] ) ) { foreach ( $cv['lessons'] as $lesson_id => $completed ) { if ( ! empty( $completed ) ) { if ( empty( $lessons[ $lesson_id ] ) ) { $lesson = $lessons[ $lesson_id ] = get_post( $lesson_id ); } else { $lesson = $lessons[ $lesson_id ]; } $row['lesson_completed_'.$i] = $lesson->post_title; $i++; } } } $course_progress_data[] = $row; } // end foreach } // end if } // end foreach } else { $course_progress_data[] = array( 'user_id' => $user_id, 'name' => $u->display_name, 'email' => $u->user_email, 'status' => esc_html__( 'No attempts', 'learndash' ), ); } /** * Filter course progress data to be displayed * * @since 2.1.0 * * @param array $course_progress_data */ $course_progress_data = apply_filters( 'course_progress_data', $course_progress_data, $users, @$group_id ); return $course_progress_data; } /** * Exports course progress data to CSV file * * @since 2.1.0 */ function course_export_init() { if ( ( ! defined( 'LEARNDASH_DEBUG' ) ) || ( LEARNDASH_DEBUG !== true ) ) { error_reporting( 0 ); } if ( ! empty( $_REQUEST['courses_export_submit'] ) && ! empty( $_REQUEST['nonce-sfwd'] ) ) { set_time_limit( 0 ); $default_tz = get_option( 'timezone_string' ); if ( !empty( $default_tz ) ) date_default_timezone_set( $default_tz ); $nonce = $_REQUEST['nonce-sfwd']; if ( ! wp_verify_nonce( $nonce, 'sfwd-nonce' ) ) { die( esc_html__( 'Security Check - If you receive this in error, log out and back in to WordPress', 'learndash' ) ); } $content = SFWD_LMS::course_progress_data(); if ( empty( $content ) ) { $content[] = array( 'status' => esc_html__( 'No attempts', 'learndash' ) ); } /** * include parseCSV to write csv file */ require_once( LEARNDASH_LMS_LIBRARY_DIR . '/parsecsv.lib.php' ); $csv = new lmsParseCSV(); $csv->file = 'courses.csv'; $csv->output_filename = 'courses.csv'; $csv = apply_filters('learndash_csv_object', $csv, 'courses' ); /** * Filter the content will print onto the exported CSV * * @since 2.1.0 * * @param array $content */ $content = apply_filters( 'course_export_data', $content ); $csv->output( 'courses.csv', $content, array_keys( reset( $content ) ) ); die(); } } /** * Course Export Button submit data * * apply_filters ran in display_settings_page() in sfwd_module_class.php * * @todo currently no add_filter using this callback * consider for deprecation or implement add_filter * * @since 2.1.0 * * @param array $submit * @return array $submit */ function courses_filter_submit( $submit ) { $submit['courses_export_submit'] = array( 'type' => 'submit', 'class' => 'button-primary', 'value' => sprintf( esc_html_x( 'Export User %s Data »', 'Export User Course Data Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ) ); return $submit; } /** * Export quiz data to CSV * * @since 2.1.0 */ function quiz_export_init() { if ( ( ! defined( 'LEARNDASH_DEBUG' ) ) || ( LEARNDASH_DEBUG !== true ) ) { error_reporting( 0 ); } global $wpdb; $current_user = wp_get_current_user(); if ( ( !learndash_is_admin_user( $current_user->ID ) ) && ( !learndash_is_group_leader_user( $current_user->ID ) ) ) { return; } // Why are these 3 lines here?? $sfwd_quiz = $this->post_types['sfwd-quiz']; $quiz_prefix = $sfwd_quiz->get_prefix(); add_filter( $quiz_prefix . 'submit_options', array( $this, 'quiz_filter_submit' ) ); if ( ! empty( $_REQUEST['quiz_export_submit'] ) && ! empty( $_REQUEST['nonce-sfwd'] ) ) { $timezone_string = get_option( 'timezone_string' ); if ( !empty( $timezone_string ) ) date_default_timezone_set( $timezone_string ); if ( ! wp_verify_nonce( $_REQUEST['nonce-sfwd'], 'sfwd-nonce' ) ) { die ( esc_html__( 'Security Check - If you receive this in error, log out and back in to WordPress', 'learndash' ) ); } /** * include parseCSV to write csv file */ require_once( LEARNDASH_LMS_LIBRARY_DIR . '/parsecsv.lib.php' ); $content = array(); set_time_limit( 0 ); //Need ability to export quiz results for group to CSV if ( isset( $_GET['group_id'] ) ) { $group_id = $_GET['group_id']; } if ( learndash_is_group_leader_user( $current_user->ID ) ) { $users_group_ids = learndash_get_administrators_group_ids( $current_user->ID ); if ( ! count( $users_group_ids ) ) { return array(); } if ( isset( $group_id ) ) { if ( ! in_array( $group_id, $users_group_ids ) ) { return; } $users_group_ids = array( $group_id ); } $all_user_ids = array(); // First get the user_ids for each group... foreach($users_group_ids as $users_group_id) { $user_ids = learndash_get_groups_user_ids( $users_group_id ); if (!empty($user_ids)) { if (!empty($all_user_ids)) { $all_user_ids = array_merge($all_user_ids, $user_ids); } else { $all_user_ids = $user_ids; } } } // Then once we have all the groups user_id run a last query for the complete user ids if (!empty($all_user_ids)) { $user_query_args = array( 'include' => $all_user_ids, 'orderby' => 'display_name', 'order' => 'ASC', 'meta_query' => array( array( 'key' => '_sfwd-quizzes', 'compare' => 'EXISTS', ), ) ); $user_query = new WP_User_Query( $user_query_args ); if ( isset( $user_query->results ) ) { $users = $user_query->results; } } } else if ( learndash_is_admin_user( $current_user->ID ) ) { if ( ! empty( $group_id ) ) { $user_ids = learndash_get_groups_user_ids( $group_id ); if (!empty($user_ids)) { $user_query_args = array( 'include' => $user_ids, 'orderby' => 'display_name', 'order' => 'ASC', 'meta_query' => array( array( 'key' => '_sfwd-quizzes', 'compare' => 'EXISTS', ), ) ); $user_query = new WP_User_Query( $user_query_args ); if (isset($user_query->results)) { $users = $user_query->results; } else { $users = array(); } } } else { $user_query_args = array( 'orderby' => 'display_name', 'order' => 'ASC', 'meta_query' => array( array( 'key' => '_sfwd-quizzes', 'compare' => 'EXISTS', ), ) ); $user_query = new WP_User_Query( $user_query_args ); if (isset($user_query->results)) { $users = $user_query->results; } else { $users = array(); } } } else { return array(); } $quiz_titles = array(); if ( ! empty( $users ) ) { foreach ( $users as $u ) { $user_id = $u->ID; $usermeta = get_user_meta( $user_id, '_sfwd-quizzes', true ); if ( ! empty( $usermeta ) ) { foreach ( $usermeta as $k => $v ) { if ( ! empty( $group_id ) ) { $course_id = learndash_get_course_id( intval( $v['quiz'] ) ); if ( ! learndash_group_has_course( $group_id, $course_id ) ) { continue; } } if ( empty( $quiz_titles[ $v['quiz']] ) ) { if ( ! empty( $v['quiz'] ) ) { $quiz = get_post( $v['quiz'] ); if ( empty( $quiz) ) { continue; } $quiz_titles[ $v['quiz']] = $quiz->post_title; } else if ( ! empty( $v['pro_quizid'] ) ) { $quiz = get_post( $v['pro_quizid'] ); if ( empty( $quiz) ) { continue; } $quiz_titles[ $v['quiz']] = $quiz->post_title; } else { $quiz_titles[ $v['quiz']] = ''; } } // After LD v2.2.1.2 we made a changes to the quiz user meta 'count' value output. Up to that point if the quiz showed only partial // questions, like 5 of 10 total then the value of $v[count] would be 10 instead of only the shown count 5. // After LD v2.2.1.2 we added a new field 'question_show_count' to hold the number of questions shown to the user during // the quiz. // But on legacy quiz user meta we needed a way to pull that information fron the quiz... if ( !isset( $v['question_show_count'] ) ) { $v['question_show_count'] = $v['count']; // ...If we have the statistics ref ID then we can pull the number of questions from there. if ( ( isset( $v['statistic_ref_id'] ) ) && ( !empty( $v['statistic_ref_id'] ) ) ) { global $wpdb; $sql_str = $wpdb->prepare(" SELECT count(*) as count FROM ". LDLMS_DB::get_table_name( 'quiz_statistic' ) . " WHERE statistic_ref_id = %d", $v['statistic_ref_id'] ); $count = $wpdb->get_var( $sql_str ); if ( !$count ) $count = 0; $v['question_show_count'] = intval( $count ); } else { // .. or if the statistics is not enabled for this quiz then we get the question show count from the // quiz data. Note there is a potential hole in the logic here. If this quiz setting changes then existing // quiz user meta reports will also be effected. $pro_quiz_id = get_post_meta( $v['quiz'], 'quiz_pro_id', true ); if ( !empty( $pro_quiz_id ) ) { $quizMapper = new WpProQuiz_Model_QuizMapper(); $quiz = $quizMapper->fetch( $pro_quiz_id ); if ( ( $quiz->isShowMaxQuestion() ) && ( $quiz->getShowMaxQuestionValue() > 0 ) ) { $v['question_show_count'] = $quiz->getShowMaxQuestionValue(); } } } } $content[] = array( 'user_id' => $user_id, 'name' => $u->display_name, 'email' => $u->user_email, 'quiz_id' => $v['quiz'], 'quiz_title' => $quiz_titles[ $v['quiz'] ], 'rank' => $v['rank'], 'score' => $v['score'], 'total' => $v['question_show_count'], 'date' => date_i18n( DATE_RSS, $v['time'] ) , ); } } else { // $content[] = array( 'user_id' => $user_id, 'name' => $u->display_name, 'email' => $u->user_email, 'status' => esc_html__( 'No attempts', 'learndash' ) ); $content[] = array( 'user_id' => $user_id, 'name' => $u->display_name, 'email' => $u->user_email, 'quiz_id' => esc_html__( 'No attempts', 'learndash' ), 'quiz_title' => '', 'rank' => '', 'score' => '', 'total' => '', 'date' => '' ); } // end if } // end foreach } // end if if ( empty( $content ) ) { $content[] = array( 'status' => esc_html__( 'No attempts', 'learndash' ) ); } /** * Filter quiz data that will print to CSV * * @since 2.1.0 * * @param array $content */ $content = apply_filters( 'quiz_export_data', $content, $users, @$group_id ); $csv = new lmsParseCSV(); $csv->file = 'quizzes.csv'; $csv->output_filename = 'quizzes.csv'; $csv = apply_filters('learndash_csv_object', $csv, 'quizzes' ); $csv->output('quizzes.csv', $content, array_keys( reset( $content ) ) ); die(); } } /** * Quiz Export Button submit data * * Filter callback for $quiz_prefix . 'submit_options' * apply_filters ran in display_settings_page() in sfwd_module_class.php * * @since 2.1.0 * * @param array $submit * @return array */ function quiz_filter_submit( $submit ) { $submit['quiz_export_submit'] = array( 'type' => 'submit', 'class' => 'button-primary', 'value' => sprintf( esc_html_x( 'Export %s Data »', 'Export Quiz Data Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ) ); return $submit; } /** * Export transcations to CSV file * * Not currently being used in plugin * * @todo consider for deprecation or implement in plugin * * @since 2.1.0 */ function trans_export_init() { $sfwd_trans = $this->post_types['sfwd-transactions']; $trans_prefix = $sfwd_trans->get_prefix(); add_filter( $trans_prefix . 'submit_options', array( $this, 'trans_filter_submit' ) ); if ( ! empty( $_REQUEST['export_submit'] ) && ! empty( $_REQUEST['nonce-sfwd'] ) ) { $nonce = $_REQUEST['nonce-sfwd']; if ( ! wp_verify_nonce( $nonce, 'sfwd-nonce' ) ) { die ( esc_html__( 'Security Check - If you receive this in error, log out and back in to WordPress', 'learndash' ) ); } /** * Include parseCSV to write csv file */ require_once( LEARNDASH_LMS_LIBRARY_DIR . '/parsecsv.lib.php' ); $content = array(); set_time_limit( 0 ); $locations = query_posts( array( 'post_status' => 'publish', 'post_type' => 'sfwd-transactions', 'posts_per_page' => -1 ) ); foreach ( $locations as $key => $location ) { $location_data = get_post_custom( $location->ID ); foreach ( $location_data as $k => $v ) { if ( $k[0] == '_' ) { unset( $location_data[ $k ] ); } else { $location_data[ $k] = $v[0]; } } $content[] = $location_data; } if ( ! empty( $content ) ) { $csv = new lmsParseCSV(); $this->csv->file = 'transactions.csv'; $this->csv->output_filename = 'transactions.csv'; $csv = apply_filters('learndash_csv_object', $csv, 'transactions' ); $csv->output( true, 'transactions.csv', $content, array_keys( reset( $content ) ) ); } die(); } } /** * Transaction Export Button submit data * * Filter callback for $trans_prefix . 'submit_options' * apply_filters ran in display_settings_page() in sfwd_module_class.php * * @since 2.1.0 * * @param array $submit * @return array */ function trans_filter_submit( $submit ) { unset( $submit['Submit'] ); unset( $submit['Submit_Default'] ); $submit['export_submit'] = array( 'type' => 'submit', 'class' => 'button-primary', 'value' => esc_html__( 'Export »', 'learndash' ) ); return $submit; } /** * Set up quiz display settings * * Filter callback for '{$quiz_prefix}display_settings' * apply_filters in display_options() in swfd_module_class.php * * @since 2.1.0 * * @param array $settings quiz settings * @param string $location where these settings are being displayed * @param array $current_options current options stored for a given location * @return array quiz settings */ function quiz_display_settings( $settings, $location, $current_options ) { global $sfwd_lms; $sfwd_quiz = $sfwd_lms->post_types['sfwd-quiz']; $quiz_prefix = $sfwd_quiz->get_prefix(); $prefix_len = strlen( $quiz_prefix ); $quiz_options = $sfwd_quiz->get_current_options(); if ( $location == null ) { foreach ( $quiz_options as $k => $v ) { if ( strpos( $k, $quiz_prefix ) === 0 ) { $quiz_options[ substr( $k, $prefix_len ) ] = $v; unset( $quiz_options[ $k ] ); } } foreach ( array( 'level1', 'level2', 'level3', 'level4', 'level5' ) as $level ) { $quiz['info'][ $level ] = $quiz_options[ $level ]; } $quiz['info']['name'] = $quiz['info']['main'] = $quiz['info']['results'] = ''; $quiz_json = json_encode( $quiz ); $settings['sfwd-quiz_quiz']['default'] = '
      '; if ( $location == null ) { unset( $settings["{$quiz_prefix}quiz"] ); } if ( ! empty( $settings["{$quiz_prefix}certificate_post"] ) ) { $posts = get_posts( array( 'post_type' => 'sfwd-certificates' , 'numberposts' => -1 ) ); $post_array = array( '0' => esc_html__( '-- Select a Certificate --', 'learndash' ) ); if ( ! empty( $posts ) ) { foreach ( $posts as $p ) { $post_array[ $p->ID ] = $p->post_title; } } $settings["{$quiz_prefix}certificate_post"]['initial_options'] = $post_array; } } else { global $pagenow; if (($pagenow == 'post.php') || ($pagenow == 'post-new.php')) { $current_screen = get_current_screen(); if ($current_screen->post_type == 'sfwd-quiz') { if ( ( isset( $settings["{$quiz_prefix}course"] ) ) && ( ! empty( $settings["{$quiz_prefix}course"] ) ) ) { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) != 'yes' ) { $_settings = $settings["{$quiz_prefix}course"]; $query_options = array( 'post_type' => 'sfwd-courses', 'post_status' => 'any', 'posts_per_page' => -1, 'exclude' => get_the_id(), 'orderby' => 'title', 'order' => 'ASC' ); $lazy_load = apply_filters('learndash_element_lazy_load_admin', true); if (($lazy_load == true) && (isset($_settings['lazy_load'])) && ($_settings['lazy_load'] == true)) { $query_options['paged'] = 1; $query_options['posts_per_page'] = apply_filters('learndash_element_lazy_load_per_page', LEARNDASH_LMS_DEFAULT_LAZY_LOAD_PER_PAGE, "{$quiz_prefix}course"); } /** * Filter course prerequisites * * @since 2.1.0 * * @param array $options */ $query_options = apply_filters( 'learndash_quiz_cours_post_options', $query_options, $_settings ); $query_posts = new WP_Query( $query_options ); $post_array = array( '0' => sprintf( esc_html_x( '-- Select a %s --', 'Select a Course Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ) ); if ( ! empty( $query_posts->posts ) ) { if ( count( $query_posts->posts ) >= $query_posts->found_posts ) { // If the number of returned posts is equal or greater then found_posts then no need to run lazy load $_settings['lazy_load'] = false; } foreach ( $query_posts->posts as $p ) { if ( $p->ID == get_the_id() ){ //Skip for current post id as current course can not be prerequities of itself } else { $post_array[ $p->ID ] = $p->post_title; } } } else { // If we don't have any items then override the lazy load flag $_settings['lazy_load'] = false; } $settings["{$quiz_prefix}course"]['initial_options'] = $post_array; if ((isset($_settings['lazy_load'])) && ($_settings['lazy_load'] == true)) { $lazy_load_data = array(); $lazy_load_data['query_vars'] = $query_options; $lazy_load_data['query_type'] = 'WP_Query'; $lazy_load_data['value'] = $_settings['value']; $settings["{$quiz_prefix}course"]['lazy_load_data'] = $lazy_load_data; } } else { unset( $settings["{$quiz_prefix}course"] ); } } if ( ( isset( $settings["{$quiz_prefix}lesson"] ) ) && ( ! empty( $settings["{$quiz_prefix}lesson"] ) ) ) { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) != 'yes' ) { $post_array = array( '0' => sprintf( esc_html_x( '-- Select a %s or %s --', 'Select a Lesson or Topic Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ), LearnDash_Custom_Label::get_label( 'topic' ) ) ); $course_id = get_post_meta(get_the_id(), 'course_id', true ); $lessons_array = $this->select_a_lesson_or_topic( $course_id ); if ( !empty( $lessons_array ) ) { // We can't merge because it will destroy the array indexs. //$post_array = array_merge( $post_array, $lessons_array ); foreach( $lessons_array as $lesson_id => $lesson_title ) { $post_array[$lesson_id] = $lesson_title; } } $settings["{$quiz_prefix}lesson"]['initial_options'] = $post_array; } else { unset( $settings["{$quiz_prefix}lesson"] ); } } if ( ! empty( $settings["{$quiz_prefix}certificate"] ) ) { $posts = get_posts( array( 'post_type' => 'sfwd-certificates' , 'numberposts' => -1 ) ); $post_array = array( '0' => esc_html__( '-- Select a Certificate --', 'learndash' ) ); if ( ! empty( $posts ) ) { foreach ( $posts as $p ) { $post_array[ $p->ID ] = $p->post_title; } } $settings["{$quiz_prefix}certificate"]['initial_options'] = $post_array; } if ( ! empty( $settings["{$quiz_prefix}quiz_pro"] ) ) { $settings["{$quiz_prefix}quiz_pro"]['initial_options'] = array( 0 => esc_html__( '-- Select Settings --', 'learndash' ) ) + LD_QuizPro::get_quiz_list(); } } } } return $settings; } /** * Set up question display settings * * Filter callback for '{$question_prefix}display_settings' * apply_filters in display_options() in swfd_module_class.php * * @since 2.1.0 * * @param array $settings quiz settings * @param string $location where these settings are being displayed * @param array $current_options current options stored for a given location * @return array quiz settings */ function question_display_settings( $settings, $location, $current_options ) { global $sfwd_lms; $sfwd_question = $sfwd_lms->post_types['sfwd-question']; $question_prefix = $sfwd_question->get_prefix(); $prefix_len = strlen( $question_prefix ); $question_options = $sfwd_question->get_current_options(); if ( $location == null ) { } else { global $pagenow; if ( ( $pagenow == 'post.php' ) || ( $pagenow == 'post-new.php' ) ) { $current_screen = get_current_screen(); if ($current_screen->post_type == 'sfwd-question') { if ( ( isset( $settings["{$question_prefix}quiz"] ) ) && ( ! empty( $settings["{$question_prefix}quiz"] ) ) ) { $_settings = $settings["{$question_prefix}quiz"]; $query_options = array( 'post_type' => 'sfwd-quiz', 'post_status' => 'any', 'posts_per_page' => -1, 'exclude' => get_the_id(), 'orderby' => 'title', 'order' => 'ASC' ); $lazy_load = apply_filters('learndash_element_lazy_load_admin', true); if (($lazy_load == true) && (isset($_settings['lazy_load'])) && ($_settings['lazy_load'] == true)) { $query_options['paged'] = 1; $query_options['posts_per_page'] = apply_filters('learndash_element_lazy_load_per_page', LEARNDASH_LMS_DEFAULT_LAZY_LOAD_PER_PAGE, "{$question_prefix}quiz"); } /** * Filter course prerequisites * * @since 2.1.0 * * @param array $options */ $query_options = apply_filters( 'learndash_question_quiz_post_options', $query_options, $_settings ); $query_posts = new WP_Query( $query_options ); $post_array = array( '0' => sprintf( esc_html_x( '-- Select a %s --', 'Select a Quiz Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'Quiz' ) ) ); if ( ! empty( $query_posts->posts ) ) { if ( count( $query_posts->posts ) >= $query_posts->found_posts ) { // If the number of returned posts is equal or greater then found_posts then no need to run lazy load $_settings['lazy_load'] = false; } foreach ( $query_posts->posts as $p ) { if ( $p->ID == get_the_id() ){ //Skip for current post id as current course can not be prerequities of itself } else { $post_array[ $p->ID ] = $p->post_title; } } } else { // If we don't have any items then override the lazy load flag $_settings['lazy_load'] = false; } $settings["{$question_prefix}quiz"]['initial_options'] = $post_array; if ((isset($_settings['lazy_load'])) && ($_settings['lazy_load'] == true)) { $lazy_load_data = array(); $lazy_load_data['query_vars'] = $query_options; $lazy_load_data['query_type'] = 'WP_Query'; $lazy_load_data['value'] = ( isset( $_settings['value'] ) ) ? $_settings['value'] : ''; $settings["{$question_prefix}quiz"]['lazy_load_data'] = $lazy_load_data; } } } } } return $settings; } function select_a_course( $current_post_type = null ) { $opt = array( 'post_type' => 'sfwd-courses', 'post_status' => 'any', 'numberposts' => -1, 'orderby' => 'title', 'order' => 'ASC', ); $posts = get_posts( $opt ); $post_array = array(); if ( ! empty( $posts ) ) { foreach ( $posts as $p ) { $post_array[ $p->ID ] = $p->post_title; } } return $post_array; } function select_a_certificate( $current_post_type = null ) { $opt = array( 'post_type' => 'sfwd-certificates', 'post_status' => 'any', 'numberposts' => -1, 'orderby' => 'title', 'order' => 'ASC', ); $posts = get_posts( $opt ); $post_array = array(); if ( ! empty( $posts ) ) { foreach ( $posts as $p ) { $post_array[ $p->ID ] = $p->post_title; } } return $post_array; } /** * Retrieves lessons or topics for a course to populate dropdown on edit screen * * Ajax action callback for wp_ajax_select_a_lesson_or_topic * * @since 2.1.0 */ function select_a_lesson_or_topic_ajax() { $data = array(); $data['opt'] = array(); if ( ( isset( $_POST['ld_selector_nonce'] ) ) && ( ! empty( $_POST['ld_selector_nonce'] ) ) && ( wp_verify_nonce( $_POST['ld_selector_nonce'], learndash_get_post_type_slug( 'lesson' ) ) ) ) { if ( ( isset( $_POST['ld_selector_default'] ) ) && ( ! empty( $_POST['ld_selector_default'] ) ) ) { $ld_selector_default = true; //esc_attr( $_POST['ld_selector_default'] ); } else { $ld_selector_default = false; } $post_array = $this->select_a_lesson_or_topic( @$_REQUEST['course_id'], true, $ld_selector_default ); if ( !empty( $post_array ) ) { $i = 0; foreach ( $post_array as $key => $value ) { $opt[ $i ]['key'] = $key; $opt[ $i ]['value'] = $value; $i++; } $data['opt'] = $opt; } } echo json_encode( $data ); exit; } /** * Makes wp_query to retrieve lessons or topics for a course * * @since 2.1.0 * * @param int $course_id * @return array array of lessons or topics */ function select_a_lesson_or_topic( $course_id = null, $include_topics = true, $include_default = true ) { if ( ! is_admin() ) { return array(); } $post_array = array(); if ( !is_null( $course_id ) ) { if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $lesson_ids = learndash_course_get_children_of_step( $course_id, $course_id, 'sfwd-lessons' ); if ( !empty( $lesson_ids ) ) { foreach( $lesson_ids as $lesson_id ) { $post_array[ $lesson_id ] = get_the_title( $lesson_id ); if ( $include_topics ) { $topic_ids = learndash_course_get_children_of_step( $course_id, $lesson_id, 'sfwd-topic' ); if ( !empty( $topic_ids ) ) { foreach( $topic_ids as $topic_id ) { $post_array[ $topic_id ] = '     ' . get_the_title( $topic_id ); } } } } } } else { $lessons_options = sfwd_lms_get_post_options( 'sfwd-lessons' ); $course_lessons_args = learndash_get_course_lessons_order( $course_id ); $orderby = isset( $course_lessons_args['orderby'] ) ? $course_lessons_args['orderby'] : $lessons_options['orderby']; $order = isset( $course_lessons_args['order'] ) ? $course_lessons_args['order'] : $lessons_options['order']; $opt = array( 'post_type' => 'sfwd-lessons', 'post_status' => 'any', 'numberposts' => -1, 'orderby' => $orderby, 'order' => $order, ); if ( empty( $course_id ) ) { $course_id = learndash_get_course_id( @$_GET['post'] ); } if ( ! empty( $course_id ) ) { $opt['meta_key'] = 'course_id'; $opt['meta_value'] = $course_id; } $posts = get_posts( $opt ); if ( true === $include_default ) { if ( $include_topics == true ) { if ( ( defined( 'LEARNDASH_SELECT2_LIB' ) ) && ( true === apply_filters( 'learndash_select2_lib', LEARNDASH_SELECT2_LIB ) ) ) { $post_array = array( '-1' => sprintf( // translators: placeholder: Lesson, Topic Labels. esc_html_x( 'Search or select a %1$s or %2$s…', 'placeholder: Lesson, Topic Labels', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ), LearnDash_Custom_Label::get_label( 'topic' ) ) ); } else { $post_array = array( '0' => sprintf( // translators: placeholder: Lesson, Topic Labels. esc_html_x( 'Select a %1$s or %2$s', 'placeholder: Lesson, Topic Labels', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ), LearnDash_Custom_Label::get_label( 'topic' ) ) ); } } else { if ( ( defined( 'LEARNDASH_SELECT2_LIB' ) ) && ( true === apply_filters( 'learndash_select2_lib', LEARNDASH_SELECT2_LIB ) ) ) { $post_array = array( '-1' => sprintf( // translators: placeholder: Lesson Label. esc_html_x( 'Search or select a %s…', 'placeholder: Lesson Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ) ); } else { $post_array = array( '0' => sprintf( // translators: placeholder: Lesson Label. esc_html_x( 'Select a %s', 'placeholder: Lesson Labels', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ) ); } } } if ( ! empty( $posts ) ) { foreach ( $posts as $p ){ $lesson_post_title = strip_tags( $p->post_title ); if ( empty( $lesson_post_title ) ) { $lesson_post_title = $p->ID . ' - /' . $p->post_name; } $post_array[ $p->ID ] = $lesson_post_title; if ( $include_topics == true ) { $topics_array = learndash_get_topic_list( $p->ID, $course_id ); if ( ! empty( $topics_array ) ) { foreach ( $topics_array as $topic ) { $topic_post_title = strip_tags( $topic->post_title ); if ( empty( $topic_post_title ) ) { $topic_post_title = $topic->ID . ' - /' . $topic->post_name; } $post_array[ $topic->ID ] = '     ' . $topic_post_title; } } } } } } } return $post_array; } /** * Retrieves lessons for a course to populate dropdown on edit screen * * Ajax action callback for wp_ajax_select_a_lesson * * @since 2.1.0 */ function select_a_lesson_ajax() { //$post_array = $this->select_a_lesson( @$_REQUEST['course_id'] ); //$post_array = $this->select_a_lesson_or_topic( @$_REQUEST['course_id'], false ); $data = array(); $data['opt'] = array(); if ( ( isset( $_POST['ld_selector_nonce'] ) ) && ( ! empty( $_POST['ld_selector_nonce'] ) ) && ( wp_verify_nonce( $_POST['ld_selector_nonce'], 'sfwd-lessons' ) ) ) { if ( ( isset( $_POST['ld_selector_default'] ) ) && ( ! empty( $_POST['ld_selector_default'] ) ) ) { $ld_selector_default = true; //esc_attr( $_POST['ld_selector_default'] ); } else { $ld_selector_default = false; } $post_array = $this->select_a_lesson_or_topic( @$_REQUEST['course_id'], false, $ld_selector_default ); if ( !empty( $post_array ) ) { $i = 0; foreach ( $post_array as $key => $value ) { $opt[ $i ]['key'] = $key; $opt[ $i ]['value'] = $value; $i++; } $data['opt'] = $opt; } } echo json_encode( $data ); exit; } /** * Makes wp_query to retrieve lessons a course * * @since 2.1.0 * * @param int $course_id * @return array array of lessons */ function select_a_lesson( $course_id = null ) { if ( ! is_admin() ) { return array(); } if ( ! empty( $_REQUEST['ld_action'] ) || ! empty( $_GET['post'] ) && is_array( $_GET['post'] ) ) { return array(); } $opt = array( 'post_type' => 'sfwd-lessons', 'post_status' => 'any', 'numberposts' => -1 , 'orderby' => learndash_get_option( 'sfwd-lessons', 'orderby' ), 'order' => learndash_get_option( 'sfwd-lessons', 'order' ), ); if ( empty( $course_id ) ) { if ( empty( $_GET['post'] ) ) { $course_id = learndash_get_course_id(); } else { $course_id = learndash_get_course_id( $_GET['post'] ); } } if ( ! empty( $course_id ) ) { $opt['meta_key'] = 'course_id'; $opt['meta_value'] = $course_id; } $posts = get_posts( $opt ); if ( ( defined( 'LEARNDASH_SELECT2_LIB' ) ) && ( true === apply_filters( 'learndash_select2_lib', LEARNDASH_SELECT2_LIB ) ) ) { $post_array = array( '-1' => sprintf( // translators: placeholder: Lesson. esc_html_x( 'Search or select a %s', 'placeholder: Lesson', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ) ); } else { $post_array = array( '0' => sprintf( // translators: placeholder: Lesson. esc_html_x( 'Select a %s', 'placeholder: Lesson', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ) ); } if ( ! empty( $posts ) ) { foreach ( $posts as $p ) { $post_array[ $p->ID ] = $p->post_title; } } return $post_array; } /** * Retrieves quizzes for a course to populate dropdown on edit screen * * Ajax action callback for wp_ajax_select_a_lesson * * @since 2.5.0 */ function select_a_quiz_ajax() { $data = array(); $data['opt'] = array(); if ( ( isset( $_POST['ld_selector_nonce'] ) ) && ( ! empty( $_POST['ld_selector_nonce'] ) ) && ( wp_verify_nonce( $_POST['ld_selector_nonce'], 'sfwd-quiz' ) ) ) { $post_array = $this->select_a_quiz( @$_REQUEST['course_id'], @$_REQUEST['lesson_id'] ); if ( !empty( $post_array ) ) { $i = 0; foreach ( $post_array as $key => $value ) { $opt[ $i ]['key'] = $key; $opt[ $i ]['value'] = $value; $i++; } $data['opt'] = $opt; } } echo json_encode( $data ); exit; } /** * Makes wp_query to retrieve quizzes a course * * @since 2.5.0 * * @param int $course_id * @return array array of lessons */ function select_a_quiz( $course_id = 0, $lesson_topic_id = 0 ) { $post_array = array(); if ( !empty( $course_id ) ) { if ( !empty( $lesson_topic_id ) ) { $quiz_ids = learndash_course_get_children_of_step( $course_id, $lesson_topic_id, 'sfwd-quiz' ); } else { $quiz_ids = learndash_course_get_steps_by_type( $course_id, 'sfwd-quiz' ); } if ( !empty( $quiz_ids ) ) { foreach( $quiz_ids as $quiz_id ) { $post_array[ $quiz_id ] = get_the_title( $quiz_id ); } } } else { $opt = array( 'post_type' => 'sfwd-quiz', 'post_status' => 'any', 'numberposts' => -1 , 'orderby' => 'title', 'order' => 'ASC', ); $posts = get_posts( $opt ); $post_array = array(); if ( ! empty( $posts ) ) { foreach ( $posts as $p ) { $post_array[ $p->ID ] = $p->post_title; } } } return $post_array; } /** * Set up course display settings * * Filter callback for '{$courses_prefix}display_settings' * apply_filters in display_options() in swfd_module_class.php * * @since 2.1.0 * * @param array $settings quiz settings * @return array quiz settings */ function course_display_settings( $settings ) { global $sfwd_lms; $sfwd_courses = $sfwd_lms->post_types['sfwd-courses']; $courses_prefix = $sfwd_courses->get_prefix(); if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { if ( isset( $settings['sfwd-courses_course_lesson_orderby'] ) ) unset( $settings['sfwd-courses_course_lesson_orderby'] ); if ( isset( $settings['sfwd-courses_course_lesson_order'] ) ) unset( $settings['sfwd-courses_course_lesson_order'] ); } if ( ! empty( $settings["{$courses_prefix}course_prerequisite"] ) ) { $_settings = $settings["{$courses_prefix}course_prerequisite"]; $query_options = array( 'post_type' => 'sfwd-courses', 'post_status' => 'any', 'posts_per_page' => -1, 'exclude' => get_the_id(), 'orderby' => 'title', 'order' => 'ASC' ); $lazy_load = apply_filters('learndash_element_lazy_load_admin', true); if (($lazy_load == true) && (isset($_settings['lazy_load'])) && ($_settings['lazy_load'] == true)) { $query_options['paged'] = 1; $query_options['posts_per_page'] = apply_filters('learndash_element_lazy_load_per_page', LEARNDASH_LMS_DEFAULT_LAZY_LOAD_PER_PAGE, "{$courses_prefix}course_prerequisite"); } /** * Filter course prerequisites * * @since 2.1.0 * * @param array $options */ $query_options = apply_filters( 'learndash_course_prerequisite_post_options', $query_options, $_settings ); $query_posts = new WP_Query( $query_options ); $post_array = array( '0' => sprintf( esc_html_x( '-- Select a %s --', 'Select a Course Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ) ); if ( ! empty( $query_posts->posts ) ) { if ( count( $query_posts->posts ) >= $query_posts->found_posts ) { // If the number of returned posts is equal or greater then found_posts then no need to run lazy load $_settings['lazy_load'] = false; } foreach ( $query_posts->posts as $p ) { if ( $p->ID == get_the_id() ){ //Skip for current post id as current course can not be prerequities of itself } else { $post_array[ $p->ID ] = $p->post_title; } } } else { // If we don't have any items then override the lazy load flag $_settings['lazy_load'] = false; } $settings["{$courses_prefix}course_prerequisite"]['initial_options'] = $post_array; if ((isset($_settings['lazy_load'])) && ($_settings['lazy_load'] == true)) { $lazy_load_data = array(); $lazy_load_data['query_vars'] = $query_options; $lazy_load_data['query_type'] = 'WP_Query'; $lazy_load_data['value'] = $_settings['value']; $settings["{$courses_prefix}course_prerequisite"]['lazy_load_data'] = $lazy_load_data; } } if ( ! empty( $settings["{$courses_prefix}certificate"] ) ) { $posts = get_posts( array( 'post_type' => 'sfwd-certificates' , 'numberposts' => -1) ); $post_array = array( '0' => esc_html__( '-- Select a Certificate --', 'learndash' ) ); if ( ! empty( $posts ) ) { foreach ( $posts as $p ) { $post_array[ $p->ID ] = $p->post_title; } } $settings["{$courses_prefix}certificate"]['initial_options'] = $post_array; } return $settings; } /** * Set up lesson display settings * * Filter callback for '{$lessons_prefix}display_settings' * apply_filters in display_options() in swfd_module_class.php * * @since 2.2.0.2 * * @param array $settings lesson settings * @return array lesson settings */ function lesson_display_settings( $settings ) { global $sfwd_lms; $sfwd_lessons = $sfwd_lms->post_types['sfwd-lessons']; $lessons_prefix = $sfwd_lessons->get_prefix(); if ( ( isset( $settings["{$lessons_prefix}course"] ) ) && ( ! empty( $settings["{$lessons_prefix}course"] ) ) ) { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) != 'yes' ) { $_settings = $settings["{$lessons_prefix}course"]; $query_options = array( 'post_type' => 'sfwd-courses', 'post_status' => 'any', 'posts_per_page' => -1, 'exclude' => get_the_id(), 'orderby' => 'title', 'order' => 'ASC' ); $lazy_load = apply_filters('learndash_element_lazy_load_admin', true); if (($lazy_load == true) && (isset($_settings['lazy_load'])) && ($_settings['lazy_load'] == true)) { $query_options['paged'] = 1; $query_options['posts_per_page'] = apply_filters('learndash_element_lazy_load_per_page', LEARNDASH_LMS_DEFAULT_LAZY_LOAD_PER_PAGE, "{$lessons_prefix}course"); } /** * Filter course prerequisites * * @since 2.1.0 * * @param array $options */ $query_options = apply_filters( 'learndash_lesson_course_post_options', $query_options, $_settings ); $query_posts = new WP_Query( $query_options ); $post_array = array( '0' => sprintf( esc_html_x( '-- Select a %s --', 'Select a Course Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ) ); if ( ! empty( $query_posts->posts ) ) { if ( count( $query_posts->posts ) >= $query_posts->found_posts ) { // If the number of returned posts is equal or greater then found_posts then no need to run lazy load $_settings['lazy_load'] = false; } foreach ( $query_posts->posts as $p ) { if ( $p->ID == get_the_id() ){ //Skip for current post id as current course can not be prerequities of itself } else { $post_array[ $p->ID ] = $p->post_title; } } } else { // If we don't have any items then override the lazy load flag $_settings['lazy_load'] = false; } if ((isset($_settings['lazy_load'])) && ($_settings['lazy_load'] == true)) { $lazy_load_data = array(); $lazy_load_data['query_vars'] = $query_options; $lazy_load_data['query_type'] = 'WP_Query'; $lazy_load_data['value'] = $_settings['value']; $settings["{$lessons_prefix}course"]['lazy_load_data'] = $lazy_load_data; } $settings["{$lessons_prefix}course"]['initial_options'] = $post_array; } else { unset( $settings["{$lessons_prefix}course"] ); } } return $settings; } /** * Set up topic display settings * * Filter callback for '{$topics_prefix}display_settings' * apply_filters in display_options() in swfd_module_class.php * * @since 2.2.0.2 * * @param array $settings topic settings * @return array topic settings */ function topic_display_settings( $settings ) { global $sfwd_lms; $sfwd_topics = $sfwd_lms->post_types['sfwd-topic']; $topics_prefix = $sfwd_topics->get_prefix(); if ( ( isset( $settings["{$topics_prefix}course"] ) ) && ( ! empty( $settings["{$topics_prefix}course"] ) ) ) { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) != 'yes' ) { $_settings = $settings["{$topics_prefix}course"]; $query_options = array( 'post_type' => 'sfwd-courses', 'post_status' => 'any', 'posts_per_page' => -1, 'exclude' => get_the_id(), 'orderby' => 'title', 'order' => 'ASC' ); $lazy_load = apply_filters('learndash_element_lazy_load_admin', true); if (($lazy_load == true) && (isset($_settings['lazy_load'])) && ($_settings['lazy_load'] == true)) { $query_options['paged'] = 1; $query_options['posts_per_page'] = apply_filters('learndash_element_lazy_load_per_page', LEARNDASH_LMS_DEFAULT_LAZY_LOAD_PER_PAGE, "{$topics_prefix}course"); } /** * Filter course prerequisites * * @since 2.2.0.2 * * @param array $options */ $query_options = apply_filters( 'learndash_topic_course_post_options', $query_options, $_settings ); $query_posts = new WP_Query( $query_options ); $post_array = array( '0' => sprintf( esc_html_x( '-- Select a %s --', 'Select a Course Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ) ); if ( ! empty( $query_posts->posts ) ) { if ( count( $query_posts->posts ) >= $query_posts->found_posts ) { // If the number of returned posts is equal or greater then found_posts then no need to run lazy load $_settings['lazy_load'] = false; } foreach ( $query_posts->posts as $p ) { if ( $p->ID == get_the_id() ){ //Skip for current post id as current course can not be prerequities of itself } else { $post_array[ $p->ID ] = $p->post_title; } } } else { // If we don't have any items then override the lazy load flag $_settings['lazy_load'] = false; } if ((isset($_settings['lazy_load'])) && ($_settings['lazy_load'] == true)) { $lazy_load_data = array(); $lazy_load_data['query_vars'] = $query_options; $lazy_load_data['query_type'] = 'WP_Query'; $lazy_load_data['value'] = $_settings['value']; $settings["{$topics_prefix}course"]['lazy_load_data'] = $lazy_load_data; } $settings["{$topics_prefix}course"]['initial_options'] = $post_array; } else { unset( $settings["{$topics_prefix}course"] ); } } if ( ( isset( $settings["{$topics_prefix}lesson"] ) ) && ( ! empty( $settings["{$topics_prefix}lesson"] ) ) ) { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) != 'yes' ) { $post_array = array( '0' => sprintf( esc_html_x( '-- Select a %s --', 'Select a Lesson Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ) ); $course_id = learndash_get_course_id( get_the_id() ); if ( !empty( $course_id ) ) { $lessons_items = $this->select_a_lesson_or_topic( intval( $course_id ), false ); if ( !empty( $lessons_items ) ) { if ( isset( $lessons_items[0] ) ) unset( $lessons_items[0] ); $post_array = $lessons_items; } } $settings["{$topics_prefix}lesson"]['initial_options'] = $post_array; } else { unset( $settings["{$topics_prefix}lesson"] ); } } return $settings; } /** * Insert course name as a term on course publish * * Action callback for 'publish_sfwd-courses' (wp core filter action) * * @todo consider for deprecation, action is commented * * @since 2.1.0 * * @param int $post_id * @param object $post */ function add_course_tax_entry( $post_id, $post ) { $term = get_term_by( 'slug', $post->post_name, 'courses' ); $term_id = isset( $term->term_id ) ? $term->term_id : 0; if ( ! $term_id ) { $term = wp_insert_term( $post->post_title, 'courses', array( 'slug' => $post->post_name ) ); $term_id = $term['term_id']; } wp_set_object_terms( (int)$post_id, (int)$term_id, 'courses', true ); } /** * Register taxonomies for each custom post type * * Action callback for 'init' * * @since 2.1.0 */ function tax_registration() { /** * Filter that gathers taxonomies that need to be registered * add_filters are currently added during the add_post_type() method in swfd_cpt.php * * @since 2.1.0 * * @param array */ $taxes = apply_filters( 'sfwd_cpt_register_tax', array() ); /** * The expected return form of the array is: * array( * 'tax_slug1' => array( * 'post_types' => array('sfwd-courses', 'sfwd-lessons'), * 'tax_args' => array() // See register_taxonomy() third parameter for valid args options * ), * 'tax_slug2' => array( * 'post_types' => array('sfwd-lessons'), * 'tax_args' => array() * ), * ) */ if ( ! empty( $taxes ) ) { foreach( $taxes as $tax_slug => $tax_options ) { if ( !taxonomy_exists( $tax_slug ) ) { if ( ( isset( $tax_options['post_types'] ) ) && ( !empty( $tax_options['post_types'] ) ) ) { if ( ( isset( $tax_options['tax_args'] ) ) && ( !empty( $tax_options['tax_args'] ) ) ) { // Via the LD post type setup when the 'taxonomies' option is defined we can associate other taxonomies // with our custom post types by setting the tax slug and value as the same if ( $tax_slug !== $tax_options['tax_args']['rewrite']['slug'] ) { $tax_options = apply_filters( 'learndash_taxonomy_args', $tax_options, $tax_slug ); if ( !empty( $tax_options ) ) { register_taxonomy( $tax_slug, $tax_options['post_types'], $tax_options['tax_args'] ); } } } } } else { // If the taxonomy already exists we only need to then assocated the post_types if ( ( isset( $tax_options['post_types'] ) ) && ( !empty( $tax_options['post_types'] ) ) ) { foreach( $tax_options['post_types'] as $post_type ) { register_taxonomy_for_object_type( $tax_slug, $post_type ); } } } } /* foreach ( $taxes as $k => $v ) { if ( ! empty( $v ) ) { foreach ( $v as $tax ) { if ( ! is_array( $tax[0] ) ) { $tax[0] = array( $tax[0] ); } $post_types = array_merge( $post_types, $tax[0] ); if ( empty( $tax_options ) ) { $tax_options = $tax[1]; } else { foreach ( $tax[1] as $l => $w ) { $tax_options[ $l] = $w; } } } // end foreach } // endif }// end foreach */ // register_taxonomy( $k, $post_types, $tax_options ); } // endif } static function get_template_paths( $filename = '' ) { $template_filenames = array(); $template_paths = array(); $active_template_key = LearnDash_Theme_Register::get_active_theme_key(); $file_pathinfo = pathinfo( $filename ); if ( ! isset( $file_pathinfo['dirname'] ) ) { $file_pathinfo['dirname'] = ''; } else if ( ! empty( $file_pathinfo['dirname'] ) ) { if ( '.' === $file_pathinfo['dirname'] ) { $file_pathinfo['dirname'] = ''; } else { $file_pathinfo['dirname'] .= '/'; } } if ( ! isset( $file_pathinfo['filename'] ) ) { $file_pathinfo['filename'] = ''; } if ( ! isset( $file_pathinfo['extension'] ) ) { $file_pathinfo['extension'] = ''; } if ( in_array( $file_pathinfo['extension'], array( 'js', 'css' ), true ) ) { if ( ( defined( 'LEARNDASH_SCRIPT_DEBUG' ) ) && ( LEARNDASH_SCRIPT_DEBUG == true ) ) { $template_filenames[] = $file_pathinfo['dirname'] . $file_pathinfo['filename'] . '.' . $file_pathinfo['extension']; } $template_filenames[] = $file_pathinfo['dirname'] . $file_pathinfo['filename'] . '.min.' . $file_pathinfo['extension']; } else { $template_filenames[] = $file_pathinfo['dirname'] . $file_pathinfo['filename'] . '.' . $file_pathinfo['extension']; } $template_paths['theme'] = array(); foreach( $template_filenames as $template_filename ) { $template_paths['theme'][] = 'learndash/' . $active_template_key . '/' . $template_filename; } if ( 'legacy' === $active_template_key ) { foreach( $template_filenames as $template_filename ) { $template_paths['theme'][] = 'learndash/' . $template_filename; } foreach( $template_filenames as $template_filename ) { $template_paths['theme'][] = $template_filename; } } $template_paths['templates'] = array(); if ( defined( 'LEARNDASH_TEMPLATES_DIR' ) ) { $template_dir = trailingslashit( LEARNDASH_TEMPLATES_DIR ); foreach( $template_filenames as $template_filename ) { $template_paths['templates'][] = $template_dir . $active_template_key . '/' . $template_filename; } if ( 'learndash_template_functions.php' === $file_pathinfo['filename'] ) { $template_paths['templates'][] = $template_dir . $active_template_key . '/' . 'functions.php'; } if ( 'legacy' === $active_template_key ) { foreach( $template_filenames as $template_filename ) { $template_paths['templates'][] = $template_dir . $template_filename; } if ( 'learndash_template_functions.php' === $file_pathinfo['filename'] ) { $template_paths['templates'][] = $template_dir . 'functions.php'; } } } $active_template_dir = LearnDash_Theme_Register::get_active_theme_template_dir(); if ( ! empty( $active_template_dir ) ) { foreach( $template_filenames as $template_filename ) { $template_paths['templates'][] = $active_template_dir . '/' . $template_filename; } } if ( LEARNDASH_LEGACY_THEME !== $active_template_key ) { $legacy_theme_instance = LearnDash_Theme_Register::get_theme_instance( LEARNDASH_LEGACY_THEME ); $legacy_theme_dir = $legacy_theme_instance->get_theme_template_dir(); if ( ! empty( $legacy_theme_dir ) ) { foreach( $template_filenames as $template_filename ) { $template_paths['templates'][] = $legacy_theme_dir . '/' . $template_filename; } } } return $template_paths; } /** * Get LearnDash template and pass data to be used in template * * Checks to see if user has a 'learndash' directory in their current theme * and uses the template if it exists. * * @since 2.1.0 * * @param string $name template name * @param array $args data for template * @param boolean $echo echo or return * @param boolean return_file_path return just file path instead of output */ static function get_template( $name, $args, $echo = false, $return_file_path = false ) { $template_paths = array(); $file_pathinfo = pathinfo( $name ); //error_log('file_pathinfo
      '. print_r($file_pathinfo, true) .'
      '); $template_filename = $name; if ( ( ! isset( $file_pathinfo['extension'] ) ) || ( empty( $file_pathinfo['extension'] ) ) ) { $template_filename .= '.php'; } /** * Allow override of template filename. * @since 3.0. */ $template_filename = apply_filters( 'learndash_template_filename', $template_filename, $name, $args, $echo, $return_file_path ); if ( empty( $template_filename ) ) { return; } $file_pathinfo = pathinfo( $template_filename ); if ( ( ! isset( $file_pathinfo['extension'] ) ) || ( empty( $file_pathinfo['extension'] ) ) ) { $template_filename .= '.php'; } $template_paths = self::get_template_paths( $template_filename ); $filepath = ''; if ( ( isset( $template_paths['theme'] ) ) && ( ! empty( $template_paths['theme'] ) ) ) { $filepath = locate_template( $template_paths['theme'] ); } if ( empty( $filepath ) ) { if ( ( isset( $template_paths['templates'] ) ) && ( ! empty( $template_paths['templates'] ) ) ) { foreach ( $template_paths['templates'] as $template ) { if ( file_exists( $template ) ) { $filepath = $template; break; } } } } /** * Filter filepath for learndash template being called * * @since 2.1.0 * @since 3.0.3 - Allow override of empty or other checks. * * @param string $filepath */ $filepath = apply_filters( 'learndash_template', $filepath, $name, $args, $echo, $return_file_path ); if ( ! $filepath ) { return false; } if ( $return_file_path ) { return $filepath; } // Added check to ensure external hooks don't return empty or non-accessible filenames. if ( ( !empty( $filepath ) ) && ( file_exists( $filepath ) ) && ( is_file( $filepath ) ) ) { $args = apply_filters( 'ld_template_args_' . $name, $args, $filepath, $echo ); if ( ( ! empty( $args ) ) && ( is_array( $args ) ) ) { extract( $args ); } $level = ob_get_level(); ob_start(); include( $filepath ); $contents = learndash_ob_get_clean( $level ); if ( ! $echo ) { return $contents; } echo $contents; } } /** * Called from the 'all_plugins' filter. This is called from the Plugins listing screen and will let us * set out internal flag 'ALL_PLUGUNS_CALLED' so we know when (and when not) to add the legacy pluin paths * * @since 2.3.0.3 * * @param array $all_plugings The array of plugins to be displayed on the Plugins listing * @return array $all_plugings */ function all_plugins_proc( $all_plugins ) { $this->ALL_PLUGUNS_CALLED = true; return $all_plugins; } /** * Called from the 'pre_current_active_plugins' action. This is called after the Plugins listing checks for * valid plugins. The will let us unset our internal flag 'ALL_PLUGINS_CALLED'. * * @since 2.3.0.3 * @param none * @return none */ function pre_current_active_plugins_proc() { $this->ALL_PLUGUNS_CALLED = false; } /** * This is called from the get_options() function for the option 'active_plugins'. Using this filter * we can append our legacy plugins directories allowing other plugins to check via is_plugin_active() * This will protect that connection of LD is installed in a non-standard plugin directory. * * @since 2.3.0.3 * * @param array $active_plugins An array of the current active plugins. * @return array $active_plugins */ function option_active_plugins_proc( $active_plugins ) { global $pagenow; if (!empty( $active_plugins ) ) { if ( ( 'plugins.php' != $pagenow ) || ( $this->ALL_PLUGUNS_CALLED != true ) ) { // Just a double check the current_plugin_dir is in the active plugins array. if ( in_array( LEARNDASH_LMS_PLUGIN_KEY, $active_plugins ) ) { if ( ( !empty( $this->learndash_legacy_plugins_paths ) ) && ( is_array( $this->learndash_legacy_plugins_paths ) ) ) { foreach( $this->learndash_legacy_plugins_paths as $learndash_legacy_plugins_path ) { if ( $learndash_legacy_plugins_path != LEARNDASH_LMS_PLUGIN_KEY ) { if ( !in_array( $learndash_legacy_plugins_path, $active_plugins ) ) { $active_plugins[] = $learndash_legacy_plugins_path; } } } } } } } return $active_plugins; } /** * This is called from the update_options() function for the option 'active_plugins'. Using this filter * we can remove our legacy plugins directories we added via the option_active_plugins_proc filter. * * @since 2.3.0.3 * * @param array $active_plugins An array of the current active plugins. * @return array $active_plugins */ function pre_update_option_active_plugins( $active_plugins ) { if ( !empty( $active_plugins ) ) { if ( ( !empty( $this->learndash_legacy_plugins_paths ) ) && ( is_array( $this->learndash_legacy_plugins_paths ) ) ) { foreach( $this->learndash_legacy_plugins_paths as $learndash_legacy_plugins_path ) { if ( $learndash_legacy_plugins_path != LEARNDASH_LMS_PLUGIN_KEY ) { if ( ( $key = array_search( $learndash_legacy_plugins_path, $active_plugins ) ) !== false) { unset( $active_plugins[$key] ); } } } } } return $active_plugins; } function site_option_active_sitewide_plugins_proc( $active_plugins ) { global $pagenow; if (!empty( $active_plugins ) ) { if ( ( 'plugins.php' != $pagenow ) || ( $this->ALL_PLUGUNS_CALLED != true ) ) { // Just a double check the current_plugin_dir is in the active plugins array. if ( isset( $active_plugins[LEARNDASH_LMS_PLUGIN_KEY] ) ) { if ( ( !empty( $this->learndash_legacy_plugins_paths ) ) && ( is_array( $this->learndash_legacy_plugins_paths ) ) ) { foreach( $this->learndash_legacy_plugins_paths as $learndash_legacy_plugins_path ) { if ( $learndash_legacy_plugins_path != LEARNDASH_LMS_PLUGIN_KEY ) { if ( !isset( $active_plugins[$learndash_legacy_plugins_path] ) ) { $active_plugins[$learndash_legacy_plugins_path] = $active_plugins[LEARNDASH_LMS_PLUGIN_KEY]; } } } } } } } return $active_plugins; } function pre_update_site_option_active_sitewide_plugins( $active_plugins ) { if ( !empty( $active_plugins ) ) { if ( ( !empty( $this->learndash_legacy_plugins_paths ) ) && ( is_array( $this->learndash_legacy_plugins_paths ) ) ) { foreach( $this->learndash_legacy_plugins_paths as $learndash_legacy_plugins_path ) { if ( $learndash_legacy_plugins_path != LEARNDASH_LMS_PLUGIN_KEY ) { if ( isset( $active_plugins[$learndash_legacy_plugins_path] ) ) { unset( $active_plugins[$learndash_legacy_plugins_path] ); } } } } } return $active_plugins; } /** * Add support for alternate templates directory. * Normally LD will load template files from the active theme directory * or if not found via the plugin templates directory. We now support * a nuetral directory wp-content/uploads/learndash/templates/ * * If the site uses a functions.php it will be loaded from that directory * This is the recommended place to add actions/filters to prevent theme updates * from erasing them. * * @since 2.4 * * @param none * @return none */ function init_ld_templates_dir() { if ( ! defined('LEARNDASH_TEMPLATES_DIR' ) ) { $wp_upload_dir = wp_upload_dir(); $ld_templates_dir = trailingslashit( $wp_upload_dir['basedir'] ) . 'learndash/templates/'; define( 'LEARNDASH_TEMPLATES_DIR', $ld_templates_dir ); if ( ! file_exists( $ld_templates_dir ) ) { if ( wp_mkdir_p( $ld_templates_dir ) !== false ) { // To prevent security browsing add an index.php file. file_put_contents( trailingslashit( $ld_templates_dir ) .'index.php', '// nothing to see here'); } } } // Piggy back to this logic and cleanup the reports directory if ( ( is_admin() ) && (( !defined( 'DOING_AJAX' ) ) || ( DOING_AJAX !== true )) ) { $wp_upload_dir = wp_upload_dir(); $ld_reports_dir = trailingslashit( $wp_upload_dir['basedir'] ) . 'learndash/'; if ( file_exists( $ld_reports_dir ) ) { $filenames = array(); $filenames_csv = glob( $ld_reports_dir ."*.csv"); if (( is_array( $filenames_csv ) ) && ( !empty( $filenames_csv ) )) $filenames = array_merge($filenames, $filenames_csv ); $filenames_csv = glob( $ld_reports_dir ."/reports/*.csv" ); if (( is_array( $filenames_csv ) ) && ( !empty( $filenames_csv ) )) $filenames = array_merge($filenames, $filenames_csv ); if ( !empty( $filenames ) ) { foreach ( $filenames as $filename ) { if ( filemtime( $filename ) < ( time() - 60 * 60) ) { $file = basename( $filename ); if ( substr( $file, 0, strlen( 'learndash_reports_user_courses_' )) == 'learndash_reports_user_courses_' ) { $transient_hash = str_replace( array( 'learndash_reports_user_courses_', '.csv' ), '', $file ); $options_key = 'learndash_reports_user_courses_' . $transient_hash; delete_option( $options_key ); $options_key = '_transient_user-courses_' . $transient_hash; delete_option( $options_key ); $options_key = '_transient_timeout_user-courses_' . $transient_hash; delete_option( $options_key ); @unlink( $filename ); } else if ( substr( $file, 0, strlen( 'learndash_reports_user_quizzes' )) == 'learndash_reports_user_quizzes' ) { $transient_hash = str_replace( array( 'learndash_reports_user_quizzes', '.csv' ), '', $file ); $options_key = 'learndash_reports_user_quizzes_' . $transient_hash; delete_option( $options_key ); $options_key = '_transient_user-quizzes_' . $transient_hash; delete_option( $options_key ); $options_key = '_transient_timeout_user-quizzes_' . $transient_hash; delete_option( $options_key ); @unlink( $filename ); } } } } } } } // If on the Course, Lessons, Topics section we display the WP Post Categories or Post Tags. We want to hide the row action 'view' links. function ld_course_category_row_actions( $actions, $tag ) { global $learndash_post_types; global $pagenow, $taxnow; if ( ( $pagenow == 'edit-tags.php' ) && ( ( $taxnow == 'category' ) || ( $taxnow == 'post_tag' ) ) ) { if ( in_array( get_current_screen()->post_type, $learndash_post_types ) !== false ) { if ( isset( $actions['view'] ) ) { //unset( $actions['view'] ); $current_href_old = get_term_link( $tag ); $current_href_new = add_query_arg( 'post_type', get_current_screen()->post_type, $current_href_old ); $actions['view'] = str_replace( $current_href_old, $current_href_new, $actions['view'] ); } } } return $actions; } /** * Function to dynamically control the 'the_content' filtering for this post_type instance. * This is needed for example when using the 'the_content' filters manually and do not want the * normal filters recursively applied. * * @since 2.5.9 * * @param boolean $filter_check True if the_content filter is to be enabled. * @param array $post_types Limit change to specific instance post types. default is all. */ public static function content_filter_control( $filter_check = true, $post_types = array() ) { if ( empty( $post_types ) ) { $post_types = array_keys( SFWD_CPT_Instance::$instances ); } foreach( SFWD_CPT_Instance::$instances as $post_type => $instance ) { if ( in_array( $post_type, $post_types ) ) { $instance->content_filter_control( $filter_check ); } } } // End of functions. } } global $sfwd_lms; $sfwd_lms = new SFWD_LMS(); PKc\GJ#includes/class-ldlms-transients.phpnuW+Aoptions . " WHERE option_name LIKE '_transient_learndash_%' OR option_name LIKE '_transient_timeout_learndash_%'"; $wpdb->query( $sql_str ); } } // End of functions. } } PKc\ :)includes/shortcodes/shortcodes-loader.phpnuW+A 0, 'quiz_id' => 0, 'user_id' => get_current_user_id(), ); $atts = shortcode_atts( $defaults, $atts ); $atts['course_id'] = absint( $atts['course_id'] ); $atts['quiz_id'] = absint( $atts['quiz_id'] ); $atts['user_id'] = absint( $atts['user_id'] ); if ( empty( $atts['course_id'] ) ) { $atts['course_id'] = learndash_get_course_id(); } if ( empty( $atts['quiz_id'] ) ) { $atts['quiz_id'] = learndash_get_quiz_id(); } $learndash_shortcode_used = true; if ( ( ! empty( $atts['quiz_id'] ) ) && ( ! empty( $atts['user_id'] ) ) ) { if ( learndash_is_quiz_complete( $atts['user_id'], $atts['quiz_id'], $atts['course_id'] ) ) { $content = do_shortcode( $content ); } else { $content = ''; } } else { $content = ''; } return $content; } add_shortcode( 'ld_quiz_complete', 'ld_quiz_complete_shortcode', 10, 2 ); PKc\ E E (includes/shortcodes/ld_course_resume.phpnuW+A 0, 'user_id' => get_current_user_id(), 'label' => '', 'html_class' => 'ld-course-resume', 'html_id' => '', 'button' => true, ); $atts = shortcode_atts( $defaults, $atts ); $atts['course_id'] = absint( $atts['course_id'] ); $atts['user_id'] = absint( $atts['user_id'] ); if ( empty( $atts['course_id'] ) ) { $atts['course_id'] = learndash_get_course_id(); if ( ( empty( $atts['course_id'] ) ) && ( ! empty( $atts['user_id'] ) ) ) { $atts['course_id'] = learndash_get_last_active_course( $atts['user_id'] ); } } if ( empty( $atts['label'] ) ) { if ( ! empty( $content ) ) { $atts['label'] = $content; $content = ''; } else { // translators: placeholder: Course. $atts['label'] = sprintf( esc_html_x( 'Resume %s', 'placeholder: Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ); } } if ( ( 'false' === $atts['button'] ) || ( '0' === $atts['button'] ) ) { $atts['button'] = false; } else { $atts['button'] = true; $atts['html_class'] .= ' ld-button '; } /** * Let the outside world filter the shortcode attributes. */ $atts = apply_filters( 'learndash_shortcode_atts_ld_course_resume', $atts ); $atts = apply_filters( 'learndash_shortcode_atts', $atts, 'ld_course_resume' ); if ( ( ! empty( $atts['user_id'] ) ) && ( ! empty( $atts['course_id'] ) ) ) { // We only output for 'in progress' courses. $course_status = learndash_course_status( $atts['course_id'], $atts['user_id'], true ); if ( $course_status === 'in-progress' ) { $user_course_last_step_id = learndash_user_course_last_step( $atts['user_id'], $atts['course_id'] ); if ( ! empty( $user_course_last_step_id ) ) { $progress = learndash_get_course_progress( null, $user_course_last_step_id, $atts['course_id'] ); if ( ( isset( $progress['next'] ) ) && ( is_a( $progress['next'], 'WP_Post' ) ) ) { $user_course_last_step_id = $progress['next']->ID; } $course_permalink = learndash_get_step_permalink( $user_course_last_step_id, $atts['course_id'] ); if ( ! empty( $course_permalink ) ) { $learndash_shortcode_used = true; $html_class = ''; if ( ! empty( $atts['html_class'] ) ) { $html_class = ' class="' . esc_attr( $atts['html_class'] ) . '"'; } $html_id = ''; if ( ! empty( $atts['html_id'] ) ) { $html_id = ' id="' . esc_attr( $atts['html_id'] ) . '"'; } if ( true === $atts['button'] ) { $content .= '
      '; } $content .= '' . do_shortcode( $atts['label'] ) . ''; if ( true === $atts['button'] ) { $content .= '
      '; } } } } } return $content; } add_shortcode( 'ld_course_resume', 'ld_course_resume_shortcode', 10, 2 ); PKc\`]&includes/shortcodes/ld_certificate.phpnuW+A 0, 'quiz_id' => 0, 'user_id' => get_current_user_id(), 'label' => esc_html__( 'Certificate', 'learndash' ), //'id' => '', 'class' => 'button', //'target' => '', //'_blank', //'aria-label' => esc_html__( 'link text - new window', 'learndash' ), 'context' => '', // User defined value. 'callback' => '', // User defined value. ); $atts = shortcode_atts( $defaults, $atts ); $atts['course_id'] = absint( $atts['course_id'] ); $atts['quiz_id'] = absint( $atts['quiz_id'] ); $atts['user_id'] = absint( $atts['user_id'] ); if ( empty( $atts['course_id'] ) ) { $atts['course_id'] = learndash_get_course_id(); } if ( empty( $atts['quiz_id'] ) ) { $atts['quiz_id'] = learndash_get_quiz_id(); } //if ( ( '_blank' === $atts['target'] ) && ( empty( $atts['aria-label'] ) ) ) { // $atts['aria-label'] = esc_html__( 'link text - new window', 'learndash' ); //} /** * Allow filtering of the shortcode attributes. * * @since 3.2 * @param array $atts Array of shortcode attributes. */ $atts = apply_filters( 'ld_certificate_shortcode_values', $atts ); $atts['cert_url'] = ''; if ( ! empty( $atts['user_id'] ) ) { if ( ( ! empty( $atts['course_id'] ) ) || ( ! empty( $atts['quiz_id'] ) ) ) { $learndash_shortcode_used = true; $cert_button_html = ''; if ( ! empty( $atts['quiz_id'] ) ) { // Ensure the user passed the Quiz. if ( learndash_is_quiz_complete( $atts['user_id'], $atts['quiz_id'], $atts['course_id'] ) ) { $cert_details = learndash_certificate_details( $atts['quiz_id'], $atts['user_id'] ); if ( ( isset( $cert_details['certificateLink'] ) ) && ( ! empty( $cert_details['certificateLink'] ) ) ) { $atts['cert_url'] = $cert_details['certificateLink']; } } } else if ( ! empty( $atts['course_id'] ) ) { // Ensure the user completed the Course. if ( 'completed' === learndash_course_status( $atts['course_id'], $atts['user_id'], true ) ) { $atts['cert_url'] = learndash_get_course_certificate_link( $atts['course_id'], $atts['user_id'] ); } } if ( ! empty( $atts['cert_url'] ) ) { /** * Allow filtering of the cert url * * @since 3.2 * @param URL cert_url URL for Certificate. */ $atts['cert_url'] = apply_filters( 'ld_certificate_shortcode_cert_url', $atts['cert_url'] ); if ( ( ! empty( $atts['callback'] ) ) && ( is_callable( $atts['callback'] ) ) ) { $cert_button_html = call_user_func( $atts['callback'], $atts ); } else { $cert_button_html = ''; if ( ! empty( $atts['label'] ) ) { $cert_button_html .= do_shortcode( $atts['label'] ); } $cert_button_html .= ''; } } /** * Filter to allow override of shortcode button HTML before added to content * * @since 3.2 * @param html $cert_button_html HTML of generated button element. * @param array $atts Array of shortcode attributes used to generate $cert_button_html element. * @param string $content Shortcode additional content passed into handler function. */ $cert_button_html = apply_filters( 'learndash_ld_certificate_html', $cert_button_html, $atts, $content ); if ( ! empty( $cert_button_html ) ) { $content .= $cert_button_html; } } } return $content; } add_shortcode( 'ld_certificate', 'ld_certificate_shortcode', 10, 2 ); PKc\]]includes/ld-autoupdate.phpnuW+Aupdate_path = $update_path; $this->plugin_slug = $plugin_slug; $this->current_version = LEARNDASH_VERSION; //$this->get_plugin_data()->Version; list ( $t1, $t2 ) = explode( '/', $plugin_slug ); $this->slug = str_replace( '.php', '', $t2 ); $code = $this->code = $this->slug; $license = get_option( 'nss_plugin_license_' . $code ); $licenseemail = get_option( 'nss_plugin_license_email_' . $code ); if ( ( empty( $license ) ) || ( empty( $licenseemail ) ) ) { $this->reset(); } else { // Build the updater path ONLY if the license and email are not empty. This prevents unnecessary calls to the remote server. $this->update_path = add_query_arg( array( 'pluginupdate' => $code, 'licensekey' => urlencode( $license ), 'licenseemail' => urlencode( $licenseemail ), 'nsspu_wpurl' => urlencode( get_bloginfo( 'wpurl' ) ), 'nsspu_admin' => urlencode( get_bloginfo( 'admin_email' ) ), 'current_version' => $this->current_version, ), $update_path ); } //Add Menu add_action( 'admin_menu', array( $this, 'nss_plugin_license_menu' ), 1 ); // define the alternative API for updating checking add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ) ); // Define the alternative response for information checking add_filter( 'plugins_api', array( $this, 'check_info' ), 50, 3 ); add_action( 'in_admin_header', array( $this, 'check_notice' ) ); add_action( 'admin_notices', array( &$this, 'admin_notice_upgrade_notice' ) ); add_action( 'in_plugin_update_message-' . $this->plugin_slug, array( $this, 'show_upgrade_notification' ), 10, 2 ); // Handle License post update. add_action( 'admin_init', array( $this, 'nss_plugin_license_update' ), 1 ); } /** * Handle license form post updates. * * @since 3.0 */ public function nss_plugin_license_update() { // See if the user has posted us some information // If they did, this hidden field will be set to 'Y' if ( ( isset( $_POST['ld_plugin_license_nonce'] ) ) && ( ! empty( $_POST['ld_plugin_license_nonce'] ) ) && ( wp_verify_nonce( $_POST['ld_plugin_license_nonce'], 'update_nss_plugin_license_' . $this->code ) ) ) { $license = ''; if ( ( isset( $_POST[ 'nss_plugin_license_' . $this->code ] ) ) && ( ! empty( $_POST[ 'nss_plugin_license_' . $this->code ] ) ) ) { $license = esc_attr( $_POST[ 'nss_plugin_license_' . $this->code ] ); } $email = ''; if ( ( isset( $_POST[ 'nss_plugin_license_email_' . $this->code ] ) ) && ( is_email( $_POST[ 'nss_plugin_license_email_' . $this->code ] ) ) ) { $email = $_POST[ 'nss_plugin_license_email_' . $this->code ]; } // Save the posted value in the database update_option( 'nss_plugin_license_' . $this->code, $license ); update_option( 'nss_plugin_license_email_' . $this->code, $email ); $this->reset(); ?> get_plugin_upgrade_notice(); if ( ! empty( $upgrade_notice ) ) { echo '

      ' . str_replace( array('

      ', '

      ' ), array( '', '
      ' ), $upgrade_notice ); } } /** * Utility function to the status of the license. */ public function is_license_valid() { $license = get_option( 'nss_plugin_remote_license_' . $this->slug ); if ( ( isset( $license['value'] ) ) && ( '1' === $license['value'] ) ) { return true; } return false; } /** * Checks to see if a license administrative notice needs to be displayed, and if so, displays it. * * @since 2.1.0 * */ public function check_notice() { if ( ( isset( $_REQUEST['page'] ) ) && ( 'nss_plugin_license-' . $this->code . '-settings' === $_REQUEST['page'] ) || ( isset( $_REQUEST['page'] ) ) && ( 'learndash_lms_overview' === $_REQUEST['page'] ) ) { $this->check_update( array() ); } if ( ! $this->is_license_valid() ) { add_action( 'admin_notices', array( $this, 'admin_notice' ) ); } } /** * Determines if the plugin should check for updates * * @since 2.1.0 * * @return bool */ public function time_to_recheck() { $nss_plugin_check = get_option( 'nss_plugin_check_' . $this->slug ); if ( ( empty( $nss_plugin_check ) ) || ( ! empty( $_REQUEST['pluginupdate'] ) && $_REQUEST['pluginupdate'] == $this->code ) || ( ! empty( $_GET['force-check'] ) ) || ( $nss_plugin_check <= time() - 12 * 60 * 60 ) /* || ( ( isset( $_REQUEST['page'] ) ) && ( @$_REQUEST['page'] == 'nss_plugin_license-'.$this->code.'-settings' ) || ( isset( $_REQUEST['page'] ) ) && ( @$_REQUEST['page'] === 'learndash_lms_overview' ) ) */ ) { //$this->reset(); return true; } else { return false; } } /** * Resets the time the plugin was checked last, and removes previous license, version, and plugin info data * * @since 2.1.0 * */ public function reset() { delete_option( 'nss_plugin_remote_version_' . $this->slug ); delete_option( 'nss_plugin_remote_license_' . $this->slug ); delete_option( 'nss_plugin_info_' . $this->slug ); delete_option( 'nss_plugin_check_' . $this->slug ); //update_option( 'nss_plugin_check_' . $this->slug, time() ); } /** * Echos the administrative notice if the plugin license is incorrect * * @since 2.1.0 * */ public function admin_notice() { static $notice_shown = false; if ( true !== $notice_shown ) { $current_screen = get_current_screen(); if ( ! in_array( $current_screen->id, array( 'admin_page_nss_plugin_license-sfwd_lms-settings', 'dashboard', 'admin_page_learndash_lms_overview' ) ) ) { $notice_shown = true; ?>

      ' . $this->get_plugin_data()->Name . '', '' . __('here', 'learndash' ) . '' ); ?>

      get_plugin_upgrade_notice( 'upgrade_notice_admin' ); if ( ! empty( $upgrade_notice ) ) { $notice_shown_upgrade_notice = true; ?>
      plugin_slug ); } /** * Returns the metadata of the LearnDash plugin * * @since 2.1.0 * * @return object Metadata of the LearnDash plugin */ public function get_plugin_data() { if ( ! function_exists( 'get_plugin_data' ) ) { include_once ABSPATH . 'wp-admin' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'plugin.php'; } return (object) get_plugin_data( dirname( dirname( dirname( __FILE__ ) ) ) . DIRECTORY_SEPARATOR . $this->plugin_slug ); } /** * Add our self-hosted autoupdate plugin to the filter transient * * @since 2.1.0 * * @param $transient * * @return object $transient */ public function check_update( $transient ) { if ( is_array( $transient ) ) { $transient = (object) $transient; } if ( empty( $transient->checked ) ) { // return $transient; } if ( ! $this->time_to_recheck() ) { $remote_version = get_option( 'nss_plugin_remote_version_' . $this->slug ); $license = get_option( 'nss_plugin_remote_license_' . $this->slug ); } else { $remote_version = ''; $license = ''; } // Get the remote version if ( empty( $remote_version ) ) { $info = $this->getRemote_information(); if ( ( $info ) && ( property_exists( $info, 'new_version' ) ) ) { $remote_version = $info->new_version; update_option( 'nss_plugin_remote_version_' . $this->slug, $remote_version ); update_option( 'nss_plugin_info_' . $this->slug, $info ); } } if ( empty( $license ) ) { $value = $this->getRemote_license(); $license = array( 'value' => $value ); update_option( 'nss_plugin_remote_license_' . $this->slug, $license ); } // If a newer version is available, add the update if ( version_compare( $this->current_version, $remote_version, '<' ) ) { $obj = new stdClass(); $obj->slug = $this->slug; $obj->new_version = $remote_version; $obj->plugin = 'sfwd-lms/' . $this->slug; if ( ! empty( $this->update_path ) ) { $obj->url = $this->update_path; $obj->package = $this->update_path; } else { $obj->url = null; $obj->package = null; } $plugin_readme = $this->get_plugin_readme(); if ( ! empty( $plugin_readme ) ) { // First we remove the properties we DON'T want from the support site foreach ( array( 'sections', 'requires', 'tested', 'last_updated' ) as $property_key ) { if ( property_exists( $obj, $property_key ) ) { unset( $obj->$property_key ); } } if ( isset( $plugin_readme['upgrade_notice'] ) ) { unset( $plugin_readme['upgrade_notice'] ); } //$upgrade_notice = $this->get_plugin_upgrade_notice(); //if ( ! empty( $upgrade_notice ) ) { // $obj->upgrade_notice = '
      ' . $upgrade_notice . '
      '; //} foreach ( $plugin_readme as $key => $val ) { if ( ! property_exists( $obj, $key ) ) { $obj->$key = $val; } } } if ( ! property_exists( $obj, 'icons' ) ) { // Add an image for the WP 4.9.x plugins update screen. $obj->icons = array( 'default' => LEARNDASH_LMS_PLUGIN_URL . '/assets/images/ld-plugin-image.jpg', ); } $transient->response[ $this->plugin_slug ] = $obj; } return $transient; } public function get_plugin_readme() { if ( is_null( $this->ld_updater ) ) { $this->ld_updater = new LearnDash_Addon_Updater(); } $this->ld_updater->get_addon_plugins(); return $this->ld_updater->update_plugin_readme( 'learndash-core-readme' ); } public function get_plugin_upgrade_notice( $admin = 'upgrade_notice' ) { $upgrade_notice = ''; $plugin_readme = $this->get_plugin_readme(); if ( 'upgrade_notice' === $admin ) { if ( ( isset( $plugin_readme['upgrade_notice']['content'] ) ) && ( ! empty( $plugin_readme['upgrade_notice']['content'] ) ) ) { foreach ( $plugin_readme['upgrade_notice']['content'] as $upgrade_notice_version => $upgrade_notice_message ) { if ( version_compare( $upgrade_notice_version, $this->current_version, '>' ) ) { //if ( ! empty( $upgrade_notice ) ) { // $upgrade_notice .= '
      '; //} $upgrade_notice_message = str_replace( array( "\r\n", "\n", "\r" ), '', $upgrade_notice_message ); $upgrade_notice_message = str_replace( '

      ', '

      ', $upgrade_notice_message ); $upgrade_notice_message = str_replace( '

      ', '', $upgrade_notice_message ); $upgrade_notice_message = str_replace( '

      ', '', $upgrade_notice_message ); $upgrade_notice .= '

      ' . $upgrade_notice_version . ': ' . $upgrade_notice_message . '

      '; } } } } else if ( 'upgrade_notice_admin' === $admin ) { if ( ( isset( $plugin_readme['upgrade_notice_admin']['content'] ) ) && ( ! empty( $plugin_readme['upgrade_notice_admin']['content'] ) ) ) { foreach ( $plugin_readme['upgrade_notice_admin']['content'] as $upgrade_notice_version => $upgrade_notice_message ) { if ( version_compare( $upgrade_notice_version, $this->current_version, '>' ) ) { //if ( ! empty( $upgrade_notice ) ) { // $upgrade_notice .= '
      '; //} //$upgrade_notice_message = str_replace( array( "\r\n", "\n", "\r" ), '', $upgrade_notice_message ); //$upgrade_notice_message = str_replace( '

      ', '

      ', $upgrade_notice_message ); //$upgrade_notice_message = str_replace( '

      ', '', $upgrade_notice_message ); //$upgrade_notice_message = str_replace( '

      ', '', $upgrade_notice_message ); //$upgrade_notice .= '

      ' . $upgrade_notice_version . ': ' . $upgrade_notice_message . '

      '; $upgrade_notice_message = str_replace( array( '

      ', '

      ' ), array( '

      ', '

      ' ), $upgrade_notice_message ); $upgrade_notice .= $upgrade_notice_message; } } } } return $upgrade_notice; } /** * Add our self-hosted description to the filter, or returns false * * @since 2.1.0 * * @param boolean $false * @param array $action * @param object $arg * * @return bool|object */ public function check_info( $false, $action, $arg ) { if ( empty( $arg ) || empty( $arg->slug ) || empty( $this->slug ) ) { return $false; } if ( $arg->slug === $this->slug ) { if ( ! $this->time_to_recheck() ) { $info = get_option( 'nss_plugin_info_' . $this->slug ); if ( ! empty( $info ) ) { return $info; } } if ( 'plugin_information' == $action ) { $information = $this->getRemote_information(); update_option( 'nss_plugin_info_' . $this->slug, $information ); $false = $information; } } return $false; } /** * Return the remote version, or returns false * * @return bool|string $remote_version */ public function getRemote_version() { if ( ! empty( $this->update_path ) ) { $request = wp_remote_post( $this->update_path, array( 'body' => array( 'action' => 'version' ), 'timeout' => LEARNDASH_HTTP_REMOTE_POST_TIMEOUT ) ); if ( ! is_wp_error( $request ) || wp_remote_retrieve_response_code( $request ) === 200 ) { return $request['body']; } } return false; } /** * Get information about the remote version, or returns false * * @return bool|object */ public function getRemote_information() { if ( ! empty( $this->update_path ) ) { $request = wp_remote_post( $this->update_path, array( 'body' => array( 'action' => 'info' ), 'timeout' => LEARNDASH_HTTP_REMOTE_POST_TIMEOUT ) ); if ( ! is_wp_error( $request ) || wp_remote_retrieve_response_code( $request ) === 200 ) { $information = @unserialize( $request['body'] ); if ( empty( $information ) ) { $information = new stdClass(); } $plugin_readme = $this->get_plugin_readme(); if ( ! empty( $plugin_readme ) ) { // First we remove the properties we DON'T want from the support site foreach ( array( 'sections', 'requires', 'tested', 'last_updated' ) as $property_key ) { if ( property_exists( $information, $property_key ) ) { unset( $information->$property_key ); } } foreach ( $plugin_readme as $key => $val ) { if ( ! property_exists( $information, $key ) ) { $information->$key = $val; } } } return $information; } } return false; } /** * Return the status of the plugin licensing, or returns true * * @since 2.1.0 * * @return bool|string $remote_license */ public function getRemote_license() { if ( ! empty( $this->update_path ) ) { $request = wp_remote_post( $this->update_path, array( 'body' => array( 'action' => 'license' ), 'timeout' => LEARNDASH_HTTP_REMOTE_POST_TIMEOUT ) ); if ( ! is_wp_error( $request ) || wp_remote_retrieve_response_code( $request ) === 200 ) { if ( '1' !== $request['body'] ) { $this->reset(); add_action( 'admin_notices', array( &$this, 'admin_notice' ) ); return false; } return $request['body']; } } return false; } /** * Retrieves the current license from remote server, or returns true * * @since 2.1.0 * * @return bool|string $current_license */ public function getRemote_current_license() { if ( ! empty( $this->update_path ) ) { $request = wp_remote_post( $this->update_path, array( 'body' => array( 'action' => 'current_license' ), 'timeout' => LEARNDASH_HTTP_REMOTE_POST_TIMEOUT ) ); if ( ! is_wp_error( $request ) || wp_remote_retrieve_response_code( $request ) === 200 ) { if ( $request['body'] == 'not_found' ) { //$this->invalid_current_license(); } return $request['body']; } } return true; } /** * Adds the license submenu to the administrative settings page * * @since 2.1.0 * */ public function nss_plugin_license_menu() { add_submenu_page( 'admin.php?page=learndash_lms_settings', $this->get_plugin_data()->Name . ' License', $this->get_plugin_data()->Name . ' License', LEARNDASH_ADMIN_CAPABILITY_CHECK, 'nss_plugin_license-' . $this->code . '-settings', array( $this, 'nss_plugin_license_menupage' ) ); } /** * Outputs the license settings page * * @since 2.1.0 * */ public function nss_plugin_license_menupage() { $code = $this->code; //must check that the user has the required capability if ( ! learndash_is_admin_user() ) { wp_die( esc_html__( 'You do not have sufficient permissions to access this page.', 'default' ) ); } // Read in existing option value from database $license = get_option( 'nss_plugin_license_' . $code ); $email = get_option( 'nss_plugin_license_email_' . $code ); $domain = str_replace( array( 'http://', 'https://' ), '', get_bloginfo( 'url' ) ); $license = get_option( 'nss_plugin_license_' . $code ); $email = get_option( 'nss_plugin_license_email_' . $code ); $license_status = false; if ( ! empty( $license ) && ! empty( $email ) ) { $license_status = get_option( 'nss_plugin_remote_license_' . $this->slug ); if ( isset( $license_status['value'] ) ) { $license_status = $license_status['value']; } else { $license_status = $this->getRemote_license(); } } ?>


      ' . esc_html__( 'buy', 'learndash' ) . '' ); ?>







      is_license_valid(); } } PKc\!|  6includes/admin/class-learndash-admin-import-export.phpnuW+A array( 'post_type' => 'sfwd-courses', '' 'label' => sprintf( // translators: placeholder: Course. esc_html_x( '%s', 'placeholder: Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ), ), ) ); */ } // End of functions. } // End of Class. }PKc\إFF3includes/admin/class-learndash-admin-menus-tabs.phpnuW+A 0, 'high' => 10, 'normal' => 20, 'taxonomy' => 30, 'misc' => 100, ); /** * Public constructor for class */ public function __construct() { // We first add this hook so we are calling 'admin_menu' early. add_action( 'admin_menu', array( $this, 'learndash_admin_menu_early' ), 0 ); /** * Then within the 'wp_loaded' handler we add another hook into * 'admin_menu' to be in the last-est position where we add all * the misc menu items. */ add_action( 'wp_loaded', array( $this, 'wp_loaded' ), 1000 ); //add_action( 'all_admin_notices', array( $this, 'learndash_admin_tabs' ), 20 ); add_action( 'in_admin_header', array( $this, 'learndash_admin_tabs' ), 20 ); } public static function get_instance() { if ( null === self::$instance ) { self::$instance = new static(); } return self::$instance; } /** * We hook into the 'wp_loaded' action which comes just before the * 'admin_menu' action. The reason for this we want to add a special * 'admin_menu' and ensure it is the last action taken on the menu. */ public function wp_loaded() { global $wp_filter; /*********************************************************************** admin_menu ************************************************************************/ // Set a default priority. $top_priority = 100; if ( defined( 'LEARNDASH_SUBMENU_SETTINGS_PRIORITY' ) ) { $top_priority = intval( LEARNDASH_SUBMENU_SETTINGS_PRIORITY ); } $top_priority = apply_filters( 'learndash_submenu_settings_priority', $top_priority ); add_action( 'admin_menu', array( $this, 'learndash_admin_menu_last' ), $top_priority ); } public function learndash_menu_args( $menu_args = array() ) { if ( ( is_array( $menu_args['admin_tabs'] ) ) && ( ! empty( $menu_args['admin_tabs'] ) ) ) { foreach ( $menu_args['admin_tabs'] as &$admin_tab_item ) { // Similar to the logic from admin_menu above. // We need to convert the 'edit.php?post_type=sfwd-courses&page=sfwd-lms_sfwd_lms.php_post_type_sfwd-courses' // menu_links to 'admin.php?page=learndash_lms_settings' so all the LearnDash > Settings tabs connect // to that menu instead. if ( 'edit.php?post_type=sfwd-courses&page=sfwd-lms_sfwd_lms.php_post_type_sfwd-courses' === $admin_tab_item['menu_link'] ) { $admin_tab_item['menu_link'] = 'admin.php?page=learndash_lms_settings'; } } } $menu_args['admin_tabs_on_page']['admin_page_learndash_lms_settings'] = $menu_args['admin_tabs_on_page']['sfwd-courses_page_sfwd-lms_sfwd_lms_post_type_sfwd-courses']; $menu_args['admin_tabs_on_page']['sfwd-courses_page_sfwd-lms_sfwd_lms_post_type_sfwd-courses'] = $menu_args['admin_tabs_on_page']['edit-sfwd-courses']; return $menu_args; } public function learndash_admin_menu_tabs( $menu_args = array() ) { $menu_item_tabs = array(); // Now we take the current page id and collect all the tab items. This is the newer // form of the tab logic instead of them being global. $current_page_id = $menu_args['current_page_id']; if ( isset( $menu_args['admin_tabs_on_page'][ $current_page_id ] ) ) { $menu_link = ''; foreach ( $menu_args['admin_tabs_on_page'][ $current_page_id ] as $admin_tabs_on_page_id ) { if ( isset( $menu_args['admin_tabs'][ $admin_tabs_on_page_id ] ) ) { if ( empty( $menu_link ) ) { $menu_link = $menu_args['admin_tabs'][ $admin_tabs_on_page_id ]['menu_link']; } $menu_item_tabs[ $admin_tabs_on_page_id ] = $menu_args['admin_tabs'][ $admin_tabs_on_page_id ]; } } foreach ( $menu_args['admin_tabs'] as $admin_tab_id => $admin_tab ) { if ( $admin_tab['menu_link'] == $menu_link ) { if ( ! isset( $menu_item_tabs[ $admin_tab_id ] ) ) { $menu_item_tabs[ $admin_tab_id ] = $admin_tab; } } } } return $menu_item_tabs; } public function add_admin_tab_set( $menu_slug, $menu_item ) { global $learndash_post_types, $learndash_taxonomies; $url_parts = wp_parse_url( $menu_slug ); if ( ( isset( $url_parts['path'] ) ) && ( 'edit.php' === $url_parts['path'] ) && ( isset( $url_parts['query'] ) ) && ( ! empty( $url_parts['query'] ) ) ) { $menu_query_args = array(); parse_str( $url_parts['query'], $menu_query_args ); if ( ( isset( $menu_query_args['post_type'] ) ) && ( in_array( $menu_query_args['post_type'], $learndash_post_types, true ) ) ) { if ( ! isset( $admin_tab_sets[ $menu_slug ] ) ) { $admin_tab_sets[ $menu_slug ] = array(); } foreach ( $menu_item as $menu_item_section ) { $url_parts = wp_parse_url( html_entity_decode( $menu_item_section[2] ) ); if ( ( isset( $url_parts['query'] ) ) && ( ! empty( $url_parts['query'] ) ) ) { parse_str( $url_parts['query'], $link_params ); } else { $link_params = array( 'post_type' => $menu_query_args['post_type'], 'taxonomy' => '', ); } // Edit - We add in the 1 position if ( substr( $menu_item_section[2], 0, strlen( 'edit.php?' ) ) == 'edit.php?' ) { $all_title = $menu_item_section[0]; if ( ( isset( $link_params['post_type'] ) ) && ( ! empty( $link_params['post_type'] ) ) ) { $post_type_object = get_post_type_object( $link_params['post_type'] ); if ( $post_type_object ) { $all_title = sprintf( // translators: placeholder: Post Type Plural Name. esc_html_x( 'All %s', 'placeholder: Post Type Plural Name', 'learndash' ), $post_type_object->labels->name ); } } $this->admin_tab_sets[ $menu_slug ][1] = array( 'id' => 'edit-' . $link_params['post_type'], 'name' => $all_title, 'cap' => $menu_item_section[1], 'link' => $menu_item_section[2], ); } elseif ( 'edit-tags.php?' === substr( $menu_item_section[2], 0, strlen( 'edit-tags.php?' ) ) ) { $menu_priority = 50; if ( 'sfwd-quiz' === $menu_query_args['post_type'] ) { $menu_priority = 23; } elseif ( ( isset( $link_params['taxonomy'] ) ) && ( ! empty( $link_params['taxonomy'] ) ) ) { if ( in_array( $link_params['taxonomy'], $learndash_taxonomies ) ) { $menu_priority = 40; } } $this->add_admin_tab_item( $menu_slug, array( 'id' => 'edit-' . $link_params['taxonomy'], 'name' => $menu_item_section[0], 'cap' => $menu_item_section[1], 'link' => $menu_item_section[2], ), $menu_priority ); } } } } } public function add_admin_tab_item( $menu_slug, $menu_item, $menu_priority = 20 ) { if ( ! isset( $this->admin_tab_sets[ $menu_slug ] ) ) { $this->admin_tab_sets[ $menu_slug ] = array(); } else { ksort( $this->admin_tab_sets[ $menu_slug ] ); } if ( ! isset( $menu_item['cap'] ) ) { $menu_item['cap'] = LEARNDASH_ADMIN_CAPABILITY_CHECK; } while ( true ) { if ( ! isset( $this->admin_tab_sets[ $menu_slug ][ $menu_priority ] ) ) { $this->admin_tab_sets[ $menu_slug ][ $menu_priority ] = $menu_item; break; } $menu_priority++; } } /* The purpose of this early function is to setup the main 'learndash-lms' menu page. Then * re-position the various custom post type submenu items to be found under it. */ public function learndash_admin_menu_early() { if ( ! is_admin() ) { return; } global $submenu, $menu; $add_submenu = array(); if ( current_user_can( 'edit_courses' ) ) { if ( isset( $submenu['edit.php?post_type=sfwd-courses'] ) ) { $add_submenu['sfwd-courses'] = array( 'name' => LearnDash_Custom_Label::get_label( 'courses' ), 'cap' => 'edit_courses', 'link' => 'edit.php?post_type=sfwd-courses', 'class' => 'submenu-ldlms-courses', ); $this->add_admin_tab_set( 'edit.php?post_type=sfwd-courses', $submenu['edit.php?post_type=sfwd-courses'] ); } if ( isset( $submenu['edit.php?post_type=sfwd-lessons'] ) ) { $add_submenu['sfwd-lessons'] = array( 'name' => LearnDash_Custom_Label::get_label( 'lessons' ), 'cap' => 'edit_courses', 'link' => 'edit.php?post_type=sfwd-lessons', 'class' => 'submenu-ldlms-lessons', ); $this->add_admin_tab_set( 'edit.php?post_type=sfwd-lessons', $submenu['edit.php?post_type=sfwd-lessons'] ); } if ( isset( $submenu['edit.php?post_type=sfwd-topic'] ) ) { $add_submenu['sfwd-topic'] = array( 'name' => LearnDash_Custom_Label::get_label( 'topics' ), 'cap' => 'edit_courses', 'link' => 'edit.php?post_type=sfwd-topic', 'class' => 'submenu-ldlms-topics', ); $this->add_admin_tab_set( 'edit.php?post_type=sfwd-topic', $submenu['edit.php?post_type=sfwd-topic'] ); } if ( isset( $submenu['edit.php?post_type=sfwd-quiz'] ) ) { $add_submenu['sfwd-quiz'] = array( 'name' => LearnDash_Custom_Label::get_label( 'quizzes' ), 'cap' => 'edit_courses', 'link' => 'edit.php?post_type=sfwd-quiz', 'class' => 'submenu-ldlms-quizzes', ); $this->add_admin_tab_set( 'edit.php?post_type=sfwd-quiz', $submenu['edit.php?post_type=sfwd-quiz'] ); } if ( ( true === is_data_upgrade_quiz_questions_updated() ) && ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Quizzes_Builder', 'enabled' ) === 'yes' ) ) { if ( isset( $submenu[ 'edit.php?post_type=' . learndash_get_post_type_slug( 'question' ) ] ) ) { $add_submenu['sfwd-question'] = array( 'name' => LearnDash_Custom_Label::get_label( 'questions' ), 'cap' => 'edit_courses', 'link' => add_query_arg( 'post_type', learndash_get_post_type_slug( 'question' ), 'edit.php' ), 'class' => 'submenu-ldlms-questions', ); if ( isset( $_GET['quiz_id'] ) ) { $quiz_id = absint( $_GET['quiz_id'] ); if ( ! empty( $quiz_id ) ) { foreach ( $submenu[ 'edit.php?post_type=' . learndash_get_post_type_slug( 'question' ) ] as &$link ) { $link[2] = add_query_arg( 'quiz_id', $quiz_id, $link[2] ); } } } $this->add_admin_tab_set( add_query_arg( 'post_type', learndash_get_post_type_slug( 'question' ), 'edit.php' ), $submenu[ 'edit.php?post_type=' . learndash_get_post_type_slug( 'question' ) ] ); } } if ( isset( $submenu['edit.php?post_type=sfwd-certificates'] ) ) { $add_submenu['sfwd-certificates'] = array( 'name' => esc_html_x( 'Certificates', 'Certificates Menu Label', 'learndash' ), 'cap' => 'edit_courses', 'link' => 'edit.php?post_type=sfwd-certificates', 'class' => 'submenu-ldlms-certificates', ); $this->add_admin_tab_set( 'edit.php?post_type=sfwd-certificates', $submenu['edit.php?post_type=sfwd-certificates'] ); } } if ( current_user_can( 'edit_assignments' ) ) { if ( isset( $submenu['edit.php?post_type=sfwd-assignment'] ) ) { $add_submenu['sfwd-assignment'] = array( 'name' => esc_html_x( 'Assignments', 'Assignments Menu Label', 'learndash' ), 'cap' => 'edit_assignments', 'link' => 'edit.php?post_type=sfwd-assignment', 'class' => 'submenu-ldlms-assignments', ); $this->add_admin_tab_set( 'edit.php?post_type=sfwd-assignment', $submenu['edit.php?post_type=sfwd-assignment'] ); } } if ( current_user_can( 'edit_groups' ) ) { if ( isset( $submenu['edit.php?post_type=groups'] ) ) { $add_submenu['groups'] = array( 'name' => esc_html_x( 'Groups', 'Groups Menu Label', 'learndash' ), 'cap' => 'edit_groups', 'link' => 'edit.php?post_type=groups', 'class' => 'submenu-ldlms-groups', ); $this->add_admin_tab_set( 'edit.php?post_type=groups', $submenu['edit.php?post_type=groups'] ); } } if ( learndash_is_group_leader_user() ) { $add_submenu['sfwd-essays'] = array( 'name' => esc_html_x( 'Submitted Essays', 'Submitted Essays Menu Label', 'learndash' ), 'cap' => 'group_leader', 'link' => 'edit.php?post_type=sfwd-essays', 'class' => 'submenu-ldlms-essays', ); } /** * Filter submenu array before it is registered. * * @since 2.1.0 * * @param array $add_submenu */ $add_submenu = apply_filters( 'learndash_submenu', $add_submenu ); if ( ! empty( $add_submenu ) ) { $menu_position = 2; if ( defined( 'LEARNDASH_MENU_POSITION' ) ) { $menu_position = intval( LEARNDASH_MENU_POSITION ); } $menu_position = apply_filters( 'learndash-menu-position', $menu_position ); $menu_icon = ' '; add_menu_page( esc_html__( 'LearnDash LMS', 'learndash' ), esc_html__( 'LearnDash LMS', 'learndash' ), 'read', 'learndash-lms', null, 'data:image/svg+xml;base64,' . base64_encode( $menu_icon ), $menu_position ); $location = 0; foreach ( $add_submenu as $key => $add_submenu_item ) { if ( current_user_can( $add_submenu_item['cap'] ) ) { $_tmp_menu_item = array( $add_submenu_item['name'], $add_submenu_item['cap'], $add_submenu_item['link'] ); if ( ( isset( $add_submenu_item['class'] ) ) && ( ! empty( $add_submenu_item['class'] ) ) ) { $_tmp_menu_item[4] = $add_submenu_item['class']; } $submenu['learndash-lms'][ $location++ ] = $_tmp_menu_item; } } /** * Action added to trigger add-ons when LD menu and submenu items have been added to the system. * This works better than trying to fiddle with priority on WP 'admin_menu' hook. * * @since 2.4.0 * * @param string LD menu parent slug 'learndash-lms'. */ do_action( 'learndash_admin_menu', 'learndash-lms' ); } global $learndash_post_types; foreach ( $learndash_post_types as $ld_post_type ) { $menu_slug = 'edit.php?post_type=' . $ld_post_type; if ( isset( $submenu[ $menu_slug ] ) ) { remove_menu_page( $menu_slug ); } } } public function learndash_admin_menu_last() { global $submenu, $menu, $_wp_real_parent_file, $_wp_submenu_nopriv, $_registered_pages, $_parent_pages; $_parent_file = get_admin_page_parent(); $add_submenu = array(); if ( ( isset( $submenu['learndash-lms-non-existant'] ) ) && ( ! empty( $submenu['learndash-lms-non-existant'] ) ) ) { foreach ( $submenu['learndash-lms-non-existant'] as $submenu_idx => $submenu_item ) { if ( isset( $_parent_pages[ $submenu_item[2] ] ) ) { $_parent_pages[ $submenu_item[2] ] = 'admin.php?page=learndash_lms_settings'; $submenu['admin.php?page=learndash_lms_settings'][] = $submenu_item; } } } /** * Allow add-ons and other LD core menus to be added to the bottom of the sub-menu. * * @since 2.5.6 */ $add_submenu = apply_filters( 'learndash_submenu_last', $add_submenu ); $add_submenu['settings'] = array( 'name' => esc_html_x( 'Settings', 'Settings Menu Label', 'learndash' ), 'cap' => LEARNDASH_ADMIN_CAPABILITY_CHECK, 'link' => 'admin.php?page=learndash_lms_settings', ); foreach ( $add_submenu as $key => $add_submenu_item ) { if ( current_user_can( $add_submenu_item['cap'] ) ) { $submenu['learndash-lms'][] = array( $add_submenu_item['name'], $add_submenu_item['cap'], $add_submenu_item['link'] ); } } } /** * Set up admin tabs for each admin menu page under LearnDash * * @since 2.1.0 */ public function learndash_admin_tabs() { if ( ! is_admin() ) { return; } global $submenu, $menu, $parent_file; global $learndash_current_page_link; $learndash_current_page_link = ''; $current_screen = get_current_screen(); $current_page_id = $current_screen->id; //$current_screen_parent_file = $current_screen->parent_file; if ( $parent_file ) { $current_screen_parent_file = $parent_file; } else { $current_screen_parent_file = $current_screen->parent_file; } if ( 'learndash-lms' === $current_screen_parent_file ) { if ( 'learndash-lms_page_learndash-lms-reports' === $current_screen->id ) { $current_screen_parent_file = 'admin.php?page=learndash-lms-reports'; } /** * The above IF should work. However what we are seeing in LEARNDASH-3661 is * due to the translation of 'LearnDash LMS' the screen ID gets changed by WP * to something like 'lms-learndash_page_learndash-lms-reports' in the French * or something entirely different in other languages. So we add a secondary * check on the 'page' query string param. * @since 3.0.7 */ else if ( ( isset( $_GET['page'] ) ) && ( 'learndash-lms-reports' === $_GET['page'] ) ) { $current_screen_parent_file = 'admin.php?page=learndash-lms-reports'; } // See LEARNDASH-581: // In a normal case when viewing the LearnDash > Courses > All Courses tab the screen ID is set to 'edit-sfwd-courses' and the parent_file is set ''edit.php?post_type=sfwd-courses'. // However when the Admin Menu Editor plugin is installed it somehow sets the parent_file to 'learndash-lms'. So below we need to change the value back. Note this is just for the // listing URL. The Add New and other tabs are not effected. if ( 'edit-sfwd-courses' === $current_screen->id ) { $current_screen_parent_file = 'edit.php?post_type=sfwd-courses'; } if ( 'edit-sfwd-lessons' === $current_screen->id ) { $current_screen_parent_file = 'edit.php?post_type=sfwd-lessons'; } if ( 'edit-sfwd-topic' === $current_screen->id ) { $current_screen_parent_file = 'edit.php?post_type=sfwd-topic'; } if ( 'edit-sfwd-quiz' === $current_screen->id ) { $current_screen_parent_file = 'edit.php?post_type=sfwd-quiz'; } if ( 'edit-sfwd-question' === $current_screen->id ) { $current_screen_parent_file = 'edit.php?post_type=sfwd-question'; } if ( 'edit-sfwd-certificates' === $current_screen->id ) { $current_screen_parent_file = 'edit.php?post_type=sfwd-certificates'; } if ( 'edit-groups' === $current_screen->id ) { $current_screen_parent_file = 'edit.php?post_type=groups'; } if ( 'edit-sfwd-assignment' === $current_screen->id ) { $current_screen_parent_file = 'edit.php?post_type=sfwd-assignment'; } if ( learndash_is_group_leader_user() ) { if ( 'edit-sfwd-essays' === $current_screen->id ) { $current_screen_parent_file = 'edit.php?post_type=sfwd-essays'; } } } if ( ( 'edit.php?post_type=sfwd-quiz' === $current_screen_parent_file ) || ( 'edit.php?post_type=sfwd-essays' === $current_screen_parent_file ) ) { $post_id = ! empty( $_GET['post_id'] ) ? $_GET['post_id'] : ( empty( $_GET['post'] ) ? 0 : $_GET['post'] ); if ( ! empty( $_GET['module'] ) ) { $current_page_id = $current_page_id . '_' . esc_attr( $_GET['module'] ); } elseif ( ! empty( $post_id ) ) { $current_page_id = $current_page_id . '_edit'; } if ( learndash_is_admin_user() ) { $menu_user_cap = LEARNDASH_ADMIN_CAPABILITY_CHECK; $menu_parent = 'edit.php?post_type=sfwd-quiz'; } elseif ( learndash_is_group_leader_user() ) { $menu_user_cap = LEARNDASH_GROUP_LEADER_CAPABILITY_CHECK; $menu_parent = 'learndash-lms'; } $this->add_admin_tab_item( 'edit.php?post_type=sfwd-quiz', array( 'link' => 'edit.php?post_type=sfwd-essays', 'name' => esc_html_x( 'Submitted Essays', 'Quiz Submitted Essays Tab Label', 'learndash' ), 'id' => 'edit-sfwd-essays', 'cap' => $menu_user_cap, 'parent_menu_link' => $menu_parent, ), $this->admin_tab_priorities['normal'] ); } // Somewhat of a kludge. The essays are shown within the quiz post type menu section. So we can't just use // the default logic. But we can (below) copy the quiz tab items to a new tab set for essays. if ( 'edit.php?post_type=sfwd-essays' === $current_screen_parent_file ) { if ( 'admin.php?page=learndash_lms_settings' !== $current_screen_parent_file ) { do_action( 'learndash_admin_tabs_set', $current_screen_parent_file, $this ); } $post_id = ! empty( $_GET['post_id'] ) ? $_GET['post_id'] : ( empty( $_GET['post'] ) ? 0 : $_GET['post'] ); if ( ! empty( $post_id ) ) { $current_page_id = 'edit-sfwd-essays'; //. $current_page_id; } $this->admin_tab_sets['edit.php?post_type=sfwd-essays'] = array(); foreach ( $this->admin_tab_sets['edit.php?post_type=sfwd-quiz'] as $menu_key => $menu_item ) { $this->admin_tab_sets['edit.php?post_type=sfwd-essays'][ $menu_key ] = $menu_item; } } if ( 'edit.php?post_type=sfwd-quiz' === $current_screen_parent_file ) { if ( ( empty( $post_id ) ) && ( ! empty( $_GET['quiz_id'] ) ) && ( 'admin_page_ldAdvQuiz' === $current_page_id ) ) { $post_id = learndash_get_quiz_id_by_pro_quiz_id( $_GET['quiz_id'] ); } if ( ! empty( $post_id ) ) { $quiz_id = learndash_get_setting( $post_id, 'quiz_pro', true ); if ( ! empty( $quiz_id ) ) { $this->add_admin_tab_item( $current_screen->parent_file, array( 'link' => 'post.php?post=' . $post_id . '&action=edit', 'name' => sprintf( // translators: placeholder: Edit Quiz Label. esc_html_x( 'Edit %s', 'Edit Quiz Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ), 'id' => 'sfwd-quiz_edit', ), $this->admin_tab_priorities['misc'] ); if ( ( true === is_data_upgrade_quiz_questions_updated() ) && ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Quizzes_Builder', 'enabled' ) === 'yes' ) ) { $question_tab_url = add_query_arg( array( 'post_type' => learndash_get_post_type_slug( 'question' ), 'quiz_id' => $post_id, ), 'edit.php' ); } else { $question_tab_url = add_query_arg( array( 'page' => 'ldAdvQuiz', 'module' => 'question', 'quiz_id' => $quiz_id, 'post_id' => $post_id, ), 'admin.php' ); } $this->add_admin_tab_item( $current_screen->parent_file, array( 'link' => 'admin.php?page=ldAdvQuiz&module=statistics&id=' . $quiz_id . '&post_id=' . $post_id, 'name' => esc_html_x( 'Statistics', 'Quiz Statistics Tab Label', 'learndash' ), 'id' => 'sfwd-quiz_page_ldAdvQuiz_statistics', ), $this->admin_tab_priorities['misc'] ); $this->add_admin_tab_item( $current_screen->parent_file, array( 'link' => 'admin.php?page=ldAdvQuiz&module=toplist&id=' . $quiz_id . '&post_id=' . $post_id, 'name' => esc_html_x( 'Leaderboard', 'Quiz Leaderboard Tab Label', 'learndash' ), 'id' => 'sfwd-quiz_page_ldAdvQuiz_toplist', ), $this->admin_tab_priorities['misc'] ); } } } if ( ( 'admin.php?page=learndash-lms-reports' === $current_screen_parent_file ) || ( 'edit.php?post_type=sfwd-transactions' === $current_screen_parent_file ) ) { $this->add_admin_tab_item( $current_screen_parent_file, array( 'id' => 'learndash-lms_page_learndash-lms-reports', 'name' => esc_html_x( 'Reports', 'Reports Menu Label', 'learndash' ), 'link' => 'admin.php?page=learndash-lms-reports', 'cap' => LEARNDASH_ADMIN_CAPABILITY_CHECK, ), $this->admin_tab_priorities['high'] ); $this->add_admin_tab_item( $current_screen_parent_file, array( 'id' => 'edit-sfwd-transactions', 'name' => esc_html_x( 'Transactions', 'Transactions Tab Label', 'learndash' ), 'link' => 'edit.php?post_type=sfwd-transactions', 'parent_menu_link' => 'admin.php?page=learndash-lms-reports', ), $this->admin_tab_priorities['high'] ); if ( 'edit.php?post_type=sfwd-transactions' === $current_screen_parent_file ) { $post_id = ! empty( $_GET['post_id'] ) ? $_GET['post_id'] : ( empty( $_GET['post'] ) ? 0 : $_GET['post'] ); if ( ! empty( $post_id ) ) { $current_page_id = 'edit-sfwd-transactions'; } } } if ( 'edit.php?post_type=groups' === $current_screen_parent_file ) { if ( learndash_is_admin_user() ) { $user_group_ids = learndash_get_administrators_group_ids( get_current_user_id(), true ); if ( ! empty( $user_group_ids ) ) { $this->add_admin_tab_item( $current_screen_parent_file, array( 'id' => 'groups_page_group_admin_page', 'name' => esc_html__( 'Group Administration', 'learndash' ), 'link' => 'admin.php?page=group_admin_page', 'cap' => LEARNDASH_ADMIN_CAPABILITY_CHECK, ), $this->admin_tab_priorities['high'] ); } } } if ( 'learndash-lms_page_group_admin_page' === $current_screen->id ) { $this->add_admin_tab_item( $current_screen_parent_file, array( 'id' => 'learndash-lms_page_group_admin_page', 'name' => esc_html__( 'Group Administration', 'learndash' ), 'link' => 'admin.php?page=group_admin_page', 'cap' => LEARNDASH_GROUP_LEADER_CAPABILITY_CHECK, ), $this->admin_tab_priorities['high'] ); } $admin_tabs_legacy = apply_filters( 'learndash_admin_tabs', array() ); foreach ( $admin_tabs_legacy as $tab_idx => $tab_item ) { if ( empty( $tab_item ) ) { unset( $admin_tabs_legacy[ $tab_idx ] ); } else { if ( 'edit.php?post_type=sfwd-courses&page=sfwd-lms_sfwd_lms.php_post_type_sfwd-courses' === $admin_tabs_legacy[ $tab_idx ]['menu_link'] ) { $admin_tabs_legacy[ $tab_idx ]['menu_link'] = 'admin.php?page=learndash_lms_settings'; } } } if ( 'learndash-lms-non-existant' === $current_screen_parent_file ) { $menu_link = ''; foreach ( $admin_tabs_legacy as $tab_idx => $tab_item ) { if ( $tab_item['id'] === $current_page_id ) { $current_screen_parent_file = $tab_item['menu_link']; break; } } } if ( 'admin.php?page=learndash_lms_settings' === $current_screen_parent_file ) { $this->add_admin_tab_item( 'admin.php?page=learndash_lms_settings', array( 'link' => 'admin.php?page=nss_plugin_license-sfwd_lms-settings', 'name' => esc_html_x( 'LMS License', 'LMS License Tab Label', 'learndash' ), 'id' => 'admin_page_nss_plugin_license-sfwd_lms-settings', ), 50 ); do_action( 'learndash_admin_tabs_set', $current_screen_parent_file, $this ); // Here we add the legacy tabs to the end of the existing tabs. if ( ! empty( $admin_tabs_legacy ) ) { foreach ( $admin_tabs_legacy as $tab_idx => $tab_item ) { if ( $tab_item['menu_link'] === $current_screen_parent_file ) { $this->add_admin_tab_item( $current_screen_parent_file, $tab_item, 80 ); } } } } if ( ( 'edit.php?post_type=sfwd-essays' !== $current_screen_parent_file ) && ( 'admin.php?page=learndash_lms_settings' !== $current_screen_parent_file ) ) { do_action( 'learndash_admin_tabs_set', $current_screen_parent_file, $this ); } $admin_tabs_on_page_legacy = array(); $admin_tabs_on_page_legacy['sfwd-courses_page_sfwd-lms_sfwd_lms_post_type_sfwd-courses'] = array(); $admin_tabs_on_page_legacy = apply_filters( 'learndash_admin_tabs_on_page', $admin_tabs_on_page_legacy, array(), $current_page_id ); foreach ( $admin_tabs_on_page_legacy as $tab_idx => $tab_set ) { if ( empty( $tab_set ) ) { unset( $admin_tabs_on_page_legacy[ $tab_idx ] ); } } if ( isset( $admin_tabs_on_page_legacy[ $current_page_id ] ) ) { $admin_tabs_on_page_legacy_set = $admin_tabs_on_page_legacy[ $current_page_id ]; if ( ( ! empty( $admin_tabs_on_page_legacy_set ) ) && ( is_array( $admin_tabs_on_page_legacy_set ) ) ) { foreach ( $admin_tabs_on_page_legacy_set as $admin_tab_idx ) { if ( isset( $admin_tabs_legacy[ $admin_tab_idx ] ) ) { $admin_tab_item = $admin_tabs_legacy[ $admin_tab_idx ]; $current_screen_parent_file = $admin_tab_item['menu_link']; $this->add_admin_tab_item( $admin_tab_item['menu_link'], $admin_tab_item, 80 ); unset( $admin_tabs_legacy[ $admin_tab_idx ] ); } unset( $admin_tabs_on_page_legacy_set[ $admin_tab_idx ] ); } } } // Get tabs data to new tabs system. $this->show_admin_tabs( $current_screen_parent_file, $current_page_id ); } /** * Get admin tabs data to new tabs system. * * @param string $menu_tab_key The menu tab key. * @param string $current_page_id The current page id. * @return array */ public function get_admin_tabs( $menu_tab_key = '', $current_page_id = '' ) { if ( isset( $this->admin_tab_sets[ $menu_tab_key ] ) ) { if ( ! empty( $this->admin_tab_sets[ $menu_tab_key ] ) ) { ksort( $this->admin_tab_sets[ $menu_tab_key ] ); /** * Filter for current admin tab set. * * @since 3.0 */ $this->admin_tab_sets[ $menu_tab_key ] = apply_filters( 'learndash_admin_tab_sets', $this->admin_tab_sets[ $menu_tab_key ], $menu_tab_key, $current_page_id ); if ( ! empty( $this->admin_tab_sets[ $menu_tab_key ] ) ) { global $learndash_current_page_link; if ( ( isset( $admin_tab_item['parent_menu_link'] ) ) && ( ! empty( $admin_tab_item['parent_menu_link'] ) ) ) { $learndash_current_page_link = trim( $admin_tab_item['parent_menu_link'] ); } else { $learndash_current_page_link = $menu_tab_key; } add_action( 'admin_footer', 'learndash_select_menu' ); return $this->admin_tab_sets[ $menu_tab_key ]; } } } return []; } public function show_admin_tabs( $menu_tab_key = '', $current_page_id = '' ) { /** * Control if admin tabs should be displayed. * * @param array $flag Defines if tabs should be displayed. */ if ( isset( $this->admin_tab_sets[ $menu_tab_key ] ) ) { if ( ! empty( $this->admin_tab_sets[ $menu_tab_key ] ) ) { ksort( $this->admin_tab_sets[ $menu_tab_key ] ); /** * Filter for current admin tab set * @since 2.5 */ $this->admin_tab_sets[ $menu_tab_key ] = apply_filters( 'learndash_admin_tab_sets', $this->admin_tab_sets[ $menu_tab_key ], $menu_tab_key, $current_page_id ); if ( ! empty( $this->admin_tab_sets[ $menu_tab_key ] ) ) { global $learndash_current_page_link; if ( ( isset( $admin_tab_item['parent_menu_link'] ) ) && ( ! empty( $admin_tab_item['parent_menu_link'] ) ) ) { $learndash_current_page_link = trim( $admin_tab_item['parent_menu_link'] ); } else { if ( 'edit.php?post_type=sfwd-essays' === $menu_tab_key ) { if ( true === learndash_is_group_leader_user() ) { // Nothing here. } else { $learndash_current_page_link = 'edit.php?post_type=sfwd-quiz'; } } elseif ( 'edit.php?post_type=sfwd-transactions' === $menu_tab_key ) { $learndash_current_page_link = 'admin.php?page=learndash-lms-reports'; } else { $learndash_current_page_link = $menu_tab_key; } } add_action( 'admin_footer', 'learndash_select_menu' ); if ( ( defined( 'LEARNDASH_SETTINGS_HEADER_PANEL' ) ) && ( true === apply_filters( 'learndash_settings_header_panel', LEARNDASH_SETTINGS_HEADER_PANEL ) ) ) { $this->admin_header_panel( $menu_tab_key ); } else { echo '

      '; $post_id = ! empty( $_GET['post_id'] ) ? $_GET['post_id'] : ( empty( $_GET['post'] ) ? 0 : $_GET['post'] ); foreach ( $this->admin_tab_sets[ $menu_tab_key ] as $admin_tab_item ) { if ( ! isset( $admin_tab_item['id'] ) ) { $admin_tab_item['id'] = ''; } if ( ! empty( $admin_tab_item['id'] ) ) { if ( $admin_tab_item['id'] == $current_page_id ) { $class = 'nav-tab nav-tab-active'; global $learndash_current_page_link; if ( ( isset( $admin_tab_item['parent_menu_link'] ) ) && ( ! empty( $admin_tab_item['parent_menu_link'] ) ) ) { $learndash_current_page_link = trim( $admin_tab_item['parent_menu_link'] ); } else { $learndash_current_page_link = $menu_tab_key; } add_action( 'admin_footer', 'learndash_select_menu' ); } else { $class = 'nav-tab'; } $target = ! empty( $admin_tab_item['target'] ) ? 'target="' . $admin_tab_item['target'] . '"' : ''; $url = ''; if ( ( isset( $admin_tab_item['external_link'] ) ) && ( ! empty( $admin_tab_item['external_link'] ) ) ) { $url = $admin_tab_item['external_link']; } elseif ( ( isset( $admin_tab_item['link'] ) ) && ( ! empty( $admin_tab_item['link'] ) ) ) { $url = $admin_tab_item['link']; } else { if ( false !== ( $pos = strpos( $admin_tab_item['id'], 'learndash-lms_page_' ) ) ) { $url_page = str_replace( 'learndash-lms_page_', '', $admin_tab_item['id'] ); $url = add_query_arg( array( 'page' => $url_page ), 'admin.php' ); } } if ( ! empty( $url ) ) { echo '' . $admin_tab_item['name'] . ''; } } } echo '

      '; } } } } } /** * Show the new Admin header panel * * @since 3.0 * @param string $menu_tab_key Current tab key to show. */ protected function admin_header_panel( $menu_tab_key = '' ) { global $pagenow, $post, $typenow; global $learndash_assets_loaded; global $learndash_metaboxes; if ( ( empty( $menu_tab_key ) ) || ( ! isset( $this->admin_tab_sets[ $menu_tab_key ] ) ) || ( empty( $this->admin_tab_sets[ $menu_tab_key ] ) ) ) { return; } $screen = get_current_screen(); $header_data = array( 'tabs' => array(), 'currentTab' => $screen->id, 'editing' => 1, 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'adminurl' => admin_url( 'edit.php' ), 'quizImportUrl' => admin_url( 'admin.php?page=ldAdvQuiz' ), 'postadminurl' => admin_url( 'post.php' ), 'back_to_title' => '', 'back_to_url' => '', 'error_messages' => array( 'builder' => esc_html__( 'There was an unexpected error while loading. Please try refreshing the page. If the error continues, contact LearnDash support.', 'learndash' ), 'header' => esc_html__( 'There was an unexpected error while loading. Please try refreshing the page. If the error continues, contact LearnDash support.', 'learndash' ), ), 'labels' => array( 'section-heading' => esc_html__( 'Section Heading', 'learndash' ), 'section-headings' => esc_html__( 'Section Headings', 'learndash' ), 'answer' => esc_html__( 'answer', 'learndash' ), 'answers' => esc_html__( 'answers', 'learndash' ), 'course' => \LearnDash_Custom_Label::get_label( 'course' ), 'courses' => \LearnDash_Custom_Label::get_label( 'courses' ), 'lesson' => \LearnDash_Custom_Label::get_label( 'lesson' ), 'lessons' => \LearnDash_Custom_Label::get_label( 'lessons' ), 'topic' => \LearnDash_Custom_Label::get_label( 'topic' ), 'topics' => \LearnDash_Custom_Label::get_label( 'topics' ), 'quiz' => \LearnDash_Custom_Label::get_label( 'quiz' ), 'quizzes' => \LearnDash_Custom_Label::get_label( 'quizzes' ), 'question' => \LearnDash_Custom_Label::get_label( 'question' ), 'questions' => \LearnDash_Custom_Label::get_label( 'questions' ), 'sfwd-course' => \LearnDash_Custom_Label::get_label( 'course' ), 'sfwd-courses' => \LearnDash_Custom_Label::get_label( 'courses' ), 'sfwd-lesson' => \LearnDash_Custom_Label::get_label( 'lesson' ), 'sfwd-lessons' => \LearnDash_Custom_Label::get_label( 'lessons' ), 'sfwd-topic' => \LearnDash_Custom_Label::get_label( 'topic' ), 'sfwd-topics' => \LearnDash_Custom_Label::get_label( 'topics' ), 'sfwd-quiz' => \LearnDash_Custom_Label::get_label( 'quiz' ), 'sfwd-quizzes' => \LearnDash_Custom_Label::get_label( 'quizzes' ), 'sfwd-courses' => \LearnDash_Custom_Label::get_label( 'courses' ), 'sfwd-question' => \LearnDash_Custom_Label::get_label( 'question' ), 'start-adding-lesson' => sprintf( // translators: placeholder: Lesson. esc_html_x( 'Start by adding a %s.', 'placeholder: Lesson', 'learndash' ), \LearnDash_Custom_Label::get_label( 'lesson' ) ), ), 'sfwdMap' => array( 'lesson' => 'sfwd-lessons', 'topic' => 'sfwd-topic', 'quiz' => 'sfwd-quiz', 'question' => 'sfwd-question', ), 'rest' => array( 'namespace' => LEARNDASH_REST_API_NAMESPACE . '/v1', 'base' => array( 'lessons' => \LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_General_REST_API', 'sfwd-lessons' ), 'topic' => \LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_General_REST_API', 'sfwd-topic' ), 'quiz' => \LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_General_REST_API', 'sfwd-quiz' ), 'question' => 'sfwd-questions', ), 'root' => esc_url_raw( rest_url() ), 'nonce' => wp_create_nonce( 'wp_rest' ), ), 'post_data' => array( 'builder_post_id' => 0, 'builder_post_title' => '', 'builder_post_type' => '', ), 'posts_per_page' => 0, 'lessons' => array(), 'topics' => array(), 'quizzes' => array(), 'questions' => array(), 'i18n' => array( 'back_to' => esc_html_x( 'Back to', 'Link back to the post type overview', 'learndash' ), 'actions' => esc_html_x( 'Actions', 'Builder actions dropdown', 'learndash' ), 'expand' => esc_html_x( 'Expand All', 'Builder elements', 'learndash' ), 'collapse' => esc_html_x( 'Collapse All', 'Builder elements', 'learndash' ), 'error' => esc_html__( 'An error occurred while submitting your request. Please try again.', 'learndash' ), 'cancel' => esc_html__( 'Cancel', 'learndash' ), 'edit' => esc_html__( 'Edit', 'learndash' ), 'remove' => esc_html__( 'Remove', 'learndash' ), 'save' => esc_html__( 'Save', 'learndash' ), 'settings' => esc_html__( 'Settings', 'learndash' ), 'edit_question' => esc_html__( 'Click here to edit the question', 'learndash' ), 'correct_answer_message' => esc_html__( 'Message for correct answer - optional', 'learndash' ), 'different_incorrect_answer_message' => esc_html__( 'Use different message for incorrect answer', 'learndash' ), 'same_answer_message' => esc_html__( 'Currently same message is displayed as above.', 'learndash' ), 'incorrect_answer_message' => esc_html__( 'Message for incorrect answer - optional', 'learndash' ), 'solution_hint' => esc_html__( 'Solution hint', 'learndash' ), 'points' => esc_html__( 'points', 'learndash' ), 'edit_answer' => esc_html__( 'Click here to edit the answer', 'learndash' ), 'update_answer' => esc_html__( 'Update Answer', 'learndash' ), 'answer_missing' => esc_html__( 'Answer is missing', 'learndash' ), 'allow_html' => esc_html__( 'Allow HTML', 'learndash' ), 'correct' => esc_html__( 'Correct', 'learndash' ), 'correct_1st' => wp_kses_post( _x( '1st', 'First sort answer correct', 'learndash' ) ), 'correct_2nd' => wp_kses_post( _x( '2nd', 'Second sort answer correct', 'learndash' ) ), 'correct_3rd' => wp_kses_post( _x( '3rd', 'Third sort answer correct', 'learndash' ) ), 'correct_nth' => wp_kses_post( _x( 'th', 'nth sort answer correct', 'learndash' ) ), 'answer_updated' => esc_html__( 'Answer updated', 'learndash' ), 'edit_answer_settings' => esc_html__( 'Edit answer settings', 'learndash' ), 'answer' => esc_html__( 'Answer:', 'learndash' ), 'edit_matrix' => esc_html__( 'Click here to edit the matrix', 'learndash' ), 'new_element_labels' => array( 'question' => sprintf( /* translators: placeholders: Question */ esc_html_x( 'New %1$s', 'placeholder: Question', 'learndash' ), LearnDash_Custom_Label::get_label( 'question' ) ), 'quiz' => sprintf( /* translators: placeholders: Quiz */ esc_html_x( 'New %1$s', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ), 'topic' => sprintf( /* translators: placeholders: Topic */ esc_html_x( 'New %1$s', 'placeholder: Topic', 'learndash' ), LearnDash_Custom_Label::get_label( 'topic' ) ), 'lesson' => sprintf( /* translators: placeholders: Lesson */ esc_html_x( 'New %1$s', 'placeholder: Lesson', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'answer' => esc_html__( 'New answer', 'learndash' ), 'section-heading' => esc_html__( 'New Section Heading', 'learndash' ), ), 'enter_title' => esc_html_x( 'Enter a title', 'Title for the new course, lesson, quiz', 'learndash' ), 'enter_answer' => esc_html_x( 'Enter an answer', 'Answer for a question', 'learndash' ), 'please_wait' => esc_html_x( 'Please wait...', 'Please wait while the form is loading', 'learndash' ), 'add_element' => esc_html_x( 'Add', 'Add lesson, topic, quiz...', 'learndash' ), 'add_element_labels' => array( 'question' => sprintf( /* translators: placeholders: Question */ esc_html_x( 'Add %1$s', 'placeholder: Question', 'learndash' ), LearnDash_Custom_Label::get_label( 'question' ) ), 'questions' => sprintf( /* translators: placeholders: Question */ esc_html_x( 'Add %1$s', 'placeholder: Questions', 'learndash' ), LearnDash_Custom_Label::get_label( 'questions' ) ), 'quiz' => sprintf( /* translators: placeholders: Quiz */ esc_html_x( 'Add %1$s', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ), 'topic' => sprintf( /* translators: placeholders: Topic */ esc_html_x( 'Add %1$s', 'placeholder: Topic', 'learndash' ), LearnDash_Custom_Label::get_label( 'topic' ) ), 'lesson' => sprintf( /* translators: placeholders: Lesson */ esc_html_x( 'Add %1$s', 'placeholder: Lesson', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'answer' => esc_html__( 'Add answer', 'learndash' ), 'section-heading' => esc_html__( 'Add Section Heading', 'learndash' ), ), 'move_up' => esc_html_x( 'Move up', 'Move the current element up in the builder interface', 'learndash' ), 'question_empty' => sprintf( /* translators: placeholders: question */ esc_html_x( 'The %s is empty.', 'Warning when no question was entered', 'learndash' ), learndash_get_custom_label_lower( 'question' ) ), 'move_down' => esc_html_x( 'Move down', 'Move the current element down in the builder interface', 'learndash' ), 'rename' => esc_html_x( 'Rename', 'Rename the current element in the builder interface', 'learndash' ), 'search_element_labels' => array( 'lesson' => sprintf( /* translators: placeholders: lessons */ esc_html_x( 'Search %1$s', 'placeholders: lessons', 'learndash' ), LearnDash_Custom_Label::get_label( 'lessons' ) ), 'quiz' => sprintf( /* translators: placeholders: quizzes */ esc_html_x( 'Search %1$s', 'placeholders: quizzes', 'learndash' ), LearnDash_Custom_Label::get_label( 'quizzes' ) ), 'topic' => sprintf( /* translators: placeholders: topics */ esc_html_x( 'Search %1$s', 'placeholders: topics', 'learndash' ), LearnDash_Custom_Label::get_label( 'topics' ) ), 'question' => sprintf( /* translators: placeholders: questions */ esc_html_x( 'Search %1$s', 'placeholders: questions', 'learndash' ), LearnDash_Custom_Label::get_label( 'questions' ) ), ), 'recent' => esc_html_x( 'Recent', 'List of recent lessons, topics, quizzes or questions', 'learndash' ), 'view_all' => esc_html_x( 'View all', 'Lesson, Topic, Quiz or Question posts', 'learndash' ), 'start_adding_element_labels' => array( 'lesson' => sprintf( /* translators: placeholders: Lesson*/ esc_html_x( 'Start adding your first %1$s', 'placeholders: Lesson', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'quiz' => sprintf( /* translators: placeholders: Quiz*/ esc_html_x( 'Start adding your first %1$s', 'placeholders: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ), 'topic' => sprintf( /* translators: placeholders: Topic*/ esc_html_x( 'Start adding your first %1$s', 'placeholders: Topic', 'learndash' ), LearnDash_Custom_Label::get_label( 'topic' ) ), 'question' => sprintf( /* translators: placeholders: Question*/ esc_html_x( 'Start adding your first %1$s', 'placeholders: Question', 'learndash' ), LearnDash_Custom_Label::get_label( 'question' ) ), ), 'all_elements_added_labels' => array( 'lesson' => sprintf( /* translators: placeholders: Lessons*/ esc_html_x( 'All available %1$s have been added.', 'placeholders: Lessons', 'learndash' ), LearnDash_Custom_Label::get_label( 'lessons' ) ), 'quiz' => sprintf( /* translators: placeholders: Quizzes */ esc_html_x( 'All available %1$s have been added.', 'placeholders: Quizzes', 'learndash' ), LearnDash_Custom_Label::get_label( 'quizzes' ) ), 'topic' => sprintf( /* translators: placeholders: Topics */ esc_html_x( 'All available %1$s have been added.', 'placeholders: Topics', 'learndash' ), LearnDash_Custom_Label::get_label( 'topics' ) ), 'question' => sprintf( /* translators: placeholders: Questions */ esc_html_x( 'All available %1$s have been added.', 'placeholders: Questions', 'learndash' ), LearnDash_Custom_Label::get_label( 'questions' ) ), ), 'start_adding' => esc_html_x( 'Start adding your first', 'Lesson, Topic, Quiz or Question', 'learndash' ), 'refresh' => esc_html_x( 'Refresh', 'Builder - Refresh list of Lessons, Topics, Quizzes or Questions', 'learndash' ), 'load_more' => esc_html_x( 'Load More', 'Builder - Load more Lessons, Topics, Quizzes or Questions', 'learndash' ), 'add_selected' => esc_html_x( 'Add Selected', 'Builder - Add selected Lessons, Topics, Quizzes or Questions', 'learndash' ), 'undo' => esc_html_x( 'Undo', 'Undo action in the builder', 'learndash' ), 'criterion' => esc_html_x( 'Criterion', 'Matrix answer Criteroion', 'learndash' ), 'sort_element' => esc_html_x( 'Sort element', 'Sort matrix answer element', 'learndash' ), 'question_settings' => esc_html_x( 'Settings', 'Question settings. Placeholder in JavaScript', 'learndash' ), 'select_option' => esc_html_x( 'Select', 'Select an option', 'learndash' ), 'nothing_found' => esc_html_x( 'Nothing matches your search', 'No matching Lesson, Topic, Quiz or Question found', 'learndash' ), 'drop_lessons' => sprintf( /* translators: placeholders: Lessons */ esc_html_x( 'Drop %1$s here', 'placeholder: Lessons', 'learndash' ), LearnDash_Custom_Label::get_label( 'lessons' ) ), 'drop_question' => sprintf( /* translators: placeholders: Question */ esc_html_x( 'Drop %1$s here', 'placeholder: Question', 'learndash' ), LearnDash_Custom_Label::get_label( 'question' ) ), 'drop_quizzes' => sprintf( /* translators: placeholders: Quizzes */ esc_html_x( 'Drop %1$s here', 'placeholder: Quizzes', 'learndash' ), LearnDash_Custom_Label::get_label( 'quizzes' ) ), 'drop_quizzes_topics' => sprintf( /* translators: placeholders: %1$s: Topics, %2$s: Quizzes */ esc_html_x( 'Drop %1$s or %2$s here', 'placeholder: %1$s: Topics, %2$s: Quizzes', 'learndash' ), LearnDash_Custom_Label::get_label( 'topics' ), LearnDash_Custom_Label::get_label( 'quizzes' ) ), 'step' => esc_html_x( 'step', 'singular - Amount of steps in a course or quiz', 'learndash' ), 'steps' => esc_html_x( 'steps', 'plural - Amount of steps in a course or quiz', 'learndash' ), 'in_this' => esc_html_x( 'in this', 'Amount of steps in this course or quiz', 'learndash' ), 'final_quiz' => esc_html_x( 'Final', 'Builder - Final quiz. Placeholder in JavaScript', 'learndash' ), 'quiz_no_questions' => sprintf( // translators: placeholders: %1$s: Quiz, %2$s: Questions esc_html_x( 'This %1$s has no %2$s yet', 'This quiz has no questions.', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ), LearnDash_Custom_Label::get_label( 'questions' ) ), 'question_empty_edit' => sprintf( /* translators: placeholders: question */ esc_html_x( 'The %s is empty, click here to edit it.', 'Warning when no question was entered', 'learndash' ), learndash_get_custom_label_lower( 'question' ) ), 'unsaved_chages' => esc_html( 'You have unsaved changes. If you proceed, they will be lost.', 'learndash' ), 'manage_questions_builder' => sprintf( /* translators: placeholders: Questions */ esc_html_x( 'Manage %1$s in builder', 'Manage Questions in builder', 'learndash' ), LearnDash_Custom_Label::get_label( 'questions' ) ), 'total_points' => esc_html_x( 'TOTAL:', 'Total points', 'learndash' ), 'no_content' => esc_html_x( 'has no content yet.', 'Displayed when the post type, e.g. course, has no content', 'learndash' ), 'add_content' => esc_html_x( 'Add a new', 'Content type, e.g. lesson', 'learndash' ), 'add_from_sidebar' => esc_html_x( 'or add an existing one from the sidebar', 'Content type, e.g. lesson', 'learndash' ), 'essay_answer_format' => esc_html_x( 'Answer format', 'Type of essay answer', 'learndash' ), 'essay_text_answer' => esc_html_x( 'Text entry', 'Submit essay answer in a text box', 'learndash' ), 'essay_file_upload_answer' => esc_html_x( 'File upload', 'Submit essay answer as an upload', 'learndash' ), 'essay_after_submission' => esc_html_x( 'What should happen on quiz submission?', 'What grading options should be used after essay submission', 'learndash' ), 'essay_not_graded_no_points' => esc_html_x( 'Not Graded, No Points Awarded', 'Essay answer grading option', 'learndash' ), 'essay_not_graded_full_points' => esc_html_x( 'Not Graded, Full Points Awarded', 'Essay answer grading option', 'learndash' ), 'essay_graded_full_points' => esc_html_x( 'Graded, Full Points Awarded', 'Essay answer grading option', 'learndash' ), 'essay_not_set' => esc_html_x( 'Not set', 'Essay answer grading option has not been set', 'learndash' ), ), ); $action_menu = array(); $screen_post_type = ''; if ( ! empty( $typenow ) ) { $screen_post_type = $typenow; } else { $menu_tab_parts = wp_parse_url( $menu_tab_key ); if ( ( isset( $menu_tab_parts['query'] ) ) && ( ! empty( $menu_tab_parts['query'] ) ) ) { parse_str( $menu_tab_parts['query'], $menu_tab_url_parts ); if ( ( isset( $menu_tab_url_parts['post_type'] ) ) && ( ! empty( $menu_tab_url_parts['post_type'] ) ) ) { $screen_post_type = $menu_tab_url_parts['post_type']; } } } if ( ! empty( $screen_post_type ) ) { $screen_post_type_object = get_post_type_object( $screen_post_type ); } $header_data['post_data']['builder_post_id'] = get_the_ID(); if ( ! empty( $header_data['post_data']['builder_post_id'] ) ) { $header_data['post_data']['builder_post_title'] = get_the_title( $header_data['post_data']['builder_post_id'] ); } $header_data['post_data']['builder_post_type'] = $screen_post_type; $logic_control = ''; if ( ( isset( $_GET['page'] ) ) && ( strtolower( $_GET['page'] ) === strtolower( 'ldAdvQuiz' ) ) ) { $logic_control = 'post'; } elseif ( 'sfwd-courses_page_courses-builder' === $screen->id ) { $header_data['currentTab'] = 'learndash_course_builder'; $header_data['tabs'] = []; $header_data['back_to_title'] = learndash_get_label_course_step_back( learndash_get_post_type_slug( 'course' ), true ); $header_data['back_to_url'] = admin_url( 'edit.php?post_type=sfwd-courses' ); if ( isset( $_GET['course_id'] ) ) { $header_data['tabs'][] = [ 'id' => 'post-body-content', 'name' => learndash_get_label_course_step_page( learndash_get_post_type_slug( 'course' ) ), 'link' => get_edit_post_link( absint( $_GET['course_id'] ) ), 'isExternal' => 'true', ]; } if ( 'yes' === LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'enabled' ) ) { $header_data['tabs'][] = [ 'id' => 'learndash_course_builder', 'name' => esc_html__( 'Builder', 'learndash' ), 'metaboxes' => [ 'learndash_courses_builder_courses_builder' ], ]; } if ( isset( $_GET['course_id'] ) ) { $header_data['tabs'][] = [ 'id' => 'sfwd-courses', 'name' => esc_html__( 'Settings', 'learndash' ), 'link' => get_edit_post_link( absint( $_GET['course_id'] ) ) . '¤tTab=sfwd-courses', 'isExternal' => 'true', ]; } } elseif ( in_array( $pagenow, array( 'edit.php', 'edit-tags.php', 'admin.php', 'options-general.php' ) ) ) { $logic_control = 'archive'; } elseif ( in_array( $pagenow, array( 'post.php', 'post-new.php' ) ) ) { $logic_control = 'post'; } if ( 'archive' === $logic_control ) { if ( learndash_is_admin_user() ) { $header_data['back_to_title'] = esc_html__( 'Overview', 'learndash' ); $header_data['back_to_url'] = admin_url( 'admin.php?page=learndash_lms_overview' ); } else { $header_data['back_to_title'] = ''; $header_data['back_to_url'] = ''; } if ( 'admin.php?page=learndash_lms_settings' === $screen->parent_file ) { $header_data['post_data']['builder_post_title'] = esc_html__( 'Settings', 'learndash' ); } if ( learndash_get_post_type_slug( 'essay' ) === $screen_post_type ) { if ( learndash_is_group_leader_user() ) { $header_data['post_data']['builder_post_title'] = sprintf( // translators: placeholder: Essays. esc_html_x( '%s', 'placeholder: Essays', 'learndash' ), $screen_post_type_object->labels->name ); } else { $header_data['post_data']['builder_post_title'] = sprintf( // translators: placeholder: Quizzes. esc_html_x( '%s', 'placeholder: Quizzes', 'learndash' ), learndash_get_custom_label( 'quizzes' ) ); } } elseif ( ( isset( $screen_post_type_object ) ) && ( is_a( $screen_post_type_object, 'WP_Post_Type' ) ) ) { $header_data['post_data']['builder_post_title'] = sprintf( // translators: placeholder: Post Type Plural Name. esc_html_x( '%s', 'placeholder: Post Type Plural Name', 'learndash' ), $screen_post_type_object->labels->name ); } if ( learndash_get_post_type_slug( 'quiz' ) === $screen_post_type ) { $action_menu[] = array( 'title' => esc_html_x( 'Import/Export', 'Quiz Import/Export Tab Label', 'learndash' ), 'link' => 'admin.php?page=ldAdvQuiz', 'isExternal' => 'false', ); } if ( ( 'groups_page_group_admin_page' === $screen->id ) || ( 'learndash-lms_page_group_admin_page' === $screen->id ) ) { if ( ( isset( $_GET['group_id'] ) ) && ( ! empty( $_GET['group_id'] ) ) ) { if ( ( isset( $_GET['user_id'] ) ) && ( ! empty( $_GET['user_id'] ) ) ) { $user = get_user_by( 'id', absint( $_GET['user_id'] ) ); if ( ( $user ) && ( is_a( $user, 'WP_User' ) ) ) { if ( ! empty( $user->display_name ) ) { $user_name = $user->display_name; } else { $user_name = $user->first_name . ' ' . $user->last_name; } $header_data['post_data']['builder_post_title'] = $user_name; $header_data['back_to_title'] = get_the_title( absint( $_GET['group_id'] ) ); $header_data['back_to_url'] = add_query_arg( array( 'group_id' => absint( $_GET['group_id'] ), 'page' => 'group_admin_page', ), admin_url( 'admin.php' ) ); } } else { $header_data['post_data']['builder_post_title'] = get_the_title( absint( $_GET['group_id'] ) ); $header_data['back_to_title'] = esc_html__( 'Group Administration', 'learndash' ); $header_data['back_to_url'] = add_query_arg( array( 'page' => 'group_admin_page', ), admin_url( 'admin.php' ) ); } } else { $header_data['post_data']['builder_post_title'] = esc_html__( 'Group Administration', 'learndash' ); } } foreach ( $this->admin_tab_sets[ $menu_tab_key ] as $menu_item ) { if ( ( isset( $menu_item['link'] ) ) && ( ! empty( $menu_item['link'] ) ) ) { $link_parts = wp_parse_url( $menu_item['link'] ); if ( ( ! isset( $menu_item['cap'] ) ) || ( ! current_user_can( $menu_item['cap'] ) ) ) { continue; } if ( ( isset( $learndash_metaboxes[ $screen->id ] ) ) && ( ! empty( $learndash_metaboxes[ $screen->id ] ) ) ) { $metaboxes = array_keys( $learndash_metaboxes[ $screen->id ] ); } else { $metaboxes = []; } if ( ( isset( $link_parts['path'] ) ) && ( ! empty( $link_parts['path'] ) ) ) { if ( 'edit.php' === $link_parts['path'] ) { $header_data['tabs'][] = array( 'id' => $menu_item['id'], 'name' => $menu_item['name'], 'link' => admin_url( $menu_item['link'] ), 'isExternal' => 'true', 'actions' => array(), 'metaboxes' => $metaboxes, ); } elseif ( ( 'admin.php' === $link_parts['path'] ) || ( 'options-general.php' === $link_parts['path'] ) ) { $header_data['tabs'][] = array( 'id' => $menu_item['id'], 'name' => $menu_item['name'], 'link' => admin_url( $menu_item['link'] ), 'isExternal' => 'true', 'actions' => array(), 'metaboxes' => $metaboxes, ); } elseif ( 'edit-tags.php' === $link_parts['path'] ) { $action_menu[] = array( 'title' => $menu_item['name'], 'link' => $menu_item['link'], 'isExternal' => 'false', 'metaboxes' => $metaboxes, ); } } } } if ( ( 'learndash-lms_page_learndash-lms-reports' === $screen->id ) || ( ( isset( $_GET['page'] ) ) && ( 'learndash-lms-reports' === $_GET['page'] ) ) ) { if ( isset( $header_data['tabs'][0] ) ) { $header_data['currentTab'] = $header_data['tabs'][0]['id']; } } } elseif ( 'post' === $logic_control ) { $header_data['back_to_title'] = esc_html__( 'Back', 'learndash' ); $header_data['back_to_url'] = admin_url( 'edit.php?post_type=' . $screen_post_type ); if ( ( isset( $_GET['currentTab'] ) ) && ( ! empty( $_GET['currentTab'] ) ) ) { $header_data['currentTab'] = esc_attr( $_GET['currentTab'] ); } else { $header_data['currentTab'] = 'post-body-content'; } $header_data['post_data']['builder_post_id'] = get_the_ID(); if ( ! $header_data['post_data']['builder_post_id'] ) { if ( ( isset( $_GET['post'] ) ) && ( ! empty( $_GET['post'] ) ) ) { $post_id = absint( $_GET['post'] ); if ( get_post_type( $post_id ) === learndash_get_post_type_slug( 'quiz' ) ) { $header_data['post_data']['builder_post_id'] = $post_id; } } else { if ( ( isset( $_GET['post_id'] ) ) && ( ! empty( $_GET['post_id'] ) ) ) { $post_id = absint( $_GET['post_id'] ); if ( get_post_type( $post_id ) === learndash_get_post_type_slug( 'quiz' ) ) { $header_data['post_data']['builder_post_id'] = $post_id; } } } } $header_data['post_data']['builder_post_title'] = ''; if ( ! empty( $header_data['post_data']['builder_post_id'] ) ) { $header_data['post_data']['builder_post_title'] = get_the_title( $header_data['post_data']['builder_post_id'] ); } $header_data['post_data']['builder_post_type'] = $screen_post_type; $header_data['back_to_title'] = learndash_get_label_course_step_back( $screen_post_type, true ); $header_data['tabs'] = array( array( 'id' => 'post-body-content', 'name' => learndash_get_label_course_step_page( $screen_post_type ), 'actions' => array(), ), ); if ( ( isset( $_GET['page'] ) ) && ( 'ldAdvQuiz' === $_GET['page'] ) ) { if ( ( isset( $_GET['post_id'] ) ) && ( ! empty( $_GET['post_id'] ) ) ) { if ( ( isset( $_GET['module'] ) ) && ( 'question' === $_GET['module'] ) ) { if ( ( isset( $_GET['action'] ) ) && ( 'addEdit' === $_GET['action'] ) ) { $header_data['currentTab'] = $screen->id; $header_data['back_to_title'] = learndash_get_label_course_step_back( learndash_get_post_type_slug( 'question' ), true ); $header_data['back_to_url'] = add_query_arg( array( 'page' => 'ldAdvQuiz', 'module' => 'question', 'quiz_id' => $_GET['quiz_id'], 'post_id' => $_GET['post_id'], ), 'admin.php' ); $header_data['currentTab'] = $screen->id; $header_data['tabs'] = array( array( 'id' => $screen->id, 'name' => learndash_get_label_course_step_page( learndash_get_post_type_slug( 'question' ) ), 'actions' => array(), ), ); } else { $header_data['back_to_title'] = learndash_get_label_course_step_back( learndash_get_post_type_slug( 'quiz' ), true ); $header_data['back_to_url'] = admin_url( 'edit.php?post_type=' . learndash_get_post_type_slug( 'quiz' ) ); $header_data['currentTab'] = $screen->id; $header_data['tabs'] = array( array( 'id' => $screen->id, 'name' => sprintf( // translators: placeholder: Questions. esc_html_x( '%s', 'placeholder: Questions', 'learndash' ), learndash_get_custom_label( 'questions' ) ), 'actions' => array(), ), ); } } else { $header_data['back_to_title'] = learndash_get_label_course_step_page( learndash_get_post_type_slug( 'quiz' ) ); $header_data['back_to_url'] = get_edit_post_link( absint( $_GET['post_id'] ) ); $header_data['currentTab'] = $screen->id; } } else { // Quiz Import.Export page. $header_data['currentTab'] = 'import-export'; $header_data['tabs'] = array( array( 'id' => $header_data['currentTab'], 'name' => 'Import/Export Page', 'link' => admin_url( 'admin.php?page=ldAdvQuiz' ), 'isExternal' => 'true', 'actions' => array(), ), ); } if ( ( isset( $_GET['post'] ) ) && ( ! empty( $_GET['post'] ) ) ) { $action_menu = array_merge( $action_menu, array( array( 'title' => sprintf( // translators: placeholders: Quiz, Questions. esc_html_x( 'Reprocess %1$s %2$s', 'placeholders: Quiz, Questions', 'learndash' ), LearnDash_Custom_Label::get_label( 'Quiz' ), LearnDash_Custom_Label::get_label( 'Questions' ) ), 'link' => add_query_arg( 'quiz_id', absint( $_GET['post'] ), admin_url( 'admin.php?page=learndash_data_upgrades' ) ), 'isExternal' => 'true', ) ) ); if ( current_user_can('wpProQuiz_export') ) { $action_menu = array_merge( $action_menu, array( array( 'title' => sprintf( // translators: placeholder: Quiz. esc_html_x( 'Export %s', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ), 'link' => add_query_arg( array( 'page' => 'ldAdvQuiz', 'quiz_id' => absint( $_GET['post'] ), ), admin_url( 'admin.php' ) ), 'isExternal' => 'true', ) ) ); } $action_menu = array_merge( $action_menu, array( array( 'title' => esc_html__( 'Statistics', 'learndash' ), 'link' => add_query_arg( array( 'module' => 'statistics', 'currentTab' => 'statistics', ), $this->get_quiz_base_url() ), 'isExternal' => 'false', ), array( 'title' => esc_html__( 'Leaderboard', 'learndash' ), 'link' => add_query_arg( array( 'module' => 'toplist', 'currentTab' => 'leaderboard', ), $this->get_quiz_base_url() ), 'isExternal' => 'false', ), ) ); } if ( ( isset( $_GET['module'] ) ) && ( 'statistics' === $_GET['module'] ) ) { $header_data['tabs'] = array( array( 'id' => $screen->id, 'name' => esc_html__( 'Statistics', 'learndash' ), 'actions' => $action_menu, ), ); } elseif ( ( isset( $_GET['module'] ) ) && ( 'toplist' === $_GET['module'] ) ) { $header_data['tabs'] = array( array( 'id' => $screen->id, 'name' => esc_html__( 'Leaderboard', 'learndash' ), 'actions' => $action_menu, ), ); } } elseif ( learndash_get_post_type_slug( 'course' ) === $screen_post_type ) { if ( 'yes' === LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'enabled' ) ) { $header_data['tabs'] = array_merge( $header_data['tabs'], array( array( 'id' => 'learndash_course_builder', 'name' => esc_html__( 'Builder', 'learndash' ), ), ) ); } if ( current_user_can( 'edit_groups' ) ) { if ( true === apply_filters( 'learndash_show_metabox_course_groups', true ) ) { $header_data['tabs'] = array_merge( $header_data['tabs'], array( array( 'id' => $screen_post_type . '-settings', 'name' => esc_html__( 'Settings', 'learndash' ), 'metaboxes' => [ 'sfwd-courses', 'learndash-course-display-content-settings', 'learndash-course-access-settings', 'learndash-course-navigation-settings', 'learndash-course-users-settings', 'learndash-course-grid-meta-box' ], 'showDocumentSidebar' => 'false', ), array( 'id' => 'learndash_course_groups', 'name' => esc_html__( 'Groups', 'learndash' ), 'metaboxes' => [ 'learndash_course_groups' ], 'showDocumentSidebar' => 'false', ), ) ); } } } elseif ( learndash_get_post_type_slug( 'quiz' ) === $screen_post_type ) { if ( ( true === is_data_upgrade_quiz_questions_updated() ) && ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Quizzes_Builder', 'enabled' ) === 'yes' ) ) { $header_data['tabs'] = array_merge( $header_data['tabs'], array( array( 'id' => 'learndash_quiz_builder', 'name' => esc_html__( 'Builder', 'learndash' ), ), ) ); } $header_data['tabs'] = array_merge( $header_data['tabs'], array( array( 'id' => $screen_post_type . '-settings', 'name' => esc_html__( 'Settings', 'learndash' ), 'metaboxes' => [ $screen_post_type, 'learndash-quiz-access-settings', 'learndash-quiz-progress-settings', 'learndash-quiz-display-content-settings', 'learndash-quiz-results-options', 'learndash-quiz-admin-data-handling-settings', 'learndash-course-grid-meta-box' ], 'showDocumentSidebar' => 'false', ), ) ); if ( ( true !== is_data_upgrade_quiz_questions_updated() ) || ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Quizzes_Builder', 'enabled' ) !== 'yes' ) ) { $pro_quiz_id = learndash_get_setting( get_the_ID(), 'quiz_pro', true ); if ( ! empty( $pro_quiz_id ) ) { $header_data['tabs'] = array_merge( $header_data['tabs'], array( array( 'id' => 'learndash_quiz_questions', 'name' => esc_html__( 'Questions', 'learndash' ), 'link' => add_query_arg( array( 'page' => 'ldAdvQuiz', 'module' => 'question', 'quiz_id' => $pro_quiz_id, 'post_id' => absint( $_GET['post'] ), ), admin_url( 'admin.php' ) ), 'isExternal' => 'true', ), ) ); } } if ( apply_filters( 'learndash_settings_metaboxes_legacy_quiz', LEARNDASH_SETTINGS_METABOXES_LEGACY_QUIZ, $screen_post_type ) ) { $header_data['tabs'] = array_merge( $header_data['tabs'], array( array( 'id' => 'learndash_quiz_advanced_aggregated', 'name' => esc_html__( 'Advanced Settings', 'learndash' ), 'metaboxes' => [ 'learndash_quiz_advanced_aggregated' ], 'showDocumentSidebar' => 'false', ), ) ); } $action_menu = array_merge( $action_menu, array( array( 'title' => sprintf( // translators: placeholders: Quiz, Questions. esc_html_x( 'Reprocess %1$s %2$s', 'placeholders: Quiz, Questions', 'learndash' ), LearnDash_Custom_Label::get_label( 'Quiz' ), LearnDash_Custom_Label::get_label( 'Questions' ) ), 'link' => add_query_arg( 'quiz_id', $post->ID, admin_url( 'admin.php?page=learndash_data_upgrades' ) ), 'isExternal' => 'true', ), ) ); if ( current_user_can('wpProQuiz_export') ) { $action_menu = array_merge( $action_menu, array( array( 'title' => sprintf( // translators: placeholder: Quiz. esc_html_x( 'Export %s', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ), 'link' => add_query_arg( array( 'page' => 'ldAdvQuiz', 'quiz_id' => $post->ID, ), admin_url( 'admin.php' ) ), 'isExternal' => 'true', ) ) ); } $action_menu = array_merge( $action_menu, array( array( 'title' => esc_html__( 'Statistics', 'learndash' ), 'link' => add_query_arg( array( 'module' => 'statistics', 'currentTab' => 'statistics', ), $this->get_quiz_base_url() ), 'isExternal' => 'false', ), array( 'title' => esc_html__( 'Leaderboard', 'learndash' ), 'link' => add_query_arg( array( 'module' => 'toplist', 'currentTab' => 'leaderboard', ), $this->get_quiz_base_url() ), 'isExternal' => 'false', ), ) ); } elseif ( in_array( $screen_post_type, array( learndash_get_post_type_slug( 'lesson' ), learndash_get_post_type_slug( 'topic' ), learndash_get_post_type_slug( 'question' ), ), true ) ) { $post_settings_metaboxes = array(); switch ( $screen_post_type ) { case learndash_get_post_type_slug( 'lesson' ): $post_settings_metaboxes = array_merge( $post_settings_metaboxes, [ $screen_post_type, 'learndash-lesson-display-content-settings', 'learndash-lesson-access-settings', 'learndash-course-grid-meta-box', ] ); break; case learndash_get_post_type_slug( 'topic' ): $post_settings_metaboxes = array_merge( $post_settings_metaboxes, [ $screen_post_type, 'learndash-topic-display-content-settings', 'learndash-topic-access-settings', 'learndash-course-grid-meta-box', ] ); break; case learndash_get_post_type_slug( 'question' ): if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Quizzes_Builder', 'shared_questions' ) !== 'yes' ) { $post_settings_metaboxes = array_merge( $post_settings_metaboxes, [ $screen_post_type, ] ); } break; } if ( ! empty( $post_settings_metaboxes ) ) { $header_data['tabs'] = array_merge( $header_data['tabs'], array( array( 'id' => $screen_post_type . '-settings', 'name' => esc_html__( 'Settings', 'learndash' ), 'metaboxes' => $post_settings_metaboxes, 'showDocumentSidebar' => 'false', ), ) ); } } } $action_menu = apply_filters( 'learndash_header_action_menu', $action_menu, $menu_tab_key, $screen_post_type, $header_data['tabs'] ); if ( ! empty( $action_menu ) ) { if ( ! empty( $header_data['tabs'] ) ) { foreach ( $header_data['tabs'] as &$header_menu_item ) { $header_menu_item['actions'] = $action_menu; } } } $header_data['tabs'] = apply_filters( 'learndash_header_tab_menu', $header_data['tabs'], $menu_tab_key, $screen_post_type ); if ( 'sfwd-courses' === $screen_post_type ) { $header_data['posts_per_page'] = \LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'per_page' ); } elseif ( 'sfwd-quiz' === $screen_post_type ) { $header_data['posts_per_page'] = \LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Quizzes_Builder', 'per_page' ); } else { $header_data['posts_per_page'] = get_option( 'posts_per_page' ); } // Load the MO file translations into wp.i18n script hook. learndash_load_inline_script_locale_data(); /** * Localize dynamic data to LearnDashData global at front-end. * * @param array $data Default global data. */ $learndash_data = apply_filters( 'learndash_header_data', $header_data, $menu_tab_key, $this->admin_tab_sets[ $menu_tab_key ] ); if ( ! empty( $learndash_data ) ) { echo '
      '; if ( ( ! empty( $screen_post_type ) ) && ( in_array( $screen_post_type, LDLMS_Post_Types::get_post_types(), true ) ) && ( 'edit-' . $screen_post_type === $screen->id ) ) { if ( learndash_get_total_post_count( $screen_post_type ) === 0 ) { // If there's an onboarding page, we render it. if ( file_exists( LEARNDASH_LMS_PLUGIN_DIR . "/includes/admin/onboarding-templates/onboarding-{$screen_post_type}.php" ) ) { include_once LEARNDASH_LMS_PLUGIN_DIR . "/includes/admin/onboarding-templates/onboarding-{$screen_post_type}.php"; } } } if ( ! isset( $learndash_assets_loaded['styles']['learndash-new-header-style'] ) ) { wp_enqueue_style( 'learndash-new-header-style', LEARNDASH_LMS_PLUGIN_URL . 'assets/js/builder/dist/header' . leardash_min_builder_asset() . '.css', array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'learndash-new-header-style', 'rtl', 'replace' ); $learndash_assets_loaded['styles']['learndash-new-header-style'] = __FUNCTION__; } $css_lesson_label = \LearnDash_Custom_Label::get_label( 'lesson' )[0]; $css_topic_label = \LearnDash_Custom_Label::get_label( 'topic' )[0]; $css_quiz_label = \LearnDash_Custom_Label::get_label( 'quiz' )[0]; $css_question_label = \LearnDash_Custom_Label::get_label( 'question' )[0]; $learndash_custom_css = " .learndash_navigation_lesson_topics_list .lesson > a:before, #sfwd-course-lessons h2:before { content: '{$css_lesson_label}'; } .learndash_navigation_lesson_topics_list .topic_item > a > span:before, #sfwd-course-topics h2:before { content: '{$css_topic_label}'; } .learndash_navigation_lesson_topics_list .quiz_list_item .lesson > a:before, #sfwd-course-quizzes h2:before { content: '{$css_quiz_label}'; } #sfwd-quiz-questions h2:before, .ld-question-overview-widget-item:before { content: '{$css_question_label}'; } "; wp_add_inline_style( 'learndash-new-header-style', $learndash_custom_css ); if ( ! isset( $learndash_assets_loaded['scripts']['learndash-new-header-script'] ) ) { wp_enqueue_script( 'learndash-new-header-script', LEARNDASH_LMS_PLUGIN_URL . 'assets/js/builder/dist/header' . leardash_min_builder_asset() . '.js', array( 'wp-i18n' ), LEARNDASH_SCRIPT_VERSION_TOKEN, true ); $learndash_assets_loaded['scripts']['learndash-new-header-script'] = __FUNCTION__; wp_localize_script( 'learndash-new-header-script', 'LearnDashData', $learndash_data ); } } } public function get_quiz_base_url() { $quiz_post_id = get_the_ID(); if ( ! $quiz_post_id ) { if ( ( isset( $_GET['post'] ) ) && ( ! empty( $_GET['post'] ) ) ) { $post_id = absint( $_GET['post'] ); if ( get_post_type( $post_id ) === learndash_get_post_type_slug( 'quiz' ) ) { $quiz_post_id = $post_id; } } else { if ( ( isset( $_GET['post_id'] ) ) && ( ! empty( $_GET['post_id'] ) ) ) { $post_id = absint( $_GET['post_id'] ); if ( get_post_type( $post_id ) === learndash_get_post_type_slug( 'quiz' ) ) { $header_data['post_data']['builder_post_id'] = $post_id; } } } } $quiz_id = 0; if ( ! empty( $quiz_post_id ) ) { $quiz_id = learndash_get_setting( $quiz_post_id, 'quiz_pro' ); } $url_params = array( 'page' => 'ldAdvQuiz', 'id' => $quiz_id, 'post_id' => $quiz_post_id, 'post' => $quiz_post_id, ); return add_query_arg( $url_params, admin_url( 'admin.php' ) ); } // End of methods } } $ld_admin_menus_tabs = Learndash_Admin_Menus_Tabs::get_instance(); function learndash_add_admin_tab_item( $menu_slug, $menu_item, $menu_priority ) { Learndash_Admin_Menus_Tabs::get_instance()->add_admin_tab_item( $menu_slug, $menu_item, $menu_priority ); } /** * Get current admin tabs set. * * @return array */ function learndash_get_current_tabs_set() { return Learndash_Admin_Menus_Tabs::get_instance()->learndash_admin_tabs(); } PKc\8includes/admin/class-learndash-admin-binary-selector.phpnuW+Adefaults = array( 'html_title' => '', 'html_id' => '', 'html_name' => '', 'html_class' => '', 'selected_ids' => array(), 'included_ids' => array(), 'max_height' => '250px', 'min_height' => '250px', 'lazy_load' => false, 'search_label_left' => esc_html__( 'Search:', 'learndash' ), 'search_label_right' => esc_html__( 'Search:', 'learndash' ), 'is_search' => false, 'is_pager' => false, ); $this->args = wp_parse_args( $args, $this->defaults ); $this->args['html_slug'] = sanitize_title_with_dashes( $this->args['html_id'] ); // We want to conver this to an array. if ( ( ! empty( $this->args['selected_ids'] ) ) && ( is_string( $this->args['selected_ids'] ) ) ) { $this->args['selected_ids'] = explode( ',', $this->args['selected_ids'] ); } elseif ( ( empty( $this->args['selected_ids'] ) ) && ( is_string( $this->args['selected_ids'] ) ) ) { $this->args['selected_ids'] = array(); } // If for some reason the 'include' element is passed in we convert it to our 'included_ids'. if ( ( isset( $this->args['include'] ) ) && ( ! empty( $this->args['include'] ) ) && ( empty( $this->args['included_ids'] ) ) ) { $this->args['included_ids'] = $this->args['include']; unset( $this->args['include'] ); } if ( ( ! empty( $this->args['included_ids'] ) ) && ( is_string( $this->args['included_ids'] ) ) ) { $this->args['included_ids'] = explode( ',', $this->args['included_ids'] ); } // Let the outside world override some settings. $this->args = apply_filters( 'learndash_binary_selector_args', $this->args, $this->selector_class ); $this->element_items['left'] = array(); $this->element_items['right'] = array(); $this->element_queries['left'] = array(); $this->element_queries['right'] = array(); } /** * Show function for selector. */ public function show() { $this->query_selection_section_items( 'left' ); $this->query_selection_section_items( 'right' ); // If we don't have items for the left (All items) then something is wrong. Abort. if ( ( empty( $this->element_items['left'] ) ) && ( empty( $this->element_items['right'] ) ) ) { return; } // Before we add our data element we remove all the unneeded keys. Just to keep it small. $element_data = $this->element_data; foreach ( $this->defaults as $key => $val ) { if ( isset( $element_data['query_vars'][ $key ] ) ) { unset( $element_data['query_vars'][ $key ] ); } } // Aware of the PHP post number vars limit we convert the inlcude and exclude arrays to json so they are sent back as strings. if ( ( isset( $element_data['query_vars']['include'] ) ) && ( ! empty( $element_data['query_vars']['include'] ) ) ) { $element_data['query_vars']['include'] = wp_json_encode( $element_data['query_vars']['include'], JSON_FORCE_OBJECT ); } if ( ( isset( $element_data['query_vars']['exclude'] ) ) && ( ! empty( $element_data['query_vars']['exclude'] ) ) ) { $element_data['query_vars']['exclude'] = wp_json_encode( $element_data['query_vars']['exclude'], JSON_FORCE_OBJECT ); } ?>
      show_selections_title(); ?> show_selections_section( 'left' ); $this->show_selections_section_controls(); $this->show_selections_section( 'right' ); ?>
      args['max_height'] ) ) && ( ! empty( $this->args['max_height'] ) ) ) { ?> args['min_height'] ) ) && ( ! empty( $this->args['min_height'] ) ) ) { ?>
      args['html_title'] ) ) { echo $this->args['html_title']; } } /** * Show Selector Controls. * * Shows the Add/Remove buttons which lives betweeen the left/right side selectors. */ protected function show_selections_section_controls() { ?>
        show_selections_section_pager( $position ); ?>
      is_valid_position( $position ) ) { echo $this->build_options_html( $position ); } } /** * Show selector section legend. * * @param string $position Value for 'left' or 'right' position. */ protected function show_selections_section_legend( $position = '' ) { if ( $this->is_valid_position( $position ) ) { if ( 'left' === $position ) { ?> is_valid_position( $position ) ) { ?>
    • is_valid_position( $position ) ) { if ( isset( $this->args[ 'search_label_' . $position ] ) ) { return $this->args[ 'search_label_' . $position ]; } elseif ( isset( $this->args['search_label'] ) ) { return $this->args['search_label']; } else { return esc_html__( 'Search', 'learndash' ); } } } /** * Get selector section pager data. * * @param string $position Value for 'left' or 'right' position. */ protected function get_pager_data( $position = '' ) { } /** * Get selector section items. * * @param string $position Value for 'left' or 'right' position. */ protected function query_selection_section_items( $position = '' ) { } /** * Process selector section query. * * @param array $query_args Array of query args. * @param string $position Value for 'left' or 'right' position. */ protected function process_query( $query_args = array(), $position = '' ) { } /** * Load selector section page AJAX. * * @param string $position Value for 'left' or 'right' position. */ public function load_pager_ajax( $position = '' ) { $reply_data['html_options'] = ''; if ( $this->is_valid_position( $position ) ) { $this->query_selection_section_items( $position ); $reply_data = $this->element_data[ $position ]; $reply_data['html_options'] = $this->build_options_html( $position ); } return $reply_data; } /** * Load selector section search AJAX. * * @param string $position Value for 'left' or 'right' position. */ public function load_search_ajax( $position = '' ) { $reply_data['html_options'] = ''; if ( $this->is_valid_position( $position ) ) { $this->args['is_search'] = true; $this->query_selection_section_items( $position ); if ( isset( $this->element_data[ $position ] ) ) { $reply_data = $this->element_data[ $position ]; $reply_data['html_options'] = $this->build_options_html( $position ); } } return $reply_data; } /** * Get selector section nonce. */ protected function get_nonce_data() { return wp_create_nonce( $this->selector_class . '-' . $this->args['html_id'] ); } /** * Validate selector section nonce. * * @param string $nonce Nonce value to validate. */ public function validate_nonce_data( $nonce = '' ) { if ( ! empty( $nonce ) ) { return wp_verify_nonce( $nonce, $this->selector_class . '-' . $this->args['html_id'] ); } } /** * Utility function to check and validate the $postition * variable. It should be only 'left' or 'right'. * * @since 2.6.0 * * @param string $position Should have value 'left' or 'right'. * @return true if valid. */ public function is_valid_position( $position = '' ) { if ( ! empty( $position ) ) { $position = esc_attr( $position ); if ( ( 'left' === $position ) || ( 'right' === $position ) ) { return true; } } return false; } } } if ( ( ! class_exists( 'Learndash_Binary_Selector_Users' ) ) && ( class_exists( 'Learndash_Binary_Selector' ) ) ) { /** * Class for LearnDash Binary Selector or Users. */ class Learndash_Binary_Selector_Users extends Learndash_Binary_Selector { /** * Public constructor for class. * * @param array $args Array of arguments for class. */ public function __construct( $args = array() ) { // Set up the defaut query args for the Users. $defaults = array( 'paged' => 1, 'number' => get_option( 'posts_per_page' ), //'search_number' => get_option( 'posts_per_page' ), 'fields' => array( 'ID', 'display_name', 'user_login' ), 'orderby' => 'display_name', 'order' => 'ASC', 'search' => '', ); if ( ( ! isset( $args['number'] ) ) && ( isset( $args['per_page'] ) ) && ( ! empty( $args['per_page'] ) ) ) { $args['number'] = $args['per_page']; } $args = wp_parse_args( $args, $defaults ); parent::__construct( $args ); if ( ( isset( $this->args['included_ids'] ) ) && ( ! empty( $this->args['included_ids'] ) ) ) { $this->query_args['include'] = $this->args['included_ids']; } if ( ( isset( $this->args['excluded_ids'] ) ) && ( ! empty( $this->args['excluded_ids'] ) ) ) { $this->query_args['exclude'] = $this->args['excluded_ids']; } } /** * Get selector section pager data. * * @param string $position Value for 'left' or 'right' position. */ protected function get_pager_data( $position = '' ) { $pager = array(); if ( $this->is_valid_position( $position ) ) { if ( isset( $this->element_queries[ $position ] ) ) { if ( isset( $this->element_queries[ $position ]->query_vars['paged'] ) ) { $pager['current_page'] = intval( $this->element_queries[ $position ]->query_vars['paged'] ); } else { $pager['current_page'] = 0; } if ( isset( $this->element_queries[ $position ]->query_vars['number'] ) ) { $pager['per_page'] = intval( $this->element_queries[ $position ]->query_vars['number'] ); } else { $pager['per_page'] = 0; } if ( isset( $this->element_queries[ $position ]->total_users ) ) { $pager['total_items'] = intval( $this->element_queries[ $position ]->total_users ); } else { $pager['total_items'] = 0; } if ( ( ! empty( $pager['per_page'] ) ) && ( ! empty( $pager['total_items'] ) ) ) { $pager['total_pages'] = ceil( intval( $this->element_queries[ $position ]->total_users ) / intval( $this->element_queries[ $position ]->query_vars['number'] ) ); } else { $pager['total_pages'] = 0; } } } return $pager; } /** * Build selector section options HTML. * * @param string $position Value for 'left' or 'right' position. */ protected function build_options_html( $position = '' ) { $options_html = ''; if ( $this->is_valid_position( $position ) ) { if ( ! empty( $this->element_items[ $position ] ) ) { foreach ( $this->element_items[ $position ] as $user ) { $user_name = apply_filters( 'learndash_binary_selector_item', $user->display_name . ' (' . $user->user_login . ')', $user, $position, $this->selector_class ); if ( ! empty( $user_name ) ) { $user_name = strip_tags( $user_name ); } else { $user_name = $user->display_name . ' (' . $user->user_login . ')'; } $disabled_class = ''; $disabled_state = ''; if ( ( is_array( $this->args['selected_ids'] ) ) && ( ! empty( $this->args['selected_ids'] ) ) ) { if ( in_array( $user->ID, $this->args['selected_ids'] ) ) { $disabled_class = 'learndash-binary-selector-item-disabled'; if ( 'left' === $position ) { $disabled_state = ' disabled="disabled" '; } } } $options_html .= ''; } } } return $options_html; } /** Query selector section items. * * @param string $position Value for 'left' or 'right' position. */ protected function query_selection_section_items( $position = '' ) { if ( $this->is_valid_position( $position ) ) { if ( 'left' === $position ) { if ( ! empty( $this->args['included_ids'] ) ) { $this->args['include'] = $this->args['included_ids']; } if ( ( isset( $this->args['excluded_ids'] ) ) && ( ! empty( $this->args['excluded_ids'] ) ) ) { $this->args['exclude'] = $this->args['excluded_ids']; } if ( true === $this->args['is_search'] ) { if ( ( isset( $this->args['selected_ids'] ) ) && ( ! empty( $this->args['selected_ids'] ) ) ) { if ( ! isset( $this->args['exclude'] ) ) { $this->args['exclude'] = array(); } $this->args['exclude'] = array_merge( $this->args['exclude'], $this->args['selected_ids'] ); } } } elseif ( 'right' === $position ) { if ( ! empty( $this->args['selected_ids'] ) ) { $this->args['include'] = $this->args['selected_ids']; } else { $this->args['include'] = array( 0 ); } if ( ( isset( $this->args['excluded_ids'] ) ) && ( ! empty( $this->args['excluded_ids'] ) ) ) { $this->args['exclude'] = $this->args['excluded_ids']; } } $this->process_query( $this->args, $position ); if ( isset( $this->args['include'] ) ) { unset( $this->args['include'] ); } } } /** * Process selector section query. * * @param array $query_args Array of query args. * @param string $position Value for 'left' or 'right' position. */ public function process_query( $query_args = array(), $position = '' ) { if ( $this->is_valid_position( $position ) ) { $query = new WP_User_Query( $query_args ); $items = $query->get_results(); if ( ! empty( $items ) ) { $this->element_queries[ $position ] = $query; $this->element_items[ $position ] = $items; // We only need to store one reference to the query as the left and right will share this. Plus // the query on the right side may/will have the 'include' elements and we store this as 'selected_ids' key. if ( 'left' === $position ) { $this->element_data['query_vars'] = $query_args; } $this->element_data['selector_class'] = $this->selector_class; $this->element_data['selector_nonce'] = $this->get_nonce_data(); $this->element_data[ $position ]['position'] = $position; $this->element_data[ $position ]['pager'] = $this->get_pager_data( $position ); } } } /** * Load selector section search AJAX. * * @param string $position Value for 'left' or 'right' position. */ public function load_search_ajax( $position = '' ) { $reply_data = array(); if ( $this->is_valid_position( $position ) ) { if ( ( isset( $this->args['search'] ) ) && ( ! empty( $this->args['search'] ) ) ) { // For user searching Users we must include the beginning and ending '*' for wildcard matches. $this->args['search'] = '*' . $this->args['search'] . '*'; // Now call the parent function to perform the actual search. $reply_data = parent::load_search_ajax( $position ); } } return $reply_data; } } } if ( ( ! class_exists( 'Learndash_Binary_Selector_Course_Users' ) ) && ( class_exists( 'Learndash_Binary_Selector_Users' ) ) ) { /** * Class for LearnDash Binary Selector Course Users. */ class Learndash_Binary_Selector_Course_Users extends Learndash_Binary_Selector_Users { /** * Public constructor for class * * @param array $args Array of arguments for class. */ public function __construct( $args = array() ) { $this->selector_class = get_class( $this ); $defaults = array( 'course_id' => 0, 'html_title' => '

      ' . // translators: placeholder: Course. esc_html_x( '%s Users', 'Course Users Label', 'learndash' ) . '

      ', 'html_title' => '

      ' . // translators: placeholder: Course. sprintf( esc_html_x( '%s Users', 'Course Users label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ) . '

      ', 'html_id' => 'learndash_course_users', 'html_class' => 'learndash_course_users', 'html_name' => 'learndash_course_users', 'search_label_left' => sprintf( // translators: placeholder: Course. esc_html_x( 'Search All %s Users', 'Search All Course Users', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'search_label_right' => sprintf( // translators: placeholder: Course. esc_html_x( 'Search Assigned %s Users', 'Search Assigned Course Users', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), ); $args = wp_parse_args( $args, $defaults ); $args['html_id'] = $args['html_id'] . '-' . $args['course_id']; $args['html_name'] = $args['html_name'] . '[' . $args['course_id'] . ']'; parent::__construct( $args ); } } } if ( ( ! class_exists( 'Learndash_Binary_Selector_Group_Users' ) ) && ( class_exists( 'Learndash_Binary_Selector_Users' ) ) ) { /** * Class for LearnDash Binary Selector Group Users. */ class Learndash_Binary_Selector_Group_Users extends Learndash_Binary_Selector_Users { /** * Public constructor for class * * @param array $args Array of arguments for class. */ public function __construct( $args = array() ) { $this->selector_class = get_class( $this ); $defaults = array( 'group_id' => 0, 'html_title' => '

      ' . esc_html__( 'Group Users', 'learndash' ) . '

      ', 'html_id' => 'learndash_group_users', 'html_class' => 'learndash_group_users', 'html_name' => 'learndash_group_users', 'search_label_left' => esc_html__( 'Search All Group Users', 'learndash' ), 'search_label_right' => esc_html__( 'Search Assigned Group Users', 'learndash' ), ); $args = wp_parse_args( $args, $defaults ); $args['html_id'] = $args['html_id'] . '-' . $args['group_id']; $args['html_name'] = $args['html_name'] . '[' . $args['group_id'] . ']'; parent::__construct( $args ); } } } if ( ( ! class_exists( 'Learndash_Binary_Selector_Group_Leaders' ) ) && ( class_exists( 'Learndash_Binary_Selector_Users' ) ) ) { /** * Class for LearnDash Binary Selector Group Leaders. */ class Learndash_Binary_Selector_Group_Leaders extends Learndash_Binary_Selector_Users { /** * Public constructor for class * * @param array $args Array of arguments for class. */ public function __construct( $args = array() ) { $this->selector_class = get_class( $this ); $defaults = array( 'group_id' => 0, 'html_title' => '

      ' . esc_html__( 'Group Leaders', 'learndash' ) . '

      ', 'html_id' => 'learndash_group_leaders', 'html_class' => 'learndash_group_leaders', 'html_name' => 'learndash_group_leaders', 'search_label_left' => esc_html__( 'Search All Group Leaders', 'learndash' ), 'search_label_right' => esc_html__( 'Search Assigned Group Leaders', 'learndash' ), ); $args = wp_parse_args( $args, $defaults ); $args['html_id'] = $args['html_id'] . '-' . $args['group_id']; $args['html_name'] = $args['html_name'] . '[' . $args['group_id'] . ']'; if ( ( ! isset( $args['included_ids'] ) ) || ( empty( $args['included_ids'] ) ) ) { $args['role__in'] = array( 'group_leader', 'administrator' ); } parent::__construct( $args ); } } } if ( ( ! class_exists( 'Learndash_Binary_Selector_Posts' ) ) && ( class_exists( 'Learndash_Binary_Selector' ) ) ) { /** * Class for LearnDash Binary Selector Posts. */ class Learndash_Binary_Selector_Posts extends Learndash_Binary_Selector { /** * Public constructor for class * * @param array $args Array of arguments for class. */ public function __construct( $args = array() ) { // Set up the defaut query args for the Users. $defaults = array( 'paged' => 1, 'post_status' => array( 'publish' ), 'posts_per_page' => get_option( 'posts_per_page' ), //'search_posts_per_page' => get_option( 'posts_per_page' ), 'orderby' => 'title', 'order' => 'ASC', 'ignore_sticky_posts' => true, 'search' => '', ); if ( ( ! isset( $args['posts_per_page'] ) ) && ( isset( $args['number'] ) ) && ( ! empty( $args['number'] ) ) ) { $args['posts_per_page'] = $args['number']; } $args = wp_parse_args( $args, $defaults ); parent::__construct( $args ); if ( ( isset( $this->args['included_ids'] ) ) && ( ! empty( $this->args['included_ids'] ) ) ) { $this->query_args['include'] = $this->args['included_ids']; } } /** * Get selector section items. * * @param string $position Value for 'left' or 'right' position. */ protected function query_selection_section_items( $position = '' ) { if ( $this->is_valid_position( $position ) ) { if ( 'left' === $position ) { if ( ! empty( $this->args['included_ids'] ) ) { $this->args['post__in'] = $this->args['included_ids']; } if ( true === $this->args['is_search'] ) { if ( ( isset( $this->args['selected_ids'] ) ) && ( ! empty( $this->args['selected_ids'] ) ) ) { if ( ! isset( $this->args['post__not_in'] ) ) { $this->args['post__not_in'] = array(); } $this->args['post__not_in'] = array_merge( $this->args['post__not_in'], $this->args['selected_ids'] ); } } } else if ( 'right' === $position ) { if ( ! empty( $this->args['selected_ids'] ) ) { $this->args['post__in'] = $this->args['selected_ids']; } else { $this->args['post__in'] = array( 0 ); } } $this->process_query( $this->args, $position ); if ( isset( $this->args['post__in'] ) ) { unset( $this->args['post__in'] ); } } } /** * Process selector section query. * * @param array $query_args Array of query args. * @param string $position Value for 'left' or 'right' position. */ protected function process_query( $query_args = array(), $position = '' ) { if ( $this->is_valid_position( $position ) ) { $query = new WP_Query( $query_args ); if ( ( isset( $query->posts ) ) && ( ! empty( $query->posts ) ) ) { $this->element_queries[ $position ] = $query; if ( 'left' === $position ) { $this->element_data['query_vars'] = $query_args; } $this->element_items[ $position ] = $query->posts; $this->element_data['selector_class'] = $this->selector_class; $this->element_data['selector_nonce'] = $this->get_nonce_data(); $this->element_data[ $position ]['position'] = $position; $this->element_data[ $position ]['pager'] = $this->get_pager_data( $position ); } } } /** * Get selector section pager data. * * @param string $position Value for 'left' or 'right' position. */ protected function get_pager_data( $position = '' ) { $pager = array(); if ( $this->is_valid_position( $position ) ) { if ( isset( $this->element_queries[ $position ] ) ) { if ( isset( $this->element_queries[ $position ]->query_vars['paged'] ) ) { $pager['current_page'] = intval( $this->element_queries[ $position ]->query_vars['paged'] ); } else { $pager['current_page'] = 0; } if ( isset( $this->element_queries[ $position ]->query_vars['posts_per_page'] ) ) { $pager['per_page'] = intval( $this->element_queries[ $position ]->query_vars['posts_per_page'] ); } else { $pager['per_page'] = 0; } if ( isset( $this->element_queries[ $position ]->found_posts ) ) { $pager['total_items'] = intval( $this->element_queries[ $position ]->found_posts ); } else { $pager['total_items'] = 0; } if ( ( ! empty( $pager['per_page'] ) ) && ( ! empty( $pager['total_items'] ) ) ) { $pager['total_pages'] = ceil( intval( $pager['total_items'] ) / intval( $pager['per_page'] ) ); } else { $pager['total_pages'] = 0; } } } return $pager; } /** * Build selector section options HTML. * * @param string $position Value for 'left' or 'right' position. */ protected function build_options_html( $position = '' ) { $options_html = ''; if ( $this->is_valid_position( $position ) ) { if ( ! empty( $this->element_items[ $position ] ) ) { foreach ( $this->element_items[ $position ] as $post ) { $disabled_class = ''; $disabled_state = ''; $item_title = apply_filters( 'learndash_binary_selector_item', $post->post_title, $post, $position, $this->selector_class ); if ( ! empty( $item_title ) ) { $item_title = strip_tags( $item_title ); } else { $item_title = $post->post_title; } if ( ( is_array( $this->args['selected_ids'] ) ) && ( ! empty( $this->args['selected_ids'] ) ) ) { if ( in_array( $post->ID, $this->args['selected_ids'] ) ) { $disabled_class = 'learndash-binary-selector-item-disabled'; if ( 'left' == $position ) { $disabled_state = ' disabled="disabled" '; } } } $options_html .= ''; } } } return $options_html; } /** * Load selector section search AJAX. * * @param string $position Value for 'left' or 'right' position. */ public function load_search_ajax( $position = '' ) { $reply_data = array(); if ( $this->is_valid_position( $position ) ) { if ( ( ! isset( $this->args['s'] ) ) && ( isset( $this->args['search'] ) ) ) { $this->args['s'] = $this->args['search']; unset( $this->args['search'] ); } if ( ( isset( $this->args['s'] ) ) && ( ! empty( $this->args['s'] ) ) ) { $this->args['s'] = '"' . $this->args['s'] . '"'; add_filter( 'posts_search', array( $this, 'search_filter_by_title' ), 10, 2 ); $reply_data = parent::load_search_ajax( $position ); remove_filter( 'posts_search', array( $this, 'search_filter_by_title' ), 10, 2 ); } } return $reply_data; } /** * Search filter by Title. * * @param string $search Search pattern. * @param WP_Query $wp_query WP_Query object. */ public function search_filter_by_title( $search = '', WP_Query $wp_query ) { if ( ! empty( $search ) && ! empty( $wp_query->query_vars['search_terms'] ) ) { global $wpdb; $q = $wp_query->query_vars; $n = ! empty( $q['exact'] ) ? '' : '%'; $search = array(); foreach ( (array) $q['search_terms'] as $term ) { $search[] = $wpdb->prepare( "$wpdb->posts.post_title LIKE %s", $n . $wpdb->esc_like( $term ) . $n ); } if ( ! is_user_logged_in() ) { $search[] = "$wpdb->posts.post_password = ''"; } $search = ' AND ' . implode( ' AND ', $search ); } return $search; } } } if ( ( ! class_exists( 'Learndash_Binary_Selector_Group_Courses' ) ) && ( class_exists( 'Learndash_Binary_Selector_Posts' ) ) ) { /** * Class for LearnDash binary Selector Group Courses. */ class Learndash_Binary_Selector_Group_Courses extends Learndash_Binary_Selector_Posts { /** * Public constructor for class * * @param array $args Array of arguments for class. */ public function __construct( $args = array() ) { $this->selector_class = get_class( $this ); $defaults = array( 'group_id' => 0, 'post_type' => 'sfwd-courses', 'html_title' => '

      ' . sprintf( // translators: placeholder: courses. esc_html_x( 'Group %s', 'Group Courses label', 'learndash' ), LearnDash_Custom_Label::get_label( 'courses' ) ) . '

      ', 'html_id' => 'learndash_group_courses', 'html_class' => 'learndash_group_courses', 'html_name' => 'learndash_group_courses', 'search_label_left' => sprintf( // translators: placeholder: courses. esc_html_x( 'Search All Group %s', 'Search All Group Courses Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'courses' ) ), 'search_label_right' => sprintf( // translators: placeholder: courses. esc_html_x( 'Search Assigned Group %s', 'Search Assigned Group Courses Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'courses' ) ), ); $args = wp_parse_args( $args, $defaults ); $args['html_id'] = $args['html_id'] . '-' . $args['group_id']; $args['html_name'] = $args['html_name'] . '[' . $args['group_id'] . ']'; parent::__construct( $args ); } } } if ( ( ! class_exists( 'Learndash_Binary_Selector_Course_Groups' ) ) && ( class_exists( 'Learndash_Binary_Selector_Posts' ) ) ) { /** * Class for LearnDash binary Selector Course Groups */ class Learndash_Binary_Selector_Course_Groups extends Learndash_Binary_Selector_Posts { /** * Public constructor for class * * @param array $args Array of arguments for class. */ public function __construct( $args = array() ) { $this->selector_class = get_class( $this ); $defaults = array( 'course_id' => 0, 'post_type' => 'groups', 'html_title' => '

      ' . sprintf( // translators: placeholder: Course. esc_html_x( 'Groups Using %s', 'Groups Using Course Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ) . '

      ', 'html_id' => 'learndash_course_groups', 'html_class' => 'learndash_course_groups', 'html_name' => 'learndash_course_groups', 'search_label_left' => esc_html__( 'Search All Groups', 'learndash' ), 'search_label_right' => sprintf( // translators: placeholder: Course. esc_html_x( 'Search %s Groups', 'Search Course Groups Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), ); $args = wp_parse_args( $args, $defaults ); $args['html_id'] = $args['html_id'] . '-' . $args['course_id']; $args['html_name'] = $args['html_name'] . '[' . $args['course_id'] . ']'; parent::__construct( $args ); } } } if ( ( ! class_exists( 'Learndash_Binary_Selector_User_Courses' ) ) && ( class_exists( 'Learndash_Binary_Selector_Posts' ) ) ) { /** * Class for LearnDash binary Selector User Courses. */ class Learndash_Binary_Selector_User_Courses extends Learndash_Binary_Selector_Posts { /** * Public constructor for class * * @param array $args Array of arguments for class. */ public function __construct( $args = array() ) { $this->selector_class = get_class( $this ); $defaults = array( 'user_id' => 0, 'post_type' => 'sfwd-courses', 'html_title' => '

      ' . sprintf( // translators: placeholder: Courses. esc_html_x( 'User Enrolled in %s', 'User Enrolled in Courses Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'courses' ) ) . '

      ', 'html_id' => 'learndash_user_courses', 'html_class' => 'learndash_user_courses', 'html_name' => 'learndash_user_courses', 'search_label_left' => sprintf( // translators: placeholder: Courses. esc_html_x( 'Search All %s', 'Search All Courses Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'courses' ) ), 'search_label_right' => sprintf( // translators: placeholder: Courses. esc_html_x( 'Search Enrolled %s', 'Search Enrolled Courses Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'courses' ) ), ); $args = wp_parse_args( $args, $defaults ); $args['html_id'] = $args['html_id'] . '-' . $args['user_id']; $args['html_name'] = $args['html_name'] . '[' . $args['user_id'] . ']'; parent::__construct( $args ); } } } if ( ( ! class_exists( 'Learndash_Binary_Selector_User_Groups' ) ) && ( class_exists( 'Learndash_Binary_Selector_Posts' ) ) ) { /** * Class for LearnDash binary Selector User Groups. */ class Learndash_Binary_Selector_User_Groups extends Learndash_Binary_Selector_Posts { /** * Public constructor for class * * @param array $args Array of arguments for class. */ public function __construct( $args = array() ) { $this->selector_class = get_class( $this ); $defaults = array( 'user_id' => 0, 'post_type' => 'groups', 'html_title' => '

      ' . esc_html__( 'User Enrolled in Groups', 'learndash' ) . '

      ', 'html_id' => 'learndash_user_groups', 'html_class' => 'learndash_user_groups', 'html_name' => 'learndash_user_groups', 'search_label_left' => esc_html__( 'Search All Groups', 'learndash' ), 'search_label_right' => esc_html__( 'Search Enrolled Groups', 'learndash' ), ); $args = wp_parse_args( $args, $defaults ); $args['html_id'] = $args['html_id'] . '-' . $args['user_id']; $args['html_name'] = $args['html_name'] . '[' . $args['user_id'] . ']'; parent::__construct( $args ); } } } if ( ( ! class_exists( 'Learndash_Binary_Selector_Leader_Groups' ) ) && ( class_exists( 'Learndash_Binary_Selector_Posts' ) ) ) { /** * Class for LearnDash binary Selector Leader Groups. */ class Learndash_Binary_Selector_Leader_Groups extends Learndash_Binary_Selector_Posts { /** * Public constructor for class * * @param array $args Array of arguments for class. */ public function __construct( $args = array() ) { $this->selector_class = get_class( $this ); $defaults = array( 'user_id' => 0, 'post_type' => 'groups', 'html_title' => '

      ' . esc_html__( 'Leader of Groups', 'learndash' ) . '

      ', 'html_id' => 'learndash_leader_groups', 'html_class' => 'learndash_leader_groups', 'html_name' => 'learndash_leader_groups', 'search_label_left' => esc_html__( 'Search All Groups', 'learndash' ), 'search_label_right' => esc_html__( 'Search Leader Groups', 'learndash' ), ); $args = wp_parse_args( $args, $defaults ); $args['html_id'] = $args['html_id'] . '-' . $args['user_id']; $args['html_name'] = $args['html_name'] . '[' . $args['user_id'] . ']'; parent::__construct( $args ); } } } /** * Handler function for AJAX pager. */ function learndash_binary_selector_pager_ajax() { $reply_data = array( 'status' => false ); if ( ( isset( $_POST['query_data'] ) ) && ( ! empty( $_POST['query_data'] ) ) ) { if ( ( isset( $_POST['query_data']['query_vars'] ) ) && ( ! empty( $_POST['query_data']['query_vars'] ) ) ) { $args = $_POST['query_data']['query_vars']; if ( ( isset( $args['include'] ) ) && ( ! empty( $args['include'] ) ) ) { if ( learndash_is_valid_JSON( stripslashes( $args['include'] ) ) ) { $args['include'] = (array)json_decode( stripslashes( $args['include'] ) ); } } if ( ( isset( $args['exclude'] ) ) && ( ! empty( $args['exclude'] ) ) ) { if ( learndash_is_valid_JSON( stripslashes( $args['exclude'] ) ) ) { $args['exclude'] = (array)json_decode( stripslashes( $args['exclude'] ) ); } } if ( ( isset( $_POST['query_data']['selected_ids'] ) ) && ( ! empty( $_POST['query_data']['selected_ids'] ) ) ) { $args['selected_ids'] = (array) json_decode( stripslashes( $_POST['query_data']['selected_ids'] ) ); } // Set our reference flag so other functions know we are running pager. $args['is_pager'] = true; if ( ( isset( $_POST['query_data']['selector_class'] ) ) && ( class_exists( $_POST['query_data']['selector_class'] ) ) && ( is_subclass_of( $_POST['query_data']['selector_class'], 'Learndash_Binary_Selector' ) ) ) { $selector = new $_POST['query_data']['selector_class']( $args ); if ( ( isset( $_POST['query_data']['selector_nonce'] ) ) && ( ! empty( $_POST['query_data']['selector_nonce'] ) ) ) { if ( $selector->validate_nonce_data( $_POST['query_data']['selector_nonce'] ) ) { if ( ( isset( $_POST['query_data']['position'] ) ) && ( ! empty( $_POST['query_data']['position'] ) ) ) { if ( ( isset( $_POST['query_data']['query_vars']['search'] ) ) && ( ! empty( $_POST['query_data']['query_vars']['search'] ) ) ) { //$selector->is_search = true; $reply_data = $selector->load_search_ajax( esc_attr( $_POST['query_data']['position'] ) ); } else { $reply_data = $selector->load_pager_ajax( esc_attr( $_POST['query_data']['position'] ) ); } } } } } } } if ( ! empty( $reply_data ) ) { echo json_encode( $reply_data ); } wp_die(); // this is required to terminate immediately and return a proper response. } add_action( 'wp_ajax_learndash_binary_selector_pager', 'learndash_binary_selector_pager_ajax' ); PKc\661includes/admin/class-learndash-admin-pointers.phpnuW+Aregister_pointers(); $this->check_user_dissmissed(); if ( empty( $this->pointers ) ) { return; } wp_enqueue_style( 'wp-pointer' ); wp_enqueue_script( 'wp-pointer' ); // Make sure some metaboxes can't be toggled off wp_enqueue_script( 'learndash-admin-pointer-script', LEARNDASH_LMS_PLUGIN_URL . 'assets/js/learndash-admin-pointers' . leardash_min_asset() . '.js', array( 'jquery' ), LEARNDASH_SCRIPT_VERSION_TOKEN, true ); global $_wp_admin_css_colors; $current_color = get_user_option( 'admin_color' ); if ( ( ! empty( $current_color ) ) && ( isset( $_wp_admin_css_colors[ $current_color ] ) ) ) { $pointer_color = $_wp_admin_css_colors[ $current_color ]->colors[2]; } else { $pointer_color = '#00a0d2'; } wp_localize_script( 'learndash-admin-pointer-script', 'learndash_admin_pointers_data', array( 'pointer_color' => $pointer_color, 'pointers' => $this->pointers, ) ); } /** * Register the available pointers for the current screen */ public function register_pointers() { $this->screen_id = get_current_screen()->id; $pointers = apply_filters( 'learndash_screen_pointers', array(), $this->screen_id ); if ( ( ! empty( $pointers ) ) && ( is_array( $pointers ) ) ) { $screen_pointers = array(); foreach ( $pointers as $ptr ) { $include_pointer = false; // Do we want to show on ALL pages? if ( empty( $ptr['screen'] ) ) { $include_pointer = true; } elseif ( ( is_string( $ptr['screen'] ) ) && ( $ptr['screen'] === $this->screen_id ) ) { $include_pointer = true; } elseif ( is_array( $ptr['screen'] ) ) { foreach ( $ptr['screen'] as $screen_id ) { if ( $screen_id === $this->screen_id ) { $include_pointer = true; break; } } } if ( true === $include_pointer ) { $options = array( 'pointer_id' => $ptr['id'], 'content' => sprintf( '

      %s

      %s

      ', $ptr['title'], $ptr['content'] ), 'position' => $ptr['position'], ); $screen_pointers[ $ptr['id'] ] = array( 'pointer_id' => $ptr['id'], 'screen' => $ptr['screen'], 'target' => $ptr['target'], 'options' => $options, ); } } $this->pointers = $screen_pointers; } } /** * Check pointers against dismissed user pointers. */ protected function check_user_dissmissed() { if ( ! $this->pointers || ! is_array( $this->pointers ) ) { return; } if ( isset( $_GET['ld_reset_pointers'] ) ) { delete_user_meta( get_current_user_id(), 'dismissed_wp_pointers' ); } // Get dismissed pointers $get_dismissed = get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ); $dismissed = explode( ',', (string) $get_dismissed ); // Check pointers and remove dismissed ones. foreach ( $this->pointers as $pointer_id => $pointer ) { if ( ( in_array( $pointer_id, $dismissed ) ) || ( empty( $pointer ) ) || ( empty( $pointer_id ) ) || ( empty( $pointer['target'] ) ) || ( empty( $pointer['options'] ) ) ) { unset( $this->pointers[ $pointer_id ] ); } } } // End of functions. } } add_action( 'learndash_admin_init', function() { new Learndash_Admin_Pointers(); } ); add_filter( 'learndash_screen_pointers', function( $pointers = array(), $screen_id = '' ) { $ld_prior_version = learndash_data_upgrades_setting( 'prior_version' ); if ( 'new' === $ld_prior_version ) { if ( ! isset( $pointers['learndash-new-install'] ) ) { $pointers['learndash-new-install'] = array( 'id' => 'learndash-new-install', 'screen' => '', 'target' => '#toplevel_page_learndash-lms .wp-menu-name', 'title' => '' . esc_html__( 'First time using LearnDash?', 'learndash' ) . '', 'content' => '' . sprintf( // translators: placeholder: Link to Bootcamp page esc_html_x( 'Go to the LearnDash %s', 'placeholder: Link to Bootcamp page', 'learndash' ), '' . esc_html__( 'mini-Bootcamp', 'learndash' ) . '' ) . '', 'position' => array( 'edge' => is_rtl() ? 'right' : 'left', // top, bottom, left, right 'align' => 'middle', // top, bottom, left, right, middle ), ); } } return $pointers; }, 10, 2 ); PKc\E(#includes/admin/ld-admin-columns.phpnuW+Apost_type ) ) { return; } add_filter( 'post_row_actions', array( $this, 'post_row_actions' ), 20, 2 ); add_filter( 'manage_edit-' . $this->post_type . '_columns', array( $this, 'manage_column_headers' ), 50, 1 ); add_action( 'manage_' . $this->post_type . '_posts_custom_column', array( $this, 'manage_column_rows' ), 50, 3 ); add_action( 'restrict_manage_posts', array( $this, 'restrict_manage_posts_action' ), 50, 2 ); add_filter( 'parse_query', array( $this, 'parse_query_table_filter' ), 50, 1 ); } /** * Call via the WordPress load sequence for admin pages. */ public function on_load_post() { global $typenow, $post; if ( ( empty( $typenow ) ) || ( $typenow !== $this->post_type ) ) { return; } add_action( 'before_delete_post', array( $this, 'before_delete_post' ), 50, 1 ); add_action( 'deleted_post', array( $this, 'deleted_post' ), 50, 1 ); } /** * Display options above table listing to allow filtering. * * @since 2.6.0 * @param string $post_type Post Type being displayed. * @param string $location Location of filter displayed. Will normally be 'top'. */ public function restrict_manage_posts_action( $post_type = '', $location = '' ) { global $pagenow, $sfwd_lms; if ( ( empty( $post_type ) ) || ( $post_type !== $this->post_type ) ) { return; } if ( ! is_admin() ) { return; } if ( 'edit.php' !== $pagenow ) { return; } if ( 'top' !== $location ) { return; } if ( ( isset( $_GET['post_status'] ) ) && ( 'trash' === $_GET['post_status'] ) ) { return; } $this->show_early_selectors(); $this->show_taxonomy_selectors(); $this->show_post_type_selectors(); $this->show_late_selectors(); } /** * Output custom column row data * * @since 2.6.0 * * @param string $column_name Column slug or row being displayed. * @param integer $post_id Post ID of row being displayed. */ public function manage_column_rows( $column_name = '', $post_id = 0 ) { } /** * Add post type column headers. * * @since 2.6.0 * @param array $columns Columns array passed from WordPress. * @return array $colums modified array with new columns. */ public function manage_column_headers( $columns = array() ) { if ( ! empty( $this->columns ) ) { $columns = array_merge( array_slice( $columns, 0, 2 ), $this->columns, array_slice( $columns, 2 ) ); } return $columns; } /** * Function to show selectors before the post_type selectors. */ protected function show_early_selectors() {} /** * Function to show selectors after the taxonomy selectors. */ protected function show_late_selectors() {} /** * Display post type selectors for post type. * * @since 2.6.0 */ protected function show_post_type_selectors() { if ( ! empty( $this->post_type_selectors ) ) { foreach ( $this->post_type_selectors as $selector_slug => $selector_args ) { if ( isset( $_GET[ $selector_slug ] ) ) { $selector_args['selected'] = esc_attr( $_GET[ $selector_slug ] ); } else { $selector_args['selected'] = 0; } $this->show_post_type_selector( $selector_args ); } } } /** * Display taxonomy selectors for post type. * * @since 2.6.0 */ protected function show_taxonomy_selectors() { $object_taxonomies = get_object_taxonomies( $this->post_type ); // We remove 'category' from the object taxonomies because by now WP has already output it. // Maybe at some point we can move the filter earlier $object_taxonomies = array_diff( $object_taxonomies, array( 'category' ) ); $object_taxonomies = apply_filters( 'learndash-admin-taxonomy-filters-display', $object_taxonomies, $this->post_type ); if ( ( ! empty( $object_taxonomies ) ) && ( is_array( $object_taxonomies ) ) ) { foreach ( $object_taxonomies as $taxonomy_slug ) { if ( isset( $_GET[ $taxonomy_slug ] ) ) { $selected = esc_attr( $_GET[ $taxonomy_slug ] ); } else { $selected = false; } $taxonomy_slug_name = $taxonomy_slug; $dropdown_options = array( 'taxonomy' => $taxonomy_slug, 'name' => $taxonomy_slug_name, 'show_option_none' => get_taxonomy( $taxonomy_slug )->labels->all_items, 'option_none_value' => '', 'hide_empty' => 0, 'hierarchical' => get_taxonomy( $taxonomy_slug )->hierarchical, 'show_count' => 0, 'orderby' => 'name', 'value_field' => 'slug', 'selected' => $selected, ); echo ''; wp_dropdown_categories( $dropdown_options ); } } } /** * Utility display function to show a post title with row actions. * * @since 2.6.0 * @param integer $post_id Post ID of post to show title of. */ protected function show_post_link( $post_id = 0 ) { $post_link = ''; if ( ! empty( $post_id ) ) { $post_link = '' . get_the_title( $post_id ) . ''; } echo $post_link; } /** * Add Course Builder link to Courses row action array. * * @since 3.0 * * @param array $row_actions Existing Row actions for course. * @param WP_Post $course_post Course Post object for current row. * * @return array $row_actions */ public function post_row_actions( $row_actions = array(), $course_post = null ) { return $row_actions; } /** * Utility function to show the row actions hover links on certain rows. * * @since 2.6.0 * @param array $actions Row actions to display. Must be key => label pairs. * @param boolean $always_visible Flag to have actions always show (true) or show on hover (false). */ protected function show_row_actions( $actions, $always_visible = false ) { $actions_out = ''; if ( ! empty( $actions ) ) { $action_count = count( $actions ); $i = 0; $actions_out .= '
      '; foreach ( $actions as $action => $link ) { ++$i; ( $i == $action_count ) ? $sep = '' : $sep = ' | '; $actions_out .= '' . $link . $sep . ''; } $actions_out .= '
      '; $actions_out .= ''; } echo $actions_out; } /** * Shows post type filters above the table listing. * * @since 2.6.0 * @param array $selector_args Array of attributes used to display the filter selector. */ protected function show_post_type_selector( $selector_args = array() ) { $query_args_default = array( 'post_type' => '', 'post_status' => 'any', 'posts_per_page' => -1, 'orderby' => 'title', 'order' => 'ASC', ); if ( ( ! isset( $selector_args['query_args'] ) ) || ( ! is_array( $selector_args['query_args'] ) ) ) { $selector_args['query_args'] = array(); } $selector_args['query_args'] = wp_parse_args( $selector_args['query_args'], $query_args_default ); if ( learndash_check_query_post_type( $selector_args['query_args'] ) ) { $post_type_nonce = wp_create_nonce( $selector_args['query_args']['post_type'] ); if ( ( ! isset( $selector_args['lazy_load'] ) ) || ( false !== $selector_args['lazy_load'] ) && ( true === apply_filters( 'learndash_element_lazy_load_admin', $selector_args['lazy_load'] ) ) ) { $posts_per_page = apply_filters( 'learndash_element_lazy_load_per_page', LEARNDASH_LMS_DEFAULT_LAZY_LOAD_PER_PAGE, $selector_args['query_args']['post_type'], $this->post_type ); if ( $posts_per_page < 1 ) { $posts_per_page = -1; $this->lazy_load = false; } else { $posts_per_page = absint( $posts_per_page ); $selector_args['query_args']['posts_per_page'] = $posts_per_page; $selector_args['query_args']['paged'] = 1; $lazy_load_data = array(); $lazy_load_data['query_vars'] = $selector_args['query_args']; $lazy_load_data['query_type'] = 'WP_Query'; $lazy_load_data['value'] = $selector_args['selected']; $lazy_load_data['nonce'] = $post_type_nonce; $lazy_load_data = ' learndash_lazy_load_data="' . htmlspecialchars( json_encode( $lazy_load_data ) ) . '" '; } } else { $posts_per_page = -1; $selector_args['query_args']['posts_per_page'] = $posts_per_page; $selector_args['query_args']['nopaging'] = true; $lazy_load_data = ''; } $selector_args['query_args'] = apply_filters( 'learndash_show_post_type_selector_filter', $selector_args['query_args'], $this->post_type ); $query_results = new WP_Query( $selector_args['query_args'] ); echo ''; } } /** * This function fill filter the table listing items based on filters selected. * Called via 'parse_query' filter from WP. * * @since 2.6.0 * @param object $query WP_Query instance. */ public function parse_query_table_filter( $query ) { } /** * Initial hook for deleting a post. * * This function will register a record of the post meta to be rmeoved via the delete_post action hook. * * @since 2.6.5 * @param integer $post_id $Post ID to be deleted. */ public function before_delete_post( $post_id = 0 ) { global $post_type, $post_type_object; if ( ( ! is_admin() ) || ( $post_type !== $this->post_type ) ) { return; } $post_id = absint( $post_id ); if ( ( ! empty( $post_id ) ) && ( current_user_can( 'delete_post', $post_id ) ) && ( ! isset( $this->posts_to_delete[ $post_id ] ) ) ) { $this->posts_to_delete[ $post_id ] = $post_id; } } /** * Called after the post has been deleted. * * Uses registered delete post ID * * @since 2.6.5 * @param integer $post_id $Post ID to be deleted. */ public function deleted_post( $post_id = 0 ) { global $post_type, $post_type_object; if ( ( ! is_admin() ) || ( $post_type !== $this->post_type ) ) { return; } if ( ( ! empty( $post_id ) ) && ( current_user_can( 'delete_post', $post_id ) ) && ( isset( $this->posts_to_delete[ $post_id ] ) ) ) { unset( $this->posts_to_delete[ $post_id ] ); } } // End of functions. } } // Incldue the LearnDash table listing files here. require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-posts-listings/class-learndash-admin-courses-listing.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-posts-listings/class-learndash-admin-lessons-listing.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-posts-listings/class-learndash-admin-topics-listing.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-posts-listings/class-learndash-admin-quizzes-listing.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-posts-listings/class-learndash-admin-questions-listing.php'; PKc\$[Nincludes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.phpnuW+Abuilder_post_type = 'sfwd-quiz'; $this->selector_post_types = array( learndash_get_post_type_slug( 'question' ), ); $this->builder_init(); parent::__construct(); } /** * Iniitialize builder for specific Quiz Item. * * @since 2.6.0 * @param integer $post_id Post ID to load. */ public function builder_init( $post_id = 0 ) { if ( ! empty( $post_id ) ) { $this->builder_post_id = intval( $post_id ); $this->ld_quiz_questions_object = LDLMS_Factory_Post::quiz_questions( $this->builder_post_id ); //$this->ld_quiz_questions_object = LDLMS_Factory_Post::quiz_questions( $this->builder_post_id ); } } /** * Call via the WordPress load sequence for admin pages. */ public function builder_on_load() { parent::builder_on_load(); } /** * Prints content for Quiz Builder meta box for admin * This function is called from other add_meta_box functions * * @since 2.5 * * @param object $post WP_Post. */ public function show_builder_box( $post ) { if ( ( is_a( $post, 'WP_Post' ) ) && ( $this->builder_post_type === $post->post_type ) ) { $this->builder_init( $post->ID ); parent::show_builder_box( $post ); ?> ld_quiz_questions_object->get_questions( 'post_ids' ); if ( ! empty( $questions ) ) { $selector_post_type_steps = array_keys( $questions ); } //if ( ( isset( $course_steps[ $selector_post_type ] ) ) && ( !empty( $course_steps[ $selector_post_type ] ) ) ) { // $selector_post_type_steps = $course_steps[ $selector_post_type ]; //} } return $selector_post_type_steps; } /** * Get the number of current items in the builder. */ public function get_build_items_count() { ?> ' . intval( $this->ld_quiz_questions_object->get_questions_count() ) . '' ); ?> get_label_for_post_type( $this->builder_post_type ); $this->builder_assets[ $this->builder_post_type ]['messages']['learndash_unload_message'] = sprintf( // translators: placeholder: Quiz. esc_html_x( 'You have unsaved %s Builder changes. Are you sure you want to leave?', 'placeholder: Quiz' ), LearnDash_Custom_Label::get_label( $builder_post_type_label ) ); foreach ( $this->selector_post_types as $selector_post_type ) { $post_type_object = get_post_type_object( $selector_post_type ); if ( is_a( $post_type_object, 'WP_Post_Type' ) ) { $this->builder_assets[ $this->builder_post_type ]['messages'][ 'confirm_remove_' . $selector_post_type ] = sprintf( // translators: placeholders: post type labels like Question, second Quiz. esc_html_x( 'Are you sure you want to remove this %1$s from the %2$s?', 'placeholders: post type labels like Question, second Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( $this->get_label_for_post_type( $selector_post_type ) ), LearnDash_Custom_Label::get_label( $builder_post_type_label ) ); $this->builder_assets[ $this->builder_post_type ]['messages'][ 'confirm_trash_' . $selector_post_type ] = sprintf( // translators: placeholders: post type labels like Question. esc_html_x( 'Are you sure you want to move this %s to Trash?', 'placeholders: post type labels like Question', 'learndash' ), LearnDash_Custom_Label::get_label( $this->get_label_for_post_type( $selector_post_type ) ) ); } } parent::builder_admin_footer(); } /** * Utility function to get the label for Post Type. * * @since 2.5.0 * * @param string $post_type Post Type slug. * @param boolean $singular True if singular label needed. False for plural. * @return string. */ public function get_label_for_post_type( $post_type = '', $singular = true ) { switch ( $post_type ) { case 'sfwd-quiz': if ( true === $singular ) { return 'quiz'; } else { return 'quizzes'; } break; case 'sfwd-question': if ( true === $singular ) { return 'question'; } else { return 'questions'; } break; } } /** Utility function to build the selector query args array. * * @since 2.5.0 * * @param array $args Array of query args. * @return array */ public function build_selector_query( $args = array() ) { $per_page = LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Quizzes_Builder', 'per_page' ); if ( empty( $per_page ) ) { $per_page = 10; } $defaults = array( 'post_status' => array( 'publish' ), 'posts_per_page' => $per_page, 'paged' => 1, 'orderby' => 'title', 'order' => 'ASC', ); $args = wp_parse_args( $args, $defaults ); /** * If we are not sharing steps then we limit the query results to only show items associated with the quiz or items * not associated with any quiz. */ if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Quizzes_Builder', 'shared_questions' ) !== 'yes' ) { $m_include_ids = array(); $m_args = array( 'posts_per_page' => -1 ); if ( isset( $args['post_type'] ) ) { $m_args['post_type'] = $args['post_type']; } if ( isset( $args['post_status'] ) ) { $m_args['post_status'] = $args['post_status']; } else { $m_args['post_status'] = array( 'public' ); } $m_args['fields'] = 'ids'; if ( ( isset( $args['post__not_in'] ) ) && ( ! empty( $args['post__not_in'] ) ) ) { $m_args['post__not_in'] = $args['post__not_in']; unset( $args['post__not_in'] ); } $m_args['meta_query'] = array(); // First get all the items related to the quiz ID. $m_args['meta_query'] = array( array( 'key' => 'quiz_id', 'value' => $this->builder_post_id, 'compare' => '=', ), ); $m_post_type_query = new WP_Query( $m_args ); if ( ( property_exists( $m_post_type_query, 'posts' ) ) && ( ! empty( $m_post_type_query->posts ) ) ) { $m_include_ids = array_merge( $m_include_ids, $m_post_type_query->posts ); if ( ! isset( $m_args['post__not_in'] ) ) { $m_args['post__not_in'] = array(); } $m_args['post__not_in'] = array_merge( $m_args['post__not_in'], $m_include_ids ); } /** * Allow externals to control inclusion of orphaned steps. * Orphaned steps are those not attached to a quiz. * * @since 2.5.9 * * @param boolean true The default value is true to include orphaned steps. * @param array $args The current query args array. * * @return the external filters should return: * true - Yes include orphaned steps. * false - No do not inclide orphaned steps. */ $include_orphaned_questions = apply_filters( 'learndash_quiz_builder_include_orphaned_questions', true, $args ); if ( true === $include_orphaned_questions ) { // Next get any quiz where the 'quiz_id' is zero. $m_args['meta_query'] = array( array( 'key' => 'quiz_id', 'value' => 0, 'compare' => '=', ) ); $m_post_type_query = new WP_Query( $m_args ); if ( ( property_exists( $m_post_type_query, 'posts' ) ) && ( ! empty( $m_post_type_query->posts ) ) ) { $m_include_ids = array_merge( $m_include_ids, $m_post_type_query->posts ); if ( ! isset( $m_args['post__not_in'] ) ) { $m_args['post__not_in'] = array(); } $m_args['post__not_in'] = array_merge( $m_args['post__not_in'], $m_include_ids ); } // Finally get any quiz where the 'quiz_id' does not exist. $m_args['meta_query'] = array( array( 'key' => 'quiz_id', 'compare' => 'NOT EXISTS', ), ); $m_post_type_query = new WP_Query( $m_args ); if ( ( property_exists( $m_post_type_query, 'posts' ) ) && ( ! empty( $m_post_type_query->posts ) ) ) { $m_include_ids = array_merge( $m_include_ids, $m_post_type_query->posts ); if ( ! isset( $m_args['post__not_in'] ) ) { $m_args['post__not_in'] = array(); } $m_args['post__not_in'] = array_merge( $m_args['post__not_in'], $m_include_ids ); } } if ( ! empty( $m_include_ids ) ) { $args['post__in'] = $m_include_ids; } else { $args['post__in'] = array( 0 ); } } return apply_filters( 'learndash_quiz_builder_selector_args', $args ); } /** * Common function to show Selector pager buttons. * * @since 2.5.0 * @param object $post_type_query WP_Query instance. * @return string Button(s) HTML. */ public function build_selector_pages_buttons( $post_type_query ) { $pager_buttons = ''; if ( $post_type_query instanceof WP_Query ) { $first_page = 1; $current_page = intval( $post_type_query->query['paged'] ); $last_page = intval( $post_type_query->max_num_pages ); if ( empty( $last_page ) ) { $last_page = 1; } if ( $current_page <= 1 ) { $prev_page = 1; $prev_disabled = ' disabled="disabled" '; } else { $prev_page = $current_page - 1; $prev_disabled = ''; } if ( $current_page >= $last_page ) { $next_page = $last_page; $next_disabled = ' disabled="disabled" '; } else { $next_page = $current_page + 1; $next_disabled = ''; } $pager_buttons .= ''; $pager_buttons .= ''; $pager_buttons .= '' . $current_page . ' / ' . $last_page . ''; $pager_buttons .= ''; $pager_buttons .= ''; } return $pager_buttons; } /** * Common function to show Selector pager buttons. * * @since 2.5.0 * @param object $post_type_query WP_Query instance. * @return string Button(s) HTML. */ public function build_selector_pages_buttons_json( $post_type_query ) { $pager_buttons = [ 'first_page' => 1, 'last_page' => 1, 'prev_page' => null, 'prev_disabled' => false, 'next_page' => null, 'next_disabled' => false, 'current_page' => null, ]; if ( $post_type_query instanceof WP_Query ) { $pager_buttons['first_page'] = 1; $current_page = intval( $post_type_query->query['paged'] ); $last_page = intval( $post_type_query->max_num_pages ); $pager_buttons['current_page'] = $current_page; if ( empty( $last_page ) ) { $pager_buttons['last_page'] = 1; } if ( $current_page <= 1 ) { $pager_buttons['prev_page'] = 1; $pager_buttons['has_prev'] = false; } else { $pager_buttons['prev_page'] = $current_page - 1; $pager_buttons['has_prev'] = true; } if ( $current_page >= $last_page ) { $pager_buttons['next_page'] = $last_page; $pager_buttons['has_next'] = false; } else { $pager_buttons['next_page'] = $current_page + 1; $pager_buttons['has_next'] = true; } } return $pager_buttons; } /** * Show selector rows. * * @since 2.5.0 * @param object $post_type_query WP_Query instance. */ public function build_selector_rows( $post_type_query ) { $selector_rows = ''; if ( $post_type_query instanceof WP_Query ) { $selector_post_type = $post_type_query->query['post_type']; $selector_post_type_object = get_post_type_object( $selector_post_type ); $selector_label = $selector_post_type_object->label; $selector_slug = $this->get_label_for_post_type( $selector_post_type ); foreach ( $post_type_query->posts as $p ) { $selector_rows .= $this->build_selector_row_single( $p, $selector_post_type ); } } return $selector_rows; } /** * Show selector rows. * * @since 2.5.0 * @param object $post_type_query WP_Query instance. */ public function build_selector_rows_json( $post_type_query ) { $selector_rows = []; if ( $post_type_query instanceof WP_Query ) { $selector_post_type = $post_type_query->query['post_type']; foreach ( $post_type_query->posts as $p ) { // Get Answers from Question. $question_pro_id = (int) get_post_meta( $p->ID, 'question_pro_id', true ); $question_mapper = new \WpProQuiz_Model_QuestionMapper(); if ( ! empty( $question_pro_id ) ) { $answers_raw = $question_mapper->fetch( $question_pro_id ); } else { $answers_raw = $question_mapper->fetch( null ); } $question_data = $answers_raw->get_object_as_array(); $controller_question = new \WpProQuiz_Controller_Question(); if ( ( $answers_raw ) && is_a( $answers_raw, 'WpProQuiz_Model_Question' ) ) { $answers_data = $controller_question->setAnswerObject( $answers_raw ); } else { $answers_data = $controller_question->setAnswerObject(); } $processed_answers = []; foreach ( $answers_data as $answer_type => $answers ) { foreach ( $answers as $answer ) { $processed_answers[ $answer_type ][] = [ 'answer' => $answer->getAnswer(), 'html' => $answer->isHtml(), 'points' => $answer->getPoints(), 'correct' => $answer->isCorrect(), 'sortString' => $answer->getSortString(), 'sortStringHtml' => $answer->isSortStringHtml(), 'graded' => $answer->isGraded(), 'gradingProgression' => $answer->getGradingProgression(), 'gradedType' => $answer->getGradedType(), 'type' => 'answer', ]; } } $question_type = get_post_meta( $p->ID, 'question_type', true ); $points = (int) get_post_meta( $p->ID, 'question_points', true ); $selector_rows[] = [ 'ID' => $p->ID, 'expanded' => false, 'post_title' => $question_data['_title'], 'post_content' => $question_data['_question'], 'edit_link' => get_edit_post_link( $p->ID, '' ), 'type' => $selector_post_type, 'question_type' => $question_data['_answerType'], 'points' => $question_data['_points'], 'answers' => $processed_answers, 'correctMsg' => $question_data['_correctMsg'], 'incorrectMsg' => $question_data['_incorrectMsg'], 'correctSameText' => $question_data['_correctSameText'], 'tipEnabled' => $question_data['_tipEnabled'], 'tipMsg' => $question_data['_tipMsg'], ]; } } return $selector_rows; } /** * Show selector single row. * * @since 2.5.0 * @param object $p WP_Post object to show. * @param string $selector_post_type Post type slug. * @return string Row HTML. */ protected function build_selector_row_single( $p = null, $selector_post_type = '' ) { global $learndash_question_types; $selector_row = ''; if ( empty( $selector_post_type ) ) { return $selector_row; } $selector_post_type_object = get_post_type_object( $selector_post_type ); $selector_label = $selector_post_type_object->label; $selector_slug = $this->get_label_for_post_type( $selector_post_type ); $selector_sub_actions = ''; $p_id = ''; $p_title = ''; $edit_post_link = ''; $view_post_link = ''; if ( $p ) { $p_id = $p->ID; $p_title = get_the_title( $p->ID ); //$view_post_link = learndash_get_step_permalink( $p->ID, $this->builder_post_id ); /** * We add this to force the quiz_id to zero for the selectors as we don't * want the the 'view' URL to reflect the nested quiz. */ add_filter( 'learndash_post_link_course_id', function( $course_id ) { return 0; } ); $view_post_link = get_permalink( $p->ID ); if ( current_user_can( 'edit_courses' ) ) { $edit_post_link = get_edit_post_link( $p->ID ); $edit_post_link = remove_query_arg( 'quiz_id', $edit_post_link ); } } else { // We need a unique ID. $p_id = $selector_post_type . '-placeholder'; $p_title = $selector_post_type_object->labels->singular_name; } $question_pro_id = get_post_meta( $p_id, 'question_pro_id', true ); if ( ! empty( $question_pro_id ) ) { $question_pro_fields = leandash_get_question_pro_fields( $question_pro_id, array( 'quiz_id', 'points', 'answer_type' ) ); } $question_type_string = ''; if ( ( ! isset( $question_pro_fields['answer_type'] ) ) || ( empty( $question_pro_fields['answer_type'] ) ) || ( ! isset( $learndash_question_types[ $question_pro_fields['answer_type'] ] ) ) ) { $question_pro_fields['answer_type'] = 'single'; } // translators: placeholder: Question Type. $question_type_string = sprintf( _x('%s', 'placeholder: Question Type', 'learndash' ), $learndash_question_types[ $question_pro_fields['answer_type'] ] ); $question_points_string = ''; if ( ( isset( $question_pro_fields['points'] ) ) && ( ! empty( $question_pro_fields['points'] ) ) ) { $question_points = absint( $question_pro_fields['points'] ); } else { $question_points = 1; } // translators: placeholder: Question Points. $question_points_string = sprintf( _nx( '(%dpt)', '(%dpts)', $question_points, 'placeholder: Question Points', 'learndash' ), number_format_i18n( $question_points ) ); $selector_sub_actions .= '' . sprintf( // translators: placeholder: will contain post type label. esc_html_x( 'Edit %s Settings (new window)', 'placeholder: will contain post type label', 'learndash' ), LearnDash_Custom_Label::get_label( $selector_slug ) ) . ''; if ( current_user_can( 'delete_courses' ) ) { $selector_sub_actions .= ''; } $selector_sub_actions .= ''; $selector_action_expand = ''; $selector_row .= '
    • ' . $selector_sub_actions . ' ' . $p_title . ' ' . $question_type_string . ' ' . $question_points_string . '
    • '; return $selector_row; } /** * This function is empty on purpose and overrides the parent function * with the same name. The purpose is to prevent the default output. */ public function show_builder_header_right() { $total_question_points = 0; $quiz_questions = $this->ld_quiz_questions_object->get_questions( 'post_ids' ); if ( ! empty( $quiz_questions ) ) { $quiz_mapper = new WpProQuiz_Model_QuizMapper(); $total_question_points = $quiz_mapper->sumQuestionPointsFromArray( $quiz_questions ); } ?>
      ' . $total_question_points . '' ); ?>
      ld_quiz_questions_object->get_questions( 'post_ids' ); //if ( ! empty( $quiz_questions ) ) { $questions_html .= $this->process_quiz_questions( $quiz_questions ); //} return $questions_html; } /** * Build course steps HTML. * * @since 2.5.0 * @param array $questions Array of current Quiz questions. * @return string Steps HTML. */ protected function process_quiz_questions( $questions = array() ) { global $learndash_question_types; $questions_section_html = ''; $steps_type = 'sfwd-question'; if ( ! empty( $questions ) ) { foreach ( $questions as $question_id => $q_pro_id ) { $edit_post_link = get_edit_post_link( $question_id ); $edit_post_link = add_query_arg( 'quiz_id', $this->builder_post_id, $edit_post_link ); $view_post_link = learndash_get_step_permalink( $question_id, $this->builder_post_id ); //$question_pro_id = get_post_meta( $question_id, 'question_pro_id', true ); //if ( ! empty( $question_pro_id ) ) { // $question_pro_fields = leandash_get_question_pro_fields( $question_pro_id, array( 'quiz_id', 'points', 'answer_type' ) ); //} $question_pro_fields = leandash_get_question_pro_fields( $q_pro_id, array( 'quiz_id', 'points', 'answer_type' ) ); $question_type_string = ''; if ( ( ! isset( $question_pro_fields['answer_type'] ) ) || ( empty( $question_pro_fields['answer_type'] ) ) || ( ! isset( $learndash_question_types[ $question_pro_fields['answer_type'] ] ) ) ) { $question_pro_fields['answer_type'] = 'single'; } // translators: placeholder: Question Type. $question_type_string = sprintf( _x('%s', 'placeholder: Question Type', 'learndash' ), $learndash_question_types[ $question_pro_fields['answer_type'] ] ); $question_points_string = ''; if ( ( isset( $question_pro_fields['points'] ) ) && ( ! empty( $question_pro_fields['points'] ) ) ) { $question_points = absint( $question_pro_fields['points'] ); } else { $question_points = 1; } // translators: placeholder: Question Points. $question_points_string = sprintf( _nx( '(%dpt)', '(%dpts)', $question_points, 'placeholder: Question Points', 'learndash' ), number_format_i18n( $question_points ) ); $questions_section_item_html = '
      '; $questions_section_html .= $questions_section_item_html; } } $questions_section_html = '
      '. $questions_section_html .'
      '; return $questions_section_html; } /** Save Course Builder steps * * @since 2.5.0 * @param integer $post_id Post ID of course being saved. * @param object $post WP_Post object instance being saved. * @param boolean $update False is an update. True if new post. */ public function save_course_builder( $post_id, $post, $update ) { $return_status = false; $cb_nonce_key = $this->builder_prefix . '_nonce'; $cb_nonce_value = $this->builder_prefix . '_' . $post->post_type . '_' . $post_id . '_nonce'; if ( ( isset( $_POST[ $cb_nonce_key ] ) ) && ( wp_verify_nonce( $_POST[ $cb_nonce_key ], $cb_nonce_value ) ) ) { if ( isset( $_POST[ $this->builder_prefix ][ $this->builder_post_type ][ $post_id ] ) ) { $quiz_questions_data = $_POST[ $this->builder_prefix ][ $this->builder_post_type ][ $post_id ]; if ( '' !== $quiz_questions_data ) { //$this->ld_quiz_questions_object = LDLMS_Factory_Post::course_steps( $post_id ); $this->ld_quiz_questions_object = LDLMS_Factory_Post::quiz_questions( $post_id ); $quiz_questions = (array) json_decode( stripslashes( $quiz_questions_data ), true ); if ( ( is_array( $quiz_questions ) ) && ( ! empty( $quiz_questions ) ) ) { $quiz_questions_split = LDLMS_Quiz_Questions::questions_split_keys( $quiz_questions ); } else { $quiz_questions_split = array(); } $this->ld_quiz_questions_object->set_questions( $quiz_questions_split ); $return_status = true; } } } return $return_status; } /** * Handle AJAX pager requests. * * @param array $query_args array of values for AJAX request. */ public function learndash_builder_selector_pager( $query_args = array() ) { $reply_data = array(); if ( isset( $query_args['format'] ) && 'json' === $query_args['format'] ) { $reply_data['selector_pager'] = []; $reply_data['selector_rows'] = []; } else { $reply_data['selector_pager'] = ''; $reply_data['selector_rows'] = ''; } if ( ! empty( $query_args ) ) { $post_type_query_args = $this->build_selector_query( $query_args ); if ( ! empty( $post_type_query_args ) ) { $post_type_query = new WP_Query( $post_type_query_args ); if ( $post_type_query->have_posts() ) { if ( isset( $query_args['format'] ) && 'json' === $query_args['format'] ) { $reply_data['selector_pager'] = $this->build_selector_pages_buttons_json( $post_type_query ); $reply_data['selector_rows'] = $this->build_selector_rows_json( $post_type_query ); } else { $reply_data['selector_pager'] = $this->build_selector_pages_buttons( $post_type_query ); $reply_data['selector_rows'] = $this->build_selector_rows( $post_type_query ); } } } } echo json_encode( $reply_data ); wp_die(); } /** * Handle AJAX search requests. * * @param array $query_args array of values for AJAX request. */ public function learndash_builder_selector_search( $query_args = array() ) { $reply_data = array(); if ( isset( $query_args['format'] ) && 'json' === $query_args['format'] ) { $reply_data['selector_pager'] = []; $reply_data['selector_rows'] = []; } else { $reply_data['selector_pager'] = ''; $reply_data['selector_rows'] = ''; } if ( ! empty( $query_args ) ) { $post_type_query_args = $this->build_selector_query( $query_args ); if ( ! empty( $post_type_query_args ) ) { $post_type_query = new WP_Query( $post_type_query_args ); if ( $post_type_query->have_posts() ) { if ( isset( $query_args['format'] ) && 'json' === $query_args['format'] ) { $reply_data['selector_pager'] = $this->build_selector_pages_buttons_json( $post_type_query ); $reply_data['selector_rows'] = $this->build_selector_rows_json( $post_type_query ); } else { $reply_data['selector_pager'] = $this->build_selector_pages_buttons( $post_type_query ); $reply_data['selector_rows'] = $this->build_selector_rows( $post_type_query ); } } } } echo json_encode( $reply_data ); wp_die(); } /** * Handle AJAX new step requests. * * @param array $query_args array of values for AJAX request. */ public function learndash_builder_selector_step_new( $query_args = array() ) { global $wpdb; $reply_data = array(); $reply_data['new_steps'] = array(); if ( ( isset( $query_args['new_steps'] ) ) && ( ! empty( $query_args['new_steps'] ) ) ) { foreach ( $query_args['new_steps'] as $old_step_id => $step_set ) { if ( ( isset( $step_set['post_type'] ) ) && ( ! empty( $step_set['post_type'] ) ) && ( false !== in_array( $step_set['post_type'], array( 'sfwd-question' ) ) ) ) { $post_args = array( 'action' => 'new_step', 'post_type' => esc_attr( $step_set['post_type'] ), 'post_status' => 'publish', 'post_title' => '', 'post_content' => '', ); if ( ( isset( $step_set['post_title'] ) ) && ( ! empty( $step_set['post_title'] ) ) ) { $post_args['post_title'] = $step_set['post_title']; } else { $post_type_object = get_post_type_object( $step_set['post_type'] ); if ( $post_type_object ) { $post_args['post_title'] = $post_type_object->labels->singular_name; } } $new_step_id = wp_insert_post( apply_filters( 'course_builder_selector_new_step_post_args', $post_args ) ); if ( $new_step_id ) { /** * We have to set the guid manually because the one assigned within wp_insert_post is non-unique. * See LEARNDASH-3853 */ $wpdb->update( $wpdb->posts, array( 'guid' => add_query_arg( array( 'post_type' => $step_set['post_type'], 'p' => $new_step_id ), home_url() ) ), array( 'ID' => $new_step_id ) ); if ( 'sfwd-question' === $post_args['post_type'] ) { $question_pro_id = learndash_update_pro_question( 0, $post_args ); if ( ! empty( $question_pro_id ) ) { update_post_meta( $new_step_id, 'question_pro_id', absint( $question_pro_id ) ); learndash_proquiz_sync_question_fields( $new_step_id, $question_pro_id ); } } $reply_data['status'] = true; $reply_data['new_steps'][ $old_step_id ] = array(); $reply_data['new_steps'][ $old_step_id ]['post_id'] = $new_step_id; $reply_data['new_steps'][ $old_step_id ]['view_url'] = get_permalink( $new_step_id ); $reply_data['new_steps'][ $old_step_id ]['edit_url'] = get_edit_post_link( $new_step_id ); learndash_update_setting( $new_step_id, 'quiz', '0' ); update_post_meta( $new_step_id, 'quiz_id', '0' ); } } } } echo json_encode( $reply_data ); wp_die(); } /** * Handle AJAX trash step requests. * * @param array $query_args array of values for AJAX request. */ public function learndash_builder_selector_step_trash( $query_args = array() ) { $reply_data = array(); $post_args = array( 'post_id' => 0, 'post_type' => '', ); $post_args = wp_parse_args( $query_args, $post_args ); $post_args['post_id'] = intval( $query_args['post_id'] ); $post_args['post_type'] = esc_attr( $query_args['post_type'] ); if ( ( empty( $post_args['post_type'] ) ) || ( empty( $post_args['post_id'] ) ) ) { $reply_data['status'] = false; $reply_data['error_message'] = esc_html__( '#1: Invalid post data', 'learndash' ); } else if ( in_array( $post_args['post_type'], $this->selector_post_types ) === false ) { $reply_data['status'] = false; $reply_data['error_message'] = esc_html__( '#2: Invalid post data', 'learndash' ); } else { $new_step_id = wp_trash_post( $post_args['post_id'] ); $reply_data['status'] = true; } echo json_encode( $reply_data ); wp_die(); } /** * Handle AJAX set title requests. * * @param array $query_args array of values for AJAX request. */ public function learndash_builder_selector_step_title( $query_args = array() ) { $reply_data = array(); $post_args = array( 'action' => 'edit_title', 'post_title' => '', 'post_id' => 0, 'post_type' => '', ); $post_args = wp_parse_args( $query_args, $post_args ); $post_args['action'] = 'edit_title'; $post_args['post_id'] = absint( $query_args['post_id'] ); $post_args['post_type'] = esc_attr( $query_args['post_type'] ); $post_args['post_title'] = wp_unslash( sanitize_post_field( 'post_title', $query_args['new_title'], $post_args['post_id'], 'db' ) ); if ( ( empty( $post_args['post_title'] ) ) || ( empty( $post_args['post_type'] ) ) || ( empty( $post_args['post_id'] ) ) ) { $reply_data['status'] = false; $reply_data['error_message'] = esc_html__( '#1: Invalid post data', 'learndash' ); } else if ( in_array( $post_args['post_type'], $this->selector_post_types ) === false ) { $reply_data['status'] = false; $reply_data['error_message'] = esc_html__( '#2: Invalid post data', 'learndash' ); } else { $edit_post = array( 'ID' => $post_args['post_id'], 'post_title' => $post_args['post_title'], 'post_name' => '', ); wp_update_post( $edit_post ); $reply_data['status'] = true; if ( 'sfwd-question' === $post_args['post_type'] ) { $question_pro_id = get_post_meta( $post_args['post_id'], 'question_pro_id', true ); if ( ! empty( $question_pro_id ) ) { $question_pro_id = absint( $question_pro_id ); } else { $question_pro_id = 0; } $question_pro_id_new = learndash_update_pro_question( $question_pro_id, $post_args ); $question_pro_id_new = absint( $question_pro_id_new ); if ( ( ! empty( $question_pro_id_new ) ) && ( $question_pro_id_new !== $question_pro_id ) ) { update_post_meta( $post_args['post_id'], 'question_pro_id', absint( $question_pro_id_new ) ); learndash_set_question_quizzes_dirty( $post_args['post_id'] ); } } } echo json_encode( $reply_data ); wp_die(); } // End of functions. } } add_action( 'learndash_builders_init', function() { Learndash_Admin_Metabox_Quiz_Builder::add_instance(); } ); PKc\#cSPincludes/admin/classes-builders/class-learndash-admin-course-builder-metabox.phpnuW+Abuilder_post_type = 'sfwd-courses'; $this->selector_post_types = array( learndash_get_post_type_slug( 'lesson' ), learndash_get_post_type_slug( 'topic' ), learndash_get_post_type_slug( 'quiz' ), ); $this->builder_init(); parent::__construct(); } /** * Iniitialize builder for specific Course Item. * * @since 2.6.0 * @param integer $post_id Post ID to load. */ public function builder_init( $post_id = 0 ) { if ( ! empty( $post_id ) ) { $this->builder_post_id = intval( $post_id ); $this->ld_course_steps_object = LDLMS_Factory_Post::course_steps( $this->builder_post_id ); } } /** * Call via the WordPress load sequence for admin pages. */ public function builder_on_load() { parent::builder_on_load(); } /** * Prints content for Course Builder meta box for admin * This function is called from other add_meta_box functions * * @since 2.5 * * @param object $post WP_Post. */ public function show_builder_box( $post ) { if ( ( is_a( $post, 'WP_Post' ) ) && ( $this->builder_post_type === $post->post_type ) ) { $this->builder_init( $post->ID ); parent::show_builder_box( $post ); ?> ld_course_steps_object->get_steps( 't' ); if ( ( isset( $course_steps[ $selector_post_type ] ) ) && ( !empty( $course_steps[ $selector_post_type ] ) ) ) { $selector_post_type_steps = $course_steps[ $selector_post_type ]; } } return $selector_post_type_steps; } /** * Get the number of current items in the builder. */ public function get_build_items_count() { ?> ' . intval( $this->ld_course_steps_object->get_steps_count() ) . '' ); ?> get_label_for_post_type( $this->builder_post_type ); $this->builder_assets[ $this->builder_post_type ]['messages']['learndash_unload_message'] = sprintf( // translators: placeholder: Course. esc_html_x( 'You have unsaved %s Builder changes. Are you sure you want to leave?', 'placeholder: Course' ), LearnDash_Custom_Label::get_label( $builder_post_type_label ) ); foreach ( $this->selector_post_types as $selector_post_type ) { $post_type_object = get_post_type_object( $selector_post_type ); if ( is_a( $post_type_object, 'WP_Post_Type' ) ) { $this->builder_assets[ $this->builder_post_type ]['messages'][ 'confirm_remove_' . $selector_post_type ] = sprintf( // translators: 'placeholders: will be post type labels like Course, Lesson, Topic'. esc_html_x( 'Are you sure you want to remove this %1$s from the %2$s? (This will also remove all sub-items)', 'placeholders: will be post type labels like Course, Lesson, Topic', 'learndash' ), LearnDash_Custom_Label::get_label( $this->get_label_for_post_type( $selector_post_type ) ), LearnDash_Custom_Label::get_label( $builder_post_type_label ) ); $this->builder_assets[ $this->builder_post_type ]['messages'][ 'confirm_trash_' . $selector_post_type ] = sprintf( // translators: placeholder: will be post type label like Course, Lesson, Topic. esc_html_x( 'Are you sure you want to move this %s to Trash?', 'placeholder: will be post type label like Course, Lesson, Topic', 'learndash' ), LearnDash_Custom_Label::get_label( $this->get_label_for_post_type( $selector_post_type ) ) ); } } parent::builder_admin_footer(); } /** * Utility function to get the label for Post Type. * * @since 2.5.0 * * @param string $post_type Post Type slug. * @param boolean $singular True if singular label needed. False for plural. * @return string. */ public function get_label_for_post_type( $post_type = '', $singular = true ) { switch ( $post_type ) { case 'sfwd-courses': if ( true === $singular ) { return 'course'; } else { return 'courses'; } break; case 'sfwd-lessons': if ( true === $singular ) { return 'lesson'; } else { return 'lessons'; } break; case 'sfwd-topic': if ( true === $singular ) { return 'topic'; } else { return 'topics'; } break; case 'sfwd-quiz': if ( true === $singular ) { return 'quiz'; } else { return 'quizzes'; } break; } } /** Utility function to build the selector query args array. * * @since 2.5.0 * * @param array $args Array of query args. * @return array */ public function build_selector_query( $args = array() ) { $per_page = LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'per_page' ); if ( empty( $per_page ) ) { $per_page = 10; } $defaults = array( 'post_status' => array( 'publish' ), 'posts_per_page' => $per_page, 'paged' => 1, 'orderby' => 'title', 'order' => 'ASC', ); $args = wp_parse_args( $args, $defaults ); /** * If we are not sharing steps then we limit the query results to only show items associated with the course or items * not associated with any course. */ if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) !== 'yes' ) { $m_include_ids = array(); $m_args = array( 'posts_per_page' => -1 ); if ( isset( $args['post_type'] ) ) { $m_args['post_type'] = $args['post_type']; } if ( isset( $args['post_status'] ) ) { $m_args['post_status'] = $args['post_status']; } else { $m_args['post_status'] = array( 'public' ); } $m_args['fields'] = 'ids'; if ( ( isset( $args['post__not_in'] ) ) && ( ! empty( $args['post__not_in'] ) ) ) { $m_args['post__not_in'] = $args['post__not_in']; unset( $args['post__not_in'] ); } // First get all the items related to the course ID or if course_id is present but zero. $m_args['meta_query'] = array( array( 'key' => 'course_id', 'value' => $this->builder_post_id, 'compare' => '=', ), ); $m_post_type_query = new WP_Query( $m_args ); if ( ( property_exists( $m_post_type_query, 'posts' ) ) && ( ! empty( $m_post_type_query->posts ) ) ) { $m_include_ids = array_merge( $m_include_ids, $m_post_type_query->posts ); if ( ! isset( $m_args['post__not_in'] ) ) { $m_args['post__not_in'] = array(); } $m_args['post__not_in'] = array_merge( $m_args['post__not_in'], $m_include_ids ); } //if ( isset( $m_args['post__not_in'] ) ) { // unset( $m_args['post__not_in'] ); //} /** * Allow externals to control inclusion of orphaned steps. * Orphaned steps are those not attached to a course. * * @since 2.5.9 * * @param boolean true The default value is true to include orphaned steps. * @param array $args The current query args array. * * @return the external filters should return: * true - Yes include orphaned steps. * false - No do not inclide orphaned steps. */ $include_orphaned_steps = apply_filters( 'learndash_course_builder_include_orphaned_steps', true, $args ); if ( true === $include_orphaned_steps ) { $m_args['meta_query'] = array( 'relation' => 'OR', array( 'key' => 'course_id', 'value' => 0, 'compare' => '=', ), array( 'key' => 'course_id', 'value' => -1, 'compare' => '=', ), ); $m_post_type_query = new WP_Query( $m_args ); if ( ( property_exists( $m_post_type_query, 'posts' ) ) && ( ! empty( $m_post_type_query->posts ) ) ) { $m_include_ids = array_merge( $m_include_ids, $m_post_type_query->posts ); if ( ! isset( $m_args['post__not_in'] ) ) { $m_args['post__not_in'] = array(); } $m_args['post__not_in'] = array_merge( $m_args['post__not_in'], $m_include_ids ); } $m_args['meta_query'] = array( array( 'key' => 'course_id', 'compare' => 'NOT EXISTS', ), ); $m_post_type_query = new WP_Query( $m_args ); if ( ( property_exists( $m_post_type_query, 'posts' ) ) && ( ! empty( $m_post_type_query->posts ) ) ) { $m_include_ids = array_merge( $m_include_ids, $m_post_type_query->posts ); if ( ! isset( $m_args['post__not_in'] ) ) { $m_args['post__not_in'] = array(); } $m_args['post__not_in'] = array_merge( $m_args['post__not_in'], $m_include_ids ); } } if ( ! empty( $m_include_ids ) ) { $args['post__in'] = $m_include_ids; } else { $args['post__in'] = array( 0 ); } } return apply_filters( 'learndash_course_builder_selector_args', $args ); } /** * Common function to show Selector pager buttons. * * @since 2.5.0 * @param object $post_type_query WP_Query instance. * @return string Button(s) HTML. */ public function build_selector_pages_buttons( $post_type_query ) { $pager_buttons = ''; if ( $post_type_query instanceof WP_Query ) { $first_page = 1; $current_page = intval( $post_type_query->query['paged'] ); $last_page = intval( $post_type_query->max_num_pages ); if ( empty( $last_page ) ) { $last_page = 1; } if ( $current_page <= 1 ) { $prev_page = 1; $prev_disabled = ' disabled="disabled" '; } else { $prev_page = $current_page - 1; $prev_disabled = ''; } if ( $current_page >= $last_page ) { $next_page = $last_page; $next_disabled = ' disabled="disabled" '; } else { $next_page = $current_page + 1; $next_disabled = ''; } $pager_buttons .= ''; $pager_buttons .= ''; $pager_buttons .= '' . $current_page . ' / ' . $last_page . ''; $pager_buttons .= ''; $pager_buttons .= ''; } return $pager_buttons; } /** * Common function to show Selector pager buttons. * * @since 2.5.0 * @param object $post_type_query WP_Query instance. * @return string Button(s) HTML. */ public function build_selector_pages_buttons_json( $post_type_query ) { $pager_buttons = [ 'first_page' => 1, 'last_page' => 1, 'prev_page' => null, 'prev_disabled' => false, 'next_page' => null, 'next_disabled' => false, 'current_page' => null, ]; if ( $post_type_query instanceof WP_Query ) { $pager_buttons['first_page'] = 1; $current_page = intval( $post_type_query->query['paged'] ); $last_page = intval( $post_type_query->max_num_pages ); $pager_buttons['current_page'] = $current_page; if ( empty( $last_page ) ) { $pager_buttons['last_page'] = 1; } if ( $current_page <= 1 ) { $pager_buttons['prev_page'] = 1; $pager_buttons['has_prev'] = false; } else { $pager_buttons['prev_page'] = $current_page - 1; $pager_buttons['has_prev'] = true; } if ( $current_page >= $last_page ) { $pager_buttons['next_page'] = $last_page; $pager_buttons['has_next'] = false; } else { $pager_buttons['next_page'] = $current_page + 1; $pager_buttons['has_next'] = true; } } return $pager_buttons; } /** * Show selector rows. * * @since 2.5.0 * @param object $post_type_query WP_Query instance. */ public function build_selector_rows( $post_type_query ) { $selector_rows = ''; if ( $post_type_query instanceof WP_Query ) { $selector_post_type = $post_type_query->query['post_type']; $selector_post_type_object = get_post_type_object( $selector_post_type ); $selector_label = $selector_post_type_object->label; $selector_slug = $this->get_label_for_post_type( $selector_post_type ); foreach ( $post_type_query->posts as $p ) { $selector_rows .= $this->build_selector_row_single( $p, $selector_post_type ); } } return $selector_rows; } /** * Show selector rows. * * @since 2.5.0 * @param object $post_type_query WP_Query instance. */ public function build_selector_rows_json( $post_type_query ) { $selector_rows = []; if ( $post_type_query instanceof WP_Query ) { $selector_post_type = $post_type_query->query['post_type']; foreach ( $post_type_query->posts as $p ) { $selector_rows[] = [ 'ID' => $p->ID, 'post_title' => get_the_title( $p->ID ), 'type' => $selector_post_type, 'edit_link' => get_edit_post_link( $p->ID, '' ) ]; } } return $selector_rows; } /** * Show selector single row. * * @since 2.5.0 * @param object $p WP_Post object to show. * @param string $selector_post_type Post type slug. * @return string Row HTML. */ protected function build_selector_row_single( $p = null, $selector_post_type = '' ) { $selector_row = ''; if ( empty( $selector_post_type ) ) { return $selector_row; } $selector_post_type_object = get_post_type_object( $selector_post_type ); $selector_label = $selector_post_type_object->label; $selector_slug = $this->get_label_for_post_type( $selector_post_type ); $selector_sub_actions = ''; $p_id = ''; $p_title = ''; $edit_post_link = ''; $view_post_link = ''; if ( $p ) { $p_id = $p->ID; $p_title = get_the_title( $p->ID ); //$view_post_link = learndash_get_step_permalink( $p->ID, $this->builder_post_id ); /** * We add this to force the course_id to zero for the selectors as we don't * want the the 'view' URL to reflect the nested course. */ add_filter( 'learndash_post_link_course_id', function( $course_id ) { return 0; } ); $view_post_link = get_permalink( $p->ID ); if ( current_user_can( 'edit_courses' ) ) { $edit_post_link = get_edit_post_link( $p->ID ); $edit_post_link = remove_query_arg( 'course_id', $edit_post_link ); } } else { // We need a unique ID. $p_id = $selector_post_type . '-placeholder'; $p_title = $selector_post_type_object->labels->singular_name; } $selector_sub_actions .= '' . sprintf( // translators: placeholder: will contain post type label. esc_html_x( 'Edit %s Settings (new window)', 'placeholder: will contain post type label', 'learndash' ), LearnDash_Custom_Label::get_label( $selector_slug ) ) . ''; $selector_sub_actions .= '' . sprintf( // translators: placeholder: will contain post type label. esc_html_x( 'View %s (new window)', 'placeholder: will contain post type label', 'learndash' ), LearnDash_Custom_Label::get_label( $selector_slug ) ) . ''; if ( current_user_can( 'delete_courses' ) ) { $selector_sub_actions .= ''; } $selector_sub_actions .= ''; $selector_sub_items = ''; $selector_action_expand = ''; if ( 'sfwd-lessons' === $selector_post_type ) { $selector_sub_items .= '
      '; $selector_sub_items .= '
      '; $selector_action_expand = ''; } elseif ( 'sfwd-topic' === $selector_post_type ) { $selector_sub_items .= '
      '; $selector_action_expand = ''; } elseif ( 'sfwd-quiz' === $selector_post_type ) { // Nothing here. } $selector_row .= '
    • ' . $selector_sub_actions . ' ' . $p_title . ' ' . $selector_action_expand . '
    • '; return $selector_row; } /** * Build Course Steps HTML. */ public function build_course_steps_html() { $steps_html = ''; $course_steps = $this->ld_course_steps_object->get_steps(); //if ( ! empty( $course_steps ) ) { $steps_html .= $this->process_course_steps( $course_steps ); //} return $steps_html; } /** * Build course steps HTML. * * @since 2.5.0 * @param array $steps Array of current course steps. * @param string $steps_parent_type Parent post type slug. Default is 'sfwd-courses'. * @return string Steps HTML. */ protected function process_course_steps( $steps = array(), $steps_parent_type = 'sfwd-courses' ) { $steps_section_html = ''; if ( ! empty( $steps ) ) { foreach ( $steps as $steps_type => $steps_items ) { $steps_section_items_html = ''; if ( ! empty( $steps_items ) ) { foreach ( $steps_items as $steps_id => $steps_set ) { $steps_section_item_html = $this->process_course_steps( $steps_set, $steps_type ); $edit_post_link = get_edit_post_link( $steps_id ); $edit_post_link = add_query_arg( 'course_id', $this->builder_post_id, $edit_post_link ); $view_post_link = learndash_get_step_permalink( $steps_id, $this->builder_post_id ); if ( $steps_type == 'sfwd-lessons' ) { $steps_section_item_html = '
      '; } else if ( 'sfwd-topic' === $steps_type ) { $steps_section_item_html = '
      '; } else if ( 'sfwd-quiz' === $steps_type ) { $steps_section_item_html = '
      '; } $steps_section_items_html .= $steps_section_item_html; } } if ( 'sfwd-courses' === $steps_parent_type ) { if ( 'sfwd-lessons' === $steps_type ) { $steps_section_html = '
      ' . $steps_section_items_html . '
      '; } elseif ( 'sfwd-quiz' === $steps_type ) { $steps_section_html .= '
      ' . $steps_section_items_html . '
      '; } } else if ( 'sfwd-lessons' === $steps_parent_type ) { if ( $steps_type == 'sfwd-topic' ) { $steps_section_html = '
      ' . $steps_section_items_html . '
      '; } else if ( 'sfwd-quiz' === $steps_type ) { $steps_section_html .= '
      ' . $steps_section_items_html . '
      '; } } else if ( 'sfwd-topic' === $steps_parent_type ) { if ( 'sfwd-quiz' === $steps_type ) { $steps_section_html = '
      ' . $steps_section_items_html . '
      '; } } } } else { if ( 'sfwd-courses' === $steps_parent_type ) { $steps_section_html .= '
      '; $steps_section_html .= '
      '; } } return $steps_section_html; } /** Save Course Builder steps * * @since 2.5.0 * @param integer $post_id Post ID of course being saved. * @param object $post WP_Post object instance being saved. * @param boolean $update False is an update. True if new post. */ public function save_course_builder( $post_id, $post, $update ) { $return_status = false; $cb_nonce_key = $this->builder_prefix . '_nonce'; $cb_nonce_value = $this->builder_prefix . '_' . $post->post_type . '_' . $post_id . '_nonce'; if ( ( isset( $_POST[ $cb_nonce_key ] ) ) && ( wp_verify_nonce( $_POST[ $cb_nonce_key ], $cb_nonce_value ) ) ) { if ( isset( $_POST[ $this->builder_prefix ][ $this->builder_post_type ][ $post_id ] ) ) { $course_builder_data = $_POST[ $this->builder_prefix ][ $this->builder_post_type ][ $post_id ]; if ( '' !== $course_builder_data ) { $this->ld_course_steps_object = LDLMS_Factory_Post::course_steps( $post_id ); $course_steps = (array) json_decode( stripslashes( $course_builder_data ), true ); if ( ( is_array( $course_steps ) ) && ( ! empty( $course_steps ) ) ) { $course_steps_split = LDLMS_Course_Steps::steps_split_keys( $course_steps ); } else { $course_steps_split = array(); } $this->ld_course_steps_object->set_steps( $course_steps_split ); $return_status = true; } } } return $return_status; } /** * Handle AJAX pager requests. * * @param array $query_args array of values for AJAX request. */ public function learndash_builder_selector_pager( $query_args = array() ) { $reply_data = array(); if ( isset( $query_args['format'] ) && 'json' === $query_args['format'] ) { $reply_data['selector_pager'] = []; $reply_data['selector_rows'] = []; } else { $reply_data['selector_pager'] = ''; $reply_data['selector_rows'] = ''; } if ( ! empty( $query_args ) ) { $post_type_query_args = $this->build_selector_query( $query_args ); if ( ! empty( $post_type_query_args ) ) { $post_type_query = new WP_Query( $post_type_query_args ); if ( $post_type_query->have_posts() ) { if ( isset( $query_args['format'] ) && 'json' === $query_args['format'] ) { $reply_data['selector_pager'] = $this->build_selector_pages_buttons_json( $post_type_query ); $reply_data['selector_rows'] = $this->build_selector_rows_json( $post_type_query ); } else { $reply_data['selector_pager'] = $this->build_selector_pages_buttons( $post_type_query ); $reply_data['selector_rows'] = $this->build_selector_rows( $post_type_query ); } } } } echo json_encode( $reply_data ); wp_die(); } /** * Handle AJAX search requests. * * @param array $query_args array of values for AJAX request. */ public function learndash_builder_selector_search( $query_args = array() ) { $reply_data = array(); if ( isset( $query_args['format'] ) && 'json' === $query_args['format'] ) { $reply_data['selector_pager'] = []; $reply_data['selector_rows'] = []; } else { $reply_data['selector_pager'] = ''; $reply_data['selector_rows'] = ''; } if ( ! empty( $query_args ) ) { $post_type_query_args = $this->build_selector_query( $query_args ); if ( ! empty( $post_type_query_args ) ) { $post_type_query = new WP_Query( $post_type_query_args ); if ( $post_type_query->have_posts() ) { if ( isset( $query_args['format'] ) && 'json' === $query_args['format'] ) { $reply_data['selector_pager'] = $this->build_selector_pages_buttons_json( $post_type_query ); $reply_data['selector_rows'] = $this->build_selector_rows_json( $post_type_query ); } else { $reply_data['selector_pager'] = $this->build_selector_pages_buttons( $post_type_query ); $reply_data['selector_rows'] = $this->build_selector_rows( $post_type_query ); } } } } echo json_encode( $reply_data ); wp_die(); } /** * Handle AJAX new step requests. * * @param array $query_args array of values for AJAX request. */ public function learndash_builder_selector_step_new( $query_args = array() ) { global $wpdb; $reply_data = array(); $reply_data['new_steps'] = array(); if ( ( isset( $query_args['new_steps'] ) ) && ( ! empty( $query_args['new_steps'] ) ) ) { foreach ( $query_args['new_steps'] as $old_step_id => $step_set ) { if ( ( isset( $step_set['post_type'] ) ) && ( ! empty( $step_set['post_type'] ) ) && ( false !== in_array( $step_set['post_type'], array( 'sfwd-lessons', 'sfwd-topic', 'sfwd-quiz' ) ) ) ) { $post_args = array( 'post_type' => esc_attr( $step_set['post_type'] ), 'post_status' => 'publish', 'post_title' => '', 'post_content' => '', ); if ( ( isset( $step_set['post_title'] ) ) && ( ! empty( $step_set['post_title'] ) ) ) { $post_args['post_title'] = $step_set['post_title']; } else { $post_type_object = get_post_type_object( $step_set['post_type'] ); if ( $post_type_object ) { $post_args['post_title'] = $post_type_object->labels->singular_name; } } $new_step_id = wp_insert_post( apply_filters( 'course_builder_selector_new_step_post_args', $post_args ) ); if ( $new_step_id ) { /** * We have to set the guid manually because the one assigned within wp_insert_post is non-unique. * See LEARNDASH-3853 */ $wpdb->update( $wpdb->posts, array( 'guid' => add_query_arg( array( 'post_type' => $step_set['post_type'], 'p' => $new_step_id ), home_url() ) ), array( 'ID' => $new_step_id ) ); $reply_data['status'] = true; $reply_data['new_steps'][ $old_step_id ] = array(); $reply_data['new_steps'][ $old_step_id ]['post_id'] = $new_step_id; $reply_data['new_steps'][ $old_step_id ]['view_url'] = get_permalink( $new_step_id ); $reply_data['new_steps'][ $old_step_id ]['edit_url'] = get_edit_post_link( $new_step_id ); if ( $post_args['post_type'] == 'sfwd-quiz' ) { // This form element is required when creating a new Quiz in WPProQuiz. Don't ask. //$_POST['form'] = array(); //$_POST['name'] = $post_args['post_title']; //$_POST['text'] = 'AAZZAAZZ'; //$pro_quiz = new WpProQuiz_Controller_Quiz(); //ob_start(); //$pro_quiz->route( // array( // 'action' => 'addEdit', // 'quizId' => 0, // 'post_id' => $new_step_id, // ) //); //ob_get_clean(); //$quiz_id = learndash_get_setting( $new_step_id, 'quiz_pro' ); //$quiz_meta = SFWD_CPT_Instance::$instances['sfwd-quiz']->get_settings_values( 'sfwd-quiz' ); //if ( ! empty( $quiz_meta ) ) { // $quiz_meta_values = wp_list_pluck( $quiz_meta, 'value' ); // if ( ! empty( $quiz_id ) ) { // $quiz_meta_values['sfwd-quiz_quiz_pro'] = intval( $quiz_id ); // //update_post_meta( $new_step_id, 'quiz_pro_id_' . $quiz_id, $quiz_id ); // //update_post_meta( $new_step_id, 'quiz_pro_id', $quiz_id ); // learndash_update_setting( $new_step_id, 'quiz_pro', $quiz_id ); // // // Set the 'View Statistics on Profile' for the new quiz. // update_post_meta( $new_step_id, '_viewProfileStatistics', 1 ); // } // update_post_meta( $new_step_id, '_sfwd-quiz', $quiz_meta_values ); //} $quiz_mapper = new WpProQuiz_Model_QuizMapper(); $quiz_pro = new WpProQuiz_Model_Quiz(); $quiz_pro->setName( $post_args['post_title'] ); $quiz_pro->setText( 'AAZZAAZZ' ); $quiz_pro = $quiz_mapper->save( $quiz_pro ); $quiz_pro_id = $quiz_pro->getId(); $quiz_pro_id = absint( $quiz_pro_id ); learndash_update_setting( $new_step_id, 'quiz_pro', $quiz_pro_id ); // Set the 'View Statistics on Profile' for the new quiz. update_post_meta( $new_step_id, '_viewProfileStatistics', 1 ); } learndash_update_setting( $new_step_id, 'course', '0' ); update_post_meta( $new_step_id, 'course_id', '0' ); if ( in_array( $step_set['post_type'], array( 'sfwd-topic', 'sfwd-quiz' ) ) ) { learndash_update_setting( $new_step_id, 'lesson', '0' ); update_post_meta( $new_step_id, 'lesson_id', '0' ); } } } } } echo json_encode( $reply_data ); wp_die(); } /** * Handle AJAX trash step requests. * * @param array $query_args array of values for AJAX request. */ public function learndash_builder_selector_step_trash( $query_args = array() ) { $reply_data = array(); $post_args = array( 'post_id' => 0, 'post_type' => '', ); $post_args = wp_parse_args( $query_args, $post_args ); $post_args['post_id'] = intval( $query_args['post_id'] ); $post_args['post_type'] = esc_attr( $query_args['post_type'] ); if ( ( empty( $post_args['post_type'] ) ) || ( empty( $post_args['post_id'] ) ) ) { $reply_data['status'] = false; $reply_data['error_message'] = esc_html__( '#1: Invalid post data', 'learndash' ); } else if ( in_array( $post_args['post_type'], $this->selector_post_types ) === false ) { $reply_data['status'] = false; $reply_data['error_message'] = esc_html__( '#2: Invalid post data', 'learndash' ); } else { $new_step_id = wp_trash_post( $post_args['post_id'] ); $reply_data['status'] = true; } echo json_encode( $reply_data ); wp_die(); } /** * Handle AJAX set title requests. * * @param array $query_args array of values for AJAX request. */ public function learndash_builder_selector_step_title( $query_args = array() ) { $reply_data = array(); $post_args = array( 'post_title' => '', 'post_id' => 0, 'post_type' => '', ); $post_args = wp_parse_args( $query_args, $post_args ); $post_args['post_id'] = absint( $query_args['post_id'] ); $post_args['post_type'] = esc_attr( $query_args['post_type'] ); $post_args['post_title'] = wp_unslash( sanitize_post_field( 'post_title', $query_args['new_title'], $post_args['post_id'], 'db' ) ); if ( ( empty( $post_args['post_title'] ) ) || ( empty( $post_args['post_type'] ) ) || ( empty( $post_args['post_id'] ) ) ) { $reply_data['status'] = false; $reply_data['error_message'] = esc_html__( '#1: Invalid post data', 'learndash' ); } else if ( in_array( $post_args['post_type'], $this->selector_post_types ) === false ) { $reply_data['status'] = false; $reply_data['error_message'] = esc_html__( '#2: Invalid post data', 'learndash' ); } else { $edit_post = array( 'ID' => $post_args['post_id'], 'post_title' => $post_args['post_title'], 'post_name' => '', ); wp_update_post( $edit_post ); $reply_data['status'] = true; if ( 'sfwd-quiz' === $post_args['post_type'] ) { $quiz_id = get_post_meta( $post_args['post_id'], 'quiz_pro_id', true ); if ( ! empty( $quiz_id ) ) { $quizMapper = new WpProQuiz_Model_QuizMapper(); $quiz = $quizMapper->fetch( $quiz_id ); if ( is_a( $quiz, 'WpProQuiz_Model_Quiz' ) ) { $quiz->setName( $post_args['post_title'] ); $quizMapper->save( $quiz ); } } } } echo json_encode( $reply_data ); wp_die(); } // End of functions. } } add_action( 'learndash_builders_init', function() { Learndash_Admin_Metabox_Course_Builder::add_instance(); } ); PKc\\AOincludes/admin/classes-posts-listings/class-learndash-admin-courses-listing.phpnuW+Apost_type = 'sfwd-courses'; parent::__construct(); } /** * Call via the WordPress load sequence for admin pages. */ public function on_load_edit() { global $typenow, $post; if ( ( empty( $typenow ) ) || ( $typenow !== $this->post_type ) ) { return; } add_filter( 'post_row_actions', array( $this, 'post_row_actions' ), 20, 2 ); parent::on_load_edit(); } /** * Add Course Builder link to Courses row action array. * * @since 2.5.0 * * @param array $row_actions Existing Row actions for course. * @param WP_Post $course_post Course Post object for current row. * * @return array $row_actions */ public function post_row_actions( $row_actions = array(), $course_post = null ) { global $typenow, $post; if ( ( $typenow === $this->post_type ) && ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'enabled' ) == 'yes' ) && ( ! isset( $row_actions['ld-course-builder'] ) ) ) { if ( apply_filters( 'learndash_show_course_builder_row_actions', true, $course_post ) === true ) { $course_label = sprintf( // translators: placeholder: Course. esc_html_x( 'Use %s Builder', 'placeholder: Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ); $row_actions['ld-course-builder'] = sprintf( '%s', add_query_arg( array( 'currentTab' => 'learndash_course_builder', ), get_edit_post_link( $course_post->ID ) ), esc_attr( $course_label ), esc_html__( 'Builder', 'learndash' ) ); } } return $row_actions; } // End of functions. } } new Learndash_Admin_Courses_Listing(); PKc\+EEOincludes/admin/classes-posts-listings/class-learndash-admin-lessons-listing.phpnuW+Apost_type = 'sfwd-lessons'; parent::__construct(); } /** * Call via the WordPress load sequence for admin pages. */ public function on_load_edit() { global $typenow, $post; if ( ( empty( $typenow ) ) || ( $typenow !== $this->post_type ) ) { return; } $this->post_type_selectors = array( 'course_id' => array( 'query_args' => array( 'post_type' => learndash_get_post_type_slug( 'course' ), ), 'query_arg' => 'course_id', 'selected' => ( isset( $_GET['course_id'] ) ) ? absint( $_GET['course_id'] ) : 0, 'field_name' => 'course_id', 'field_id' => 'course_id', 'show_all_value' => '', 'show_all_label' => sprintf( // translators: placeholder: Courses. esc_html_x( 'Show All %s', 'placeholder: Courses', 'learndash' ), LearnDash_Custom_Label::get_label( 'courses' ) ), 'lazy_load' => true, //'show_empty_value' => 'empty', //'show_empty_label' => sprintf( // // translators: placeholder: Courses. // esc_html_x( '-- No %s --', 'placeholder: Courses', 'learndash' ), // LearnDash_Custom_Label::get_label( 'courses' ) //), ), ); parent::on_load_edit(); add_filter( 'learndash_show_post_type_selector_filter', array( $this, 'filter_quiz_lesson_selector' ), 30, 2 ); //add_action( 'learndash_post_listing_after_option', array( $this, 'learndash_post_listing_after_option' ), 30, 3 ); } /** * Filter the selector filters. * * @param array $query_args Query Args for Selector. * @param string $post_type Post Type slug for selector. */ public function filter_quiz_lesson_selector( $query_args = array(), $post_type = '' ) { global $sfwd_lms; // Check that the selector post type matches for out listing post type. if ( $post_type === $this->post_type ) { if ( isset( $query_args['post_type'] ) ) { if ( ( ( is_string( $query_args['post_type'] ) ) && ( learndash_get_post_type_slug( 'lesson' ) === $query_args['post_type'] ) ) || ( ( is_array( $query_args['post_type'] ) ) && ( in_array( learndash_get_post_type_slug( 'lesson' ), $query_args['post_type'] ) ) ) ) { if ( ( isset( $_GET['course_id'] ) ) && ( ! empty( $_GET['course_id'] ) ) ) { $lessons_items = $sfwd_lms->select_a_lesson_or_topic( absint( $_GET['course_id'] ), false, false ); if ( ! empty( $lessons_items ) ) { $query_args['post__in'] = array_keys( $lessons_items ); $query_args['orderby'] = 'post__in'; } else { $query_args['post__in'] = array( 0 ); } } else { $query_args['post__in'] = array( 0 ); } } } } return $query_args; } public function learndash_post_listing_after_option( $post, $query_args = array(), $post_type = '' ) { global $sfwd_lms; // Check that the selector post type matches for out listing post type. if ( $post_type === $this->post_type ) { if ( ( ( is_string( $query_args['post_type'] ) ) && ( learndash_get_post_type_slug( 'lesson' ) === $query_args['post_type'] ) ) || ( ( is_array( $query_args['post_type'] ) ) && ( in_array( learndash_get_post_type_slug( 'lesson' ), $query_args['post_type'] ) ) ) ) { if ( ( isset( $_GET['course_id'] ) ) && ( ! empty( $_GET['course_id'] ) ) ) { $lessons_topics = learndash_get_topic_list( $post->ID, absint( $_GET['course_id'] ) ); if ( ! empty( $lessons_topics ) ) { foreach ( $lessons_topics as $topic ) { $selected = ''; if ( ( isset( $_GET['lesson_id'] ) ) && ( ! empty( $_GET['lesson_id'] ) ) ) { $selected = selected( absint( $_GET['lesson_id'] ), $topic->ID, false ); } echo ''; } } } } } } // End of functions. } } new Learndash_Admin_Lessons_Listing(); PKc\v))Oincludes/admin/classes-posts-listings/class-learndash-admin-quizzes-listing.phpnuW+Apost_type = 'sfwd-quiz'; parent::__construct(); } /** * Call via the WordPress load sequence for admin pages. */ public function on_load_edit() { global $typenow, $post; if ( ( empty( $typenow ) ) || ( $typenow !== $this->post_type ) ) { return; } add_filter( 'post_row_actions', array( $this, 'post_row_actions' ), 20, 2 ); $this->post_type_selectors = array( 'course_id' => array( 'query_args' => array( 'post_type' => learndash_get_post_type_slug( 'course' ), ), 'query_arg' => 'course_id', 'selected' => 0, 'field_name' => 'course_id', 'field_id' => 'course_id', 'show_all_value' => '', 'show_all_label' => sprintf( // translators: placeholder: Courses. esc_html_x( 'Show All %s', 'placeholder: Courses', 'learndash' ), LearnDash_Custom_Label::get_label( 'courses' ) ), 'lazy_load' => true, //'show_empty_value' => 'empty', //'show_empty_label' => sprintf( // // translators: placeholder: Courses. // esc_html_x( '-- No %s --', 'placeholder: Courses', 'learndash' ), // LearnDash_Custom_Label::get_label( 'courses' ) //), ), 'lesson_id' => array( 'query_args' => array( 'post_type' => learndash_get_post_type_slug( 'lesson' ), ), 'query_arg' => 'lesson_id', 'selected' => 0, 'field_name' => 'lesson_id', 'field_id' => 'lesson_id', 'show_all_value' => '', 'show_all_label' => sprintf( // translators: placeholder: Lessons. esc_html_x( 'Show All %s', 'placeholder: Lessons', 'learndash' ), LearnDash_Custom_Label::get_label( 'lessons' ) ), 'lazy_load' => false, //'show_empty_value' => 'empty', /*'show_empty_label' => sprintf( // translators: placeholder: Lessons. esc_html_x( '-- No %s --', 'placeholder: Lessons', 'learndash' ), LearnDash_Custom_Label::get_label( 'lessons' ) ),*/ ), ); parent::on_load_edit(); add_filter( 'learndash_show_post_type_selector_filter', array( $this, 'filter_quiz_lesson_selector' ), 30, 2 ); add_action( 'learndash_post_listing_after_option', array( $this, 'learndash_post_listing_after_option' ), 30, 3 ); } /** * Add Course Builder link to Courses row action array. * * @since 2.5.0 * * @param array $row_actions Existing Row actions for course. * @param WP_Post $course_post Course Post object for current row. * * @return array $row_actions */ public function post_row_actions( $row_actions = array(), $quiz_post = null ) { global $typenow, $post; if ( ( $typenow === $this->post_type ) && ( 'yes' === LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'enabled' ) ) && ( ! isset( $row_actions['ld-course-builder'] ) ) ) { if ( ( 'yes' === LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Quizzes_Builder', 'enabled' ) ) && ( ! isset( $row_actions['ld-quiz-builder'] ) ) ) { if ( apply_filters( 'learndash_show_quiz_builder_row_actions', true, $quiz_post ) === true ) { $quiz_label = sprintf( // translators: placeholder: Quiz. esc_html_x( 'Use %s Builder', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ); $builder_link = add_query_arg( array( 'currentTab' => 'learndash_quiz_builder', ), get_edit_post_link( $quiz_post->ID ) ); $row_actions['ld-quiz-builder'] = sprintf( '%s', $builder_link, esc_attr( $quiz_label ), esc_html__( 'Builder', 'learndash' ) ); } } $pro_quiz_id = learndash_get_setting( $quiz_post, 'quiz_pro', true ); if ( ! empty( $pro_quiz_id ) ) { if ( ( ! isset( $row_actions['questions'] ) ) || ( empty( $row_actions['questions'] ) ) ) { if ( ( true === is_data_upgrade_quiz_questions_updated() ) && ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Quizzes_Builder', 'enabled' ) === 'yes' ) ) { $questions_link = add_query_arg( array( 'post_type' => learndash_get_post_type_slug( 'question' ), 'quiz_id' => $quiz_post->ID, ), admin_url( 'edit.php' ) ); } else { $questions_link = add_query_arg( array( 'page' => 'ldAdvQuiz', 'module' => 'question', 'quiz_id' => $pro_quiz_id, 'post_id' => $post->ID, ), admin_url( 'admin.php' ) ); } $questions_label = sprintf( // translators: placeholder: Quiz. esc_html_x( 'Show %s Questions', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ); $row_actions['questions'] = sprintf( '%s', $questions_link, esc_attr( $questions_label ), esc_html__( 'Questions', 'learndash' ) ); } if ( ( ! isset( $row_actions['statistics'] ) ) || ( empty( $row_actions['statistics'] ) ) ) { $statistics_link = add_query_arg( array( 'page' => 'ldAdvQuiz', 'module' => 'statistics', 'id' => $pro_quiz_id, 'post_id' => $quiz_post->ID, 'currentTab' => 'statistics', ), admin_url( 'admin.php?' ) ); $statistics_label = sprintf( // translators: placeholder: Quiz. esc_html_x( 'Show %s Statistics', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ); $row_actions['statistics'] = sprintf( '%s', $statistics_link, esc_attr( $statistics_label ), esc_html__( 'Statistics', 'learndash' ) ); } if ( ( ! isset( $row_actions['leaderboard'] ) ) || ( empty( $row_actions['leaderboard'] ) ) ) { $leaderboard_link = add_query_arg( array( 'page' => 'ldAdvQuiz', 'module' => 'toplist', 'id' => $pro_quiz_id, 'post_id' => $post->ID, 'currentTab' => 'leaderboard', ), admin_url( 'admin.php' ) ); $leaderboard_label = sprintf( // translators: placeholder: Quiz. esc_html_x( 'Show %s Leaderboard', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ); $row_actions['leaderboard'] = sprintf( '%s', $leaderboard_link, esc_attr( $leaderboard_label ), esc_html__( 'Leaderboard', 'learndash' ) ); } if ( ( current_user_can('wpProQuiz_export') ) && ( ! isset( $row_actions['export'] ) ) || ( empty( $row_actions['export'] ) ) ) { $export_link = add_query_arg( array( 'page' => 'ldAdvQuiz', 'quiz_id' => $post->ID, ), admin_url( 'admin.php' ) ); $export_label = sprintf( // translators: placeholder: Quiz. esc_html_x( 'Export %s', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ); $row_actions['export'] = sprintf( '%s', $export_link, esc_attr( $export_label ), esc_html__( 'Export', 'learndash' ) ); } } } return $row_actions; } /** * Filter the selector filters. * * @param array $query_args Query Args for Selector. * @param string $post_type Post Type slug for selector. */ public function filter_quiz_lesson_selector( $query_args = array(), $post_type = '' ) { global $sfwd_lms; // Check that the selector post type matches for out listing post type. if ( $post_type === $this->post_type ) { if ( isset( $query_args['post_type'] ) ) { if ( ( ( is_string( $query_args['post_type'] ) ) && ( learndash_get_post_type_slug( 'lesson' ) === $query_args['post_type'] ) ) || ( ( is_array( $query_args['post_type'] ) ) && ( in_array( learndash_get_post_type_slug( 'lesson' ), $query_args['post_type'] ) ) ) ) { if ( ( isset( $_GET['course_id'] ) ) && ( ! empty( $_GET['course_id'] ) ) ) { $lessons_items = $sfwd_lms->select_a_lesson_or_topic( absint( $_GET['course_id'] ), false, false ); if ( ! empty( $lessons_items ) ) { $query_args['post__in'] = array_keys( $lessons_items ); $query_args['orderby'] = 'post__in'; } else { $query_args['post__in'] = array( 0 ); } } else { $query_args['post__in'] = array( 0 ); } } } } return $query_args; } public function learndash_post_listing_after_option( $post, $query_args = array(), $post_type = '' ) { global $sfwd_lms; // Check that the selector post type matches for out listing post type. if ( $post_type === $this->post_type ) { if ( ( ( is_string( $query_args['post_type'] ) ) && ( learndash_get_post_type_slug( 'lesson' ) === $query_args['post_type'] ) ) || ( ( is_array( $query_args['post_type'] ) ) && ( in_array( learndash_get_post_type_slug( 'lesson' ), $query_args['post_type'] ) ) ) ) { if ( ( isset( $_GET['course_id'] ) ) && ( ! empty( $_GET['course_id'] ) ) ) { $lessons_topics = learndash_get_topic_list( $post->ID, absint( $_GET['course_id'] ) ); if ( ! empty( $lessons_topics ) ) { foreach ( $lessons_topics as $topic ) { $selected = ''; if ( ( isset( $_GET['lesson_id'] ) ) && ( ! empty( $_GET['lesson_id']) ) ) { $selected = selected( absint( $_GET['lesson_id'] ), $topic->ID, false ); } echo ''; } } } } } } // End of functions. } } new Learndash_Admin_Quizzes_Listing(); PKc\x<<Qincludes/admin/classes-posts-listings/class-learndash-admin-questions-listing.phpnuW+Apost_type = 'sfwd-question'; parent::__construct(); } /** * Call via the WordPress load sequence for admin pages. */ public function on_load_edit() { global $typenow, $post; if ( ( empty( $typenow ) ) || ( $typenow !== $this->post_type ) ) { return; } $this->columns = array( 'question_type' => esc_html__( 'Type', 'learndash' ), 'question_points' => esc_html__( 'Points', 'learndash' ), 'question_quiz' => sprintf( // translators: placeholder: Quiz. esc_html_x( 'Assigned %s', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ), ); if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Quizzes_Builder', 'shared_questions' ) == 'yes' ) { unset( $this->columns['question_quiz'] ); } if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Questions_Taxonomies', 'proquiz_question_category' ) == 'yes' ) { $this->columns['proquiz_question_category'] = sprintf( // translators: placeholder: Question. esc_html_x( '%s Category', 'placeholder: Question', 'learndash' ), LearnDash_Custom_Label::get_label( 'question' ) ); } $this->post_type_selectors = array( 'quiz_id' => array( 'query_args' => array( 'post_type' => 'sfwd-quiz', ), 'query_arg' => 'quiz_id', 'selected' => 0, 'field_name' => 'quiz_id', 'field_id' => 'quiz_id', 'show_all_value' => '', 'show_all_label' => sprintf( // translators: placeholder: Quizzes. esc_html_x( 'Show All %s', 'placeholder: Quizzes', 'learndash' ), LearnDash_Custom_Label::get_label( 'quizzes' ) ), 'show_empty_value' => 'empty', 'show_empty_label' => sprintf( // translators: placeholder: Quiz. esc_html_x( '-- No %s --', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ), ), ); add_action( 'admin_footer', array( $this, 'admin_footer' ) ); parent::on_load_edit(); } /** * Hook into the WP admin footer logic to add custom JavaScript to replce the default page title. */ public function admin_footer() { global $post_type, $post_type_object; if ( ( ! is_admin() ) || ( $post_type !== $this->post_type ) ) { return; } if ( isset( $_GET['quiz_id'] ) ) { $quiz_id = absint( $_GET['quiz_id'] ); if ( ! empty( $quiz_id ) ) { $quizzes_url = add_query_arg( 'post_type', learndash_get_post_type_slug( 'quiz' ), admin_url( 'edit.php' ) ); $new_title = '' . LearnDash_Custom_Label::get_label( 'quizzes' ) . ' > ' . get_the_title( $quiz_id ) . ' - ' . esc_html( $post_type_object->labels->name ); $post_new_file = add_query_arg( array( 'post_type' => $post_type, 'quiz_id' => $quiz_id, ), 'post-new.php' ); $add_new_url = admin_url( $post_new_file ); ?> '', 'answer_type' => 'single', 'category_id' => 0, 'category_name' => '', ); } } if ( ( ! empty( $column_name ) ) && ( ! empty( $post_id ) ) ) { switch ( $column_name ) { case 'question_type': if ( ( ! isset( $field_values[ $post_id ]['answer_type'] ) ) || ( empty( $field_values[ $post_id ]['answer_type'] ) ) || ( ! isset( $learndash_question_types[ $field_values[ $post_id ]['answer_type'] ] ) ) ) { $field_values[ $post_id ]['answer_type'] = 'single'; } echo esc_attr( $learndash_question_types[ $field_values[ $post_id ]['answer_type'] ] ); break; case 'question_points': if ( ( ! isset( $field_values[ $post_id ]['points'] ) ) || ( empty( $field_values[ $post_id ]['points'] ) ) ) { $question_points = 1; } echo absint( $field_values[ $post_id ]['points'] ); break; case 'question_quiz': $quiz_post_ids = get_post_meta( $post_id, 'quiz_id' ); if ( ! empty( $quiz_post_ids ) ) { if ( 1 === count( $quiz_post_ids ) ) { $row_actions = array(); foreach ( $quiz_post_ids as $quiz_post_id ) { $quiz_post_id = absint( $quiz_post_id ); if ( ! empty( $quiz_post_id ) ) { $this->show_post_link( $quiz_post_id ); $row_actions['edit'] = '' . esc_html__( 'edit', 'learndash' ) . ''; $row_actions['filter_posts'] = '' . esc_html__( 'filter', 'learndash' ) . ''; $this->show_row_actions( $row_actions ); } } } else { printf( // translators: placeholder: Group Leaders Count. esc_html_x( 'Total %d', 'Quizzes Count', 'learndash' ), count( $quiz_post_ids ) ); $quiz_names = ''; if ( count( $quiz_post_ids ) > 5 ) { $quiz_post_ids = array_slice( $quiz_post_ids, 0, 5 ); } foreach ( $quiz_post_ids as $quiz_post_id ) { $quiz_post_id = absint( $quiz_post_id ); if ( ! empty( $quiz_post_id ) ) { if ( ! empty( $quiz_names ) ) { $quiz_names .= ', '; } $quiz_names .= '' . get_the_title( $quiz_post_id ) . ''; } } if ( ! empty( $quiz_names ) ) { echo '
      ' . $quiz_names; } } } break; case 'proquiz_question_category': if ( ( isset( $field_values[ $post_id ]['category_id'] ) ) && ( ! empty( $field_values[ $post_id ]['category_id'] ) ) ) { $category_mapper = new WpProQuiz_Model_CategoryMapper(); $cat = $category_mapper->fetchById( $field_values[ $post_id ]['category_id'] ); if ( ( $cat ) && ( is_a( $cat, 'WpProQuiz_Model_Category' ) ) ) { echo '' . stripslashes( $cat->getCategoryName() ) . ''; } } break; } } } /** * Function to show selectors before the post_type selectors. */ protected function show_early_selectors() { global $learndash_question_types; /** * Filter selector for Question Types. */ if ( ! empty( $learndash_question_types ) ) { echo ''; } /** * Filter selector for legacy ProQuiz Question Categories. */ $categoryMapper = new WpProQuiz_Model_CategoryMapper(); $question_pro_categories = $categoryMapper->fetchAll(); if ( ! empty( $question_pro_categories ) ) { if ( ( isset( $_GET['question_pro_category'] ) ) && ( ! empty( $_GET['question_pro_category'] ) ) ) { $selected_question_pro_category = esc_attr( $_GET['question_pro_category'] ); } else { $selected_question_pro_category = ''; } echo ''; } } /** * This function fill filter the table listing items based on filters selected. * Called via 'parse_query' filter from WP. * * @since 2.6.0 * @param object $query WP_Query instance. */ public function parse_query_table_filter( $query ) { global $typenow, $post; if ( ( empty( $typenow ) ) || ( $typenow !== $this->post_type ) ) { return; } if ( ! $query->is_main_query() ) { return; } parent::parse_query_table_filter( $query ); // Holds the included question ids. $questions_include = ''; if ( ( isset( $_GET['quiz_id'] ) ) && ( ! empty( $_GET['quiz_id'] ) ) ) { $question_ids = array(); if ( $this->post_type_selectors['quiz_id']['show_empty_value'] === $_GET['quiz_id'] ) { $query_args = array( 'post_type' => learndash_get_post_type_slug( 'question' ), 'posts_per_page' => -1, 'post_status' => 'publish', 'fields' => 'ids', 'orderby' => 'title', 'order' => 'ASC', 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'quiz_id', 'compare' => 'NOT EXISTS', ), array( 'key' => 'quiz_id', 'value' => '0', 'compare' => '=', ), ), ); $query_results = new WP_Query( $query_args ); if ( ( is_a( $query_results, 'WP_Query' ) ) && ( property_exists( $query_results, 'posts' ) ) ) { if ( ! empty( $query_results->posts ) ) { $questions_include = $query_results->posts; $query->query_vars['post__in'] = $query_results->posts; $query->query_vars['orderby'] = 'post__in'; } else { $query->query_vars['post__in'] = array( 0 ); } } else { $query->query_vars['post__in'] = array( 0 ); } } else { $questions_include = array(); $ld_quiz_questions_object = LDLMS_Factory_Post::quiz_questions( absint( $_GET['quiz_id'] ) ); $question_post_ids = $ld_quiz_questions_object->get_questions(); if ( ! empty( $question_post_ids ) ) { $questions_include = array_keys( $question_post_ids ); } $questions_query_args = array( 'post_type' => learndash_get_post_type_slug( 'question' ), 'posts_per_page' => -1, 'fields' => 'ids', 'orderby' => 'menu_order', 'order' => 'ASC', 'meta_query' => array( array( 'key' => 'quiz_id', 'value' => absint( $_GET['quiz_id'] ), 'compare' => '=', ), ), ); if ( ( isset( $question_post_ids ) ) && ( ! empty( $question_post_ids ) ) ) { $questions_query_args['post__not_in'] = $question_post_ids; } $questions_query = new WP_Query( $questions_query_args ); if ( ( is_a( $questions_query, 'WP_Query' ) ) && ( property_exists( $questions_query, 'posts' ) ) && ( ! empty( $questions_query->posts ) ) ) { $questions_include = array_merge( $questions_include, $questions_query->posts ); } if ( ! empty( $questions_include ) ) { $query->query_vars['post__in'] = $questions_include; $query->query_vars['orderby'] = 'post__in'; } else { $query->query_vars['post__in'] = array( 0 ); } } } if ( ( isset( $_GET['question_type'] ) ) && ( ! empty( $_GET['question_type'] ) ) ) { if ( ! isset( $query->query_vars['meta_query'] ) ) { $query->query_vars['meta_query'] = array(); } $query->query_vars['meta_query'][] = array( 'key' => 'question_type', 'value' => esc_attr( $_GET['question_type'] ), 'compare' => '=', ); } if ( ( isset( $_GET['question_pro_category'] ) ) && ( ! empty( $_GET['question_pro_category'] ) ) ) { if ( ! isset( $query->query_vars['meta_query'] ) ) { $query->query_vars['meta_query'] = array(); } $query->query_vars['meta_query'][] = array( 'key' => 'question_pro_category', 'value' => esc_attr( $_GET['question_pro_category'] ), 'compare' => '=', ); } } /** * Initial hook for deleting a post. * * For the Questions post type we want to also remove the ProQuiz Question. So we grab * the reference from the post meta for 'question_pro_id'. * * @since 2.6.5 * @param integer $post_id $Post ID to be deleted. */ public function before_delete_post( $post_id = 0 ) { global $post_type, $post_type_object; if ( ( ! is_admin() ) || ( $post_type !== $this->post_type ) ) { return; } $post_id = absint( $post_id ); if ( ( ! empty( $post_id ) ) && ( current_user_can( 'delete_post', $post_id ) ) && ( ! isset( $this->posts_to_delete[ $post_id ] ) ) ) { $question_pro_id = get_post_meta( $post_id, 'question_pro_id', true ); if ( ! empty( $question_pro_id ) ) { $this->posts_to_delete[ $post_id ] = absint( $question_pro_id ); } } } /** * Called after the post ha been deleted. * * Uses registered delete post ID * * @since 2.6.5 * @param integer $post_id $Post ID to be deleted. */ public function deleted_post( $post_id = 0 ) { global $post_type, $post_type_object; if ( ( ! is_admin() ) || ( $post_type !== $this->post_type ) ) { return; } if ( ( ! empty( $post_id ) ) && ( current_user_can( 'delete_post', $post_id ) ) && ( isset( $this->posts_to_delete[ $post_id ] ) ) ) { global $wpdb; $wpdb->delete( LDLMS_DB::get_table_name( 'quiz_question' ), array( 'id' => $this->posts_to_delete[ $post_id ], ), array( '%d' ) ); unset( $this->posts_to_delete[ $post_id ] ); } } // End of functions. } } new Learndash_Admin_Questions_Listing(); PKc\F 11Nincludes/admin/classes-posts-listings/class-learndash-admin-topics-listing.phpnuW+Apost_type = 'sfwd-topic'; parent::__construct(); } /** * Call via the WordPress load sequence for admin pages. */ public function on_load_edit() { global $typenow, $post; if ( ( empty( $typenow ) ) || ( $typenow !== $this->post_type ) ) { return; } $this->post_type_selectors = array( 'course_id' => array( 'query_args' => array( 'post_type' => learndash_get_post_type_slug( 'course' ), ), 'query_arg' => 'course_id', 'selected' => 0, 'field_name' => 'course_id', 'field_id' => 'course_id', 'show_all_value' => '', 'show_all_label' => sprintf( // translators: placeholder: Courses. esc_html_x( 'Show All %s', 'placeholder: Courses', 'learndash' ), LearnDash_Custom_Label::get_label( 'courses' ) ), 'lazy_load' => true, //'show_empty_value' => 'empty', //'show_empty_label' => sprintf( // // translators: placeholder: Courses. // esc_html_x( '-- No %s --', 'placeholder: Courses', 'learndash' ), // LearnDash_Custom_Label::get_label( 'courses' ) //), ), 'lesson_id' => array( 'query_args' => array( 'post_type' => learndash_get_post_type_slug( 'lesson' ), ), 'query_arg' => 'lesson_id', 'selected' => 0, 'field_name' => 'lesson_id', 'field_id' => 'lesson_id', 'show_all_value' => '', 'show_all_label' => sprintf( // translators: placeholder: Lessons. esc_html_x( 'Show All %s', 'placeholder: Lessons', 'learndash' ), LearnDash_Custom_Label::get_label( 'lessons' ) ), 'lazy_load' => false, ), ); parent::on_load_edit(); add_filter( 'learndash_show_post_type_selector_filter', array( $this, 'filter_quiz_lesson_selector' ), 30, 2 ); //add_action( 'learndash_post_listing_after_option', array( $this, 'learndash_post_listing_after_option' ), 30, 3 ); } /** * Filter the selector filters. * * @param array $query_args Query Args for Selector. * @param string $post_type Post Type slug for selector. */ public function filter_quiz_lesson_selector( $query_args = array(), $post_type = '' ) { global $sfwd_lms; // Check that the selector post type matches for out listing post type. if ( $post_type === $this->post_type ) { if ( isset( $query_args['post_type'] ) ) { if ( ( ( is_string( $query_args['post_type'] ) ) && ( learndash_get_post_type_slug( 'lesson' ) === $query_args['post_type'] ) ) || ( ( is_array( $query_args['post_type'] ) ) && ( in_array( learndash_get_post_type_slug( 'lesson' ), $query_args['post_type'] ) ) ) ) { if ( ( isset( $_GET['course_id'] ) ) && ( ! empty( $_GET['course_id'] ) ) ) { $lessons_items = $sfwd_lms->select_a_lesson_or_topic( absint( $_GET['course_id'] ), false, false ); if ( ! empty( $lessons_items ) ) { $query_args['post__in'] = array_keys( $lessons_items ); $query_args['orderby'] = 'post__in'; } else { $query_args['post__in'] = array( 0 ); } } else { $query_args['post__in'] = array( 0 ); } } } } return $query_args; } public function learndash_post_listing_after_option( $post, $query_args = array(), $post_type = '' ) { global $sfwd_lms; // Check that the selector post type matches for out listing post type. if ( $post_type === $this->post_type ) { if ( ( ( is_string( $query_args['post_type'] ) ) && ( learndash_get_post_type_slug( 'lesson' ) === $query_args['post_type'] ) ) || ( ( is_array( $query_args['post_type'] ) ) && ( in_array( learndash_get_post_type_slug( 'lesson' ), $query_args['post_type'] ) ) ) ) { if ( ( isset( $_GET['course_id'] ) ) && ( ! empty( $_GET['course_id'] ) ) ) { $lessons_topics = learndash_get_topic_list( $post->ID, absint( $_GET['course_id'] ) ); if ( ! empty( $lessons_topics ) ) { foreach ( $lessons_topics as $topic ) { $selected = ''; if ( ( isset( $_GET['lesson_id'] ) ) && ( ! empty( $_GET['lesson_id']) ) ) { $selected = selected( absint( $_GET['lesson_id'] ), $topic->ID, false ); } echo ''; } } } } } } // End of functions. } } new Learndash_Admin_Topics_Listing(); PKc\D ' '>includes/admin/class-learndash-admin-settings-data-reports.phpnuW+Aparent_menu_page_url = 'admin.php?page=learndash-lms-reports'; $this->menu_page_capability = LEARNDASH_ADMIN_CAPABILITY_CHECK; $this->settings_page_id = 'learndash-lms-reports'; $this->settings_page_title = esc_html_x( 'Reports', 'Learndash Report Menu Label', 'learndash' ); $this->settings_tab_title = $this->settings_page_title; $this->settings_tab_priority = 0; add_action( 'init', array( $this, 'init_check_for_download_request' ) ); add_action( 'admin_menu', array( $this, 'admin_menu' ) ); if ( ! defined( 'LEARNDASH_PROCESS_TIME_PERCENT' ) ) { define( 'LEARNDASH_PROCESS_TIME_PERCENT', apply_filters( 'learndash_process_time_percent', 80 ) ); } if ( ! defined( 'LEARNDASH_PROCESS_TIME_SECONDS' ) ) { define( 'LEARNDASH_PROCESS_TIME_SECONDS', apply_filters( 'learndash_process_time_seconds', 10 ) ); } } public function init_check_for_download_request() { if ( isset( $_GET['ld-report-download'] ) ) { if ( ( isset( $_GET['data-nonce'] ) ) && ( ! empty( $_GET['data-nonce'] ) ) && ( isset( $_GET['data-slug'] ) ) && ( ! empty( $_GET['data-slug'] ) ) ) { if ( wp_verify_nonce( esc_attr( $_GET['data-nonce'] ), 'learndash-data-reports-' . esc_attr( $_GET['data-slug'] ) . '-' . get_current_user_id() ) ) { $transient_key = esc_attr( $_GET['data-slug'] ) . '_' . esc_attr( $_GET['data-nonce'] ); $transient_data = $this->get_transient( $transient_key ); if ( ( isset( $transient_data['report_filename'] ) ) && ( ! empty( $transient_data['report_filename'] ) ) ) { //$report_filename = ABSPATH . $transient_data['report_filename']; $report_filename = $transient_data['report_filename']; if ( ( file_exists( $report_filename ) ) && ( is_readable( $report_filename ) ) ) { $http_headers = array( 'Content-Encoding: ' . DB_CHARSET, 'Content-type: text/csv; charset=' . DB_CHARSET, 'Content-Disposition: attachment; filename=' . basename( $report_filename ), 'Pragma: no-cache', 'Expires: 0', ); $http_headers = apply_filters( 'learndash_csv_download_headers', $http_headers, $transient_data, esc_attr( $_GET['data-slug'] ) ); if ( ! empty( $http_headers ) ) { foreach ( $http_headers as $http_header ) { header( $http_header ); } } do_action( 'learndash_csv_download_after_headers' ); echo file_get_contents( $report_filename ); } } } } die(); } } /** * Register settings page */ public function admin_menu() { $data_settings_courses = learndash_data_upgrades_setting( 'user-meta-courses' ); $data_settings_quizzes = learndash_data_upgrades_setting( 'user-meta-quizzes' ); if ( ( ! empty( $data_settings_courses ) ) && ( ! empty( $data_settings_quizzes ) ) ) { $this->settings_page_id = add_submenu_page( 'learndash-lms', $this->settings_page_title, $this->settings_page_title, $this->menu_page_capability, $this->settings_page_id, array( $this, 'admin_page' ) ); add_action( 'load-' . $this->settings_page_id, array( $this, 'on_load_panel' ) ); } else { // If the data upgreades have not been performed then we call the old Reports page output in ld-admin.php $this->settings_page_id = add_submenu_page( 'learndash-lms', $this->settings_page_title, $this->settings_page_title, LEARNDASH_ADMIN_CAPABILITY_CHECK, 'learndash-lms-reports', 'learndash_lms_reports_page' ); } } public function admin_tabs( $admin_menu_section, $ld_admin_tabs ) { if ( $admin_menu_section == $this->parent_menu_page_url ) { $ld_admin_tabs->add_admin_tab_item( $admin_menu_section, array( 'id' => $this->settings_page_id, 'link' => add_query_arg( array( 'page' => $this->settings_page_id ), 'admin.php' ), 'name' => $this->settings_tab_title, ), $this->settings_tab_priority ); } } public function on_load_panel() { wp_enqueue_style( 'learndash_style', LEARNDASH_LMS_PLUGIN_URL . 'assets/css/style' . leardash_min_asset() . '.css', array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'learndash_style', 'rtl', 'replace' ); $learndash_assets_loaded['styles']['learndash_style'] = __FUNCTION__; wp_enqueue_style( 'sfwd-module-style', LEARNDASH_LMS_PLUGIN_URL . 'assets/css/sfwd_module' . leardash_min_asset() . '.css', array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'sfwd-module-style', 'rtl', 'replace' ); $learndash_assets_loaded['styles']['sfwd-module-style'] = __FUNCTION__; wp_enqueue_script( 'learndash-admin-settings-data-reports-script', LEARNDASH_LMS_PLUGIN_URL . 'assets/js/learndash-admin-settings-data-reports' . leardash_min_asset() . '.js', array( 'jquery' ), LEARNDASH_SCRIPT_VERSION_TOKEN, true ); $learndash_assets_loaded['scripts']['learndash-admin-settings-data-reports-script'] = __FUNCTION__; $this->init_report_actions(); } public function init_report_actions() { $this->report_actions = apply_filters( 'learndash_admin_report_register_actions', $this->report_actions ); } public function admin_page() { do_action( 'learndash_settings_page_before_content' ); ?>


      '. print_r($this->report_actions, true) .''); foreach ( $this->report_actions as $report_action_slug => $report_action ) { $report_action['instance']->show_report_action(); } ?>
      init_report_actions(); if ( ( isset( $post_data['slug'] ) ) && ( ! empty( $post_data['slug'] ) ) ) { $post_data_slug = esc_attr( $post_data['slug'] ); if ( isset( $this->report_actions[ $post_data_slug ] ) ) { $reply_data = $this->report_actions[ $post_data_slug ]['instance']->process_report_action( $post_data ); } } return $reply_data; } public function init_process_times() { $this->process_times['started'] = time(); $this->process_times['limit'] = ini_get( 'max_execution_time' ); $this->process_times['limit'] = intval( $this->process_times['limit'] ); if ( empty( $this->process_times['limit'] ) ) { $this->process_times['limit'] = 30; } } public function out_of_timer() { $this->process_times['current_time'] = time(); $this->process_times['ticks'] = $this->process_times['current_time'] - $this->process_times['started']; $this->process_times['percent'] = ( $this->process_times['ticks'] / $this->process_times['limit'] ) * 100; // If we are over 80% of the allowed processing time or over 10 seconds then finish up and return if ( ( $this->process_times['percent'] >= LEARNDASH_PROCESS_TIME_PERCENT ) || ( $this->process_times['ticks'] > LEARNDASH_PROCESS_TIME_SECONDS ) ) { return true; } return false; } public function get_transient( $transient_key = '' ) { if ( ! empty( $transient_key ) ) { $options_key = 'learndash_reports_' . $transient_key; $options_key = str_replace( '-', '_', $options_key ); return get_option( $options_key ); } } public function set_option_cache( $transient_key = '', $transient_data = '' ) { if ( ! empty( $transient_key ) ) { $options_key = 'learndash_reports_' . $transient_key; $options_key = str_replace( '-', '_', $options_key ); if ( ! empty( $transient_data ) ) { update_option( $options_key, $transient_data ); } else { delete_option( $options_key ); } } } // End of functions } } // Go ahead and inlcude out User Meta Courses upgrade class require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-courses.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php'; add_action( 'plugins_loaded', function() { new Learndash_Admin_Data_Reports_Courses(); new Learndash_Admin_Data_Reports_Quizzes(); } ); function learndash_data_reports_ajax() { $reply_data = array( 'status' => false ); if ( current_user_can( 'read' ) ) { if ( isset( $_POST['data'] ) ) { $post_data = $_POST['data']; } else { $post_data = array(); } $ld_admin_settings_data_reports = new Learndash_Admin_Settings_Data_Reports(); $reply_data['data'] = $ld_admin_settings_data_reports->do_data_reports( $post_data, $reply_data ); } if ( ! empty( $reply_data ) ) { echo json_encode( $reply_data ); } wp_die(); // this is required to terminate immediately and return a proper response } add_action( 'wp_ajax_learndash-data-reports', 'learndash_data_reports_ajax' ); PKc\-£YdYd0includes/admin/class-learndash-admin-builder.phpnuW+Abuilder_assets[ $this->builder_post_type ] ) ) { $this->builder_assets[ $this->builder_post_type ] = array( 'post_data' => array(), 'messages' => array(), ); } add_action( 'admin_footer', array( $this, 'builder_admin_footer' ), 1 ); if ( ! empty( $course_id ) ) { $this->builder_post_id = intval( $course_id ); } } /** * Add instance to static tracking array * * @since 2.4.0 */ final public static function add_instance() { $called_class = get_called_class(); if ( is_subclass_of( $called_class, __CLASS__ ) ) { if ( ! isset( self::$_instances[ $called_class ] ) ) { self::$_instances[ $called_class ] = new $called_class(); if ( is_a( self::$_instances[ $called_class ], $called_class ) ) { return self::$_instances[ $called_class ]; } } else { return self::$_instances[ $called_class ]; } } } /** * Get the current instance of this class or new. * * @since 2.3 * * @param string $called_class Class for instance. * @return object instance of class. */ public static function get_instance( $called_class = '' ) { if ( ! empty( $called_class ) ) { if ( isset( self::$_instances[ $called_class ] ) ) { return self::$_instances[ $called_class ]; } else { self::add_instance(); if ( ( isset( self::$_instances[ $called_class ] ) ) && ( is_a( self::$_instances[ $called_class ], $called_class ) ) ) { return self::$_instances[ $called_class ]; } } } else { if ( null === self::$instance ) { self::$instance = new static(); } return self::$instance; } } /** * Call via the WordPress load sequence for admin pages. */ public function builder_on_load() { } /** * Call via the WordPress admin_footer action hook. */ public function builder_admin_footer() { global $post; wp_enqueue_style( 'learndash-new-builder-style', LEARNDASH_LMS_PLUGIN_URL . 'assets/js/builder/dist/builder' . leardash_min_builder_asset() . '.css', array( 'wp-editor' ), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'learndash-new-builder-style', 'rtl', 'replace' ); wp_enqueue_script( 'learndash-new-builder-script', LEARNDASH_LMS_PLUGIN_URL . 'assets/js/builder/dist/builder' . leardash_min_builder_asset() . '.js', array( 'wp-i18n', 'learndash-new-header-script', 'wp-data' ), LEARNDASH_SCRIPT_VERSION_TOKEN, true ); // Make sure some metaboxes can't be toggled off wp_enqueue_script( 'learndash-force-metaboxes', LEARNDASH_LMS_PLUGIN_URL . 'assets/js/builder/dist/metaboxes' . leardash_min_builder_asset() . '.js', array( 'wp-data', 'jquery' ), LEARNDASH_SCRIPT_VERSION_TOKEN, true ); $metaboxes = array(); if ( ( function_exists( 'use_block_editor_for_post' ) ) && ( use_block_editor_for_post( $post ) ) ) { $this->builder_assets[ $this->builder_post_type ]['post_data']['builder_editor'] = 'block'; $metaboxes['editor'] = 'block'; } else { $this->builder_assets[ $this->builder_post_type ]['post_data']['builder_editor'] = 'classic'; $metaboxes['editor'] = 'classic'; } $this->builder_assets[ $this->builder_post_type ]['post_data']['builder_class'] = get_called_class(); $this->builder_assets[ $this->builder_post_type ]['post_data']['builder_post_id'] = $this->builder_post_id; $this->builder_assets[ $this->builder_post_type ]['post_data']['builder_post_title'] = get_the_title( $this->builder_post_id ); $this->builder_assets[ $this->builder_post_type ]['post_data']['builder_post_type'] = $this->builder_post_type; wp_localize_script( 'learndash-new-builder-script', 'learndash_builder_assets', $this->builder_assets ); wp_localize_script( 'learndash-force-metaboxes', 'learndash_builder_metaboxes', $metaboxes ); } /** * Prints content for Course Builder meta box for admin * This function is called from other add_meta_box functions * * @since 2.5 * * @param object $post WP_Post. * @return string meta box HTML output. */ public function show_builder_box( $post ) { // Use nonce for verification. wp_nonce_field( $this->builder_prefix . '_' . $this->builder_post_type . '_' . $this->builder_post_id . '_nonce', $this->builder_prefix . '_nonce' ); ?>
      |
      show_builder_selectors(); ?>
      show_builder_headers(); ?> build_course_steps_html(); ?>

      show_builder_header_left(); $this->show_builder_header_right(); } public function show_builder_header_left() { ?>
      get_build_items_count(); ?>
      |
      get_label_for_post_type( $this->builder_post_type ); foreach ( $this->selector_post_types as $selector_post_type ) { $post_type_object = get_post_type_object( $selector_post_type ); if ( is_a( $post_type_object, 'WP_Post_Type' ) ) { $this->builder_assets[ $this->builder_post_type ]['messages'][ 'confirm_remove_' . $selector_post_type ] = sprintf( // translators: 'placeholders: will be post type labels like Course, Lesson, Topic'. esc_html_x( 'Are you sure you want to remove this %1$s from the %2$s? (This will also remove all sub-items)', 'placeholders: will be post type labels like Course, Lesson, Topic', 'learndash' ), LearnDash_Custom_Label::get_label( $this->get_label_for_post_type( $selector_post_type ) ), LearnDash_Custom_Label::get_label( $builder_post_type_label ) ); $this->builder_assets[ $this->builder_post_type ]['messages'][ 'confirm_trash_' . $selector_post_type ] = sprintf( // translators: placeholder: will be post type label like Course, Lesson, Topic. esc_html_x( 'Are you sure you want to move this %s to Trash?', 'placeholder: will be post type label like Course, Lesson, Topic', 'learndash' ), LearnDash_Custom_Label::get_label( $this->get_label_for_post_type( $selector_post_type ) ) ); $post_type_query_args = $this->build_selector_query( array( 'post_type' => $selector_post_type, ) ); if ( ! empty( $post_type_query_args ) ) { $post_type_query = new WP_Query( $post_type_query_args ); $selector_post_type_steps = $this->get_selector_selected_steps( $selector_post_type ); $selector_post_type_steps = htmlspecialchars( json_encode( $selector_post_type_steps ) ); ?>

      get_label_for_post_type( $selector_post_type, false ) ); ?>

      build_selector_row_single( null, $selector_post_type ); if ( ! empty( $row_single ) ) { ?>

      build_selector_pages_buttons( $post_type_query ); ?>

        have_posts() ) { echo $this->build_selector_rows( $post_type_query ); } ?>
      query['paged'] ); $last_page = intval( $post_type_query->max_num_pages ); if ( empty( $last_page ) ) { $last_page = 1; } if ( $current_page <= 1 ) { $prev_page = 1; $prev_disabled = ' disabled="disabled" '; } else { $prev_page = $current_page - 1; $prev_disabled = ''; } if ( $current_page >= $last_page ) { $next_page = $last_page; $next_disabled = ' disabled="disabled" '; } else { $next_page = $current_page + 1; $next_disabled = ''; } $pager_buttons .= ''; $pager_buttons .= ''; $pager_buttons .= '' . $current_page . ' / ' . $last_page . ''; $pager_buttons .= ''; $pager_buttons .= ''; } return $pager_buttons; } /** * Show selector rows. * * @since 2.5.0 * @param object $post_type_query WP_Query instance. */ protected function build_selector_rows( $post_type_query ) { $selector_rows = ''; if ( $post_type_query instanceof WP_Query ) { $selector_post_type = $post_type_query->query['post_type']; $selector_post_type_object = get_post_type_object( $selector_post_type ); $selector_label = $selector_post_type_object->label; $selector_slug = $this->get_label_for_post_type( $selector_post_type ); foreach ( $post_type_query->posts as $p ) { $selector_rows .= $this->build_selector_row_single( $p, $selector_post_type ); } } return $selector_rows; } /** * Build Course Steps HTML. */ public function build_course_steps_html() { $steps_html = ''; $course_steps = $this->ld_course_steps_object->get_steps(); if ( ! empty( $course_steps ) ) { $steps_html .= $this->process_course_steps( $course_steps ); } return $steps_html; } // End of functions. } } if ( ( defined( 'LEARNDASH_COURSE_BUILDER' ) ) && ( LEARNDASH_COURSE_BUILDER === true ) ) { require_once LEARNDASH_LMS_PLUGIN_DIR . '/includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php'; } if ( ( defined( 'LEARNDASH_QUIZ_BUILDER' ) ) && ( LEARNDASH_QUIZ_BUILDER === true ) ) { require_once LEARNDASH_LMS_PLUGIN_DIR . '/includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php'; } add_action( 'wp_ajax_learndash_builder_selector_pager', function() { if ( ! current_user_can( 'read' ) ) { echo wp_json_encode( array() ); wp_die(); } // @codingStandardsIgnoreStart if ( ( ! isset( $_POST['builder_data'] ) ) || ( empty( $_POST['builder_data'] ) ) ) { echo wp_json_encode( array() ); wp_die(); } $builder_data = $_POST['builder_data']; if ( ( ! isset( $_POST['builder_query_args'] ) ) || ( empty( $_POST['builder_query_args'] ) ) ) { echo wp_json_encode( array() ); wp_die(); } $builder_query_args = $_POST['builder_query_args']; // @codingStandardsIgnoreEnd $builder_data = learndash_verify_builder_data( $builder_data ); $builder_instance = $builder_data['builder_class']::add_instance(); if ( is_a( $builder_instance, $builder_data['builder_class'] ) ) { $builder_instance->builder_init( $builder_data['builder_post_id'] ); $builder_instance->learndash_builder_selector_pager( $builder_query_args ); } echo json_encode( array() ); wp_die(); /* if ( ( isset( $_POST['builder_data'] ) ) && ( ! empty( $_POST['builder_data'] ) ) ) { if ( ( isset( $_POST['builder_data']['builder_class'] ) ) && ( ! empty( $_POST['builder_data']['builder_class'] ) ) ) { $builder_class = esc_attr( $_POST['builder_data']['builder_class'] ); $builder_instance = $builder_class::add_instance(); if ( is_a( $builder_instance, $builder_class ) ) { if ( ( isset( $_POST['builder_data']['builder_post_id'] ) ) && ( ! empty( $_POST['builder_data']['builder_post_id'] ) ) ) { $builder_instance->builder_init( $_POST['builder_data']['builder_post_id'] ); if ( ( isset( $_POST['builder_query_args'] ) ) && ( ! empty( $_POST['builder_query_args'] ) ) ) { $builder_instance->learndash_builder_selector_pager( $_POST['builder_query_args'] ); } } } } } echo json_encode( array() ); wp_die(); */ } ); add_action( 'wp_ajax_learndash_builder_selector_search', function() { if ( ! current_user_can( 'read' ) ) { echo wp_json_encode( array() ); wp_die(); } // @codingStandardsIgnoreStart if ( ( ! isset( $_POST['builder_data'] ) ) || ( empty( $_POST['builder_data'] ) ) ) { echo wp_json_encode( array() ); wp_die(); } $builder_data = $_POST['builder_data']; if ( ( ! isset( $_POST['builder_query_args'] ) ) || ( empty( $_POST['builder_query_args'] ) ) ) { echo wp_json_encode( array() ); wp_die(); } $builder_query_args = $_POST['builder_query_args']; // @codingStandardsIgnoreEnd $builder_data = learndash_verify_builder_data( $builder_data ); $builder_instance = $builder_data['builder_class']::add_instance(); if ( is_a( $builder_instance, $builder_data['builder_class'] ) ) { $builder_instance->builder_init( $builder_data['builder_post_id'] ); $builder_instance->learndash_builder_selector_search( $builder_query_args ); } echo json_encode( array() ); wp_die(); /* if ( ( isset( $_POST['builder_data'] ) ) && ( ! empty( $_POST['builder_data'] ) ) ) { if ( ( isset( $_POST['builder_data']['builder_class'] ) ) && ( ! empty( $_POST['builder_data']['builder_class'] ) ) ) { $builder_class = esc_attr( $_POST['builder_data']['builder_class'] ); $builder_instance = $builder_class::add_instance(); if ( is_a( $builder_instance, $builder_class ) ) { if ( ( isset( $_POST['builder_data']['builder_post_id'] ) ) && ( ! empty( $_POST['builder_data']['builder_post_id'] ) ) ) { $builder_instance->builder_init( $_POST['builder_data']['builder_post_id'] ); if ( ( isset( $_POST['builder_query_args'] ) ) && ( ! empty( $_POST['builder_query_args'] ) ) ) { $builder_instance->learndash_builder_selector_search( $_POST['builder_query_args'] ); } } } } } echo json_encode( array() ); wp_die(); */ } ); add_action( 'wp_ajax_learndash_builder_selector_step_trash', function() { if ( ! current_user_can( 'edit_courses' ) ) { echo wp_json_encode( array() ); wp_die(); } // @codingStandardsIgnoreStart if ( ( ! isset( $_POST['builder_data'] ) ) || ( empty( $_POST['builder_data'] ) ) ) { echo wp_json_encode( array() ); wp_die(); } $builder_data = $_POST['builder_data']; if ( ( ! isset( $_POST['builder_query_args'] ) ) || ( empty( $_POST['builder_query_args'] ) ) ) { echo wp_json_encode( array() ); wp_die(); } $builder_query_args = $_POST['builder_query_args']; // @codingStandardsIgnoreEnd $builder_data = learndash_verify_builder_data( $builder_data ); $builder_instance = $builder_data['builder_class']::add_instance(); if ( is_a( $builder_instance, $builder_data['builder_class'] ) ) { $builder_instance->builder_init( $builder_data['builder_post_id'] ); $builder_instance->learndash_builder_selector_step_trash( $builder_query_args ); } echo json_encode( array() ); wp_die(); /* if ( ( isset( $_POST['builder_data'] ) ) && ( ! empty( $_POST['builder_data'] ) ) ) { if ( ( isset( $_POST['builder_data']['builder_class'] ) ) && ( ! empty( $_POST['builder_data']['builder_class'] ) ) ) { $builder_class = esc_attr( $_POST['builder_data']['builder_class'] ); $builder_instance = $builder_class::add_instance(); if ( is_a( $builder_instance, $builder_class ) ) { if ( ( isset( $_POST['builder_data']['builder_post_id'] ) ) && ( ! empty( $_POST['builder_data']['builder_post_id'] ) ) ) { $builder_instance->builder_init( $_POST['builder_data']['builder_post_id'] ); if ( ( isset( $_POST['builder_query_args'] ) ) && ( ! empty( $_POST['builder_query_args'] ) ) ) { $builder_instance->learndash_builder_selector_step_trash( $_POST['builder_query_args'] ); } } } } } echo json_encode( array() ); wp_die(); */ } ); add_action( 'wp_ajax_learndash_builder_selector_step_new', function() { if ( ! current_user_can( 'edit_courses' ) ) { echo wp_json_encode( array() ); wp_die(); } // @codingStandardsIgnoreStart if ( ( ! isset( $_POST['builder_data'] ) ) || ( empty( $_POST['builder_data'] ) ) ) { echo wp_json_encode( array() ); wp_die(); } $builder_data = $_POST['builder_data']; if ( ( ! isset( $_POST['builder_query_args'] ) ) || ( empty( $_POST['builder_query_args'] ) ) ) { echo wp_json_encode( array() ); wp_die(); } $builder_query_args = $_POST['builder_query_args']; // @codingStandardsIgnoreEnd $builder_data = learndash_verify_builder_data( $builder_data ); $builder_instance = $builder_data['builder_class']::add_instance(); if ( is_a( $builder_instance, $builder_data['builder_class'] ) ) { $builder_instance->builder_init( $builder_data['builder_post_id'] ); $builder_instance->learndash_builder_selector_step_new( $builder_query_args ); } echo json_encode( array() ); wp_die(); /* if ( ( isset( $_POST['builder_data'] ) ) && ( ! empty( $_POST['builder_data'] ) ) ) { if ( ( isset( $_POST['builder_data']['builder_class'] ) ) && ( ! empty( $_POST['builder_data']['builder_class'] ) ) ) { $builder_class = esc_attr( $_POST['builder_data']['builder_class'] ); $builder_instance = $builder_class::add_instance(); if ( is_a( $builder_instance, $builder_class ) ) { if ( ( isset( $_POST['builder_data']['builder_post_id'] ) ) && ( ! empty( $_POST['builder_data']['builder_post_id'] ) ) ) { $builder_instance->builder_init( $_POST['builder_data']['builder_post_id'] ); if ( ( isset( $_POST['builder_query_args'] ) ) && ( ! empty( $_POST['builder_query_args'] ) ) ) { $builder_instance->learndash_builder_selector_step_new( $_POST['builder_query_args'] ); } } } } } echo json_encode( array() ); wp_die(); */ } ); add_action( 'wp_ajax_learndash_builder_selector_step_title', function() { if ( ! current_user_can( 'edit_courses' ) ) { echo wp_json_encode( array() ); wp_die(); } // @codingStandardsIgnoreStart if ( ( ! isset( $_POST['builder_data'] ) ) || ( empty( $_POST['builder_data'] ) ) ) { echo wp_json_encode( array() ); wp_die(); } $builder_data = $_POST['builder_data']; if ( ( ! isset( $_POST['builder_query_args'] ) ) || ( empty( $_POST['builder_query_args'] ) ) ) { echo wp_json_encode( array() ); wp_die(); } $builder_query_args = $_POST['builder_query_args']; // @codingStandardsIgnoreEnd $builder_data = learndash_verify_builder_data( $builder_data ); $builder_instance = $builder_data['builder_class']::add_instance(); if ( is_a( $builder_instance, $builder_data['builder_class'] ) ) { $builder_instance->builder_init( $builder_data['builder_post_id'] ); $builder_instance->learndash_builder_selector_step_title( $builder_query_args ); } echo json_encode( array() ); wp_die(); /* if ( ( isset( $_POST['builder_data'] ) ) && ( ! empty( $_POST['builder_data'] ) ) ) { if ( ( isset( $_POST['builder_data']['builder_class'] ) ) && ( ! empty( $_POST['builder_data']['builder_class'] ) ) ) { $builder_class = esc_attr( $_POST['builder_data']['builder_class'] ); $builder_instance = $builder_class::add_instance(); if ( is_a( $builder_instance, $builder_class ) ) { if ( ( isset( $_POST['builder_data']['builder_post_id'] ) ) && ( ! empty( $_POST['builder_data']['builder_post_id'] ) ) ) { $builder_instance->builder_init( $_POST['builder_data']['builder_post_id'] ); if ( ( isset( $_POST['builder_query_args'] ) ) && ( ! empty( $_POST['builder_query_args'] ) ) ) { $builder_instance->learndash_builder_selector_step_title( $_POST['builder_query_args'] ); } } } } } echo json_encode( array() ); wp_die(); */ } ); function learndash_verify_builder_data( $builder_data = array() ) { if ( empty( $builder_data ) ) { echo wp_json_encode( array() ); wp_die(); } if ( ( ! isset( $builder_data['builder_class'] ) ) || ( empty( $builder_data['builder_class'] ) ) ) { echo wp_json_encode( array() ); wp_die(); } $builder_data['builder_class'] = esc_attr( $builder_data['builder_class'] ); if ( ! is_subclass_of( $builder_data['builder_class'], 'Learndash_Admin_Builder' ) ) { echo wp_json_encode( array() ); wp_die(); } if ( ( ! isset( $builder_data['builder_post_type'] ) ) || ( empty( $builder_data['builder_post_type'] ) ) ) { echo wp_json_encode( array() ); wp_die(); } $builder_data['builder_post_type'] = esc_attr( $builder_data['builder_post_type'] ); if ( ( ! isset( $builder_data['builder_post_id'] ) ) || ( empty( $builder_data['builder_post_id'] ) ) ) { echo wp_json_encode( array() ); wp_die(); } $builder_data['builder_post_id'] = absint( $builder_data['builder_post_id'] ); if ( ( ! isset( $builder_data['builder_nonce'] ) ) || ( empty( $builder_data['builder_nonce'] ) ) ) { echo wp_json_encode( array() ); wp_die(); } //See nonce field build out in show_builder_box() of this file. //wp_nonce_field( $this->builder_prefix . '_' . $this->builder_post_type . '_' . $this->builder_post_id . '_nonce', $this->builder_prefix . '_nonce' ); $nonce_field_value = 'learndash_builder_' . $builder_data['builder_post_type'] . '_' . $builder_data['builder_post_id'] . '_nonce'; if ( ! wp_verify_nonce( $builder_data['builder_nonce'], $nonce_field_value ) ) { echo wp_json_encode( array() ); wp_die(); } return $builder_data; } PKc\ ,993includes/admin/class-learndash-admin-posts-edit.phpnuW+Apost_type === $edit_post->post_type ) ) { return true; } elseif ( ( is_string( $edit_post ) ) && ( $this->post_type === $edit_post ) ) { return true; } } elseif ( ( ! empty( $typenow ) ) && ( $typenow === $this->post_type ) ) { return true; } return false; } /** * On Load handler function for this post type edit. * This function is called by a WP action when the admin * page 'post.php' or 'post-new.php' are loaded. */ public function on_load() { global $sfwd_lms; global $learndash_assets_loaded; if ( $this->post_type_check() ) { $this->_metaboxes = apply_filters( 'learndash_post_settings_metaboxes_init_' . $this->post_type, $this->_metaboxes ); if ( ( isset( $_GET['post'] ) ) && ( ! empty( $_GET['post'] ) ) ) { $this->post_id = absint( $_GET['post'] ); } if ( ( ! empty( $this->_metaboxes ) ) && ( ! empty( $this->post_id ) ) ) { $sfwd_lms_instance_fields = $sfwd_lms->get_post_args_section( $this->post_type, 'fields' ); if ( ( is_array( $sfwd_lms_instance_fields ) ) && ( ! empty( $sfwd_lms_instance_fields ) ) ) { foreach ( $this->_metaboxes as $_metaboxes_instance ) { $sfwd_lms_instance_fields = $_metaboxes_instance->check_legacy_metabox_fields( $sfwd_lms_instance_fields ); } } if ( empty( $sfwd_lms_instance_fields ) ) { global $wp_meta_boxes; if ( isset( $wp_meta_boxes[ $this->post_type ] ) ) { foreach ( $wp_meta_boxes[ $this->post_type ] as &$m_sections ) { if ( ! empty( $m_sections ) ) { foreach ( $m_sections as $m_priority => &$m_boxes ) { if ( isset( $m_boxes[ $this->post_type ] ) ) { unset( $m_boxes[ $this->post_type ] ); } } } } } } else { $screen = get_current_screen(); global $learndash_metaboxes; if ( ! isset( $learndash_metaboxes[ $screen->id ] ) ) { $learndash_metaboxes[ $screen->id ] = array(); } $learndash_metaboxes[ $screen->id ][ $screen->id ] = $screen->id; } } if ( ! isset( $learndash_assets_loaded['styles']['learndash-admin-binary-selector-script'] ) ) { wp_enqueue_script( 'learndash-admin-binary-selector-script', LEARNDASH_LMS_PLUGIN_URL . 'assets/js/learndash-admin-binary-selector' . leardash_min_asset() . '.js', array( 'jquery' ), LEARNDASH_SCRIPT_VERSION_TOKEN, true ); $learndash_assets_loaded['styles']['learndash-admin-binary-selector-script'] = __FUNCTION__; } if ( ! isset( $learndash_assets_loaded['styles']['learndash-admin-binary-selector-style'] ) ) { wp_enqueue_style( 'learndash-admin-binary-selector-style', LEARNDASH_LMS_PLUGIN_URL . 'assets/css/learndash-admin-binary-selector' . leardash_min_asset() . '.css', array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'learndash-admin-binary-selector-style', 'rtl', 'replace' ); $learndash_assets_loaded['styles']['learndash-admin-binary-selector-style'] = __FUNCTION__; } learndash_admin_settings_page_assets(); if ( ! isset( $learndash_assets_loaded['styles']['learndash-admin-style'] ) ) { wp_enqueue_style( 'learndash-admin-style', LEARNDASH_LMS_PLUGIN_URL . 'assets/css/learndash-admin-style' . leardash_min_asset() . '.css', array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'learndash-admin-style', 'rtl', 'replace' ); $learndash_assets_loaded['styles']['learndash-admin-style'] = __FUNCTION__; } $filepath = SFWD_LMS::get_template( 'learndash_pager.css', null, null, true ); if ( ( ! empty( $filepath ) ) && ( ! isset( $learndash_assets_loaded['styles']['learndash_pager_css'] ) ) ) { wp_enqueue_style( 'learndash_pager_css', learndash_template_url_from_path( $filepath ), array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'learndash_pager_css', 'rtl', 'replace' ); $learndash_assets_loaded['styles']['learndash_pager_css'] = __FUNCTION__; } $filepath = SFWD_LMS::get_template( 'learndash_pager.js', null, null, true ); if ( ( ! empty( $filepath ) ) && ( ! isset( $learndash_assets_loaded['scripts']['learndash_pager_js'] ) ) ) { wp_enqueue_script( 'learndash_pager_js', learndash_template_url_from_path( $filepath ), array( 'jquery' ), LEARNDASH_SCRIPT_VERSION_TOKEN, true ); $learndash_assets_loaded['scripts']['learndash_pager_js'] = __FUNCTION__; } if ( isset( $_GET['ld_reset_metaboxes'] ) ) { delete_user_meta( get_current_user_id(), 'closedpostboxes_' . $this->post_type ); delete_user_meta( get_current_user_id(), 'metaboxhidden_' . $this->post_type ); delete_user_meta( get_current_user_id(), 'meta-box-order_' . $this->post_type ); } // Add Metabox and hook for saving post metabox. add_action( 'add_meta_boxes', array( $this, 'add_metaboxes' ), 30, 2 ); } } /** * Check superglobal data. * * @since 2.6.0 * @param mixed $data Array data or null. * @return array filtered data. */ protected function clear_request_data( $data = null ) { if ( null !== $data ) { $data = stripslashes_deep( $data ); } return $data; } /** * Called from WP at the start of the post edit
      tag. Allows us * to inject needed support fields. * * @since 3.0 * @param object $post WP Post object instance being edited. */ public function edit_form_top( $post ) { if ( $this->post_type_check() ) { $current_tab = ''; if ( isset( $_GET['currentTab'] ) ) { $current_tab = esc_attr( $_GET['currentTab'] ); } echo ''; } } /** * Called from WP when saving a post edit form. This filter allows us * to interject a 'currentTab' query string variable. * * @since 3.0 * @param string $location URL to redirect to after edit post processing. * @param integer $post_id Post ID of item being edited. * @return string $location URL. */ public function redirect_post_location( $location = '', $post_id = 0 ) { if ( ( ! empty( $location ) ) && ( ! empty( $post_id ) ) ) { $post_type = get_post_type( $post_id ); if ( $this->post_type_check( $post_type ) ) { if ( ( isset( $_POST['ld_post_edit_current_tab'] ) ) && ( ! empty( $_POST['ld_post_edit_current_tab'] ) ) ) { $current_tab = esc_attr( $_POST['ld_post_edit_current_tab'] ); $location = add_query_arg( 'currentTab', $current_tab, $location ); } } return $location; } } /** * Override Gutenberg placeholder title shown when adding new post. * * @since 2.6.0 * @param string $placeholder_title Placeholder title to be shown. Default is 'Add title'. * @param object $post WP_Post instance of post_type being added. * @return string $placeholder_title. */ public function gutenberg_placeholder_enter_title_here( $placeholder_title = '', $post = null ) { if ( $this->post_type_check( $post ) ) { $post_type_object = get_post_type_object( $post->post_type ); $placeholder_title = sprintf( // translators: placeholders: Post Type singular label. esc_html_x( 'Add %s title', 'placeholders: Post Type singular label', 'learndash' ), $post_type_object->labels->singular_name ); } // Always return $placeholder_text. return $placeholder_title; } /** * Override Gutenberg placeholder text shown when adding new post. * * @since 2.6.0 * @param string $placeholder_text Placeholder text to be shown. Default is 'Write your story'. * @param object $post WP_Post instance of post_type being added. * @return string $placeholder_text. */ public function gutenberg_placeholder_write_your_story( $placeholder_text = ' ', $post = null ) { if ( $this->post_type_check( $post ) ) { $post_type_object = get_post_type_object( $post->post_type ); $placeholder_text = sprintf( // translators: placeholders: Post Type singular label. esc_html_x( 'Add %s content.', 'placeholders: Post Type singular label', 'learndash' ), $post_type_object->labels->singular_name ); } // Always return $placeholder_text. return $placeholder_text; } /** * Save Question handler function. * * @since 2.6.0 * @param integer $post_id Post ID Question being edited. * @param object $post WP_Post Question being edited. * @param boolean $update If update true, else false. */ public function save_post( $post_id = 0, $post = null, $update = false ) { if ( ! $this->post_type_check() ) { return false; } // If this is just a revision, don't send the email. if ( wp_is_post_revision( $post_id ) ) { return false; } if ( ! isset( $_POST['post_type'] ) ) { return false; } if ( $_POST['post_type'] !== $this->post_type ) { return false; } // Check permissions. if ( ! current_user_can( 'edit_courses', $post_id ) ) { return false; } // Clear the oEmbed post cache. $this->post_clear_oembed_cache( $post_id ); return true; } /** * Filter post_parent before update/insert. Ensure the post_parent fiel is zero for course post types. * @since 3.1 * @param integer $post_parent Post Parent post ID. * @param integer $post_id Post ID being edited. * @param array $new_postarr Array of updated POST fields to be saved. * @param array $postarr Array of previous POST fields to be saved. * @return integer $post_parent */ public function filter_post_parent( $post_parent = 0, $post_id = 0, $new_postarr = array(), $postarr = array() ) { if ( $this->post_type_check() ) { $course_post_types = LDLMS_Post_Types::get_post_types( 'course' ); if ( ( ! empty( $course_post_types ) ) && ( in_array( $this->post_type, $course_post_types ) ) ) { $post_parent = 0; } } return $post_parent; } /** * Register metaboxes for Question edit. * * @since 2.6.0 * @param string $post_type Port Type being edited. */ public function add_metaboxes( $post_type = '' ) { if ( $this->post_type_check( $post_type ) ) { // If we are showing a course or related 'step' we show the Assoc Content metabox. $course_post_types = LDLMS_Post_Types::get_post_types( 'course' ); if ( ( ! empty( $course_post_types ) ) && ( in_array( $this->post_type, $course_post_types ) ) ) { add_meta_box( 'learndash_course_navigation_admin_meta', esc_html__( 'Associated Content', 'learndash' ), 'learndash_course_navigation_admin_box_content', $this->post_type, 'side', 'high' ); } if ( ( true === is_data_upgrade_quiz_questions_updated() ) && ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Quizzes_Builder', 'enabled' ) === 'yes' ) ) { // If we are showing a Quiz or Question we show the Quiz Questions metabox. $quiz_post_types = LDLMS_Post_Types::get_post_types( 'quiz' ); if ( ( ! empty( $quiz_post_types ) ) && ( in_array( $this->post_type, $quiz_post_types ) ) ) { add_meta_box( 'learndash_admin_quiz_navigation', sprintf( // translators: placeholders: Quiz, Questions. esc_html_x( '%1$s %2$s %3$s', 'placeholders: Quiz, Questions', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ), LearnDash_Custom_Label::get_label( 'questions' ), '' ), 'learndash_quiz_navigation_admin_box_content', $this->post_type, 'side', 'high' ); } } } } /** * Clear the Post oEmbed cache. * * This is mostly needed for Lessons and Topics when * using the Video Progression logic. But we are * supporting this on all LD post types. * * @since 3.1.4 * @param integer $post_id ID of Post to clear cache for. */ public function post_clear_oembed_cache( $post_id = 0 ) { if ( ! empty( $post_id ) ) { $wp_embed = new WP_Embed(); $wp_embed->delete_oembed_caches( $post_id ); } } // End of functions. } } // Incldue the LearnDash table listing files here. require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-posts-edits/class-learndash-admin-course-edit.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-posts-edits/class-learndash-admin-lesson-edit.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-posts-edits/class-learndash-admin-topic-edit.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php'; PKc\Dؑ!,!,fincludes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list.phpnuW+Adata_slug = 'course-access-lists'; parent::__construct(); parent::register_upgrade_action(); } /** * Show data upgrade row for this instance. * * @since 2.3 */ public function show_upgrade_action() { ?>

      get_last_run_info(); ?>

      transient_key = $this->data_slug; $this->transient_data = $this->get_transient( $this->transient_key ); if ( ! empty( $this->transient_data ) ) { if ( isset( $this->transient_data['result_count'] ) ) { $this->transient_data['result_count'] = intval( $this->transient_data['result_count'] ); } else { $this->transient_data['result_count'] = 0; } if ( isset( $this->transient_data['total_count'] ) ) { $this->transient_data['total_count'] = intval( $this->transient_data['total_count'] ); } else { $this->transient_data['total_count'] = 0; } if ( ( ! empty( $this->transient_data['result_count'] ) ) && ( ! empty( $this->transient_data['total_count'] ) ) && ( $this->transient_data['result_count'] != $this->transient_data['total_count'] ) ) { $show_progess = true; ?>

      transient_data; $data = $this->build_progress_output( $data ); if ( ( isset( $data['progress_percent'] ) ) && ( ! empty( $data['progress_percent'] ) ) ) { $progress_meter_style = 'width: ' . $data['progress_percent'] . '%'; } if ( ( isset( $data['progress_label'] ) ) && ( ! empty( $data['progress_label'] ) ) ) { $progress_label = $data['progress_label']; } if ( ( isset( $data['progress_slug'] ) ) && ( ! empty( $data['progress_slug'] ) ) ) { $progress_slug = 'progress-label-' . $data['progress_slug']; } } ?>
      init_process_times(); if ( ( isset( $data['nonce'] ) ) && ( ! empty( $data['nonce'] ) ) ) { if ( ( wp_verify_nonce( $data['nonce'], 'learndash-data-upgrades-' . $this->data_slug . '-' . get_current_user_id() ) ) && ( current_user_can( LEARNDASH_ADMIN_CAPABILITY_CHECK ) ) ) { $this->transient_key = $this->data_slug; if ( ( isset( $data['init'] ) ) && ( true == $data['init'] ) ) { unset( $data['init'] ); if ( ( ! isset( $data['continue'] ) ) || ( 'true' != $data['continue'] ) ) { /** * Transient_data is used to store the local server state information and will * saved in a transient type options variable. */ $this->transient_data = array(); // Hold the number of completed/processed items. $this->transient_data['result_count'] = 0; $this->transient_data['current_course'] = array(); $this->transient_data['progress_started'] = time(); $this->transient_data['progress_user'] = get_current_user_id(); $this->query_items(); } else { $this->transient_data = $this->get_transient( $this->transient_key ); } $this->set_option_cache( $this->transient_key, $this->transient_data ); } else { $this->transient_data = $this->get_transient( $this->transient_key ); if ( ( ! isset( $this->transient_data['process_courses'] ) ) || ( empty( $this->transient_data['process_courses'] ) ) ) { $this->query_items(); } if ( ( isset( $this->transient_data['process_courses'] ) ) && ( ! empty( $this->transient_data['process_courses'] ) ) ) { foreach ( $this->transient_data['process_courses'] as $course_idx => $course_id ) { $course_id = intval( $course_id ); if ( ( ! isset( $this->transient_data['current_course']['course_id'] ) ) || ( $this->transient_data['current_course']['course_id'] !== $course_id ) ) { $this->transient_data['current_course'] = array( 'course_id' => $course_id, 'item_idx' => 0, ); } $course_complete = $this->convert_course_access_list( intval( $course_id ) ); if ( true === $course_complete ) { $this->transient_data['current_course'] = array(); unset( $this->transient_data['process_courses'][ $course_idx ] ); $this->transient_data['result_count'] = (int) $this->transient_data['result_count'] + 1; } $this->set_option_cache( $this->transient_key, $this->transient_data ); if ( $this->out_of_timer() ) { break; } } } } } } $data = $this->build_progress_output( $data ); // If we are at 100% then we update the internal data settings so other parts of LD know the upgrade has been run. if ( ( isset( $data['progress_percent'] ) ) && ( 100 == $data['progress_percent'] ) ) { $this->set_last_run_info( $data ); $data['last_run_info'] = $this->get_last_run_info(); $this->remove_transient( $this->transient_key ); } return $data; } /** * Common function to query needed items. * * @since 2.6.0 * * @param boolean $increment_paged default true to increment paged. */ private function query_items( $increment_paged = true ) { // Initialize or increment the current paged or items. if ( ! isset( $this->transient_data['paged'] ) ) { $this->transient_data['paged'] = 1; } else { if ( true === $increment_paged ) { $this->transient_data['paged'] = (int) $this->transient_data['paged'] + 1; } } $this->transient_data['query_args'] = array( 'post_type' => 'sfwd-courses', 'post_status' => 'any', 'fields' => 'ids', 'posts_per_page' => LEARNDASH_LMS_DEFAULT_DATA_UPGRADE_BATCH_SIZE, 'paged' => $this->transient_data['paged'], ); $this->transient_data['query_args'] = apply_filters( 'learndash_data_upgrade_query', $this->transient_data['query_args'], $this->data_slug ); $courses_query = new WP_Query( $this->transient_data['query_args'] ); if ( is_a( $courses_query, 'WP_Query' ) ) { $this->transient_data['total_count'] = intval( $courses_query->found_posts ); $this->transient_data['process_courses'] = $courses_query->posts; } } /** * Common function to build the returned data progress output. * * @since 2.6.0 * * @param array $data Array of existing data elements. * @return array or data. */ private function build_progress_output( $data = array() ) { if ( isset( $this->transient_data['result_count'] ) ) { $data['result_count'] = intval( $this->transient_data['result_count'] ); } else { $data['result_count'] = 0; } if ( isset( $this->transient_data['total_count'] ) ) { $data['total_count'] = intval( $this->transient_data['total_count'] ); } else { $data['total_count'] = 0; } if ( ! empty( $data['total_count'] ) ) { $data['progress_percent'] = ( $data['result_count'] / $data['total_count'] ) * 100; } else { $data['progress_percent'] = 0; } if ( 100 == $data['progress_percent'] ) { $progress_status = __( 'Complete', 'learndash' ); $data['progress_slug'] = 'complete'; } else { if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { $progress_status = __( 'In Progress', 'learndash' ); $data['progress_slug'] = 'in-progress'; } else { $progress_status = __( 'Incomplete', 'learndash' ); $data['progress_slug'] = 'in-complete'; } } $data['progress_label'] = sprintf( // translators: placeholders: result count, total count. esc_html_x( '%1$s: %2$d of %3$d Courses', 'placeholders: progress status, result count, total count', 'learndash' ), $progress_status, $data['result_count'], $data['total_count'] ); return $data; } /** * Convert single course access list. * * @since 2.3 * * @param int $course_id Course ID of post to convert. * @return boolean true if complete, false if not. */ private function convert_course_access_list( $course_id = 0 ) { $course_access_list = learndash_get_setting( $course_id, 'course_access_list' ); update_post_meta( $course_id, 'course_access_list', learndash_convert_course_access_list( $course_access_list ) ); return true; } // End of functions. } } add_action( 'learndash_data_upgrades_init', function() { Learndash_Admin_Data_Upgrades_Course_Access_List::add_instance(); } ); PKc\&wsiibincludes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-quiz-questions.phpnuW+Adata_slug = 'pro-quiz-questions'; parent::__construct(); parent::register_upgrade_action(); } /** * Show data upgrade row for this instance. * * @since 2.3 */ public function show_upgrade_action() { ?>

      This is required before enabling %3$s Builder. (Optional)', 'placeholders: Quiz questions, Quiz', 'learndash' ), learndash_get_custom_label_lower( 'Quiz' ), learndash_get_custom_label_lower( 'questions' ), LearnDash_Custom_Label::get_label( 'Quiz' ) ); ?>

      get_last_run_info(); ?>

      get_data_settings( $this->data_slug ); $this->transient_key = $this->data_slug; $this->transient_data = $this->get_transient( $this->transient_key ); if ( ! empty( $this->transient_data ) ) { if ( isset( $this->transient_data['result_count'] ) ) { $this->transient_data['result_count'] = intval( $this->transient_data['result_count'] ); } else { $this->transient_data['result_count'] = 0; } if ( isset( $this->transient_data['total_count'] ) ) { $this->transient_data['total_count'] = intval( $this->transient_data['total_count'] ); } else { $this->transient_data['total_count'] = 0; } if ( ( ! empty( $this->transient_data['result_count'] ) ) && ( ! empty( $this->transient_data['total_count'] ) ) && ( $this->transient_data['result_count'] != $this->transient_data['total_count'] ) ) { $show_progess = true; } if ( isset( $this->transient_data['skipped'] ) ) { $this->transient_data['skipped'] = array(); } } $progress_style = 'display:none;'; $progress_meter_style = ''; $progress_label = ''; $progress_slug = ''; if ( ( true === $show_progess ) && ( ! isset( $_GET['quiz_id'] ) ) ) { ?>

      transient_data; $data = $this->build_progress_output( $data ); if ( ( isset( $data['progress_percent'] ) ) && ( ! empty( $data['progress_percent'] ) ) ) { $progress_meter_style = 'width: ' . $data['progress_percent'] . '%'; } if ( ( isset( $data['progress_label'] ) ) && ( ! empty( $data['progress_label'] ) ) ) { $progress_label = $data['progress_label']; } if ( ( isset( $data['progress_slug'] ) ) && ( ! empty( $data['progress_slug'] ) ) ) { $progress_slug = 'progress-label-' . $data['progress_slug']; } } else { if ( ( isset( $data_settings['last_run'] ) ) && ( ! empty( $data_settings['last_run'] ) ) ) { $process_quiz_id = 0; if ( ( isset( $_GET['quiz_id'] ) ) && ( ! empty( $_GET['quiz_id'] ) ) ) { if ( get_post_type( $_GET['quiz_id'] ) === learndash_get_post_type_slug( 'quiz' ) ) { $process_quiz_id = absint( $_GET['quiz_id'] ); } else { ?>

      transient_data['quiz'] ) ) && ( ! empty( $this->transient_data['quiz'] ) ) ) { $process_quiz_id = absint( $this->transient_data['quiz'] ); } } if ( ! empty( $process_quiz_id ) ) { ?>

      init_process_times(); if ( ( isset( $data['nonce'] ) ) && ( ! empty( $data['nonce'] ) ) ) { if ( ( wp_verify_nonce( $data['nonce'], 'learndash-data-upgrades-' . $this->data_slug . '-' . get_current_user_id() ) ) && ( current_user_can( LEARNDASH_ADMIN_CAPABILITY_CHECK ) ) ) { $this->transient_key = $this->data_slug; if ( ( isset( $data['init'] ) ) && ( '1' === $data['init'] ) ) { unset( $data['init'] ); /** * Transient_data is used to store the local server state information and will * saved in a transient type options variable. */ $this->transient_data = array(); if ( ( isset( $data['continue'] ) ) && ( ! empty( $data['continue'] ) ) && ( 'true' === $data['continue'] ) ) { $this->transient_data['continue'] = true; } else { $this->transient_data['continue'] = false; } if ( ( isset( $data['quiz'] ) ) && ( ! empty( $data['quiz'] ) ) ) { $this->transient_data['quiz_id'] = absint( $data['quiz'] ); $this->transient_data['continue'] = false; } else { $this->transient_data['quiz_id'] = 0; } if ( ( isset( $data['mismatched'] ) ) && ( ! empty( $data['mismatched'] ) ) && ( 'true' === $data['mismatched'] ) ) { $this->transient_data['mismatched'] = true; $this->transient_data['continue'] = false; } else { $this->transient_data['mismatched'] = false; } if ( 'true' !== $data['continue'] ) { // Hold the number of completed/processed items. $this->transient_data['result_count'] = 0; $this->transient_data['current_user'] = array(); $this->transient_data['progress_started'] = time(); $this->transient_data['progress_user'] = get_current_user_id(); $this->transient_data['skipped'] = array(); $quiz_builder_option = get_option( 'learndash_settings_quizzes_builder' ); $quiz_builder_option['force_quiz_builder'] = ''; $quiz_builder_option['force_shared_questions'] = ''; update_option( 'learndash_settings_quizzes_builder', $quiz_builder_option ); $this->query_items(); } else { $this->transient_data = $this->get_transient( $this->transient_key ); } $this->set_option_cache( $this->transient_key, $this->transient_data ); } else { $this->transient_data = $this->get_transient( $this->transient_key ); if ( ( ! isset( $this->transient_data['process_users'] ) ) || ( empty( $this->transient_data['process_users'] ) ) ) { $this->query_items(); } if ( ( isset( $this->transient_data['process_users'] ) ) && ( ! empty( $this->transient_data['process_users'] ) ) ) { foreach ( $this->transient_data['process_users'] as $user_idx => $user_id ) { $user_id = intval( $user_id ); if ( ( ! isset( $this->transient_data['current_user']['user_id'] ) ) || ( $this->transient_data['current_user']['user_id'] !== $user_id ) ) { $this->transient_data['current_user'] = array( 'user_id' => $user_id, 'item_idx' => 0, ); } $question_convert_complete = $this->convert_proquiz_question( intval( $user_id ) ); //$question_convert_complete = true; if ( true === $question_convert_complete ) { $this->transient_data['current_user'] = array(); unset( $this->transient_data['process_users'][ $user_idx ] ); $this->transient_data['result_count'] = (int) $this->transient_data['result_count'] + 1; } $this->set_option_cache( $this->transient_key, $this->transient_data ); if ( $this->out_of_timer() ) { break; } } } } } } $data = $this->build_progress_output( $data ); // If we are at 100% then we update the internal data settings so other parts of LD know the upgrade has been run. if ( ( isset( $data['progress_percent'] ) ) && ( 100 == $data['progress_percent'] ) ) { // We enable Quiz Builder running the data upgrade. $quiz_builder_option = get_option( 'learndash_settings_quizzes_builder', array() ); $quiz_builder_option['enabled'] = 'yes'; update_option( 'learndash_settings_quizzes_builder', $quiz_builder_option ); if ( ( true !== $this->transient_data['mismatched'] ) && ( empty( $this->transient_data['quiz_id'] ) ) ) { $this->set_last_run_info( $data ); $data['last_run_info'] = $this->get_last_run_info(); } $this->remove_transient( $this->transient_key ); } return $data; } /** * Common function to query needed items. * * @since 2.6.0 * * @param boolean $increment_paged default true to increment paged. */ protected function query_items( $increment_paged = true ) { global $wpdb; if ( ! isset( $this->transient_data['process_users'] ) ) { $this->transient_data['process_users'] = array(); } // Get total rows. if ( ( isset( $this->transient_data['quiz_id'] ) ) && ( ! empty( $this->transient_data['quiz_id'] ) ) ) { $pro_quiz_id = get_post_meta( $this->transient_data['quiz_id'], 'quiz_pro_id', true ); if ( empty( $pro_quiz_id ) ) { $pro_quiz_id = learndash_get_setting( $this->transient_data['quiz_id'], 'quiz_pro', true ); if ( ! empty( $pro_quiz_id ) ) { update_post_meta( $this->transient_data['quiz_id'], 'quiz_pro_id', $pro_quiz_id ); } } if ( ! empty( $pro_quiz_id ) ) { $quiz_question_sql = $wpdb->prepare( 'SELECT id FROM ' . LDLMS_DB::get_table_name( 'quiz_question' ) . ' WHERE online = %d AND quiz_id = %d', '1', $pro_quiz_id ); $quiz_questions = $wpdb->get_col( $quiz_question_sql ); if ( ! empty( $quiz_questions ) ) { $this->transient_data['process_users'] = array_merge( $this->transient_data['process_users'], $quiz_questions ); $this->transient_data['total_count'] = count( $this->transient_data['process_users'] ); } } } elseif ( true === $this->transient_data['mismatched'] ) { $mismatched_questions = $this->get_mismatched_questions(); if ( ! empty( $mismatched_questions ) ) { $this->transient_data['process_users'] = array_merge( $this->transient_data['process_users'], $mismatched_questions ); $this->transient_data['total_count'] = count( $this->transient_data['process_users'] ); } } else { if ( ! isset( $this->transient_data['total_count'] ) ) { $sql_count_rows = $wpdb->prepare( 'SELECT COUNT(*) FROM ' . LDLMS_DB::get_table_name( 'quiz_question' ) . ' WHERE online = %d', '1' ); $total_rows_count = $wpdb->get_var( $sql_count_rows ); if ( ! is_null( $total_rows_count ) ) { $this->transient_data['total_count'] = intval( $total_rows_count ); } } if ( ( isset( $this->transient_data['total_count'] ) ) && ( ! empty( $this->transient_data['total_count'] ) ) ) { // Initialize or increment the current paged or items. if ( ! isset( $this->transient_data['paged'] ) ) { $this->transient_data['paged'] = 0; } else { if ( true === $increment_paged ) { $this->transient_data['paged'] = (int) $this->transient_data['paged'] + 1; } } $sql_count_rows = $wpdb->prepare( 'SELECT id FROM ' . LDLMS_DB::get_table_name( 'quiz_question' ) . ' WHERE online = %d ORDER BY quiz_id ASC, id ASC LIMIT %d OFFSET %d', '1', LEARNDASH_LMS_DEFAULT_DATA_UPGRADE_BATCH_SIZE, $this->transient_data['paged'] * LEARNDASH_LMS_DEFAULT_DATA_UPGRADE_BATCH_SIZE ); $rows = $wpdb->get_col( $sql_count_rows ); if ( ! empty( $rows ) ) { $this->transient_data['process_users'] = array_merge( $this->transient_data['process_users'], $rows ); } } } } /** * Determine if there are mismatched ProQuiz Questions not found as WP Posts (sfwd-question). */ public function get_mismatched_questions() { global $wpdb; $mismatched_pro_ids = array(); $question_pro_ids = array(); $pro_ids_paged = 0; while ( true ) { $question_pro_ids_sql = $wpdb->prepare( 'SELECT id FROM ' . LDLMS_DB::get_table_name( 'quiz_question' ) . ' WHERE online = %d ORDER BY quiz_id, sort ASC LIMIT %d OFFSET %d', '1', LEARNDASH_LMS_DEFAULT_DATA_UPGRADE_BATCH_SIZE, $pro_ids_paged * LEARNDASH_LMS_DEFAULT_DATA_UPGRADE_BATCH_SIZE ); $pro_ids = $wpdb->get_col( $question_pro_ids_sql ); if ( ! empty( $pro_ids ) ) { $pro_ids = array_map( 'intval', $pro_ids ); $question_pro_ids = array_merge( $question_pro_ids, $pro_ids ); $pro_ids_paged++; } else { break; } } $question_post_ids = array(); if ( ! empty( $question_pro_ids ) ) { $post_ids_paged = 0; while ( true ) { $question_post_ids_sql = $wpdb->prepare( 'SELECT meta_value FROM ' . $wpdb->postmeta . ' WHERE meta_key = %s LIMIT %d OFFSET %d', 'question_pro_id', LEARNDASH_LMS_DEFAULT_DATA_UPGRADE_BATCH_SIZE, $post_ids_paged * LEARNDASH_LMS_DEFAULT_DATA_UPGRADE_BATCH_SIZE ); $post_ids = $wpdb->get_col( $question_post_ids_sql ); if ( ! empty( $post_ids ) ) { $post_ids = array_map( 'intval', $post_ids ); $question_post_ids = array_merge( $question_post_ids, $post_ids ); $post_ids_paged++; } else { break; } } if ( ! empty( $question_post_ids ) ) { $mismatched_pro_ids = array_diff( $question_pro_ids, $question_post_ids ); if ( ! empty( $mismatched_pro_ids ) ) { $mismatched_pro_ids = array_values( $mismatched_pro_ids ); } } } return $mismatched_pro_ids; } /** * Common function to build the returned data progress output. * * @since 2.6.0 * * @param array $data Array of existing data elements. * @return array or data. */ protected function build_progress_output( $data = array() ) { if ( isset( $this->transient_data['result_count'] ) ) { $data['result_count'] = intval( $this->transient_data['result_count'] ); } else { $data['result_count'] = 0; } if ( isset( $this->transient_data['total_count'] ) ) { $data['total_count'] = intval( $this->transient_data['total_count'] ); } else { $data['total_count'] = 0; } if ( ! empty( $data['total_count'] ) ) { $data['progress_percent'] = ceil( ( intval( $data['result_count'] ) / intval( $data['total_count'] ) ) * 100 ); } else { $data['progress_percent'] = 100; } if ( 100 == $data['progress_percent'] ) { $progress_status = __( 'Complete', 'learndash' ); $data['progress_slug'] = 'complete'; } else { if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { $progress_status = __( 'In Progress', 'learndash' ); $data['progress_slug'] = 'in-progress'; } else { $progress_status = __( 'Incomplete', 'learndash' ); $data['progress_slug'] = 'in-complete'; } } $data['progress_label'] = sprintf( // translators: placeholders: result count, total count, Questions label. esc_html_x( '%1$s: %2$d of %3$d %4$s', 'placeholders: progress status, result count, total count, Questions label', 'learndash' ), $progress_status, $data['result_count'], $data['total_count'], ( $data['total_count'] > 1 ) ? LearnDash_Custom_Label::get_label( 'questions' ) : LearnDash_Custom_Label::get_label( 'question' ) ); if ( ( isset( $data['progress_percent'] ) ) && ( 100 == $data['progress_percent'] ) ) { if ( ! empty( $this->transient_data['skipped'] ) ) { $skipped_out = '
      '; $skipped_out .= sprintf( // translators: placeholder: Number of skipper Questions. esc_html_x( 'ProQuiz Questions Skipped %d', 'placeholder: Number of skipper Questions', 'learndash' ), count( $this->transient_data['skipped'] ) ); $skipped_out .= '
        '; foreach ( $this->transient_data['skipped'] as $skip_msg ) { $skipped_out .= '
      1. ' . $skip_msg . '
      2. '; } $skipped_out .= '
      '; $skipped_out .= '
      '; $data['progress_label'] .= '

      ' . $skipped_out; } } return $data; } /** * Convert single user quiz attempts to Activity DB entries. * * @since 2.3 * * @param int $question_pro_id ProQuiz Question ID to convert. * @return boolean true if complete, false if not. */ protected function convert_proquiz_question( $question_pro_id = 0 ) { global $wpdb; //$quiz_builder_option = LearnDash_Settings_Quizzes_Builder::get_settings_all(); $quiz_builder_option = LearnDash_Settings_Section::get_section_settings_all('LearnDash_Settings_Quizzes_Builder'); $question_pro_id = absint( $question_pro_id ); if ( ( empty( $question_pro_id ) ) || ( ! isset( $this->transient_data['current_user']['user_id'] ) ) || ( $question_pro_id !== $this->transient_data['current_user']['user_id'] ) ) { $this->transient_data['skipped'][ $question_pro_id ] = sprintf( // translators: placeholder: ProQuiz Question ID. esc_html_x( '[%d] Empty Question ProID given.', 'placeholder: ProQuiz Question ID', 'learndash' ), $question_pro_id ); return; } $question_pro_mapper = new WpProQuiz_Model_QuestionMapper(); $question_pro = $question_pro_mapper->fetch( $question_pro_id ); if ( ( ! $question_pro ) || ( ! is_a( $question_pro, 'WpProQuiz_Model_Question' ) ) ) { $this->transient_data['skipped'][ $question_pro_id ] = sprintf( // translators: placeholder: ProQuiz Question ID. esc_html_x( 'ProQuestion ID [%d] Model not found.', 'placeholder: ProQuiz Question ID', 'learndash' ), $question_pro_id ); return true; } $quiz_pro_id = $question_pro->getQuizId(); $quiz_pro_id = absint( $quiz_pro_id ); if ( ( isset( $quiz_builder_option['shared_questions'] ) ) && ( 'yes' !== $quiz_builder_option['shared_questions'] ) ) { if ( empty( $quiz_pro_id ) ) { $this->transient_data['skipped'][ $question_pro_id ] = sprintf( // translators: placeholder: ProQuiz Question ID, ProQuiz Quiz ID. esc_html_x( 'ProQuestion ID [%1$d] ProQuiz ID empty [%2$d].', 'placeholder: ProQuiz Question ID, ProQuiz Quiz ID', 'learndash' ), $question_pro_id, $quiz_pro_id ); return true; } $quiz_pro_mapper = new WpProQuiz_Model_QuizMapper(); $quiz_pro = $quiz_pro_mapper->fetch( $quiz_pro_id ); if ( ( ! $quiz_pro ) || ( ! is_a( $quiz_pro, 'WpProQuiz_Model_Quiz' ) ) ) { $this->transient_data['skipped'][ $question_pro_id ] = sprintf( // translators: placeholder: ProQuiz Question ID, ProQuiz Quiz ID. esc_html_x( 'ProQuestion ID [%1$d] ProQuiz ID Model not found [%2$d].', 'placeholder: ProQuiz Question ID, ProQuiz Quiz ID', 'learndash' ), $question_pro_id, $quiz_pro_id ); return true; } } if ( ! empty( $quiz_pro_id ) ) { $quiz_post_ids = learndash_get_quiz_post_ids( $quiz_pro_id ); } else { $quiz_post_ids = array(); } //if ( ( isset( $quiz_builder_option['shared_questions'] ) ) && ( 'yes' !== $quiz_builder_option['shared_questions'] ) ) { // if ( empty( $quiz_post_ids ) ) { // $this->transient_data['skipped'][ $question_pro_id ] = sprintf( // // translators: placeholder: ProQuiz Question ID, ProQuiz Quiz ID. // esc_html_x( 'ProQuestion ID [%1$d] ProQuiz ID [%2$d] not associated with Quiz Post(s).', 'placeholder: ProQuiz Question ID, ProQuiz Quiz ID', 'learndash' ), // $question_pro_id, $quiz_pro_id // ); // return true; // } //} $question_insert_post_id = learndash_get_question_post_by_pro_id( $question_pro_id ); if ( empty( $question_insert_post_id ) ) { $question_insert_post = array(); $question_insert_post['post_type'] = learndash_get_post_type_slug( 'question' ); $question_insert_post['post_status'] = 'publish'; $question_insert_post['post_title'] = $question_pro->getTitle(); $question_insert_post['post_content'] = $question_pro->getQuestion(); $question_insert_post['menu_order'] = absint( $question_pro->getSort() ); /** * We are getting the Quiz post to use the same post author and date since WPProQuiz * does not track that information. This will be used when inserting a new Question. */ if ( ! empty( $quiz_post_ids ) ) { $quiz_post = get_post( $quiz_post_ids[0] ); if ( ( $quiz_post ) && ( is_a( $quiz_post, 'WP_Post' ) ) ) { $question_insert_post['post_author'] = $quiz_post->post_author; $question_insert_post['post_date'] = $quiz_post->post_date; } /** * If the number of associated Quiz posts is greater than one we force the * Quiz Builder settings to 'on'. Basically since there are multiple Quizzes * they will share the same Questions. Thus the 'Shared Questions' option is forced. */ //if ( count( $quiz_post_ids ) > 1 ) { // $quiz_builder_option['enabled'] = 'yes'; // $quiz_builder_option['shared_questions'] = 'yes'; // $quiz_builder_option['force_quiz_builder'] = 'yes'; // $quiz_builder_option['force_shared_questions'] = 'yes'; // update_option( 'learndash_settings_quizzes_builder', $quiz_builder_option ); //} } $question_insert_post = wp_slash( $question_insert_post ); $question_insert_post_id = wp_insert_post( $question_insert_post ); } else { $update_post = array( 'ID' => $question_insert_post_id, 'post_title' => $question_pro->getTitle(), 'post_content' => $question_pro->getQuestion(), 'menu_order' => absint( $question_pro->getSort() ), ); $update_post = wp_slash( $update_post ); wp_update_post( $update_post ); } if ( ( $question_insert_post_id ) && ( ! is_wp_error( $question_insert_post_id ) ) ) { learndash_proquiz_sync_question_fields( $question_insert_post_id, $question_pro ); //learndash_proquiz_sync_question_category( $question_insert_post_id, $question_pro ); if ( ( $question_pro ) && ( is_a( $question_pro, 'WpProQuiz_Model_Question' ) ) ) { // Create the association between the question post and the quiz post(s). if ( ( ! empty( $quiz_pro_id ) ) && ( ! empty( $quiz_post_ids ) ) ) { foreach ( $quiz_post_ids as $idx => $quiz_post_id ) { learndash_set_quiz_questions_dirty( $quiz_post_id ); if ( 0 === $idx ) { learndash_update_setting( $question_insert_post_id, 'quiz', absint( $quiz_post_id ) ); $quiz_primary_post_id = learndash_get_quiz_primary_shared( $quiz_pro_id, false ); if ( empty( $quiz_primary_post_id ) ) { update_post_meta( $quiz_post_id, 'quiz_pro_primary_' . $quiz_pro_id, $quiz_pro_id ); } //if ( ( isset( $quiz_builder_option['shared_questions'] ) ) && ( 'yes' !== $quiz_builder_option['shared_questions'] ) ) { // break; //} } add_post_meta( $question_insert_post_id, 'ld_quiz_' . absint( $quiz_post_id ), absint( $quiz_post_id ), true ); } } } } return true; } // End of functions. } } add_action( 'learndash_data_upgrades_init', function() { Learndash_Admin_Data_Upgrades_Quiz_Questions::add_instance(); } ); PKc\jincludes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-activity-db-table.phpnuW+Adata_slug = 'activity_db-tables'; parent::__construct(); add_action( 'init', array( $this, 'upgrade_data_settings' ) ); parent::register_upgrade_action(); } /** * Update the LearnDash Settings. * * Checks to see if settings needs to be updated. * * @since 2.3 */ public function upgrade_data_settings() { if (is_admin() ) { $db_version = $this->get_data_settings( 'db_version' ); if ( ( defined( 'LEARNDASH_ACTIVATED' ) ) || ( ( defined( 'LEARNDASH_SETTINGS_DB_VERSION' ) ) && ( LEARNDASH_SETTINGS_DB_VERSION != '' ) && ( $this->data_settings['db_version'] < LEARNDASH_SETTINGS_DB_VERSION ) ) ) { $this->upgrade_db_tables( $this->data_settings['db_version'] ); $this->set_data_settings( 'db_version', LEARNDASH_SETTINGS_DB_VERSION ); } } } /** * Perform DB Tables upgrade. * * @since 2.3 * * @param string $data_version Current database version we are upgrading from. */ public function upgrade_db_tables( $data_version = 0 ) { global $wpdb; if ( ! function_exists( 'dbDelta' ) ) { require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); } $charset_collate = ''; if ( ! empty( $wpdb->charset ) ) { $charset_collate .= "DEFAULT CHARACTER SET $wpdb->charset"; } if ( ! empty( $wpdb->collate ) ) { $charset_collate .= " COLLATE $wpdb->collate"; } $learndash_user_activity_db_table = LDLMS_DB::get_table_name( 'user_activity' ); $learndash_user_activity_db_table_create_query = "CREATE TABLE " . $learndash_user_activity_db_table . " ( activity_id bigint(20) unsigned NOT NULL AUTO_INCREMENT, user_id bigint(20) unsigned NOT NULL DEFAULT '0', post_id bigint(20) unsigned NOT NULL DEFAULT '0', course_id bigint(20) unsigned NOT NULL DEFAULT '0', activity_type varchar(50) DEFAULT NULL, activity_status tinyint(1) unsigned DEFAULT NULL, activity_started int(11) unsigned DEFAULT NULL, activity_completed int(11) unsigned DEFAULT NULL, activity_updated int(11) unsigned DEFAULT NULL, PRIMARY KEY (activity_id), KEY user_id (user_id), KEY post_id (post_id), KEY course_id (course_id), KEY activity_status (activity_status), KEY activity_type (activity_type), KEY activity_started (activity_started), KEY activity_completed (activity_completed), KEY activity_updated (activity_updated) ) " . $charset_collate . ";"; dbDelta( $learndash_user_activity_db_table_create_query ); $learndash_user_activity_meta_db_table = LDLMS_DB::get_table_name( 'user_activity_meta' ); $learndash_user_activity_meta_db_table_create_query = "CREATE TABLE " . $learndash_user_activity_meta_db_table . " ( activity_meta_id bigint(20) unsigned NOT NULL AUTO_INCREMENT, activity_id bigint(20) unsigned NOT NULL DEFAULT '0', activity_meta_key varchar(255) DEFAULT NULL, activity_meta_value mediumtext, PRIMARY KEY (activity_meta_id), KEY activity_id (activity_id), KEY activity_meta_key (activity_meta_key(191)) ) " . $charset_collate . ";"; dbDelta( $learndash_user_activity_meta_db_table_create_query ); /** * v2.5.0 Patch here to reset the AUTO INCREMENT in the PRIMARY column. Had reports from one ticket * this extra column setting was somehow dropped. After testing found that dbDelta does not re-add this * attribute. */ $wpdb->query( "ALTER TABLE " . $learndash_user_activity_db_table . " MODIFY COLUMN activity_id bigint(20) unsigned NOT NULL AUTO_INCREMENT" ); $wpdb->query( "ALTER TABLE ". $learndash_user_activity_meta_db_table ." MODIFY COLUMN activity_meta_id bigint(20) unsigned NOT NULL AUTO_INCREMENT" ); // v2.3.0.4 We changed the default from '0' to NULL for the activity_status column. $wpdb->query( "ALTER TABLE " . $learndash_user_activity_db_table . " CHANGE `activity_status` `activity_status` TINYINT(1) UNSIGNED NULL DEFAULT NULL" ); } // End of functions. } } add_action( 'learndash_data_upgrades_init', function() { Learndash_Admin_Data_Upgrades_User_Activity_DB_Table::add_instance(); } ); PKc\OOeincludes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-courses.phpnuW+Adata_slug = 'user-meta-courses'; parent::__construct(); parent::register_upgrade_action(); } /** * Show data upgrade row for this instance. * * @since 2.3 */ public function show_upgrade_action() { ?>

      get_last_run_info(); ?>

      transient_key = $this->data_slug; $this->transient_data = $this->get_transient( $this->transient_key ); if ( ! empty( $this->transient_data ) ) { if ( isset( $this->transient_data['result_count'] ) ) { $this->transient_data['result_count'] = intval( $this->transient_data['result_count'] ); } else { $this->transient_data['result_count'] = 0; } if ( isset( $this->transient_data['total_count'] ) ) { $this->transient_data['total_count'] = intval( $this->transient_data['total_count'] ); } else { $this->transient_data['total_count'] = 0; } if ( ( ! empty( $this->transient_data['result_count'] ) ) && ( ! empty( $this->transient_data['total_count'] ) ) && ( $this->transient_data['result_count'] != $this->transient_data['total_count'] ) ) { $show_progess = true; ?>

      transient_data; $data = $this->build_progress_output( $data ); if ( ( isset( $data['progress_percent'] ) ) && ( ! empty( $data['progress_percent'] ) ) ) { $progress_meter_style = 'width: ' . $data['progress_percent'] . '%'; } if ( ( isset( $data['progress_label'] ) ) && ( ! empty( $data['progress_label'] ) ) ) { $progress_label = $data['progress_label']; } if ( ( isset( $data['progress_slug'] ) ) && ( ! empty( $data['progress_slug'] ) ) ) { $progress_slug = 'progress-label-' . $data['progress_slug']; } } ?>
      init_process_times(); if ( ( isset( $data['nonce'] ) ) && ( ! empty( $data['nonce'] ) ) ) { if ( ( wp_verify_nonce( $data['nonce'], 'learndash-data-upgrades-' . $this->data_slug . '-' . get_current_user_id() ) ) && ( current_user_can( LEARNDASH_ADMIN_CAPABILITY_CHECK ) ) ) { $this->transient_key = $this->data_slug; if ( ( isset( $data['init'] ) ) && ( '1' === $data['init'] ) ) { unset( $data['init'] ); if ( ( ! isset( $data['continue'] ) ) || ( 'true' != $data['continue'] ) ) { learndash_activity_clear_mismatched_users(); learndash_activity_clear_mismatched_posts(); /** * Transient_data is used to store the local server state information and will * saved in a transient type options variable. */ $this->transient_data = array(); // Hold the number of completed/processed items. $this->transient_data['result_count'] = 0; $this->transient_data['current_user'] = array(); $this->transient_data['progress_started'] = time(); $this->transient_data['progress_user'] = get_current_user_id(); $this->query_items(); } else { $this->transient_data = $this->get_transient( $this->transient_key ); } $this->set_option_cache( $this->transient_key, $this->transient_data ); } else { $this->transient_data = $this->get_transient( $this->transient_key ); if ( ( ! isset( $this->transient_data['process_users'] ) ) || ( empty( $this->transient_data['process_users'] ) ) ) { $this->query_items(); } if ( ( isset( $this->transient_data['process_users'] ) ) && ( ! empty( $this->transient_data['process_users'] ) ) ) { foreach ( $this->transient_data['process_users'] as $user_idx => $user_id ) { $user_id = intval( $user_id ); if ( ( ! isset( $this->transient_data['current_user']['user_id'] ) ) || ( $this->transient_data['current_user']['user_id'] !== $user_id ) ) { $this->transient_data['current_user'] = array( 'user_id' => $user_id, 'item_idx' => 0, ); } $user_complete = $this->convert_user_meta_courses_progress_to_activity( intval( $user_id ) ); if ( true === $user_complete ) { $this->transient_data['current_user'] = array(); unset( $this->transient_data['process_users'][ $user_idx ] ); $this->transient_data['result_count'] = (int) $this->transient_data['result_count'] + 1; } $this->set_option_cache( $this->transient_key, $this->transient_data ); if ( $this->out_of_timer() ) { break; } } } } } } $data = $this->build_progress_output( $data ); // If we are at 100% then we update the internal data settings so other parts of LD know the upgrade has been run. if ( ( isset( $data['progress_percent'] ) ) && ( 100 == $data['progress_percent'] ) ) { $this->set_last_run_info( $data ); $data['last_run_info'] = $this->get_last_run_info(); $this->remove_transient( $this->transient_key ); } return $data; } /** * Common function to query needed items. * * @since 2.6.0 * * @param boolean $increment_paged default true to increment paged. */ protected function query_items( $increment_paged = true ) { // Initialize or increment the current paged or items. if ( ! isset( $this->transient_data['paged'] ) ) { $this->transient_data['paged'] = 1; } else { if ( true === $increment_paged ) { $this->transient_data['paged'] = (int) $this->transient_data['paged'] + 1; } } $this->transient_data['query_args'] = array( 'fields' => 'ID', 'paged' => $this->transient_data['paged'], 'number' => LEARNDASH_LMS_DEFAULT_DATA_UPGRADE_BATCH_SIZE, ); $this->transient_data['query_args'] = apply_filters( 'learndash_data_upgrade_query', $this->transient_data['query_args'], $this->data_slug ); $user_query = new WP_User_Query( $this->transient_data['query_args'] ); if ( is_a( $user_query, 'WP_User_Query' ) ) { $this->transient_data['total_count'] = $user_query->get_total(); $this->transient_data['process_users'] = $user_query->get_results(); } } /** * Common function to build the returned data progress output. * * @since 2.6.0 * * @param array $data Array of existing data elements. * @return array or data. */ protected function build_progress_output( $data = array() ) { if ( isset( $this->transient_data['result_count'] ) ) { $data['result_count'] = intval( $this->transient_data['result_count'] ); } else { $data['result_count'] = 0; } if ( isset( $this->transient_data['total_count'] ) ) { $data['total_count'] = intval( $this->transient_data['total_count'] ); } else { $data['total_count'] = 0; } if ( ! empty( $data['total_count'] ) ) { $data['progress_percent'] = ( $data['result_count'] / $data['total_count'] ) * 100; } else { $data['progress_percent'] = 0; } if ( 100 == $data['progress_percent'] ) { $progress_status = __( 'Complete', 'learndash' ); $data['progress_slug'] = 'complete'; } else { if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { $progress_status = __( 'In Progress', 'learndash' ); $data['progress_slug'] = 'in-progress'; } else { $progress_status = __( 'Incomplete', 'learndash' ); $data['progress_slug'] = 'in-complete'; } } $data['progress_label'] = sprintf( // translators: placeholders: result count, total count. esc_html_x( '%1$s: %2$d of %3$d Users', 'placeholders: progress status, result count, total count', 'learndash' ), $progress_status, $data['result_count'], $data['total_count'] ); return $data; } /** * Convert single user quiz attempts to Activity DB entries. * * @since 2.3 * * @param int $user_id User ID of user to convert. * @return boolean true if complete, false if not. */ private function convert_user_meta_courses_progress_to_activity( $user_id = 0 ) { global $wpdb; if ( ( empty( $user_id ) ) || ( ! isset( $this->transient_data['current_user']['user_id'] ) ) || ( $user_id !== $this->transient_data['current_user']['user_id'] ) ) { return; } delete_user_meta( $user_id, $this->meta_key ); if ( isset( $this->transient_data['current_user']['activity_ids'] ) ) { $activity_ids = $this->transient_data['current_user']['activity_ids']; } else { $activity_ids = array(); } if ( ! isset( $activity_ids['last_course_id'] ) ) { $activity_ids['last_course_id'] = 0; } else { $activity_ids['last_course_id'] = intval( $activity_ids['last_course_id'] ); } if ( ! isset( $activity_ids['existing'] ) ) { $activity_ids['existing'] = array(); } if ( ! isset( $activity_ids['current'] ) ) { $activity_ids['current'] = array(); } if ( ! isset( $activity_ids['course_ids_used'] ) ) { $activity_ids['course_ids_used'] = array(); } $user_meta_courses_progress = get_user_meta( $user_id, '_sfwd-course_progress', true ); if ( ( ! empty( $user_meta_courses_progress ) ) && ( is_array( $user_meta_courses_progress ) ) ) { /** * We sort the course progress array because we may need to save our place and * need to knowwhere we left off. */ ksort( $user_meta_courses_progress ); foreach ( $user_meta_courses_progress as $course_id => $course_data ) { // Need a way to seek to a specific key starting point in an array. if ( $activity_ids['last_course_id'] >= $course_id ) { continue; } $course_post = get_post( $course_id ); if ( ( $course_post ) && is_a( $course_post, 'WP_Post' ) ) { $total_activity_items = 0; $user_course_access_from = 0; $user_course_completed = 0; // Then loop over Lessons. if ( ( isset( $course_data['lessons'] ) ) && ( ! empty( $course_data['lessons'] ) ) ) { foreach ( $course_data['lessons'] as $lesson_id => $lesson_complete ) { $lesson_post = get_post( $lesson_id ); if ( ( $lesson_post ) && is_a( $lesson_post, 'WP_Post' ) ) { $lesson_args = array( 'course_id' => $course_id, 'post_id' => $lesson_id, 'user_id' => $user_id, 'activity_type' => 'lesson', 'data_upgrade' => true, 'activity_meta' => array(), ); if ( ! empty( $user_course_access_from ) ) { $lesson_args['activity_started'] = $user_course_access_from; } if ( true == $lesson_complete ) { $lesson_args['activity_status'] = true; if ( ! empty( $user_course_completed ) ) { $lesson_args['activity_completed'] = $user_course_completed; } } $activity_id = learndash_update_user_activity( $lesson_args ); if ( ! empty( $activity_id ) ) { $activity_ids['current'][] = $activity_id; } $total_activity_items++; } } } // Then loop over Topics. if ( ( isset( $course_data['topics'] ) ) && ( ! empty( $course_data['topics'] ) ) ) { foreach ( $course_data['topics'] as $lesson_id => $lessons_topics ) { if ( ! empty( $lessons_topics ) ) { foreach ( $lessons_topics as $topic_id => $topic_complete ) { $topic_post = get_post( $topic_id ); if ( ( $lesson_post ) && is_a( $topic_post, 'WP_Post' ) ) { $topic_args = array( 'course_id' => $course_id, 'post_id' => $topic_id, 'user_id' => $user_id, 'activity_type' => 'topic', 'data_upgrade' => true, 'activity_meta' => array(), ); if ( ! empty( $user_course_access_from ) ) { $topic_args['activity_started'] = $user_course_access_from; } if ( $topic_complete == true ) { $topic_args['activity_status'] = true; if ( ! empty( $user_course_completed ) ) { $topic_args['activity_completed'] = $user_course_completed; } } $activity_id = learndash_update_user_activity( $topic_args ); if ( ! empty( $activity_id ) ) { $activity_ids['current'][] = $activity_id; } $total_activity_items++; } } } } } $user_course_completed = get_user_meta( $user_id, 'course_completed_' . $course_id, true ); $user_course_access_from = get_user_meta( $user_id, 'course_' . $course_id . '_access_from', true ); if ( ! empty( $user_course_access_from ) ) { $activity_id = learndash_update_user_activity( array( 'course_id' => $course_id, 'post_id' => $course_id, 'user_id' => $user_id, 'activity_type' => 'access', 'activity_started' => $user_course_access_from, 'data_upgrade' => true, ) ); if ( ! empty( $activity_id ) ) { $activity_ids['current'][] = $activity_id; } } $user_course_access_from = 0; // First add the main Course entry. $course_args = array( 'course_id' => $course_id, 'post_id' => $course_id, 'activity_type' => 'course', 'user_id' => $user_id, 'data_upgrade' => true, 'activity_meta' => array( 'steps_total' => intval( $course_data['total'] ), 'steps_completed' => intval( $course_data['completed'] ), ), ); $steps_completed = intval( $course_data['completed'] ); if ( ( ! empty( $steps_completed ) ) && ( $steps_completed >= intval( $course_data['total'] ) ) ) { $course_args['activity_status'] = true; // Finally if there is a Course Complete date we add it. if ( ! empty( $user_course_completed ) ) { $course_args['activity_completed'] = $user_course_completed; } } else if ( ! empty( $steps_completed ) ) { $course_args['activity_status'] = false; } if ( isset( $course_data['last_id'] ) ) { $course_args['activity_meta']['steps_last_id'] = intval( $course_data['last_id'] ); } $activity_id = learndash_update_user_activity( $course_args ); if ( ! empty( $activity_id ) ) { $activity_ids['current'][] = $activity_id; } } $activity_ids['last_course_id'] = $course_id; $activity_ids['course_ids_used'][ $course_id ] = $course_id; //update_user_meta( $user_id, $this->meta_key, $activity_ids ); $this->transient_data['current_user']['activity_ids'] = $activity_ids; if ( $this->out_of_timer() ) { return; } } } /** * Finally we go through the user's meta again to grab the random course access items. These * would be there If the user was granted access but didn't actually start a lesson/quiz etc. */ $user_courses_access_sql = $wpdb->prepare( 'SELECT user_id, meta_key, meta_value as course_access_from FROM '. $wpdb->usermeta .' WHERE user_id=%d', $user_id ); $user_courses_access_sql .= " AND meta_key LIKE 'course_%_access_from'"; $user_courses_access = $wpdb->get_results( $user_courses_access_sql ); if ( ! empty( $user_courses_access ) ) { foreach ( $user_courses_access as $user_course_access ) { if ( ( property_exists( $user_course_access, 'meta_key' ) ) && ( ! empty( $user_course_access->meta_key ) ) ) { $user_course_access->course_id = str_replace( 'course_', '', $user_course_access->meta_key ); $user_course_access->course_id = str_replace( '_access_from', '', $user_course_access->course_id ); if ( ! isset( $activity_ids['course_ids_used'][ $user_course_access->course_id ] ) ) { $activity_id = learndash_update_user_activity( array( 'course_id' => $user_course_access->course_id, 'post_id' => $user_course_access->course_id, 'user_id' => $user_id, 'activity_type' => 'access', 'data_upgrade' => true, ) ); if ( ! empty( $activity_id ) ) { $activity_ids['current'][] = $activity_id; } } } } } // Here we purge items from the Activity DB where we don't have a match to processed 'current' course items. $activity_ids['existing'] = learndash_report_get_activity_by_user_id( $user_id, array( 'access', 'course', 'lesson', 'topic' ) ); if ( empty( $activity_ids['existing'] ) ) { $activity_ids['existing'] = array(); } if ( ( ! empty( $activity_ids['existing'] ) ) && ( ! empty( $activity_ids['current'] ) ) ) { $activity_ids['existing'] = array_map( 'intval', $activity_ids['existing'] ); sort( $activity_ids['existing'] ); $activity_ids['current'] = array_map( 'intval', $activity_ids['current'] ); sort( $activity_ids['current'] ); $activity_ids_delete = array_diff( $activity_ids['existing'], $activity_ids['current'] ); if ( ! empty( $activity_ids_delete ) ) { learndash_report_clear_by_activity_ids( $activity_ids_delete ); } } //update_user_meta( $user_id, $this->meta_key, 'COMPLETE' ); return true; } } } add_action( 'learndash_data_upgrades_init', function() { Learndash_Admin_Data_Upgrades_User_Meta_Courses::add_instance(); } ); PKc\ɗ##eincludes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-group-leader-role.phpnuW+Adata_slug = 'group-leader-role'; parent::__construct(); add_action( 'init', array( $this, 'create_group_leader_role' ) ); parent::register_upgrade_action(); } /** * Create Group Leader Role * * Checks to see if settings needs to be updated. * * @since 2.5.6 */ public function create_group_leader_role() { if ( is_admin() ) { $gl_role_created = $this->get_data_settings( 'gl_role' ); if ( ( defined( 'LEARNDASH_ACTIVATED' ) && LEARNDASH_ACTIVATED ) || ( ! $gl_role_created ) ) { learndash_add_group_admin_role(); $this->set_data_settings( 'gl_role_created', time() ); } } } // End of functions. } } add_action( 'learndash_data_upgrades_init', function() { Learndash_Admin_Data_Upgrades_Group_Leader_Role::add_instance(); } ); PKc\3A ;;eincludes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-quizzes.phpnuW+Adata_slug = 'user-meta-quizzes'; parent::__construct(); parent::register_upgrade_action(); } /** * Show data upgrade row for this instance. * * @since 2.3 */ public function show_upgrade_action() { ?>

      get_last_run_info(); ?>

      transient_key = $this->data_slug; $this->transient_data = $this->get_transient( $this->transient_key ); if ( ! empty( $this->transient_data ) ) { if ( isset( $this->transient_data['result_count'] ) ) { $this->transient_data['result_count'] = intval( $this->transient_data['result_count'] ); } else { $this->transient_data['result_count'] = 0; } if ( isset( $this->transient_data['total_count'] ) ) { $this->transient_data['total_count'] = intval( $this->transient_data['total_count'] ); } else { $this->transient_data['total_count'] = 0; } if ( ( ! empty( $this->transient_data['result_count'] ) ) && ( ! empty( $this->transient_data['total_count'] ) ) && ( $this->transient_data['result_count'] != $this->transient_data['total_count'] ) ) { $show_progess = true; ?>

      transient_data; $data = $this->build_progress_output( $data ); if ( ( isset( $data['progress_percent'] ) ) && ( ! empty( $data['progress_percent'] ) ) ) { $progress_meter_style = 'width: ' . $data['progress_percent'] . '%'; } if ( ( isset( $data['progress_label'] ) ) && ( ! empty( $data['progress_label'] ) ) ) { $progress_label = $data['progress_label']; } if ( ( isset( $data['progress_slug'] ) ) && ( ! empty( $data['progress_slug'] ) ) ) { $progress_slug = 'progress-label-' . $data['progress_slug']; } } ?>
      init_process_times(); if ( ( isset( $data['nonce'] ) ) && ( ! empty( $data['nonce'] ) ) ) { if ( ( wp_verify_nonce( $data['nonce'], 'learndash-data-upgrades-' . $this->data_slug . '-' . get_current_user_id() ) ) && ( current_user_can( LEARNDASH_ADMIN_CAPABILITY_CHECK ) ) ) { $this->transient_key = $this->data_slug; if ( ( isset( $data['init'] ) ) && ( '1' === $data['init'] ) ) { unset( $data['init'] ); if ( ( ! isset( $data['continue'] ) ) || ( 'true' !== $data['continue'] ) ) { learndash_activity_clear_mismatched_users(); learndash_activity_clear_mismatched_posts(); /** * Transient_data is used to store the local server state information and will * saved in a transient type options variable. */ $this->transient_data = array(); // Hold the number of completed/processed items. $this->transient_data['result_count'] = 0; $this->transient_data['current_user'] = array(); $this->transient_data['progress_started'] = time(); $this->transient_data['progress_user'] = get_current_user_id(); $this->query_items(); } else { $this->transient_data = $this->get_transient( $this->transient_key ); } $this->set_option_cache( $this->transient_key, $this->transient_data ); } else { $this->transient_data = $this->get_transient( $this->transient_key ); if ( ( ! isset( $this->transient_data['process_users'] ) ) || ( empty( $this->transient_data['process_users'] ) ) ) { $this->query_items(); } if ( ( isset( $this->transient_data['process_users'] ) ) && ( ! empty( $this->transient_data['process_users'] ) ) ) { foreach ( $this->transient_data['process_users'] as $user_idx => $user_id ) { $user_id = intval( $user_id ); if ( ( ! isset( $this->transient_data['current_user']['user_id'] ) ) || ( $this->transient_data['current_user']['user_id'] !== $user_id ) ) { $this->transient_data['current_user'] = array( 'user_id' => $user_id, 'item_idx' => 0, ); } $user_complete = $this->convert_user_meta_quizzes_progress_to_activity( intval( $user_id ) ); if ( true === $user_complete ) { $this->transient_data['current_user'] = array(); unset( $this->transient_data['process_users'][ $user_idx ] ); $this->transient_data['result_count'] = (int) $this->transient_data['result_count'] + 1; } $this->set_option_cache( $this->transient_key, $this->transient_data ); if ( $this->out_of_timer() ) { break; } } } } } } $data = $this->build_progress_output( $data ); // If we are at 100% then we update the internal data settings so other parts of LD know the upgrade has been run. if ( ( isset( $data['progress_percent'] ) ) && ( 100 == $data['progress_percent'] ) ) { $this->set_last_run_info( $data ); $data['last_run_info'] = $this->get_last_run_info(); $this->remove_transient( $this->transient_key ); } return $data; } /** * Common function to query needed items. * * @since 2.6.0 * * @param boolean $increment_paged default true to increment paged. */ protected function query_items( $increment_paged = true ) { // Initialize or increment the current paged or items. if ( ! isset( $this->transient_data['paged'] ) ) { $this->transient_data['paged'] = 1; } else { if ( true === $increment_paged ) { $this->transient_data['paged'] = (int) $this->transient_data['paged'] + 1; } } $this->transient_data['query_args'] = array( 'fields' => 'ID', 'paged' => $this->transient_data['paged'], 'number' => LEARNDASH_LMS_DEFAULT_DATA_UPGRADE_BATCH_SIZE, ); $this->transient_data['query_args'] = apply_filters( 'learndash_data_upgrade_query', $this->transient_data['query_args'], $this->data_slug ); $user_query = new WP_User_Query( $this->transient_data['query_args'] ); if ( is_a( $user_query, 'WP_User_Query' ) ) { $this->transient_data['total_count'] = $user_query->get_total(); $this->transient_data['process_users'] = $user_query->get_results(); } } /** * Common function to build the returned data progress output. * * @since 2.6.0 * * @param array $data Array of existing data elements. * @return array or data. */ protected function build_progress_output( $data = array() ) { if ( isset( $this->transient_data['result_count'] ) ) { $data['result_count'] = intval( $this->transient_data['result_count'] ); } else { $data['result_count'] = 0; } if ( isset( $this->transient_data['total_count'] ) ) { $data['total_count'] = intval( $this->transient_data['total_count'] ); } else { $data['total_count'] = 0; } if ( ! empty( $data['total_count'] ) ) { $data['progress_percent'] = ceil( ( intval( $data['result_count'] ) / intval( $data['total_count'] ) ) * 100 ); } else { $data['progress_percent'] = 0; } if ( 100 == $data['progress_percent'] ) { $progress_status = __( 'Complete', 'learndash' ); $data['progress_slug'] = 'complete'; } else { if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { $progress_status = __( 'In Progress', 'learndash' ); $data['progress_slug'] = 'in-progress'; } else { $progress_status = __( 'Incomplete', 'learndash' ); $data['progress_slug'] = 'in-complete'; } } $data['progress_label'] = sprintf( // translators: placeholders: result count, total count. esc_html_x( '%1$s: %2$d of %3$d Users', 'placeholders: progress status, result count, total count', 'learndash' ), $progress_status, $data['result_count'], $data['total_count'] ); return $data; } /** * Convert single user quiz attempts to Activity DB entries. * * @since 2.3 * * @param int $user_id User ID of user to convert. * @return boolean true if complete, false if not. */ protected function convert_user_meta_quizzes_progress_to_activity( $user_id = 0 ) { global $wpdb; if ( ( empty( $user_id ) ) || ( ! isset( $this->transient_data['current_user']['user_id'] ) ) || ( $user_id !== $this->transient_data['current_user']['user_id'] ) ) { return; } delete_user_meta( $user_id, $this->meta_key ); if ( empty( $this->transient_data['current_user']['item_idx'] ) ) { learndash_report_clear_user_activity_by_types( $user_id, array( 'quiz' ) ); } $user_course_ids_used = array(); $user_meta_quizzes_progress = get_user_meta( $user_id, '_sfwd-quizzes', true ); if ( ( ! empty( $user_meta_quizzes_progress ) ) && ( is_array( $user_meta_quizzes_progress ) ) ) { $user_meta_quizzes_progress_changed = false; foreach ( $user_meta_quizzes_progress as $idx => $quiz_data ) { // Need a way to seek to a specific key starting point in an array. if ( $this->transient_data['current_user']['item_idx'] > intval( $idx ) ) { continue; } $this->transient_data['current_user']['item_idx'] = $idx; if ( $this->out_of_timer() ) { return; } $quiz_post = get_post( intval( $quiz_data['quiz'] ) ); if ( ( ! $quiz_post ) || ( ! is_a( $quiz_post, 'WP_Post' ) ) || ( 'sfwd-quiz' !== $quiz_post->post_type ) ) { continue; } if ( ! isset( $quiz_data['course'] ) ) { $quiz_data['course'] = learndash_get_course_id( intval( $quiz_data['quiz'] ) ); $user_meta_quizzes_progress[ $idx ]['course'] = $quiz_data['course']; $user_meta_quizzes_progress_changed = true; } // LEARNDASH-2744 : Not sure why these lines are here. We shoul be use the original started/completed dates // ---------------- //unset( $quiz_data['started'] ); //unset( $quiz_data['completed'] ); if ( ( ! isset( $quiz_data['completed'] ) ) || ( empty( $quiz_data['completed'] ) ) ) { if ( ( isset( $quiz_data['time'] ) ) && ( ! empty( $quiz_data['time'] ) ) ) { $quiz_data['completed'] = $quiz_data['time']; } else { $quiz_data['completed'] = 0; } } if ( ( ! isset( $quiz_data['started'] ) ) || ( empty( $quiz_data['started'] ) ) ) { if ( ( isset( $quiz_data['time'] ) ) && ( ! empty( $quiz_data['time'] ) ) && ( isset( $quiz_data['timespent'] ) ) && ( ! empty( $quiz_data['timespent'] ) ) ) { $quiz_data['started'] = abs( intval( $quiz_data['time'] - round( $quiz_data['timespent'], 0 ) ) ); } elseif ( isset( $quiz_data['completed'] ) ) { $quiz_data['started'] = $quiz_data['completed']; } else { $quiz_data['started'] = 0; } } $quiz_data_meta = $quiz_data; // Remove many fields that we either don't need or are duplicate of the main table columns. unset( $quiz_data_meta['quiz'] ); unset( $quiz_data_meta['pro_quizid'] ); unset( $quiz_data_meta['time'] ); unset( $quiz_data_meta['completed'] ); unset( $quiz_data_meta['started'] ); if ( isset( $quiz_data_meta['course'] ) ) { unset( $quiz_data_meta['course'] ); } if ( isset( $quiz_data_meta['lesson'] ) ) { unset( $quiz_data_meta['lesson'] ); } if ( isset( $quiz_data_meta['topic'] ) ) { unset( $quiz_data_meta['topic'] ); } if ( '-' == $quiz_data_meta['rank'] ) { unset( $quiz_data_meta['rank'] ); } if ( true == $quiz_data['pass'] ) { $quiz_data_pass = true; } else { $quiz_data_pass = false; } $activity_id = learndash_update_user_activity( array( 'course_id' => $quiz_data['course'], 'post_id' => $quiz_data['quiz'], 'user_id' => $user_id, 'activity_type' => 'quiz', 'activity_status' => $quiz_data_pass, 'activity_started' => $quiz_data['started'], 'activity_completed' => $quiz_data['completed'], 'activity_meta' => $quiz_data_meta, ) ); } if ( true === $user_meta_quizzes_progress_changed ) { update_user_meta( $user_id, '_sfwd-quizzes', $user_meta_quizzes_progress ); } } return true; } } } add_action( 'learndash_data_upgrades_init', function() { Learndash_Admin_Data_Upgrades_User_Meta_Quizzes::add_instance(); } ); PKc\5`includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-translations.phpnuW+Adata_slug = 'translations'; parent::__construct(); add_action( 'init', array( $this, 'upgrade_translations' ) ); parent::register_upgrade_action(); } /** * Update the LearnDash Translations * * Checks to see if settings needs to be updated. * * @since 2.3 */ public function upgrade_translations() { if ( is_admin() ) { $translations_installed = $this->get_data_settings( 'translations_installed' ); if ( ( defined( 'LEARNDASH_ACTIVATED' ) && LEARNDASH_ACTIVATED ) || ( ! $translations_installed ) ) { $this->download_translations(); $this->set_data_settings( 'translations_installed', time() ); } } } /** * Download the translations from glotpress server. * * @since 2.3. */ public function download_translations() { $wp_installed_languages = get_available_languages(); if ( ! in_array( 'en_US', $wp_installed_languages ) ) { $wp_installed_languages = array_merge( array( 'en_US' ), $wp_installed_languages ); } if ( ! empty( $wp_installed_languages ) ) { LearnDash_Translations::get_available_translations( 'learndash', true ); foreach ( $wp_installed_languages as $locale ) { $reply = LearnDash_Translations::install_translation( 'learndash', $locale ); } } } // End of functions. } } add_action( 'learndash_data_upgrades_init', function() { Learndash_Admin_Data_Upgrades_Translations::add_instance(); } ); PKc\3NNnincludes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list-convert.phpnuW+Adata_slug = 'course-access-lists-convert'; parent::__construct(); parent::register_upgrade_action(); } /** * Show data upgrade row for this instance. * * @since 2.3 */ public function show_upgrade_action() { ?>

      get_last_run_info(); ?>

      transient_key = $this->data_slug; $this->transient_data = $this->get_transient( $this->transient_key ); if ( ! empty( $this->transient_data ) ) { if ( isset( $this->transient_data['result_count'] ) ) { $this->transient_data['result_count'] = intval( $this->transient_data['result_count'] ); } else { $this->transient_data['result_count'] = 0; } if ( isset( $this->transient_data['total_count'] ) ) { $this->transient_data['total_count'] = intval( $this->transient_data['total_count'] ); } else { $this->transient_data['total_count'] = 0; } if ( ( ! empty( $this->transient_data['result_count'] ) ) && ( ! empty( $this->transient_data['total_count'] ) ) && ( $this->transient_data['result_count'] != $this->transient_data['total_count'] ) ) { $show_progess = true; ?>

      transient_data; $data = $this->build_progress_output( $data ); if ( ( isset( $data['progress_percent'] ) ) && ( ! empty( $data['progress_percent'] ) ) ) { $progress_meter_style = 'width: ' . $data['progress_percent'] . '%'; } if ( ( isset( $data['progress_label'] ) ) && ( ! empty( $data['progress_label'] ) ) ) { $progress_label = $data['progress_label']; } if ( ( isset( $data['progress_slug'] ) ) && ( ! empty( $data['progress_slug'] ) ) ) { $progress_slug = 'progress-label-' . $data['progress_slug']; } } ?>
      init_process_times(); if ( ( isset( $data['nonce'] ) ) && ( ! empty( $data['nonce'] ) ) ) { if ( ( wp_verify_nonce( $data['nonce'], 'learndash-data-upgrades-' . $this->data_slug . '-' . get_current_user_id() ) ) && ( current_user_can( LEARNDASH_ADMIN_CAPABILITY_CHECK ) ) ) { $this->transient_key = $this->data_slug; if ( ( isset( $data['init'] ) ) && ( true == $data['init'] ) ) { unset( $data['init'] ); if ( ( ! isset( $data['continue'] ) ) || ( 'true' != $data['continue'] ) ) { /** * Transient_data is used to store the local server state information and will * saved in a transient type options variable. */ $this->transient_data = array(); // Hold the number of completed/processed items. $this->transient_data['result_count'] = 0; $this->transient_data['current_course'] = array(); $this->transient_data['progress_started'] = time(); $this->transient_data['progress_user'] = get_current_user_id(); $this->query_items(); } else { $this->transient_data = $this->get_transient( $this->transient_key ); } $this->set_option_cache( $this->transient_key, $this->transient_data ); } else { $this->transient_data = $this->get_transient( $this->transient_key ); if ( ( ! isset( $this->transient_data['process_courses'] ) ) || ( empty( $this->transient_data['process_courses'] ) ) ) { $this->query_items(); } if ( ( isset( $this->transient_data['process_courses'] ) ) && ( ! empty( $this->transient_data['process_courses'] ) ) ) { foreach ( $this->transient_data['process_courses'] as $course_idx => $course_id ) { $course_id = intval( $course_id ); if ( ( ! isset( $this->transient_data['current_course']['course_id'] ) ) || ( empty( $this->transient_data['current_course']['course_id'] ) ) ) { $this->transient_data['current_course'][ $course_id ] = array(); } $course_complete = $this->process_course_access_list( $course_id ); if ( true === $course_complete ) { $this->transient_data['current_course'] = 0; unset( $this->transient_data['process_courses'][ $course_idx ] ); $this->transient_data['result_count'] = (int) $this->transient_data['result_count'] + 1; $this->transient_data['current_course'] = array(); } $this->set_option_cache( $this->transient_key, $this->transient_data ); if ( $this->out_of_timer() ) { break; } } } } } } $data = $this->build_progress_output( $data ); // If we are at 100% then we update the internal data settings so other parts of LD know the upgrade has been run. if ( ( isset( $data['progress_percent'] ) ) && ( 100 == $data['progress_percent'] ) ) { $this->set_last_run_info( $data ); $data['last_run_info'] = $this->get_last_run_info(); $this->remove_transient( $this->transient_key ); } return $data; } /** * Common function to query needed items. * * @since 2.6.0 * * @param boolean $increment_paged default true to increment paged. */ private function query_items( $increment_paged = true ) { // Initialize or increment the current paged or items. if ( ! isset( $this->transient_data['paged'] ) ) { $this->transient_data['paged'] = 1; } else { if ( true === $increment_paged ) { $this->transient_data['paged'] = (int) $this->transient_data['paged'] + 1; } } $this->transient_data['query_args'] = array( 'post_type' => 'sfwd-courses', 'post_status' => 'any', 'fields' => 'ids', 'posts_per_page' => LEARNDASH_LMS_DEFAULT_DATA_UPGRADE_BATCH_SIZE, 'paged' => $this->transient_data['paged'], //'post__in' => array(55482), ); $this->transient_data['query_args'] = apply_filters( 'learndash_data_upgrade_query', $this->transient_data['query_args'], $this->data_slug ); $courses_query = new WP_Query( $this->transient_data['query_args'] ); if ( is_a( $courses_query, 'WP_Query' ) ) { $this->transient_data['total_count'] = intval( $courses_query->found_posts ); $this->transient_data['process_courses'] = $courses_query->posts; } } /** * Common function to build the returned data progress output. * * @since 2.6.0 * * @param array $data Array of existing data elements. * @return array or data. */ private function build_progress_output( $data = array() ) { if ( isset( $this->transient_data['result_count'] ) ) { $data['result_count'] = intval( $this->transient_data['result_count'] ); } else { $data['result_count'] = 0; } if ( isset( $this->transient_data['total_count'] ) ) { $data['total_count'] = intval( $this->transient_data['total_count'] ); } else { $data['total_count'] = 0; } if ( ! empty( $data['total_count'] ) ) { $data['progress_percent'] = ( $data['result_count'] / $data['total_count'] ) * 100; } else { $data['progress_percent'] = 0; } if ( 100 == $data['progress_percent'] ) { $progress_status = __( 'Complete', 'learndash' ); $data['progress_slug'] = 'complete'; } else { if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { $progress_status = __( 'In Progress', 'learndash' ); $data['progress_slug'] = 'in-progress'; } else { $progress_status = __( 'Incomplete', 'learndash' ); $data['progress_slug'] = 'in-complete'; } } $data['progress_label'] = sprintf( // translators: placeholders: result count, total count. esc_html_x( '%1$s: %2$d of %3$d Courses', 'placeholders: progress status, result count, total count', 'learndash' ), $progress_status, $data['result_count'], $data['total_count'] ); return $data; } /** * Convert single course access list. * * @since 2.3 * * @param int $course_id Course ID of post to convert. * @return boolean true if complete, false if not. */ private function process_course_access_list( $course_id = 0 ) { $course_id = absint( $course_id ); if ( ( ! isset( $this->transient_data['current_course'][ $course_id ]['course_access_list'] ) ) || ( empty( $this->transient_data['current_course'][ $course_id ]['course_access_list'] ) ) ) { $this->transient_data['current_course'][ $course_id ]['course_access_list'] = array(); $this->transient_data['current_course'][ $course_id ]['course_access_list_new'] = array(); $course_access_list = $this->get_course_access_list( $course_id ); if ( ! empty( $course_access_list ) ) { $this->transient_data['current_course'][ $course_id ]['course_access_list'] = $course_access_list; } } if ( ( ! empty( $this->transient_data['current_course'][ $course_id ]['course_access_list'] ) ) && ( ! empty( $this->transient_data['current_course'][ $course_id ]['course_access_list'] ) ) ) { foreach( $this->transient_data['current_course'][ $course_id ]['course_access_list'] as $idx => $user_id ) { if ( $this->out_of_timer() ) { return; } $user_id = absint( $user_id ); $user = get_user_by( 'id', $user_id ); if ( ! is_a( $user, 'WP_User' ) ) { learndash_report_clear_user_activity_by_types( $user_id ); } else { $course_activity = $this->get_course_activity_access_for_user( $course_id, $user_id ); if ( ! empty( $course_activity ) ) { $course_activity['changed'] = false; $course_activity['activity_id'] = absint( $course_activity['activity_id'] ); $course_activity['user_id'] = absint( $course_activity['user_id'] ); $course_activity['post_id'] = absint( $course_activity['post_id'] ); $course_activity['course_id'] = absint( $course_activity['course_id'] ); if ( ( empty( $course_activity['course_id'] ) ) || ( $course_activity['course_id'] !== $course_activity['post_id'] ) ) { $course_activity['course_id'] = $course_activity['post_id']; $course_activity['changed'] = true; } $course_activity['activity_started'] = absint( $course_activity['activity_started'] ); $course_activity['activity_completed'] = absint( $course_activity['activity_completed'] ); $course_activity['activity_updated'] = absint( $course_activity['activity_updated'] ); } else { $course_activity['changed'] = true; $course_activity['activity_type'] = 'access'; $course_activity['user_id'] = absint( $user_id ); $course_activity['post_id'] = absint( $course_id ); $course_activity['course_id'] = absint( $course_id ); $course_activity['activity_started'] = 0; $course_activity['activity_completed'] = 0; $course_activity['activity_updated'] = 0; } $user_meta_course_access = get_user_meta( $user_id, 'course_' . $course_id . '_access_from', true ); $user_meta_course_access = absint( $user_meta_course_access ); $user_meta_course_expire = get_user_meta( $user_id, 'learndash_course_expired_' . $course_id, true ); $user_meta_course_expire = absint( $user_meta_course_expire ); if ( empty( $user_meta_course_expire ) ) { if ( ! empty( $user_meta_course_access ) ) { if ( $course_activity['activity_started'] !== $user_meta_course_access ) { $course_activity['activity_started'] = $user_meta_course_access; if ( empty( $course_activity['activity_updated'] ) ) { $course_activity['activity_updated'] = $course_activity['activity_started']; } $course_activity['changed'] = true; } } else { $user_meta_course_access = time(); update_user_meta( $user_id, 'course_' . $course_id . '_access_from', $user_meta_course_access ); $course_activity['activity_started'] = $user_meta_course_access; if ( empty( $course_activity['activity_updated'] ) ) { $course_activity['activity_updated'] = $course_activity['activity_started']; } $course_activity['changed'] = true; } } else { if ( ( ! empty( $user_meta_course_expire ) ) && ( $course_activity['activity_completed'] !== $user_meta_course_expire ) ) { $course_activity['activity_completed'] = $user_meta_course_expire; if ( empty( $course_activity['activity_updated'] ) ) { $course_activity['activity_updated'] = $course_activity['activity_completed']; } $course_activity['changed'] = true; } // If course access has expired and we still have the user meta course access we need to remove it. if ( ! empty( $user_meta_course_access ) ) { delete_user_meta( $user_id, 'course_' . $course_id . '_access_from' ); } } if ( true === $course_activity['changed'] ) { $course_activity['data_upgrade'] = true; learndash_update_user_activity( $course_activity ); } // Ad the processeduser to our master list. This will update the 'course_access_list' meta when done. $this->transient_data['current_course'][ $course_id ]['course_access_list_new'][] = $user_id; } unset( $this->transient_data['current_course'][ $course_id ]['course_access_list'][ $idx ] ); } } if ( ( isset( $this->transient_data['current_course'][ $course_id ]['course_access_list_new'] ) ) && ( ! empty( $this->transient_data['current_course'][ $course_id ]['course_access_list_new'] ) ) ) { $course_access_list_new = learndash_convert_course_access_list( $this->transient_data['current_course'][ $course_id ]['course_access_list_new'] ); //update_post_meta( $course_id, 'course_access_list_new', $course_access_list_new ); learndash_update_setting( $course_id, 'course_access_list', $course_access_list_new ); $this->remove_course_activity_access( $course_id, $this->transient_data['current_course'][ $course_id ]['course_access_list_new'] ); //$course_access_list_new = $this->transient_data['current_course'][ $course_id ]['course_access_list_new']; //$course_access_list = $this->get_course_access_list( $course_id ); //$course_access_list = learndash_convert_course_access_list( $course_access_list, true ); //$course_access_list_diff_array = array_diff( $course_access_list, $course_access_list_new ); } else { delete_post_meta( $course_id, 'course_access_list_new' ); } return true; } private function get_course_access_list( $course_id = 0 ) { $course_access_list = array(); if ( ! empty( $course_id ) ) { $course_access_list_setting = learndash_get_setting( $course_id, 'course_access_list' ); $course_access_list_setting = learndash_convert_course_access_list( $course_access_list_setting, true ); //error_log('course_access_list_setting
      '. print_r($course_access_list_setting, true) .'
      '); $course_access_list_post_meta = get_post_meta( $course_id, 'course_access_list', true ); $course_access_list_post_meta = learndash_convert_course_access_list( $course_access_list_post_meta, true ); //error_log('course_access_list_post_meta
      '. print_r($course_access_list_post_meta, true) .'
      '); $course_access_list_user_meta = learndash_get_course_users_access_from_meta( $course_id ); $course_access_list_user_meta = learndash_convert_course_access_list( $course_access_list_user_meta, true ); //error_log('course_access_list_user_meta
      '. print_r($course_access_list_user_meta, true) .'
      '); $course_access_list = array_merge( $course_access_list_setting, $course_access_list_post_meta, $course_access_list_user_meta ); $course_access_list = array_unique( $course_access_list ); if ( ! empty( $course_access_list ) ) { asort( $course_access_list ); //error_log('course_access_list
      '. print_r($course_access_list, true) .'
      '); //$this->transient_data['current_course'][ $course_id ]['course_access_list'] = $course_access_list; } } return $course_access_list; } private function get_course_activity_access_for_user( $course_id = 0, $user_id = 0 ) { global $wpdb; if ( ( ! empty( $course_id ) ) && ( ! empty( $user_id ) ) ) { $sql_str = $wpdb->prepare( "SELECT * FROM ". LDLMS_DB::get_table_name( 'user_activity' ) ." WHERE activity_type=%s AND user_id = %d AND ( post_id = %d OR course_id = %d )", 'access', $user_id, $course_id, $course_id ); $activity_row = $wpdb->get_row( $sql_str, ARRAY_A ); return $activity_row; } } private function remove_course_activity_access( $course_id = 0, $user_ids = array() ) { global $wpdb; if ( ( ! empty( $course_id ) ) && ( ! empty( $user_ids ) ) ) { $sql_str = $wpdb->prepare( "SELECT activity_id FROM ". LDLMS_DB::get_table_name( 'user_activity' ) ." WHERE activity_type=%s AND ( post_id = %d OR course_id = %d )", 'access', $course_id, $course_id ); $sql_str .= "AND user_id NOT IN (" . implode( ',', $user_ids) . ")"; $activity_ids = $wpdb->get_col( $sql_str ); if ( ! empty( $activity_ids ) ) { learndash_report_clear_by_activity_ids( $activity_ids ); } } } // End of functions. } } add_action( 'learndash_data_upgrades_init', function() { Learndash_Admin_Data_Upgrades_Course_Access_List_Convert::add_instance(); } ); PKc\OORORkincludes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-rename_wpproquiz-tables.phpnuW+Adata_slug = 'rename-wpproquiz-tables'; parent::__construct(); parent::register_upgrade_action(); } public function init_settings() { $this->settings = $this->get_data_settings( $this->data_slug ); $_data_settings_changed = false; if ( ! isset( $this->settings['prefixes'] ) ) { $ld_prior_version = $this->get_data_settings( 'prior_version' ); /** * On a new install we have do do a secondary check. The ld prior version logic was only added * in LD 2.3.0. If this prior to that we need to ensure we don't treat it as a 'new' install'. */ if ( ( empty( $ld_prior_version ) ) || ( '0.0.0.0' === $ld_prior_version ) || ( 'new' === $ld_prior_version ) ) { // Check if we can find the WPProQuiz tables. $this->settings['prefixes'] = array( 'current' => LEARNDASH_PROQUIZ_DATABASE_PREFIX_SUB_DEFAULT, 'alt' => LEARNDASH_LMS_DATABASE_PREFIX_SUB ); $this->build_tables_lists(); $legacy_proquiz_tables = $this->check_tables_lists( $this->tables_lists['wp_'] ); // If we find the WPProQuiz table with the legacy prefix we set the show upgrade to allow future prefix changes. if ( ( isset( $legacy_proquiz_tables['quiz_master']['exists'] ) ) && ( true === $legacy_proquiz_tables['quiz_master']['exists'] ) ) { $this->settings['show_upgrade'] = true; } else { // If we don't find the legacy WPProQuiz table we assume this is a new install and don't show the upgrade section. $this->settings['show_upgrade'] = false; $this->settings['prefixes'] = array( 'current' => LEARNDASH_LMS_DATABASE_PREFIX_SUB, 'alt' => LEARNDASH_PROQUIZ_DATABASE_PREFIX_SUB_DEFAULT ); } $_data_settings_changed = true; } else { $_data_settings_changed = true; $this->settings['show_upgrade'] = true; $this->settings['prefixes'] = array( 'current' => LEARNDASH_PROQUIZ_DATABASE_PREFIX_SUB_DEFAULT, 'alt' => LEARNDASH_LMS_DATABASE_PREFIX_SUB ); } } if ( ! isset( $this->settings['show_upgrade'] ) ) { $_data_settings_changed = true; $this->settings['show_upgrade'] = true; } if ( true === $_data_settings_changed ) { $this->set_data_settings( $this->data_slug, $this->settings ); } return $this->settings; } /** * Show data upgrade row for this instance. * * @since 2.3 */ public function show_upgrade_action() { global $wpdb; $this->init_settings(); if ( true !== apply_filters( 'learndash_show_upgrade_section', $this->settings['show_upgrade'], $this->data_slug ) ) { return; } $show_upgrade = $this->settings['show_upgrade']; $this->build_tables_lists(); if ( ( ! isset( $this->tables_lists[ $this->settings['prefixes']['current'] ] ) ) || ( ! isset( $this->tables_lists[ $this->settings['prefixes']['alt'] ] ) ) ) { $show_upgrade = false; } $this->tables_lists[ $this->settings['prefixes']['current'] ] = $this->check_tables_lists( $this->tables_lists[ $this->settings['prefixes']['current'] ] ); foreach( $this->tables_lists[ $this->settings['prefixes']['current'] ] as $table_key => $table_set ) { if ( true !== $table_set['exists'] ) { $show_upgrade = false; break; } } // Check that tables for the current prefix are NOT present. $this->tables_lists[ $this->settings['prefixes']['alt'] ] = $this->check_tables_lists( $this->tables_lists[ $this->settings['prefixes']['alt'] ] ); foreach( $this->tables_lists[ $this->settings['prefixes']['alt'] ] as $table_key => $table_set ) { if ( true === $table_set['exists'] ) { $show_upgrade = false; break; } } ?>

      It is recommended you set your site to maintenance mode before performing this upgrade.', 'learndash' ) ); ?>

      settings['prefixes']['current'], LEARNDASH_PROQUIZ_DATABASE_PREFIX_SUB_DEFAULT ); ?> />
      settings['prefixes']['current'], LEARNDASH_LMS_DATABASE_PREFIX_SUB ); ?> />

      get_last_run_info(); ?>

      &$table_set ) { if ( isset( $table_set['checked'] ) ) { continue; } if ( ! isset( $table_set['name'] ) ) { continue; } $table_set['exists'] = $this->check_table_exists( $table_set['name'] ); $table_set['checked'] = time(); } return $table_list; } } public function check_table_exists( $table_name = '' ) { global $wpdb; if ( ! empty( $table_name ) ) { $db_table_name = $wpdb->get_var( "SHOW TABLES LIKE '" . $table_name . "'" ); if ( $db_table_name == $table_name ) { return true; } else { return false; } } } public function build_tables_lists() { global $wpdb; $this->tables_base = LDLMS_DB::get_tables_base( 'wpproquiz' ); $this->tables_lists = array(); //$table_sub_prefixes = array_keys( $this->settings['prefixes'] ); foreach( $this->tables_base as $table_key => $table_name ) { foreach( $this->settings['prefixes'] as $table_sub_prefix ) { if ( ! isset( $this->tables_lists[ $table_sub_prefix ] ) ) { $this->tables_lists[ $table_sub_prefix ] = array(); } $this->tables_lists[ $table_sub_prefix ][ $table_key ] = array( 'name' => $wpdb->prefix . $table_sub_prefix . 'pro_quiz_' . $table_name ); } } } /** * Class method for the AJAX update logic * This function will determine what users need to be converted. Then the course and quiz functions * will be called to convert each individual user data set. * * @since 2.3 * * @param array $data Post data from AJAX call. * @return array $data Post data from AJAX call. */ public function process_upgrade_action( $data = array() ) { global $wpdb; $this->init_process_times(); if ( ( isset( $data['nonce'] ) ) && ( ! empty( $data['nonce'] ) ) ) { if ( wp_verify_nonce( $data['nonce'], 'learndash-data-upgrades-' . $this->data_slug . '-' . get_current_user_id() ) ) { $this->init_settings(); $this->transient_key = $this->data_slug; if ( ( isset( $data['init'] ) ) && ( true == $data['init'] ) ) { unset( $data['init'] ); /** * Transient_data is used to store the local server state information and will * saved in a transient type options variable. */ $this->transient_data = array(); $this->transient_data['proquiz_prefix'] = esc_attr( $data['proquiz_prefix'] ); //$this->transient_data['proquiz_rename'] = absint( $data['proquiz_rename'] ); $this->transient_data['result_count'] = 0; $this->transient_data['current_item'] = array(); $this->transient_data['progress_started'] = time(); $this->transient_data['progress_user'] = get_current_user_id(); $this->transient_data['completed_items'] = array(); $this->query_items(); $this->set_option_cache( $this->transient_key, $this->transient_data ); } else { $this->transient_data = $this->get_transient( $this->transient_key ); if ( ( isset( $this->transient_data['process_items'] ) ) && ( ! empty( $this->transient_data['process_items'] ) ) ) { foreach ( $this->transient_data['process_items'] as $old_table => $new_table ) { $item_complete = $this->rename_wpproquiz_table( $old_table, $new_table ); if ( false !== $item_complete ) { if ( ! isset( $this->transient_data['completed_items'] ) ) { $this->transient_data['completed_items'] = array(); } unset( $this->transient_data['process_items'][ $old_table ] ); $this->transient_data['result_count'] = (int) $this->transient_data['result_count'] + 1; } else { exit(); } $this->set_option_cache( $this->transient_key, $this->transient_data ); if ( $this->out_of_timer() ) { break; } } } } } } $data = $this->build_progress_output( $data ); // If we are at 100% then we update the internal data settings so other parts of LD know the upgrade has been run. if ( ( isset( $data['progress_percent'] ) ) && ( 100 == $data['progress_percent'] ) ) { $data['completed_items'] = $this->transient_data['completed_items']; if ( $this->transient_data['proquiz_prefix'] == LEARNDASH_LMS_DATABASE_PREFIX_SUB ) { $data['prefixes'] = array( 'current' => LEARNDASH_LMS_DATABASE_PREFIX_SUB, 'alt' => LEARNDASH_PROQUIZ_DATABASE_PREFIX_SUB_DEFAULT ); } else if ( $this->transient_data['proquiz_prefix'] == LEARNDASH_PROQUIZ_DATABASE_PREFIX_SUB_DEFAULT ) { $data['prefixes'] = array( 'current' => LEARNDASH_PROQUIZ_DATABASE_PREFIX_SUB_DEFAULT, 'alt' => LEARNDASH_LMS_DATABASE_PREFIX_SUB ); } $this->set_last_run_info( $data ); $data['last_run_info'] = $this->get_last_run_info(); $this->remove_transient( $this->transient_key ); } return $data; } /** * Common function to query needed items. * * @since 2.6.0 * * @param boolean $increment_paged default true to increment paged. */ protected function query_items( ) { $process_tables = array(); //if ( $this->transient_data['proquiz_rename'] ) { //$current_prefix_key = array_search( $this->transient_data['proquiz_prefix'], $this->settings['prefixes'] ); $this->build_tables_lists(); foreach( $this->settings['prefixes'] as $prefix_key => $prefix ) { if ( ( isset( $this->tables_lists[ $prefix ] ) ) && ( ! empty( $this->tables_lists[ $prefix ] ) ) ) { $this->tables_lists[ $prefix ] = $this->check_tables_lists( $this->tables_lists[ $prefix ] ); } } if ( LEARNDASH_PROQUIZ_DATABASE_PREFIX_SUB_DEFAULT === $this->transient_data['proquiz_prefix'] ) { $dest_prefix = LEARNDASH_PROQUIZ_DATABASE_PREFIX_SUB_DEFAULT; $source_prefix = LEARNDASH_LMS_DATABASE_PREFIX_SUB; } else if ( LEARNDASH_LMS_DATABASE_PREFIX_SUB === $this->transient_data['proquiz_prefix'] ) { $dest_prefix = LEARNDASH_LMS_DATABASE_PREFIX_SUB; $source_prefix = LEARNDASH_PROQUIZ_DATABASE_PREFIX_SUB_DEFAULT; } foreach( $this->tables_lists[ $source_prefix ] as $source_table_key => $source_table_set ) { if ( ( isset( $source_table_set['exists'] ) ) && ( true === $source_table_set['exists'] ) ) { if ( ( isset( $this->tables_lists[ $dest_prefix ][ $source_table_key ]['exists'] ) ) && ( true !== $this->tables_lists[ $dest_prefix ][ $source_table_key ]['exists'] ) ) { $process_tables[ $source_table_set['name'] ] = $this->tables_lists[ $dest_prefix ][ $source_table_key ]['name']; } } } //} $this->transient_data['total_count'] = count( $process_tables ); $this->transient_data['process_items'] = $process_tables; } /** * Common function to build the returned data progress output. * * @since 2.6.0 * * @param array $data Array of existing data elements. * @return array or data. */ protected function build_progress_output( $data = array() ) { if ( isset( $this->transient_data['result_count'] ) ) { $data['result_count'] = intval( $this->transient_data['result_count'] ); } else { $data['result_count'] = 0; } if ( isset( $this->transient_data['total_count'] ) ) { $data['total_count'] = intval( $this->transient_data['total_count'] ); } else { $data['total_count'] = 0; } if ( ! empty( $data['total_count'] ) ) { $data['progress_percent'] = ( $data['result_count'] / $data['total_count'] ) * 100; } else { $data['progress_percent'] = 100; } if ( 100 == $data['progress_percent'] ) { $progress_status = __( 'Complete', 'learndash' ); $data['progress_slug'] = 'complete'; } else { if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { $progress_status = __( 'In Progress', 'learndash' ); $data['progress_slug'] = 'in-progress'; } else { $progress_status = __( 'Incomplete', 'learndash' ); $data['progress_slug'] = 'in-complete'; } } $data['progress_label'] = sprintf( // translators: placeholders: result count, total count. esc_html_x( '%1$s: %2$d of %3$d ProQuiz Table', 'placeholders: progress status, result count, total count', 'learndash' ), $progress_status, $data['result_count'], $data['total_count'] ); return $data; } /** * Convert WPProQuiz Database to new name * * @since 2.6.0 * * @param array $item Item to convert. * * @return mixed New table name (string) if complete, false if not. */ private function rename_wpproquiz_table( $old_table = '', $new_table = '' ) { global $wpdb; $sql_rename = sprintf( "ALTER TABLE `%s` RENAME `%s`", $old_table, $new_table ); $ret_rename = $wpdb->query( $sql_rename ); if ( ( $this->check_table_exists( $new_table ) ) && ( ! $this->check_table_exists( $old_table ) ) ) { return true; } else { return false; } } // End of functions. } } add_action( 'learndash_data_upgrades_init', function() { Learndash_Admin_Data_Upgrades_Rename_WPProQuiz_Tables::add_instance(); } ); PKc\|9includes/admin/onboarding-templates/onboarding-groups.phpnuW+A
      PKc\TB ?includes/admin/onboarding-templates/onboarding-sfwd-lessons.phpnuW+A
      PKc\hM@includes/admin/onboarding-templates/onboarding-sfwd-question.phpnuW+A
      PKc\pLlܸ =includes/admin/onboarding-templates/onboarding-sfwd-topic.phpnuW+A
      PKc\5E&Dincludes/admin/onboarding-templates/onboarding-sfwd-certificates.phpnuW+A
      PKc\{ { ?includes/admin/onboarding-templates/onboarding-sfwd-courses.phpnuW+A
      PKc\ˑP P <includes/admin/onboarding-templates/onboarding-sfwd-quiz.phpnuW+A
      PKc\W9B))*includes/admin/ld-quiz-builder-helpers.phpnuW+Afetch( $question_pro_id ); } else { $question_model = $question_mapper->fetch( null ); } $question_data = $question_model->get_object_as_array(); $controller_question = new \WpProQuiz_Controller_Question(); if ( $question_model && is_a( $question_model, 'WpProQuiz_Model_Question' ) ) { $answers_data = $controller_question->setAnswerObject( $question_model ); } else { $answers_data = $controller_question->setAnswerObject(); } // Store answers in our format used at FE. $processed_answers = []; foreach ( $answers_data as $answer_type => $answers ) { foreach ( $answers as $answer ) { $processed_answers[ $answer_type ][] = [ 'answer' => $answer->getAnswer(), 'html' => $answer->isHtml(), 'points' => $answer->getPoints(), 'correct' => $answer->isCorrect(), 'sortString' => $answer->getSortString(), 'sortStringHtml' => $answer->isSortStringHtml(), 'graded' => $answer->isGraded(), 'gradingProgression' => $answer->getGradingProgression(), 'gradedType' => $answer->getGradedType(), 'type' => 'answer', ]; } } // Output question's data and answers. $output_questions[] = [ 'ID' => $question_id, 'expanded' => false, 'post_title' => $question_data['_title'], 'post_content' => $question_data['_question'], 'edit_link' => get_edit_post_link( $question_id, '' ), 'type' => get_post_type( $question_id ), 'question_type' => $question_data['_answerType'], 'points' => $question_data['_points'], 'answers' => $processed_answers, 'correctMsg' => $question_data['_correctMsg'], 'incorrectMsg' => $question_data['_incorrectMsg'], 'correctSameText' => $question_data['_correctSameText'], 'tipEnabled' => $question_data['_tipEnabled'], 'tipMsg' => $question_data['_tipMsg'], ]; } } } // Output all the quiz's questions. $data['outline'] = [ 'questions' => $output_questions, ]; // Add labels and data to Quiz Builder at FE. $data['labels']['questions_types'] = $GLOBALS['learndash_question_types']; $data['questions_types_map'] = [ 'single' => 'classic_answer', 'multiple' => 'classic_answer', 'sort_answer' => 'sort_answer', 'matrix_sort_answer' => 'matrix_sort_answer', 'cloze_answer' => 'cloze_answer', 'free_answer' => 'free_answer', 'assessment_answer' => 'assessment_answer', 'essay' => 'essay', ]; $data['labels']['points'] = [ 'singular' => esc_html__( 'point', 'learndash' ), 'plural' => esc_html__( 'points', 'learndash' ), ]; $data['labels']['questions_types_description'] = [ 'free_answer' => esc_html_x( 'correct answers (one per line) (answers will be converted to lower case)', 'Question type description for Free Answers', 'learndash' ), 'sort_answer' => esc_html_x( 'Please sort the answers in the right order with the "move" button. The answers will be displayed randomly.', 'Question type description for Sort Answers', 'learndash' ), 'cloze_answer' => [ wp_kses_post( __( 'Use { } to mark a gap and correct answer:
      I {play} soccer.', 'learndash' ) ), wp_kses_post( __( 'Use [ ] to mark multiple correct answers:
      I {[love][hate]} soccer.', 'learndash' ) ), ], 'essay' => [ esc_html__( 'How should the user submit their answer?', 'learndash' ), sprintf( // translators: placeholders: course esc_html_x( 'This is a question that can be graded and potentially prevent a user from progressing to the next step of the %s.', 'placeholders: course', 'learndash' ), \learndash_get_custom_label_lower( 'course' ) ), esc_html__( 'The user can only progress if the essay is marked as "Graded" and if the user has enough points to move on.', 'learndash' ), sprintf( // translators: placeholders: quiz esc_html_x( 'How should the answer to this question be marked and graded upon %s submission?', 'placeholders: quiz', 'learndash' ), \learndash_get_custom_label_lower( 'quiz' ) ), ], 'assessment_answer' => [ wp_kses_post( __( 'Use { } to mark an assessment:
      Less true { [1] [2] [3] [4] [5] } More true', 'learndash' ) ), wp_kses_post( __( 'Use [ ] to mark selectable items:
      Less true { [A] [B] [C] } More true', 'learndash' ) ), ], ]; return $data; } //add_filter( 'learndash_header_data', 'LearnDash\Admin\QuizBuilderHelpers\get_quiz_data', 100 ); PKc\wa  includes/admin/ld-gutenberg.phpnuW+Ascript_data ) ) { $data = $this->script_data; } if ( ! isset( $data['ajaxurl'] ) ) { $data['ajaxurl'] = admin_url( 'admin-ajax.php' ); } $data = array( 'json' => json_encode( $data ) ); wp_localize_script( 'sfwd-module-script', 'sfwd_data', $data ); wp_enqueue_style( 'learndash-admin-binary-selector-style', LEARNDASH_LMS_PLUGIN_URL . 'assets/css/learndash-admin-binary-selector' . leardash_min_asset() . '.css', array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'learndash-admin-binary-selector-style', 'rtl', 'replace' ); $learndash_assets_loaded['styles']['learndash-admin-binary-selector-style'] = __FUNCTION__; } /** * Function called to show / edit WP user profile. * Fires on action 'show_user_profile' * Fires on action 'edit_user_profile' * * @param WP_User $user User object instance. */ public function show_user_profile( WP_User $user ) { $this->show_user_courses( $user ); $this->show_user_groups( $user ); $this->show_leader_groups( $user ); $this->show_user_course_info( $user ); //$this->show_user_course_progress( $user ); //$this->show_user_upgrade_data_link( $user ); $this->show_user_delete_data_link( $user ); //$user_couses = get_user_meta( $user->ID, '_sfwd-course_progress', true ); //error_log( 'user_couses
      '. print_r( $user_couses, true ) .'
      ' ); //$user_quizzes = get_user_meta( $user->ID, '_sfwd-quizzes', true ); //error_log( 'user_quizzes
      '. print_r( $user_quizzes, true ) .'
      ' ); } /** * Displays users course information at bottom of profile * called by show_user_profile(). * * @since 2.1.0 * * @param WP_User $user wp user object. */ private function show_user_course_info( WP_User $user ) { $user_id = $user->ID; echo '

      ' . sprintf( // translators: placeholder: Course. esc_html_x( '%s Info', 'Course Info Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ) . '

      '; $atts = array( 'progress_num' => LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_General_Per_Page', 'progress_num' ), 'progress_orderby' => 'title', 'progress_order' => 'ASC', 'quiz_num' => LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_General_Per_Page', 'quiz_num' ), 'quiz_orderby' => 'taken', 'quiz_order' => 'DESC', ); $atts = apply_filters( 'learndash_profile_course_info_atts', $atts, $user ); echo SFWD_LMS::get_course_info( $user_id, $atts ); } /* function show_user_upgrade_data_link( $user ) { ?>

      prepare( "SELECT quiz_id as proquiz_id FROM " . LDLMS_DB::get_table_name( 'quiz_lock' ) . " WHERE user_id=%d", $user->ID ); $proquiz_ids = $wpdb->get_col( $sql_str ); if ( ! empty( $proquiz_ids ) ) { $quiz_ids = array(); foreach ( $proquiz_ids as $proquiz_id ) { $quiz_id = learndash_get_quiz_id_by_pro_quiz_id( $proquiz_id ); if ( ! empty( $quiz_id ) ) { $quiz_ids[] = $quiz_id; } } if ( ! empty( $quiz_ids ) ) { $quiz_query_args = array( 'post_type' => 'sfwd-quiz', 'post_status' => array( 'publish' ), 'post__in' => $quiz_ids, 'nopaging' => true, 'orderby' => 'title', 'order' => 'ASC', ); $quiz_query = new WP_Query( $quiz_query_args ); if ( ! empty( $quiz_query->posts ) ) { ?>

      ID ) ) { /** * See example if 'learndash_override_course_auto_enroll' filter * https://bitbucket.org/snippets/learndash/kon6y * * @since 2.3 */ $course_autoenroll_admin = LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_General_Admin_User', 'courses_autoenroll_admin_users' ); if ( 'yes' === $course_autoenroll_admin ) { $course_autoenroll_admin = true; } else { $course_autoenroll_admin = false; } $course_autoenroll_admin_filtered = apply_filters( 'learndash_override_course_auto_enroll', $course_autoenroll_admin, $user->ID ); if ( $course_autoenroll_admin_filtered ) { ?>

      $user->ID, 'selected_ids' => learndash_user_get_enrolled_courses( $user->ID, array(), true ), ) ); $ld_binary_selector_user_courses->show(); } } /** * Show User Enrolled Groups Binary Selector. * called by show_user_profile(). * * @param WP_User $user wp_user object. */ private function show_user_groups( WP_User $user ) { if ( current_user_can( 'edit_users' ) ) { $ld_binary_selector_user_groups = new Learndash_Binary_Selector_User_Groups( array( 'user_id' => $user->ID, 'selected_ids' => learndash_get_users_group_ids( $user->ID, true ), ) ); $ld_binary_selector_user_groups->show(); } } /** * Show User Leader of Groups Binary Selector. * called by show_user_profile(). * * @param WP_User $user wp_user object. */ private function show_leader_groups( WP_User $user ) { if ( current_user_can( 'edit_users' ) ) { if ( learndash_is_group_leader_user( $user->ID ) ) { $ld_binary_selector_leader_groups = new Learndash_Binary_Selector_Leader_Groups( array( 'user_id' => $user->ID, 'selected_ids' => learndash_get_administrators_group_ids( $user->ID, true ), ) ); $ld_binary_selector_leader_groups->show(); } } } /** * Show User Courses Progress. * called by show_user_profile(). * * @param WP_User $user wp_user object. */ private function show_user_course_progress( WP_User $user ) { if ( current_user_can( 'edit_users' ) ) { $user_courses_registered = ld_get_mycourses( $user->ID ); $user_courses_registered = ! empty( $user_courses_registered ) ? $user_courses_registered : array(); $user_course_progress = get_user_meta( $user->ID, '_sfwd-course_progress', true ); $user_course_progress = ! empty( $user_course_progress ) ? $user_course_progress : array(); $courses_ids = array_merge( $user_courses_registered, array_keys( $user_course_progress ) ); if ( ! empty( $courses_ids ) ) { $course_query_args = array( 'post_type' => 'sfwd-courses', 'post_status' => 'publish', 'fields' => 'ids', 'nopaging' => true, 'orderby' => 'title', 'order' => 'ASC', 'post__in' => $courses_ids, ); $course_query = new WP_Query( $course_query_args ); if ( ( isset( $course_query->posts ) ) && ( ! empty( $course_query->posts ) ) ) { ?>

      Course Progress

      posts as $course_id ) { $course = get_post( $course_id ); $course_edit_permalink = ''; if ( current_user_can( 'edit_courses', $course->ID ) ) { $course_edit_permalink = get_permalink( $course->ID ); } ?> ID ); ?> ID, $course_id, $coursep ); $completed_on = get_user_meta( $user->ID, 'course_completed_' . $course_id, true ); if ( ! empty( $completed_on ) ) { $coursep['completed'] = $course_steps_count; $coursep['total'] = $course_steps_count; } else { $coursep['total'] = $course_steps_count; $coursep['completed'] = $course_steps_completed; if ( $coursep['completed'] > $coursep['total'] ) { $coursep['completed'] = $coursep['total']; } } } ?>
      ID ) ?>
      edit | |
      ID, $user->ID ); if ( ! empty( $since ) ) { if ( ! empty( $output_str ) ) { $output_str .= '
      '; } $output_str .= sprintf( // translators: placeholder: Started Date. esc_html_x( 'Started: %s', 'placeholder: Started date', 'learndash' ), learndash_adjust_date_time_display( $since ) ); } else { $since = learndash_user_group_enrolled_to_course_from( $user->ID, $course->ID ); if ( ! empty( $since ) ) { if ( !empty( $output_str ) ) { $output_str .= '
      '; } $output_str .= sprintf( // translators: placeholder: Started Group Date. esc_html_x( 'Started: %s (Group Access)', 'placeholder: Started Group date','learndash' ), learndash_adjust_date_time_display( $since ) ); } } // Display the Course Access if expired or expiring. $expire_access = learndash_get_setting( $course_id, 'expire_access' ); if ( ! empty( $expire_access ) ) { $expired = ld_course_access_expired( $course_id, $user->ID ); if ( $expired ) { if ( ! empty( $output_str ) ) { $output_str .= '
      '; } $output_str .= esc_html__( '(access expired)', 'learndash' ); } else { $expired_on = ld_course_access_expires_on( $course_id, $user->ID); if (!empty( $expired_on ) ) { if ( ! empty( $output_str ) ) { $output_str .= '
      '; } $output_str .= sprintf( // translators: placeholder: Course Expires Date. esc_html_x( 'Expires: %s', 'Course Expires on date', 'learndash'), learndash_adjust_date_time_display( $expired_on ) ); } } } $completed = get_user_meta( $user->ID, 'course_completed_' . $course->ID, true ); if ( ! empty( $completed ) ) { if ( ! empty( $output_str ) ) { $output_str .= '
      '; } $output_str .= sprintf( // translators: placeholder: Course Completed Data. esc_html_x( 'Completed: %s', 'placeholder: Completed date', 'learndash' ), learndash_adjust_date_time_display( $completed ) ); } echo $output_str; ?>
      $quiz_time ) ); if ( ! empty( $user_quizzes ) ) { foreach ( $user_quizzes as $q_idx => $q_item ) { if ( wp_verify_nonce( $quiz_nonce, 'remove_quiz_' . $user_id . '_' . $q_item['quiz'] . '_' . $q_item['time'] ) ) { learndash_remove_user_quiz_attempt( $user_id, array( 'time' => $q_item['time'] ) ); } } } } echo wp_json_encode( $data ); die(); } // End of functions. } } PKc\ȜrZ9Z9:includes/admin/class-learndash-admin-addons-list-table.phpnuW+A 'addon', 'plural' => 'addons', 'ajax' => true, ) ); $this->tabs = array( 'learndash' => array( 'label' => esc_html__( 'LearnDash', 'learndash' ), 'url' => add_query_arg( 'tab', 'learndash' ), ), 'third-party' => array( 'label' => esc_html__( 'Third Party', 'learndash' ), 'url' => add_query_arg( 'tab', 'third-party' ), ), ); if ( ( isset( $_GET['tab'] ) ) && ( ! empty( $_GET['tab'] ) ) ) { $current_tab = esc_attr( $_GET['tab'] ); if ( isset( $this->tabs[$current_tab] ) ) { $this->current_tab = $current_tab; } } } /** * Prepare Items. */ public function prepare_items() { if ( 'learndash' === $this->current_tab ) { $this->prepare_items_learndash(); } else if ( 'third-party' === $this->current_tab ) { $this->prepare_items_third_party(); } else { $this->items = apply_filters( 'learndash_addon_tab_items_' . $this->current_tab, array() ); } } /** * Prepare items LearnDash. */ public function prepare_items_learndash() { $this->addon_updater = new LearnDash_Addon_Updater(); $this->items = $this->addon_updater->get_addon_plugins(); if ( ! empty( $this->items ) ) { foreach ( $this->items as $item_slug => $item ) { if ( ( isset( $item['show-add-on'] ) ) && ( $item['show-add-on'] == 'no' ) ) { unset( $this->items[ $item_slug ] ); } } } } /** * Prepare Items Third Party. */ public function prepare_items_third_party() { include( ABSPATH . 'wp-admin/includes/plugin-install.php' ); $paged = $this->get_pagenum(); $per_page = 30; $installed_plugins = $this->get_installed_plugins(); $args = array( 'page' => $paged, 'per_page' => $per_page, 'fields' => array( 'last_updated' => true, 'icons' => true, 'active_installs' => true, ), // Send the locale and installed plugin slugs to the API so it can provide context-sensitive results. 'locale' => get_user_locale(), 'installed_plugins' => array_keys( $installed_plugins ), ); $args['tag'] = sanitize_title_with_dashes( 'LearnDash' ); $api = plugins_api( 'query_plugins', $args ); if ( is_wp_error( $api ) ) { $this->error = $api; return; } $this->items = $api->plugins; if ( ! empty( $this->items) ) { foreach( $this->items as $idx => $item ){ if ( 'wplms-learndash-migration' === $item['slug'] ) { unset( $this->items[ $idx ] ); } } } if ( $this->orderby ) { uasort( $this->items, array( $this, 'order_callback' ) ); } $this->set_pagination_args( array( 'total_items' => $api->info['results'], 'per_page' => $args['per_page'], ) ); if ( isset( $api->info['groups'] ) ) { $this->groups = $api->info['groups']; } if ( $installed_plugins ) { $js_plugins = array_fill_keys( array( 'all', 'search', 'active', 'inactive', 'recently_activated', 'mustuse', 'dropins' ), array() ); $js_plugins['all'] = array_values( wp_list_pluck( $installed_plugins, 'plugin' ) ); $upgrade_plugins = wp_filter_object_list( $installed_plugins, array( 'upgrade' => true ), 'and', 'plugin' ); if ( $upgrade_plugins ) { $js_plugins['upgrade'] = array_values( $upgrade_plugins ); } wp_localize_script( 'updates', '_wpUpdatesItemCounts', array( 'plugins' => $js_plugins, 'totals' => wp_get_update_data(), ) ); } } /** * Display Rows. */ public function display_rows() { if ( 'learndash' == $this->current_tab ) { $this->display_rows_learndash(); } else if ( 'third-party' == $this->current_tab ) { parent::display_rows(); } else { do_action( 'learndash_addon_display_rows_' . $this->current_tab ); } } /** * Display Rows LearnDash. */ public function display_rows_learndash() { $plugins_allowedtags = array( 'a' => array( 'href' => array(), 'title' => array(), 'target' => array() ), 'abbr' => array( 'title' => array() ), 'acronym' => array( 'title' => array() ), 'code' => array(), 'pre' => array(), 'em' => array(),'strong' => array(), 'ul' => array(), 'ol' => array(), 'li' => array(), 'p' => array(), 'br' => array() ); $group = null; foreach ( (array) $this->items as $plugin ) { if ( is_object( $plugin ) ) { $plugin = (array) $plugin; } $title = wp_kses( $plugin['name'], $plugins_allowedtags ); // Remove any HTML from the description. $description = strip_tags( $plugin['short_description'] ); $version = wp_kses( $plugin['version'], $plugins_allowedtags ); $name = strip_tags( $title . ' ' . $version ); $author = wp_kses( $plugin['author'], $plugins_allowedtags ); if ( ! empty( $author ) ) { $author = ' ' . sprintf( // translators: placeholder Author. __( 'By %s' ), $author ) . ''; } $action_links = array(); if ( current_user_can( 'install_plugins' ) || current_user_can( 'update_plugins' ) ) { if ( isset( $plugin['plugin_status'] ) ) { $status = $plugin['plugin_status']; switch ( $status['status'] ) { case 'install': if ( $status['url'] ) { /* translators: 1: Plugin name and version. */ $action_links[] = '' . __( 'Install Now', 'default' ) . ''; } break; case 'update_available': if ( $status['url'] ) { /* translators: 1: Plugin name and version */ $action_links[] = '' . __( 'Update Now', 'default' ) . ''; } break; case 'latest_installed': case 'newer_installed': if ( is_plugin_active( $status['file'] ) ) { $action_links[] = ''; } elseif ( current_user_can( 'activate_plugin', $status['file'] ) ) { $button_text = __( 'Activate', 'default' ); /* translators: %s: Plugin name */ $button_label = _x( 'Activate %s', 'plugin', 'default' ); $activate_url = add_query_arg( array( '_wpnonce' => wp_create_nonce( 'activate-plugin_' . $status['file'] ), 'action' => 'activate', 'plugin' => $status['file'], ), network_admin_url( 'plugins.php' ) ); if ( is_network_admin() ) { $button_text = __( 'Network Activate', 'default' ); /* translators: %s: Plugin name */ $button_label = _x( 'Network Activate %s', 'plugin', 'default' ); $activate_url = add_query_arg( array( 'networkwide' => 1 ), $activate_url ); } $action_links[] = sprintf( '%3$s', esc_url( $activate_url ), esc_attr( sprintf( $button_label, $plugin['name'] ) ), $button_text ); } else { $action_links[] = ''; } break; } } } $details_link = self_admin_url( 'plugin-install.php?tab=plugin-information&plugin=' . $plugin['slug'] . '&TB_iframe=true&width=600&height=550' ); /* translators: 1: Plugin name and version. */ $action_links[] = '' . __( 'More Details', 'default' ) . ''; if ( ! empty( $plugin['icons']['svg'] ) ) { $plugin_icon_url = $plugin['icons']['svg']; } elseif ( ! empty( $plugin['icons']['2x'] ) ) { $plugin_icon_url = $plugin['icons']['2x']; } elseif ( ! empty( $plugin['icons']['1x'] ) ) { $plugin_icon_url = $plugin['icons']['1x']; } else { $plugin_icon_url = $plugin['icons']['default']; } if ( ( ! empty( $plugin_icon_url ) ) && ( substr( $plugin_icon_url, 0, 2 ) != '//' ) ) { $plugin_icon_url = LEARNDASH_LMS_PLUGIN_URL . $plugin_icon_url; } else { $plugin_icon_url = LEARNDASH_LMS_PLUGIN_URL . 'assets/images-add-ons/' . basename( $plugin_icon_url ); } $last_updated_timestamp = strtotime( $plugin['last_updated'] ); ?>

      ' ) ) { echo '' . __( 'Untested with your version of WordPress', 'default' ) . ''; } elseif ( ! empty( $plugin['requires'] ) && version_compare( substr( $wp_version, 0, strlen( $plugin['requires'] ) ), $plugin['requires'], '<' ) ) { echo '' . __( 'Incompatible with your version of WordPress', 'default' ) . ''; } else { echo '' . __( 'Compatible with your version of WordPress', 'default' ) . ''; } ?>
      '; } } /** * display_tablenav. */ protected function display_tablenav( $which ) { // Empty function } /** * Get Views. * @global array $tabs * @global string $tab * * @return array */ protected function get_views() { $display_tabs = array(); $this->tabs = apply_filters( 'learndash_addon_tabs', $this->tabs ); foreach ( (array) $this->tabs as $action => $tab_set ) { $current_link_attributes = ( $action === $this->current_tab ) ? ' class="current" aria-current="page"' : ''; $new_tab = ( ( isset( $tab_set['new_tab'] ) ) && ( true === $tab_set['new_tab'] ) ) ? ' target="_blank" ' : ''; $display_tabs['plugin-install-' . $action] = '' . $tab_set['label'] . ''; } return $display_tabs; } /** * Override parent views so we can use the filter bar display. */ public function views() { $views = $this->get_views(); /** This filter is documented in wp-admin/inclues/class-wp-list-table.php */ $views = apply_filters( "views_{$this->screen->id}", $views ); $this->screen->render_screen_reader_content( 'heading_views' ); ?>
      current_tab ) { $this->show_update_button(); } ?>
      esc_attr( $_GET['page'] ), 'repo_reset' => '1', ), 'admin.php' ); echo ''. __( 'Check Updates', 'learndash' ) . ''; } } } PKc\114includes/admin/class-learndash-admin-groups-edit.phpnuW+Agroups_type ) ) { return; } wp_enqueue_script( 'learndash-admin-binary-selector-script', LEARNDASH_LMS_PLUGIN_URL . 'assets/js/learndash-admin-binary-selector' . leardash_min_asset() . '.js', array( 'jquery' ), LEARNDASH_SCRIPT_VERSION_TOKEN, true ); wp_enqueue_style( 'learndash-admin-binary-selector-style', LEARNDASH_LMS_PLUGIN_URL . 'assets/css/learndash-admin-binary-selector' . leardash_min_asset() . '.css', array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'learndash-admin-binary-selector-style', 'rtl', 'replace' ); // Add Metabox and hook for saving post metabox. add_action( 'add_meta_boxes', array( $this, 'learndash_groups_add_custom_box' ) ); add_action( 'save_post', array( $this, 'learndash_groups_save_postdata' ) ); } /** * Register Groups meta box for admin * * Managed enrolled groups, users and group leaders * * @since 2.1.2 */ public function learndash_groups_add_custom_box() { add_meta_box( 'learndash_groups', esc_html__( 'LearnDash Group Admin', 'learndash' ), array( $this, 'learndash_groups_page_box' ), $this->groups_type ); } /** * Prints content for Groups meta box for admin * * @since 2.1.2 * * @param WP_Post $post WP_Post object of group. * @return string meta box HTML output. */ public function learndash_groups_page_box( WP_Post $post ) { global $wpdb; $post_id = $post->ID; // Use nonce for verification. wp_nonce_field( plugin_basename( __FILE__ ), 'learndash_groups_nonce' ); ?>

      />

      $post_id, 'selected_ids' => learndash_group_enrolled_courses( $post_id, true ), ) ); $ld_binary_selector_group_courses->show(); /** * Set the included users IDs to be user for the Group Leader selector * As of LD v2.3 we include users in the group_leader and administrator roles. */ $gl_included_ids = array(); $group_leader_query = new WP_User_Query( array( 'role__in' => array( 'group_leader', 'administrator' ), 'fields' => 'ID' ) ); $gl_included_ids = $group_leader_query->get_results(); if ( ! empty( $gl_included_ids ) ) { $ld_binary_selector_group_leaders = new Learndash_Binary_Selector_Group_Leaders( array( 'group_id' => $post_id, 'selected_ids' => learndash_get_groups_administrator_ids( $post_id, true ), 'included_ids' => $gl_included_ids, ) ); $ld_binary_selector_group_leaders->show(); } $ld_binary_selector_group_users = new Learndash_Binary_Selector_Group_Users( array( 'group_id' => $post_id, 'selected_ids' => learndash_get_groups_user_ids( $post_id, true ), ) ); $ld_binary_selector_group_users->show(); ?>
      $col_label ) { if ( 'date' == $col_key ) { $columns_new['groups_group_leaders'] = esc_html__( 'Group Leaders', 'learndash' ); $columns_new['groups_group_courses'] = sprintf( // translators: placeholder: Courses. esc_html_x( 'Group %s', 'Group Courses', 'learndash' ), LearnDash_Custom_Label::get_label( 'courses' ) ); $columns_new['groups_group_users'] = esc_html__( 'Group Users', 'learndash' ); } $columns_new[ $col_key ] = $col_label; } return $columns_new; } /** * Display Group columns. * * @param string $column_name Column being displayed. * @param integer $group_id ID of Group (post) being displayed. */ public function display_groups_columns( $column_name = '', $group_id = 0 ) { switch ( $column_name ) { case 'groups_group_leaders': $group_leaders = learndash_get_groups_administrator_ids( $group_id ); if ( ( empty( $group_leaders ) ) || ( ! is_array( $group_leaders ) ) ) { $group_leaders = array(); } printf( // translators: placeholder: Group Leaders Count. esc_html_x( 'Total %d', 'Group Leaders Count', 'learndash' ), count( $group_leaders ) ); if ( ! empty( $group_leaders ) ) { $user_names = ''; if ( count( $group_leaders ) > 5 ) { $group_leaders = array_slice( $group_leaders, 0, 5 ); } foreach ( $group_leaders as $user_id ) { $user = get_user_by( 'id', $user_id ); if ( ! empty( $user_names ) ) { $user_names .= ', '; } $user_names .= '' . $user->display_name . ' (' . $user->user_login . ')' . ''; } if ( ! empty( $user_names ) ) { echo '
      ' . $user_names; } } break; case 'groups_group_users': $group_users = learndash_get_groups_user_ids( $group_id ); if ( ( empty( $group_users ) ) || ( ! is_array( $group_users ) ) ) { $group_users = array(); } echo sprintf( // translators: placeholder: Group Users Count. esc_html_x( 'Total %d', 'Group Users Count', 'learndash' ), count( $group_users ) ); if ( ! empty( $group_users ) ) { $user_names = ''; if ( count( $group_users ) > 5 ) { $group_users = array_slice( $group_users, 0, 5 ); } foreach ( $group_users as $user_id ) { $user = get_user_by( 'id', $user_id ); if ( ! empty( $user_names ) ) { $user_names .= ', '; } $user_names .= '' . $user->display_name . ' (' . $user->user_login . ')' . ''; } if ( ! empty( $user_names ) ) { echo '
      ' . $user_names; } } break; case 'groups_group_courses': $group_courses = learndash_group_enrolled_courses( $group_id ); if ( ( empty( $group_courses ) ) || ( ! is_array( $group_courses ) ) ) { $group_courses = array(); } echo sprintf( // translators: placeholder: Goup Courses Count. esc_html_x( 'Total %d', 'Group Courses Count', 'learndash' ), count( $group_courses ) ); if ( ! empty( $group_courses ) ) { $course_names = ''; if ( count( $group_courses ) > 5 ) { $group_courses = array_slice( $group_courses, 0, 5 ); } foreach ( $group_courses as $course_id ) { if ( ! empty( $course_names ) ) { $course_names .= ', '; } $course_names .= '' . get_the_title( $course_id ) . ''; } if ( ! empty( $course_names ) ) { echo '
      ' . $course_names; } } break; } } // End of functions. } } PKc\0Zx,includes/admin/ld-course-builder-helpers.phpnuW+A 0 ) ); $output_lessons = []; $lesson_topics = []; if ( ( is_array( $lessons ) ) && ( ! empty( $lessons ) ) ) { // Loop course's lessons. foreach ( $lessons as $lesson ) { $post = $lesson['post']; // Get lesson's topics. $topics = learndash_topic_dots( $post->ID, false, 'array', null, $course_id ); $output_topics = []; if ( ( is_array( $topics ) ) && ( ! empty( $topics ) ) ) { // Loop Topics. foreach ( $topics as $topic ) { // Get topic's quizzes. $topic_quizzes = learndash_get_lesson_quiz_list( $topic->ID, null, $course_id ); $output_topic_quizzes = []; if ( ( is_array( $topic_quizzes ) ) && ( ! empty( $topic_quizzes ) ) ) { // Loop Topic's Quizzes. foreach ( $topic_quizzes as $quiz ) { $quiz_post = $quiz['post']; $output_topic_quizzes[] = [ 'ID' => $quiz_post->ID, 'expanded' => true, 'post_title' => $quiz_post->post_title, 'type' => $quiz_post->post_type, 'url' => learndash_get_step_permalink( $quiz_post->ID, $course_id ), 'edit_link' => get_edit_post_link( $quiz_post->ID, '' ), 'tree' => [], ]; } } $output_topics[] = [ 'ID' => $topic->ID, 'expanded' => true, 'post_title' => $topic->post_title, 'type' => $topic->post_type, 'url' => learndash_get_step_permalink( $topic->ID, $course_id ), 'edit_link' => get_edit_post_link( $topic->ID, '' ), 'tree' => $output_topic_quizzes, ]; } } // Get lesson's quizzes. $quizzes = learndash_get_lesson_quiz_list( $post->ID, null, $course_id ); $output_quizzes = []; if ( ( is_array( $quizzes ) ) && ( ! empty( $quizzes ) ) ) { // Loop lesson's quizzes. foreach ( $quizzes as $quiz ) { $quiz_post = $quiz['post']; $output_quizzes[] = [ 'ID' => $quiz_post->ID, 'expanded' => true, 'post_title' => $quiz_post->post_title, 'type' => $quiz_post->post_type, 'url' => learndash_get_step_permalink( $quiz_post->ID, $course_id ), 'edit_link' => get_edit_post_link( $quiz_post->ID, '' ), 'tree' => [], ]; } } // Output lesson with child tree. $output_lessons[] = [ 'ID' => $post->ID, 'expanded' => false, 'post_title' => $post->post_title, 'type' => $post->post_type, 'url' => $lesson['permalink'], 'edit_link' => get_edit_post_link( $post->ID, '' ), 'tree' => array_merge( $output_topics, $output_quizzes ), ]; } } // Get a list of quizzes to loop. $quizzes = learndash_get_course_quiz_list( $course_id ); $output_quizzes = []; if ( ( is_array( $quizzes ) ) && ( ! empty( $quizzes ) ) ) { // Loop course's quizzes. foreach ( $quizzes as $quiz ) { $post = $quiz['post']; $output_quizzes[] = [ 'ID' => $post->ID, 'expanded' => true, 'post_title' => $post->post_title, 'type' => $post->post_type, 'url' => learndash_get_step_permalink( $post->ID, $course_id ), 'edit_link' => get_edit_post_link( $post->ID, '' ), 'tree' => [], ]; } } // Merge sections at Outline. $sections_raw = get_post_meta( $course_id, 'course_sections', true ); $sections = ! empty( $sections_raw ) ? json_decode( $sections_raw ) : []; if ( ( is_array( $sections ) ) && ( ! empty( $sections ) ) ) { foreach ( $sections as $section ) { array_splice( $output_lessons, (int) $section->order, 0, [ $section ] ); } } } } // Output data. $data['outline'] = [ 'lessons' => $output_lessons, 'quizzes' => $output_quizzes, 'sections' => $sections, ]; return $data; } //add_filter( 'learndash_header_data', 'LearnDash\Admin\CourseBuilderHelpers\get_course_data', 100 ); /** * Checks if course builder should be enqueued. * * @return bool */ function should_enqueue_assets() { $screen = get_current_screen(); $course_id = isset( $_GET['course_id'] ) ? absint( $_GET['course_id'] ) : get_the_ID(); // Enqueue course builder assets only when required. if ( ( 'post' === $screen->base && 'sfwd-courses' === get_post_type( $course_id ) ) || 'sfwd-courses_page_courses-builder' === $screen->id ) { return true; } return false; } PKc\!FQ|Q|Jincludes/admin/classes-posts-edits/class-learndash-admin-question-edit.phpnuW+Apost_type = learndash_get_post_type_slug( 'question' ); parent::__construct(); } /** * On Load handler function for this post type edit. * This function is called by a WP action when the admin * page 'post.php' or 'post-new.php' are loaded. */ public function on_load() { if ( $this->post_type_check() ) { parent::on_load(); wp_enqueue_script( 'media-upload' ); wp_enqueue_script( 'thickbox' ); $wpproquiz_controller_admin = new WpProQuiz_Controller_Admin(); $wpproquiz_controller_admin->enqueueScript(); add_action( 'admin_footer', array( $this, 'admin_footer' ) ); } } /** * Hook into the WP admin footer logic to add custom JavaScript to replce the default page title. */ public function admin_footer() { global $post_type, $post_type_object; if ( ( ! is_admin() ) || ( $post_type !== $this->post_type ) ) { return; } if ( isset( $_GET['quiz_id'] ) ) { $quiz_id = absint( $_GET['quiz_id'] ); if ( ! empty( $quiz_id ) ) { $quizzes_url = add_query_arg( 'post_type', learndash_get_post_type_slug( 'quiz' ), admin_url( 'edit.php' ) ); $new_title = '' . LearnDash_Custom_Label::get_label( 'quizzes' ) . ' > ' . get_the_title( $quiz_id ) . ' '; $post_new_file = add_query_arg( array( 'post_type' => $post_type, 'quiz_id' => $quiz_id, ), 'post-new.php' ); $add_new_url = admin_url( $post_new_file ); ?> post_type . '_quiz' ] = $quiz_id; } } return $options; } /** * Initialize the ProQuiz Question being edited. * * @since 2.6.0 * @param object $post WP_Post Question being edited. */ public function init_question_edit( $post ) { global $pagenow; if ( 'post-new.php' === $pagenow ) { add_filter( $this->post_type .'_display_options', array( $this, 'display_options' ) ); } if ( is_null( $this->pro_question_edit ) ) { $question_pro_id = (int) get_post_meta( $post->ID, 'question_pro_id', true ); $question_mapper = new WpProQuiz_Model_QuestionMapper(); if ( ! empty( $question_pro_id ) ) { $this->pro_question_edit = $question_mapper->fetch( $question_pro_id ); if ( ( $this->pro_question_edit ) && is_a( $this->pro_question_edit, 'WpProQuiz_Model_Question' ) ) { $post->post_title = $this->pro_question_edit->getTitle(); $post->post_content = $this->pro_question_edit->getQuestion(); } } else { $this->pro_question_edit = $question_mapper->fetch( null ); } if ( ( isset( $_GET['templateLoadId'] ) ) && ( ! empty( $_GET['templateLoadId'] ) ) ) { $template_mapper = new WpProQuiz_Model_TemplateMapper(); $template = $template_mapper->fetchById( absint( $_GET['templateLoadId'] ) ); if ( ( $template ) && ( is_a( $template, 'WpProQuiz_Model_Template' ) ) ) { $data = $template->getData(); if ( $data !== null ) { $data['question']->setId( $this->pro_question_edit->getId() ); $data['question']->setQuizId( $this->pro_question_edit->getQuizId() ); $this->pro_question_edit = $data['question']; $post->post_title = $this->pro_question_edit->getTitle(); $post->post_content = $this->pro_question_edit->getQuestion(); } } } } } /** * Save Question handler function. * * @since 2.6.0 * @param integer $post_id Post ID Question being edited. * @param object $post WP_Post Question being edited. * @param boolean $update If update true, else false. */ public function save_post( $post_id = 0, $post = null, $update = false ) { if ( ! $this->post_type_check( $post ) ) { return false; } if ( ! parent::save_post( $post_id, $post, $update ) ) { return false; } $post_data = $this->clear_request_data( $_POST ); $question_pro_id = get_post_meta( $post_id, 'question_pro_id', true ); if ( ! empty( $question_pro_id ) ) { $question_pro_id = absint( $question_pro_id ); } else { $question_pro_id = 0; } $question_pro_id_new = learndash_update_pro_question( $question_pro_id, $post_data ); if ( ( ! empty( $question_pro_id_new ) ) && ( ( absint( $question_pro_id_new ) ) !== ( absint( $question_pro_id ) ) ) ) { update_post_meta( $post_id, 'question_pro_id', absint( $question_pro_id_new ) ); learndash_set_question_quizzes_dirty( $post_id ); } learndash_proquiz_sync_question_fields( $post_id, $question_pro_id_new ); learndash_proquiz_sync_question_category( $post_id, $question_pro_id_new ); } /** * Register metaboxes for Question edit. * * @since 2.6.0 * * @param string $post_type Port Type being edited. */ public function add_metaboxes( $post_type = '' ) { global $post; if ( $this->post_type_check( $post_type ) ) { parent::add_metaboxes( $post_type ); $this->init_question_edit( $post ); add_meta_box( 'learndash_question_category_proquiz', sprintf( // translators: placeholders: Question. esc_html_x( '%s Category', 'placeholders: Question', 'learndash' ), LearnDash_Custom_Label::get_label( 'question' ) ) . ' ' . esc_html__( '(optional)', 'learndash' ), array( $this, 'question_category_proquiz_page_box' ), $this->post_type, 'side', 'high' ); add_meta_box( 'learndash_question_type', esc_html__( 'Answer type', 'learndash' ), array( $this, 'question_type_page_box' ), $this->post_type, 'side', 'default' ); add_meta_box( 'learndash_question_points', esc_html__( 'Points', 'learndash' ) . ' ' . esc_html__( '(required)', 'learndash' ), array( $this, 'question_points_page_box' ), $this->post_type, 'side', 'default' ); add_meta_box( 'learndash_question_answers', esc_html__( 'Answers', 'learndash' ) . ' ' . esc_html__( '(required)', 'learndash' ), array( $this, 'question_answers_page_box' ), $this->post_type, 'normal', 'high' ); add_meta_box( 'learndash_question_single_choice_options', esc_html__( 'Single choice options', 'learndash' ) . ' ' . esc_html__( '(optional)', 'learndash' ), array( $this, 'question_single_choice_options' ), $this->post_type, 'normal', 'high' ); add_meta_box( 'learndash_question_message_correct_answer', esc_html__( 'Message with the correct answer', 'learndash' ) . ' ' . esc_html__( '(optional)', 'learndash' ), array( $this, 'question_message_correct_answer_page_box' ), $this->post_type, 'normal', 'high' ); add_meta_box( 'learndash_question_message_incorrect_answer', esc_html__( 'Message with the incorrect answer', 'learndash' ) . ' ' . esc_html__( '(optional)', 'learndash' ), array( $this, 'question_message_incorrect_answer_page_box' ), $this->post_type, 'normal', 'high' ); add_meta_box( 'learndash_question_hint', esc_html__( 'Hint', 'learndash' ) . ' ' . esc_html__( '(optional)', 'learndash' ), array( $this, 'question_hint_page_box' ), $this->post_type, 'normal', 'high' ); add_meta_box( 'learndash_question_template', esc_html__( 'Template', 'learndash' ), array( $this, 'question_template_page_box' ), $this->post_type, 'normal', 'high' ); global $wp_meta_boxes; if ( isset( $wp_meta_boxes[ $this->post_type ]['normal']['high']['learndash_question_answers'] ) ) { $learndash_question_answers = $wp_meta_boxes[ $this->post_type ]['normal']['high']['learndash_question_answers']; unset( $wp_meta_boxes[ $this->post_type ]['normal']['high']['learndash_question_answers'] ); } else { $learndash_question_answers = null; } if ( isset( $wp_meta_boxes[ $this->post_type ]['normal']['high']['learndash_question_single_choice_options'] ) ) { $learndash_question_single_choice_options = $wp_meta_boxes[ $this->post_type ]['normal']['high']['learndash_question_single_choice_options']; unset( $wp_meta_boxes[ $this->post_type ]['normal']['high']['learndash_question_single_choice_options'] ); } else { $learndash_question_single_choice_options = null; } $question_metaboxes_new = array(); if ( ! is_null( $learndash_question_answers ) ) { $question_metaboxes_new = array_merge( $question_metaboxes_new, array( 'learndash_question_answers' => $learndash_question_answers ) ); } if ( ! is_null( $learndash_question_single_choice_options ) ) { $question_metaboxes_new = array_merge( $question_metaboxes_new, array( 'learndash_question_single_choice_options' => $learndash_question_single_choice_options ) ); } if ( ! empty( $question_metaboxes_new ) ) { $wp_meta_boxes[ $this->post_type ]['normal']['high'] = array_merge( $question_metaboxes_new, $wp_meta_boxes[ $this->post_type ]['normal']['high'] ); } /** * Check if the editor is classic or new Gutenberg Block editor and hide non-important metaboxes */ if ( ( $post ) && ( is_a( $post, 'WP_Post' ) ) ) { $user_closed_postboxes = get_user_meta( get_current_user_id(), 'closedpostboxes_' . $this->post_type, true ); if ( ( is_string( $user_closed_postboxes ) ) && ( '' === $user_closed_postboxes ) ) { if ( ( function_exists( 'use_block_editor_for_post' ) ) && ( use_block_editor_for_post( $post ) ) ) { $all_postboxes = array( 'sfwd-question', 'learndash_question_single_choice_options', 'learndash_question_message_correct_answer', 'learndash_question_message_incorrect_answer', 'learndash_question_hint', 'learndash_question_template', ); } else { $all_postboxes = array( 'learndash_question_message_correct_answer', 'learndash_question_message_incorrect_answer', 'learndash_question_hint', 'learndash_question_template', ); } update_user_meta( get_current_user_id(), 'closedpostboxes_' . $this->post_type, $all_postboxes ); } } } } /** * Shows the Question Types metabox. * * @since 2.6.0 * @param object $post WP_Post Question being edited. */ public function question_type_page_box( $post ) { global $learndash_question_types; if ( ( $this->pro_question_edit ) && is_a( $this->pro_question_edit, 'WpProQuiz_Model_Question' ) ) { $question_type = $this->pro_question_edit->getAnswerType(); } else { $question_type = 'single'; } ?>
        $q_label ) { ?>
      • />
      pro_question_edit ) && is_a( $this->pro_question_edit, 'WpProQuiz_Model_Question' ) ) { $question_category_id = $this->pro_question_edit->getCategoryId(); } else { $question_category_id = 0; } $categoryMapper = new WpProQuiz_Model_CategoryMapper(); $allCategories = $categoryMapper->fetchAll(); ?>

      pro_question_edit ) && is_a( $this->pro_question_edit, 'WpProQuiz_Model_Question' ) ) { $question_points = $this->pro_question_edit->getPoints(); } else { $question_points = 1; } ?>

      pro_question_edit ) && is_a( $this->pro_question_edit, 'WpProQuiz_Model_Question' ) ) { $question_correct_same_text = checked( '1', $this->pro_question_edit->isCorrectSameText(), false ); $question_correct_message = $this->pro_question_edit->getCorrectMsg(); } else { $question_correct_same_text = ''; $question_correct_message = ''; } ?>

      3 ) ); } /** * Shows the Question Incorrect Answer Message metabox. * * @since 2.6.0 * @param object $post WP_Post Question being edited. */ public function question_message_incorrect_answer_page_box( $post ) { if ( ( $this->pro_question_edit ) && is_a( $this->pro_question_edit, 'WpProQuiz_Model_Question' ) ) { $question_incorrect_message = $this->pro_question_edit->getIncorrectMsg(); } else { $question_incorrect_message = ''; } ?>

      3 ) ); } /** * Shows the Question Hint metabox. * * @since 2.6.0 * @param object $post WP_Post Question being edited. */ public function question_hint_page_box( $post ) { if ( ( $this->pro_question_edit ) && is_a( $this->pro_question_edit, 'WpProQuiz_Model_Question' ) ) { $question_hint_enabled = checked( '1', $this->pro_question_edit->isTipEnabled(), false ); $question_hint_message = $this->pro_question_edit->getTipMsg(); } else { $question_hint_enabled = ''; $question_hint_message = ''; } ?>

      3 ) ); ?>

      This changes the calculation of the points', 'learndash' ) ); ?>




      answerPointDia(); ?>
      pro_question_edit ) && is_a( $this->pro_question_edit, 'WpProQuiz_Model_Question' ) ) { $pro_question_data = $proquiz_controller_question->setAnswerObject( $this->pro_question_edit ); } else { $pro_question_data = $proquiz_controller_question->setAnswerObject(); } $this->view = new WpProQuiz_View_QuestionEdit(); ?>
      view->freeChoice( $pro_question_data['free_answer'] ); ?>

        view->sortingChoice( $pro_question_data['sort_answer'] ); ?>
        view->singleMultiCoice( $pro_question_data['classic_answer']); ?>



        view->matrixSortingChoice( $pro_question_data['matrix_sort_answer'] ); ?>
      view->clozeChoice( $pro_question_data['cloze_answer'] ); ?>
      view->assessmentChoice( $pro_question_data['assessment_answer'] ); ?>
      view->essayChoice( $pro_question_data['essay'] ); ?>
      fetchAll( WpProQuiz_Model_Template::TEMPLATE_TYPE_QUESTION, false ); $template_loaded_id = ''; if ( ( isset( $_GET['templateLoadId'] ) ) && ( ! empty( $_GET['templateLoadId'] ) ) ) { $template_loaded_id = intval( $_GET['templateLoadId'] ); } ?>



      post_type = learndash_get_post_type_slug( 'topic' ); parent::__construct(); } /** * On Load handler function for this post type edit. * This function is called by a WP action when the admin * page 'post.php' or 'post-new.php' are loaded. */ public function on_load() { if ( $this->post_type_check() ) { require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . '/includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-access-settings.php'; parent::on_load(); } } /** * Save metabox handler function. * * @param integer $post_id Post ID Question being edited. * @param object $post WP_Post Question being edited. * @param boolean $update If update true, else false. */ public function save_post( $post_id = 0, $post = null, $update = false ) { if ( ! $this->post_type_check( $post ) ) { return false; } if ( ! parent::save_post( $post_id, $post, $update ) ) { return false; } if ( ! empty( $this->_metaboxes ) ) { foreach ( $this->_metaboxes as $_metaboxes_instance ) { $settings_fields = array(); $settings_fields = $_metaboxes_instance->get_post_settings_field_updates( $post_id, $post, $update ); $_metaboxes_instance->save_post_meta_box( $post_id, $post, $update, $settings_fields ); } } } // End of functions. } } new Learndash_Admin_Topic_Edit(); PKc\7|Hincludes/admin/classes-posts-edits/class-learndash-admin-course-edit.phpnuW+Apost_type = learndash_get_post_type_slug( 'course' ); parent::__construct(); } /** * On Load handler function for this post type edit. * This function is called by a WP action when the admin * page 'post.php' or 'post-new.php' are loaded. */ public function on_load() { if ( $this->post_type_check() ) { require_once LEARNDASH_LMS_PLUGIN_DIR . '/includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/settings/settings-metaboxes/class-ld-settings-metabox-course-navigation-settings.php'; if ( false === learndash_use_legacy_course_access_list() ) { if ( true === apply_filters( 'learndash_show_metabox_course_users', true ) ) { require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/settings/settings-metaboxes/class-ld-settings-metabox-course-users.php'; } } parent::on_load(); if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'enabled' ) == 'yes' ) { $this->use_course_builder = true; if ( apply_filters( 'learndash_show_course_builder', $this->use_course_builder ) === true ) { $this->course_builder = Learndash_Admin_Metabox_Course_Builder::add_instance( 'Learndash_Admin_Metabox_Course_Builder' ); $this->course_builder->builder_on_load(); } } $this->_metaboxes = apply_filters( 'learndash_post_settings_metaboxes_init_' . $this->post_type, $this->_metaboxes ); add_filter( 'learndash_header_data', 'LearnDash\Admin\CourseBuilderHelpers\get_course_data', 100 ); } } /** * Register Groups meta box for admin * Managed enrolled groups, users and group leaders * * @since 2.1.2 * @param string $post_type Port Type being edited. */ public function add_metaboxes( $post_type = '', $post = null ) { if ( $this->post_type_check( $post_type ) ) { //learndash_transition_course_shared_steps( $post->ID ); /** * Add Course Builder metabox. * * @since 2.5 */ if ( true === apply_filters( 'learndash_show_course_builder', $this->use_course_builder ) ) { add_meta_box( 'learndash_course_builder', sprintf( // translators: placeholder: Course. esc_html_x( 'LearnDash %s Builder', 'placeholder: Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), array( $this->course_builder, 'show_builder_box' ), $this->post_type, 'normal', 'high' ); } parent::add_metaboxes( $post_type ); if ( current_user_can( 'edit_groups' ) ) { if ( true === apply_filters( 'learndash_show_metabox_course_groups', true ) ) { add_meta_box( 'learndash_course_groups', sprintf( // translators: placeholder: Course. esc_html_x( 'LearnDash %s Groups', 'LearnDash Course Groups', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), array( $this, 'course_groups_page_box' ), $this->post_type, 'normal', 'high' ); } } } } /** * Prints content for Groups meta box for admin * * @since 2.1.2 * * @param object $post WP_Post. */ public function course_groups_page_box( $post ) { $this->course_id = $post->ID; $group_post_type = learndash_get_post_type_slug( 'group' ); ?>
      course_id, 'learndash_course_groups_nonce' ); $ld_binary_selector_course_groups = new Learndash_Binary_Selector_Course_Groups( array( 'html_title' => '', 'course_id' => $this->course_id, 'selected_ids' => learndash_get_course_groups( $this->course_id, true ), 'search_posts_per_page' => 100, ) ); $ld_binary_selector_course_groups->show(); } else { // If there's an onboarding page, we render it. if ( file_exists( LEARNDASH_LMS_PLUGIN_DIR . "/includes/admin/onboarding-templates/onboarding-{$group_post_type}.php" ) ) { include_once LEARNDASH_LMS_PLUGIN_DIR . "/includes/admin/onboarding-templates/onboarding-{$group_post_type}.php"; } } ?>
      post_type_check( $post ) ) { return false; } if ( ! parent::save_post( $post_id, $post, $update ) ) { return false; } /** * Verify this came from the our screen and with proper authorization, * because save_post can be triggered at other times. */ if ( ( isset( $_POST['learndash_course_groups_nonce'] ) ) && ( wp_verify_nonce( $_POST['learndash_course_groups_nonce'], 'learndash_course_groups_nonce_' . $post_id ) ) ) { if ( ( isset( $_POST['learndash_course_groups'] ) ) && ( isset( $_POST['learndash_course_groups'][ $post_id ] ) ) && ( ! empty( $_POST['learndash_course_groups'][ $post_id ] ) ) ) { $course_groups = (array) json_decode( stripslashes( $_POST['learndash_course_groups'][ $post_id ] ) ); learndash_set_course_groups( $post_id, $course_groups ); } } /* if ( ( isset( $_POST['learndash_course_users_nonce'] ) ) && ( wp_verify_nonce( $_POST['learndash_course_users_nonce'], 'learndash_course_users_nonce_' . $post_id ) ) ) { if ( ( isset( $_POST['learndash_course_users'] ) ) && ( isset( $_POST['learndash_course_users'][ $post_id ] ) ) && ( ! empty( $_POST['learndash_course_users'][ $post_id ] ) ) ) { $course_users = (array) json_decode( stripslashes( $_POST['learndash_course_users'][ $post_id ] ) ); learndash_set_users_for_course( $post_id, $course_users ); } } */ //error_log('_metaboxes
      '. print_r($this->_metaboxes, true) .'
      '); if ( ! empty( $this->_metaboxes ) ) { foreach ( $this->_metaboxes as $_metaboxes_instance ) { $settings_fields = array(); $settings_fields = $_metaboxes_instance->get_post_settings_field_updates( $post_id, $post, $update ); $_metaboxes_instance->save_post_meta_box( $post_id, $post, $update, $settings_fields ); } } /** * Save Course Builder * Within CB will be security checks. */ if ( apply_filters( 'learndash_show_course_builder', $this->use_course_builder ) === true ) { $this->course_builder->save_course_builder( $post_id, $post, $update ); } } // End of functions. } } new Learndash_Admin_Course_Edit(); PKc\XFHincludes/admin/classes-posts-edits/class-learndash-admin-lesson-edit.phpnuW+Apost_type = learndash_get_post_type_slug( 'lesson' ); parent::__construct(); } /** * On Load handler function for this post type edit. * This function is called by a WP action when the admin * page 'post.php' or 'post-new.php' are loaded. */ public function on_load() { if ( $this->post_type_check() ) { require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . '/includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-access-settings.php'; /** * Keep for now in case we want to access the legacy metabox logic. */ //$cpt_instance = SFWD_CPT_Instance::$instances[ $this->post_type ]; //error_log( 'cpt_instance
      '. print_r( $cpt_instance, true ) .'
      ' ); parent::on_load(); } } /** * Save metabox handler function. * * @param integer $post_id Post ID Question being edited. * @param object $post WP_Post Question being edited. * @param boolean $update If update true, else false. */ public function save_post( $post_id = 0, $post = null, $update = false ) { if ( ! $this->post_type_check( $post ) ) { return false; } if ( ! parent::save_post( $post_id, $post, $update ) ) { return false; } if ( ! empty( $this->_metaboxes ) ) { foreach ( $this->_metaboxes as $_metaboxes_instance ) { $settings_fields = array(); $settings_fields = array_merge( $settings_fields, $_metaboxes_instance->get_post_settings_field_updates( $post_id, $post, $update ) ); $_metaboxes_instance->save_post_meta_box( $post_id, $post, $update, $settings_fields ); } } } // End of functions. } } new Learndash_Admin_Lesson_Edit(); PKc\6NNFincludes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.phpnuW+Apost_type = learndash_get_post_type_slug( 'quiz' ); parent::__construct(); } /** * Initialize the ProQuiz Quiz being edited. * * @since 2.6.0 * @param object $post WP_Post Question being edited. */ public function init_quiz_edit( $post ) { if ( is_null( $this->pro_quiz_edit ) ) { $quiz_pro_id = (int) learndash_get_setting( $post->ID, 'quiz_pro' ); $this->_post = array( '1' ); $this->_get = array( 'action' => 'getEdit', 'quizId' => $quiz_pro_id, 'post_id' => $post->ID, ); if ( ( isset( $_GET['templateLoadId'] ) ) && ( ! empty( $_GET['templateLoadId'] ) ) ) { $this->_get['templateLoad'] = 'yes'; $this->_get['templateLoadId'] = $_GET['templateLoadId']; } $pro_quiz = new WpProQuiz_Controller_Quiz(); $this->pro_quiz_edit = $pro_quiz->route( $this->_get, $this->_post ); } } /** * On Load handler function for this post type edit. * This function is called by a WP action when the admin * page 'post.php' or 'post-new.php' are loaded. */ public function on_load() { if ( $this->post_type_check() ) { if ( ! apply_filters( 'learndash_settings_metaboxes_legacy_quiz', LEARNDASH_SETTINGS_METABOXES_LEGACY_QUIZ, $this->post_type ) ) { require_once LEARNDASH_LMS_PLUGIN_DIR . '/includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-access-settings.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . '/includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . '/includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . '/includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . '/includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php'; } parent::on_load(); if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Quizzes_Builder', 'enabled' ) == 'yes' ) { $this->use_quiz_builder = true; if ( apply_filters( 'learndash_show_quiz_builder', $this->use_quiz_builder ) === true ) { $this->quiz_builder = Learndash_Admin_Metabox_Quiz_Builder::add_instance(); $this->quiz_builder->builder_on_load(); } } add_filter( 'learndash_header_data', 'LearnDash\Admin\QuizBuilderHelpers\get_quiz_data', 100 ); } } /** * Save metabox handler function. * * @param integer $post_id Post ID Question being edited. * @param object $post WP_Post Question being edited. * @param boolean $update If update true, else false. */ public function save_post( $post_id = 0, $post = null, $update = false ) { if ( ! $this->post_type_check( $post ) ) { return false; } if ( ! parent::save_post( $post_id, $post, $update ) ) { return false; } // Check the Quiz custom fields to see if they need to be reformatted. if ( isset( $_POST['form'] ) ) { $form = $_POST['form']; if ( 1 === count( $form[0] ) ) { $form_items = array(); $form_item = array(); foreach ( $form as $form_ele ) { foreach ( $form_ele as $form_ele_name => $form_ele_value ) { if ( 'fieldname' === $form_ele_name ) { if ( ! empty( $form_item ) ) { $form_items[] = $form_item; } $form_item = array(); } $form_item[ $form_ele_name ] = $form_ele_value; } } if ( ! empty( $form_item ) ) { $form_items[] = $form_item; } $form_item = array(); $_POST['form'] = $form_items; } } $this->init_quiz_edit( $post ); /** * Save Quiz Builder * Within CB will be security checks. */ if ( apply_filters( 'learndash_show_quiz_builder', $this->use_quiz_builder ) === true ) { $this->quiz_builder = Learndash_Admin_Metabox_Quiz_Builder::add_instance(); $this->quiz_builder->save_course_builder( $post_id, $post, $update ); } if ( ! empty( $this->_metaboxes ) ) { foreach ( $this->_metaboxes as $_metaboxes_instance ) { $settings_fields = array(); $settings_fields = $_metaboxes_instance->get_post_settings_field_updates( $post_id, $post, $update ); $_metaboxes_instance->save_post_meta_box( $post_id, $post, $update, $settings_fields ); $_metaboxes_instance->save_fields_to_post( $this->pro_quiz_edit, $settings_fields ); } } $quizId = absint( learndash_get_setting( $post_id, 'quiz_pro', true ) ); $pro_quiz = new WpProQuiz_Controller_Quiz(); $pro_quiz->route( array( 'action' => 'addUpdateQuiz', 'quizId' => $quizId, 'post_id' => $post_id, ) ); } /** * Register metaboxes for Quiz edit. * * @since 2.6.0 * @param string $post_type Port Type being edited. */ public function add_metaboxes( $post_type = '', $post = null ) { global $learndash_metaboxes; if ( $this->post_type_check( $post_type ) ) { parent::add_metaboxes( $post_type ); if ( apply_filters( 'learndash_disable_advance_quiz', false, $post->ID ) ) { return; } /** * Add Quiz Builder metabox. * * @since 2.6.0 */ if ( true === apply_filters( 'learndash_show_quiz_builder', $this->use_quiz_builder ) ) { $data_settings = learndash_data_upgrades_setting( 'pro-quiz-questions' ); $quiz_questions_data_upgrade_link = ''; if ( ( isset( $data_settings['last_run'] ) ) && ( ! empty( $data_settings['last_run'] ) ) ) { $admin_url = admin_url( 'admin.php?page=learndash_data_upgrades' ); $admin_url = add_query_arg( 'quiz_id', $post->ID, $admin_url ); } add_meta_box( 'learndash_quiz_builder', sprintf( // translators: placeholder: Quiz. esc_html_x( 'LearnDash %s Builder', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ) . $quiz_questions_data_upgrade_link, array( $this->quiz_builder, 'show_builder_box' ), $this->post_type, 'normal', 'high' ); } if ( apply_filters( 'learndash_settings_metaboxes_legacy_quiz', LEARNDASH_SETTINGS_METABOXES_LEGACY_QUIZ, $this->post_type ) ) { add_meta_box( 'learndash_quiz_advanced_aggregated', // translators: placeholder: Quiz. sprintf( esc_html_x( 'LearnDash %s Advanced Settings', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ), array( $this, 'quiz_advanced_page_box_advanced_settings' ), $this->post_type, 'normal', 'high' ); } /* global $wp_meta_boxes; if ( isset( $wp_meta_boxes[ $this->post_type ]['normal']['high']['learndash_quiz_builder'] ) ) { $quiz_builder_metabox = $wp_meta_boxes[ $this->post_type ]['normal']['high']['learndash_quiz_builder']; unset( $wp_meta_boxes[ $this->post_type ]['normal']['high']['learndash_quiz_builder'] ); $wp_meta_boxes[ $this->post_type ]['normal']['high'] = array_merge( array( 'learndash_quiz_builder' => $quiz_builder_metabox ), $wp_meta_boxes[ $this->post_type ]['normal']['high'] ); } */ /** * Check if the editor is classic or new Gutenberg Block editor and hide non-important metaboxes */ /* if ( ( $post ) && ( is_a( $post, 'WP_Post' ) ) ) { $user_closed_postboxes = get_user_meta( get_current_user_id(), 'closedpostboxes_' . $this->post_type, true ); if ( ( is_string( $user_closed_postboxes ) ) && ( '' === $user_closed_postboxes ) ) { if ( ( function_exists( 'use_block_editor_for_post' ) ) && ( use_block_editor_for_post( $post ) ) ) { $all_postboxes = array( 'sfwd-quiz', 'learndash_quiz_advanced', 'learndash_quiz_question_settings', 'learndash_quiz_result_options', 'learndash_quiz_mode_options', 'learndash_quiz_result_text_options', 'learndash_quiz_templates', 'learndash_quiz_leaderboard_options', 'learndash_quiz_custom_fields_options', ); } else { $all_postboxes = array( 'learndash_quiz_question_settings', 'learndash_quiz_result_options', 'learndash_quiz_mode_options', 'learndash_quiz_result_text_options', 'learndash_quiz_templates', 'learndash_quiz_leaderboard_options', 'learndash_quiz_custom_fields_options', ); } update_user_meta( get_current_user_id(), 'closedpostboxes_' . $this->post_type, $all_postboxes ); } } */ } } /** * Shows the Quiz Settings metabo. * * @since 2.6.0 * @param object $post WP_Post Question being edited. */ public function quiz_advanced_page_box_advanced_settings( $post ) { // Advanced Settings. $this->quiz_advanced_open_wrapper(); $this->quiz_advanced_section_header( sprintf( // translators: placeholder: Quiz. esc_html_x( 'LearnDash %s Advanced Settings', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ) ); $this->quiz_advanced_page_box( $post ); $this->quiz_advanced_close_wrapper(); $this->quiz_advanced_hr(); // Question Settings. $this->quiz_advanced_open_wrapper(); $this->quiz_advanced_section_header( sprintf( // translators: placeholder: Quiz. esc_html_x( 'LearnDash %s Question Settings', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ) ); $this->quiz_question_options_page_box( $post ); $this->quiz_advanced_close_wrapper(); $this->quiz_advanced_hr(); // Result Settings. $this->quiz_advanced_open_wrapper(); $this->quiz_advanced_section_header( sprintf( // translators: placeholder: Quiz. esc_html_x( 'LearnDash %s Result Settings', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ) ); $this->quiz_result_options_page_box( $post ); $this->quiz_advanced_close_wrapper(); $this->quiz_advanced_hr(); // Mode Settings. $this->quiz_advanced_open_wrapper(); $this->quiz_advanced_section_header( sprintf( // translators: placeholder: Quiz. esc_html_x( 'LearnDash %s Mode Settings', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ) ); $this->quiz_mode_options_page_box( $post ); $this->quiz_advanced_close_wrapper(); $this->quiz_advanced_hr(); // Result Text Setings. $this->quiz_advanced_open_wrapper(); $this->quiz_advanced_section_header( sprintf( // translators: placeholder: Quiz. esc_html_x( 'LearnDash %s Result Text Settings', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ) ); $this->quiz_custom_result_text_page_box( $post ); $this->quiz_advanced_close_wrapper(); $this->quiz_advanced_hr(); // Template Settings. $this->quiz_advanced_open_wrapper(); $this->quiz_advanced_section_header( sprintf( // translators: placeholder: Quiz. esc_html_x( 'LearnDash %s Template Settings', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ) ); $this->quiz_templates_page_box( $post ); $this->quiz_advanced_close_wrapper(); $this->quiz_advanced_hr(); // Leaderboard Settings. $this->quiz_advanced_open_wrapper(); $this->quiz_advanced_section_header( sprintf( // translators: placeholder: Quiz. esc_html_x( 'LearnDash %s Leaderboard Settings', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ) ); $this->quiz_leaderboard_options_page_box( $post ); $this->quiz_advanced_close_wrapper(); $this->quiz_advanced_hr(); // Custom Fields Settings. $this->quiz_advanced_open_wrapper(); $this->quiz_advanced_section_header( sprintf( // translators: placeholder: Quiz. esc_html_x( 'LearnDash %s Custom Fields Settings', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ) ); $this->quiz_custom_fields_options_page_box( $post ); $this->quiz_advanced_close_wrapper(); } /** * Display a horizontal separator. * * @since 2.6.0 */ public function quiz_advanced_hr() { ?>
      init_quiz_edit( $post ); if ( ( $this->pro_quiz_edit ) && is_a( $this->pro_quiz_edit, 'WpProQuiz_View_QuizEdit' ) ) { $this->pro_quiz_edit->show_advanced( $this->_get ); } } /** * Display section header. * * @param string $title The title to be displayed. * @return void */ public function quiz_advanced_section_header( $title ) { ?>

      init_quiz_edit( $post ); //if ( ( $this->pro_quiz_edit ) && is_a( $this->pro_quiz_edit, 'WpProQuiz_View_QuizEdit' ) ) { // $this->pro_quiz_edit->show_templates( $this->_get ); //} $template_mapper = new WpProQuiz_Model_TemplateMapper(); $templates = $template_mapper->fetchAll( WpProQuiz_Model_Template::TEMPLATE_TYPE_QUIZ, false ); $template_loaded_id = ''; if ( ( isset( $_GET['templateLoadId'] ) ) && ( ! empty( $_GET['templateLoadId'] ) ) ) { $template_loaded_id = intval( $_GET['templateLoadId'] ); } ?>



      init_quiz_edit( $post ); if ( ( $this->pro_quiz_edit ) && is_a( $this->pro_quiz_edit, 'WpProQuiz_View_QuizEdit' ) ) { $this->pro_quiz_edit->questionOptions( $this->_get ); } } /** * Shows the Quiz Result Options metabox. * * @since 2.6.0 * @param object $post WP_Post Question being edited. */ public function quiz_result_options_page_box( $post ) { $this->init_quiz_edit( $post ); if ( ( $this->pro_quiz_edit ) && is_a( $this->pro_quiz_edit, 'WpProQuiz_View_QuizEdit' ) ) { $this->pro_quiz_edit->resultOptions( $this->_get ); } } /** * Shows the Quiz Mode Options metabox. * * @since 2.6.0 * @param object $post WP_Post Question being edited. */ public function quiz_mode_options_page_box( $post ) { $this->init_quiz_edit( $post ); if ( ( $this->pro_quiz_edit ) && is_a( $this->pro_quiz_edit, 'WpProQuiz_View_QuizEdit' ) ) { $this->pro_quiz_edit->quizMode( $this->_get ); } } /** * Shows the Quiz Leaderbord Options metabox. * * @since 2.6.0 * @param object $post WP_Post Question being edited. */ public function quiz_leaderboard_options_page_box( $post ) { $this->init_quiz_edit( $post ); if ( ( $this->pro_quiz_edit ) && is_a( $this->pro_quiz_edit, 'WpProQuiz_View_QuizEdit' ) ) { $this->pro_quiz_edit->leaderboardOptions( $this->_get ); } } /** * Shows the Quiz Custom Fields Options metabox. * * @since 2.6.0 * @param object $post WP_Post Question being edited. */ public function quiz_custom_fields_options_page_box( $post ) { $this->init_quiz_edit( $post ); if ( ( $this->pro_quiz_edit ) && is_a( $this->pro_quiz_edit, 'WpProQuiz_View_QuizEdit' ) ) { $this->pro_quiz_edit->form( $this->_get ); } } /** * Shows the Quiz Result Text metabox. * * @since 2.6.0 * @param object $post WP_Post Question being edited. */ public function quiz_custom_result_text_page_box( $post ) { $this->init_quiz_edit( $post ); if ( ( $this->pro_quiz_edit ) && is_a( $this->pro_quiz_edit, 'WpProQuiz_View_QuizEdit' ) ) { $this->pro_quiz_edit->resultText( $this->_get ); } } // End of functions. } } new Learndash_Admin_Quiz_Edit(); PKc\(R(R_includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-courses.phpnuW+Adata_slug] = array( 'class' => get_class( $this ), 'instance' => $this, 'slug' => $this->data_slug ); $this->set_report_headers(); return $report_actions; } function show_report_action() { ?> init_process_times(); if ( !isset( $data['total_count'] ) ) $data['total_count'] = 0; if ( !isset( $data['result_count'] ) ) $data['result_count'] = 0; if ( !isset( $data['progress_percent'] ) ) $data['progress_percent'] = 0; if ( !isset( $data['progress_label'] ) ) $data['progress_label'] = ''; $_DOING_INIT = false; require_once( LEARNDASH_LMS_LIBRARY_DIR . '/parsecsv.lib.php' ); if ( ( isset( $data['nonce'] ) ) && ( !empty( $data['nonce'] ) ) ) { if ( wp_verify_nonce( $data['nonce'], 'learndash-data-reports-'. $this->data_slug .'-'. get_current_user_id() ) ) { $this->transient_key = $this->data_slug .'_'. $data['nonce']; $this->csv_parse = new lmsParseCSV(); // On the 'init' (the first call via AJAX we load up the transient with the user_ids) if ( ( isset( $data['init'] ) ) && ( $data['init'] == 1 ) ) { $_DOING_INIT = true; unset( $data['init'] ); $this->transient_data = array(); //$this->transient_data['activity_status'] = array('NOT_STARTED' , 'IN_PROGRESS', 'COMPLETED'); if ( ( isset( $data['filters'] ) ) && ( !empty( $data['filters'] ) ) ) { //error_log('before: transient_data
      '. print_r($this->transient_data, true ) .'
      '); $this->transient_data = $query = wp_parse_args( $this->transient_data, $data['filters'] ); //error_log('after: transient_data
      '. print_r($this->transient_data, true ) .'
      '); //die(); } else { $this->transient_data['activity_status'] = array('NOT_STARTED' , 'IN_PROGRESS', 'COMPLETED'); if ( ( isset( $data['group_id'] ) ) && ( !empty( $data['group_id'] ) ) ) { $this->transient_data['users_ids'] = learndash_get_groups_user_ids( intval( $data['group_id'] ) ); $this->transient_data['posts_ids'] = learndash_group_enrolled_courses( intval( $data['group_id'] ) ); } else { $this->transient_data['posts_ids'] = ''; //$this->transient_data = array_merge( $this->transient_data, learndash_get_report_user_ids() ); $this->transient_data['users_ids'] = learndash_get_report_user_ids(); } //$this->transient_data['users_ids'] = array(6); //if ( !empty( $activity_query_args['post_ids'] ) ) { $this->transient_data['activity_status'] = array('NOT_STARTED', 'IN_PROGRESS', 'COMPLETED'); //} else { // $this->transient_data['activity_status'] = array('IN_PROGRESS', 'COMPLETED'); //} } $this->transient_data['total_users'] = count( $this->transient_data['users_ids'] ); $this->set_report_filenames( $data ); //$this->report_filename = ABSPATH . $this->transient_data['report_filename']; $this->report_filename = $this->transient_data['report_filename']; $data['report_download_link'] = $this->transient_data['report_url']; $data['total_count'] = $this->transient_data['total_users']; // Clear out any previous file $reports_fp = fopen( $this->report_filename, 'w' ); fclose($reports_fp); $this->set_option_cache( $this->transient_key, $this->transient_data ); $this->send_report_headers_to_csv(); } else { $this->transient_data = $this->get_transient( $this->transient_key ); //$this->report_filename = ABSPATH . $this->transient_data['report_filename']; $this->report_filename = $this->transient_data['report_filename']; } if ( !empty( $this->transient_data['users_ids'] ) ) { // If we are doing the initial 'init' then we return so we can show the progress meter. if ( $_DOING_INIT != true) { $course_query_args = array( 'orderby' => 'title', 'order' => 'ASC', 'nopaging' => true ); $activity_query_args = array( 'post_types' => 'sfwd-courses', 'activity_types' => 'course', 'activity_status' => $this->transient_data['activity_status'], 'orderby_order' => 'users.ID, posts.post_title', 'date_format' => 'F j, Y H:i:s', 'per_page' => '' ); $course_progress_data = array(); foreach( $this->transient_data['users_ids'] as $user_id_idx => $user_id ) { unset( $this->transient_data['users_ids'][$user_id_idx] ); $this->set_option_cache( $this->transient_key, $this->transient_data ); $report_user = get_user_by('id', $user_id); if ( $report_user !== false ) { if ( ( isset( $this->transient_data['course_ids'] ) ) && ( !empty( $this->transient_data['course_ids'] ) ) ) { $post_ids = $this->transient_data['course_ids']; } else if ( ( isset( $this->transient_data['posts_ids'] ) ) && ( !empty( $this->transient_data['posts_ids'] ) ) ) { $post_ids = $this->transient_data['posts_ids']; } else { $post_ids = learndash_user_get_enrolled_courses( intval( $user_id ), $course_query_args, true ); } if ( !empty( $post_ids ) ) { $activity_query_args['user_ids'] = array( $user_id ); $activity_query_args['post_ids'] = $post_ids; //error_log('activity_query_args
      '. print_r($activity_query_args, true) .'
      '); $user_courses_reports = learndash_reports_get_activity( $activity_query_args ); if ( !empty( $user_courses_reports['results'] ) ) { foreach( $user_courses_reports['results'] as $result ) { $row = array(); foreach( $this->data_headers as $header_key => $header_data ) { if ( ( isset( $header_data['display'] ) ) && ( !empty( $header_data['display'] ) ) ) { $row[$header_key] = call_user_func_array( $header_data['display'], array( 'header_value' => $header_data['default'], 'header_key' => $header_key, 'item' => $result, 'report_user' => $report_user, ) ); } else if ( ( isset( $header_data['default'] ) ) && ( !empty( $header_data['default'] ) ) ) { $row[$header_key] = $header_data['default']; } else { $row[$header_key] = ''; } } if ( !empty($row ) ) { $course_progress_data[] = $row; } } } else { //error_log('user_courses_reports
      '. print_r($user_courses_reports, true) .'
      '); if ( ( is_array( $this->transient_data['activity_status'] ) ) && ( count( $this->transient_data['activity_status'] ) > 1 ) && ( in_array('NOT_STARTED', $this->transient_data['activity_status'] ) ) ) { $row = array(); foreach( $this->data_headers as $header_key => $header_data ) { if ( ( isset( $header_data['display'] ) ) && ( !empty( $header_data['display'] ) ) ) { $row[$header_key] = call_user_func_array( $header_data['display'], array( 'header_value' => $header_data['default'], 'header_key' => $header_key, 'item' => new stdClass(), 'report_user' => $report_user, ) ); } else if ( ( isset( $header_data['default'] ) ) && ( !empty( $header_data['default'] ) ) ) { $row[$header_key] = $header_data['default']; } else { $row[$header_key] = ''; } } if ( !empty($row ) ) { $course_progress_data[] = $row; } } } } } if ( $this->out_of_timer() ) { break; } } if ( !empty( $course_progress_data ) ) { $this->csv_parse->file = $this->report_filename; $this->csv_parse->output_filename = $this->report_filename; // legacy $this->csv_parse = apply_filters('learndash_csv_object', $this->csv_parse, 'courses' ); /** * Filter to override CSV object attributes * @since 2.4.7 * This is basically the same as the above line with the exeption of the last param used * being the proper data slug instead of just 'courses'. */ $this->csv_parse = apply_filters('learndash_csv_object', $this->csv_parse, $this->data_slug ); $course_progress_data = apply_filters('learndash_csv_data', $course_progress_data, $this->data_slug ); $save_ret = $this->csv_parse->save( $this->report_filename, $course_progress_data, true, wp_list_pluck( $this->data_headers, 'label' ) ); } } $data['result_count'] = $data['total_count'] - count( $this->transient_data['users_ids'] ); $data['progress_percent'] = ( $data['result_count'] / $data['total_count'] ) * 100; $data['progress_label'] = sprintf( esc_html_x('%1$d of %2$s Users', 'placeholders: result count, total count', 'learndash'), $data['result_count'], $data['total_count']); } } } return $data; } function set_report_headers() { $this->data_headers = array(); $this->data_headers['user_id'] = array( 'label' => esc_html__( 'user_id', 'learndash' ), 'default' => '', 'display' => array( $this, 'report_column' ) ); $this->data_headers['user_name'] = array( 'label' => esc_html__( 'name', 'learndash' ), 'default' => '', 'display' => array( $this, 'report_column' ) ); $this->data_headers['user_email'] = array( 'label' => esc_html__( 'email', 'learndash' ), 'default' => '', 'display' => array( $this, 'report_column' ) ); $this->data_headers['course_id'] = array( 'label' => esc_html__( 'course_id', 'learndash' ), 'default' => '', 'display' => array( $this, 'report_column' ) ); $this->data_headers['course_title'] = array( 'label' => esc_html__( 'course_title', 'learndash' ), 'default' => '', 'display' => array( $this, 'report_column' ) ); $this->data_headers['course_steps_completed'] = array( 'label' => esc_html__( 'steps_completed', 'learndash' ), 'default' => '', 'display' => array( $this, 'report_column' ) ); $this->data_headers['course_steps_total'] = array( 'label' => esc_html__( 'steps_total', 'learndash' ), 'default' => '', 'display' => array( $this, 'report_column' ) ); $this->data_headers['course_completed'] = array( 'label' => esc_html__( 'course_completed', 'learndash' ), 'default' => '', 'display' => array( $this, 'report_column' ) ); $this->data_headers['course_completed_on'] = array( 'label' => esc_html__( 'course_completed_on', 'learndash' ), 'default' => '', 'display' => array( $this, 'report_column' ) ); $this->data_headers = apply_filters('learndash_data_reports_headers', $this->data_headers, $this->data_slug ); } function send_report_headers_to_csv() { if ( !empty( $this->data_headers ) ) { $this->csv_parse->file = $this->report_filename; $this->csv_parse->output_filename = $this->report_filename; // legacy $this->csv_parse = apply_filters('learndash_csv_object', $this->csv_parse, 'courses' ); /** * Filter to override CSV object attributes * @since 2.4.7 * This is basically the same as the above line with the exeption of the last param used * being the proper data slug instead of just 'courses'. */ $this->csv_parse = apply_filters('learndash_csv_object', $this->csv_parse, $this->data_slug ); $this->data_headers = apply_filters('learndash_csv_data', $this->data_headers, $this->data_slug ); $this->csv_parse->save( $this->report_filename, array(), false, wp_list_pluck( $this->data_headers, 'label' ) ); } } function set_report_filenames( $data ) { $wp_upload_dir = wp_upload_dir(); //$wp_upload_dir['basedir'] = str_replace('\\', '/', $wp_upload_dir['basedir']); $ld_file_part = '/learndash/reports/learndash_reports_'. str_replace( array('ld_data_reports_', '-'), array('', '_'), $this->transient_key ) .'.csv'; $ld_wp_upload_filename = $wp_upload_dir['basedir'] . $ld_file_part; if ( wp_mkdir_p( dirname( $ld_wp_upload_filename ) ) === false ) { $data['error_message'] = esc_html__("ERROR: Cannot create working folder. Check that the parent folder is writable", 'learndash') ." ". $ld_wp_upload_dir; return $data; } file_put_contents( trailingslashit( dirname( $ld_wp_upload_filename ) ) .'index.php', '// nothing to see here'); // Because we on;y want to store the relative path //$ld_wp_upload_filename = str_replace( ABSPATH, '', $ld_wp_upload_filename ); $this->transient_data['report_filename'] = apply_filters( 'learndash_report_filename', $ld_wp_upload_filename, $this->data_slug ); //$this->transient_data['report_url'] = $wp_upload_dir['baseurl'] . $ld_file_part; $this->transient_data['report_url'] = add_query_arg( array( 'data-slug' => $this->data_slug, 'data-nonce' => $data['nonce'], 'ld-report-download' => 1 ), admin_url() //get_option('home') ); } function report_column( $column_value = '', $column_key, $report_item, $report_user ) { switch( $column_key ) { case 'user_id': if ( $report_user instanceof WP_User ) { $column_value = $report_user->ID; } break; case 'user_name': if ( $report_user instanceof WP_User ) { $column_value = $report_user->display_name; $column_value = str_replace("’", "'", $column_value ); } break; case 'user_email': if ( $report_user instanceof WP_User ) { $column_value = $report_user->user_email; } break; case 'course_id': if ( property_exists( $report_item, 'post_id' ) ) { $column_value = $report_item->post_id; } break; case 'course_title': if ( property_exists( $report_item, 'post_title' ) ) { $column_value = $report_item->post_title; $column_value = str_replace("’", "'", $column_value ); } break; case 'course_steps_total': $column_value = '0'; //if ( ( property_exists( $report_item, 'activity_meta' ) ) && ( !empty( $report_item->activity_meta ) ) ) { // if ( ( isset( $report_item->activity_meta['steps_total'] ) ) && (!empty( $report_item->activity_meta['steps_total'] ) ) ) { // $column_value = $report_item->activity_meta['steps_total']; // } //} else if ( ( property_exists( $report_item, 'post_id' ) ) && ( !empty( $report_item->post_id ) ) ) { // $column_value = learndash_get_course_steps_count( $report_item->post_id ); //} $column_value = learndash_get_course_steps_count( $report_item->post_id ); break; case 'course_steps_completed': $column_value = '0'; // First check if the user previously completed the course $user_completed_course = false; $completed_on = get_user_meta( $report_item->user_id, 'course_completed_' . $report_item->post_id, true ); if ( !empty( $completed_on ) ) { $user_completed_course = true; } else if ( property_exists( $report_item, 'activity_status' ) ) { if ( $report_item->activity_status == true ) { $user_completed_course = true; } } if ( $user_completed_course == true ) { // IF the user completed the course we set the user's completed steps to the number of steps in the course. $column_value = learndash_get_course_steps_count( $report_item->post_id ); } else if ( ( property_exists( $report_item, 'activity_meta' ) ) && ( !empty( $report_item->activity_meta ) ) ) { if ( ( isset( $report_item->activity_meta['steps_completed'] ) ) && (!empty( $report_item->activity_meta['steps_completed'] ) ) ) { $column_value = $report_item->activity_meta['steps_completed']; $course_steps_count = learndash_get_course_steps_count( $report_item->post_id ); if ( $column_value > $course_steps_count ) { $column_value = $course_steps_count; } } } break; case 'course_completed': $column_value = esc_html_x('NO', 'Course Complete Report label: NO', 'learndash'); $completed_on = get_user_meta( $report_item->user_id, 'course_completed_' . $report_item->post_id, true ); if ( !empty( $completed_on ) ) { $column_value = esc_html_x('YES', 'Course Complete Report label: YES', 'learndash'); } else if ( property_exists( $report_item, 'activity_status' ) ) { if ( $report_item->activity_status == true ) { $column_value = esc_html_x('YES', 'Course Complete Report label: YES', 'learndash'); } } break; case 'course_completed_on': $completed_on = get_user_meta( $report_item->user_id, 'course_completed_' . $report_item->post_id, true ); if ( !empty( $completed_on ) ) { return learndash_adjust_date_time_display( $completed_on, 'Y-m-d' ); } else if ( property_exists( $report_item, 'activity_status' ) ) { if ( $report_item->activity_status == true ) { if ( ( property_exists( $report_item, 'activity_completed' ) ) && ( !empty( $report_item->activity_completed ) ) ) { return learndash_adjust_date_time_display( $report_item->activity_completed, 'Y-m-d' ); } } } break; default: break; } /** * Allow filtering of the report column data * @since 2.4.7 */ return apply_filters('learndash_report_column_item', $column_value, $column_key, $report_item, $report_user, $this->data_slug ); } // End of functions } } PKc\ v![![_includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.phpnuW+Adata_slug] = array( 'class' => get_class( $this ), 'instance' => $this, 'slug' => $this->data_slug ); $this->set_report_headers(); return $report_actions; } function show_report_action() { ?> init_process_times(); if ( !isset( $data['total_count'] ) ) $data['total_count'] = 0; if ( !isset( $data['result_count'] ) ) $data['result_count'] = 0; if ( !isset( $data['progress_percent'] ) ) $data['progress_percent'] = 0; if ( !isset( $data['progress_label'] ) ) $data['progress_label'] = ''; $_DOING_INIT = false; require_once( LEARNDASH_LMS_LIBRARY_DIR . '/parsecsv.lib.php' ); $this->csv_parse = new lmsParseCSV(); if ( ( isset( $data['nonce'] ) ) && ( !empty( $data['nonce'] ) ) ) { if ( wp_verify_nonce( $data['nonce'], 'learndash-data-reports-'. $this->data_slug .'-'. get_current_user_id() ) ) { $this->transient_key = $this->data_slug .'_'. $data['nonce']; // On the 'init' (the first call via AJAX we load up the transient with the user_ids) if ( ( isset( $data['init'] ) ) && ( $data['init'] == 1 ) ) { $_DOING_INIT = true; unset( $data['init'] ); $this->transient_data = array(); if ( ( isset( $data['filters'] ) ) && ( !empty( $data['filters'] ) ) ) { //error_log('before: transient_data
      '. print_r($this->transient_data, true ) .'
      '); $this->transient_data = $query = wp_parse_args( $this->transient_data, $data['filters'] ); //error_log('after: transient_data
      '. print_r($this->transient_data, true ) .'
      '); //die(); } else { if ( ( isset( $data['group_id'] ) ) && ( !empty( $data['group_id'] ) ) ) { $this->transient_data['users_ids'] = learndash_get_groups_user_ids( intval( $data['group_id'] ) ); //$this->transient_data['posts_ids'] = learndash_get_group_course_quiz_ids( intval( $data['group_id'] ) ); $this->transient_data['course_ids'] = learndash_group_enrolled_courses( intval( intval( $data['group_id'] ) ) ); if ( empty( $this->transient_data['course_ids'] ) ) return $data; } else { $this->transient_data['posts_ids'] = ''; //$this->transient_data = array_merge( $this->transient_data, learndash_get_report_user_ids() ); $this->transient_data['users_ids'] = learndash_get_report_user_ids(); } } $this->transient_data['total_users'] = count( $this->transient_data['users_ids'] ); $this->set_report_filenames( $data ); //$this->report_filename = ABSPATH . $this->transient_data['report_filename']; $this->report_filename = $this->transient_data['report_filename']; $data['report_download_link'] = $this->transient_data['report_url']; $data['total_count'] = $this->transient_data['total_users']; // Clear out any previous file $reports_fp = fopen( $this->report_filename, 'w' ); fclose($reports_fp); $this->set_option_cache( $this->transient_key, $this->transient_data ); $this->send_report_headers_to_csv(); } else { //$this->transient_data = LDLMS_Transients::get( $this->transient_key ); $this->transient_data = $this->get_transient( $this->transient_key ); //$this->report_filename = ABSPATH . $this->transient_data['report_filename']; $this->report_filename = $this->transient_data['report_filename']; } if ( !empty( $this->transient_data['users_ids'] ) ) { // If we are doing the initial 'init' then we return so we can show the progress meter. if ( $_DOING_INIT != true) { $activity_query_args = array( 'post_types' => 'sfwd-quiz', 'activity_types' => 'quiz', 'activity_status' => array('IN_PROGRESS', 'COMPLETED'), 'orderby_order' => 'users.display_name, posts.post_title ASC', 'date_format' => 'F j, Y H:i:s', 'per_page' => '' ); $course_progress_data = array(); foreach( $this->transient_data['users_ids'] as $user_id_idx => $user_id ) { unset( $this->transient_data['users_ids'][$user_id_idx] ); $this->set_option_cache( $this->transient_key, $this->transient_data ); $report_user = get_user_by('id', $user_id); if ( $report_user !== false ) { $activity_query_args['user_ids'] = array( $user_id ); if ( ( isset( $this->transient_data['posts_ids'] ) ) && ( !empty( $this->transient_data['posts_ids'] ) ) ) { $post_ids = $this->transient_data['posts_ids']; $activity_query_args['post_ids'] = $post_ids; } if ( ( isset( $this->transient_data['course_ids'] ) ) && ( !empty( $this->transient_data['course_ids'] ) ) ) { $activity_query_args['course_ids'] = $this->transient_data['course_ids']; } $user_courses_reports = learndash_reports_get_activity( $activity_query_args ); if ( !empty( $user_courses_reports['results'] ) ) { foreach( $user_courses_reports['results'] as $result ) { $row = array(); foreach( $this->data_headers as $header_key => $header_data ) { if ( ( isset( $header_data['display'] ) ) && ( !empty( $header_data['display'] ) ) ) { $row[$header_key] = call_user_func_array( $header_data['display'], array( 'header_value' => $header_data['default'], 'header_key' => $header_key, 'item' => $result, 'report_user' => $report_user, ) ); } else if ( ( isset( $header_data['default'] ) ) && ( !empty( $header_data['default'] ) ) ) { $row[$header_key] = $header_data['default']; } else { $row[$header_key] = ''; } } if ( !empty($row ) ) { $course_progress_data[] = $row; } } } else { /* $row = array(); foreach( $this->data_headers as $header_key => $header_data ) { if ( ( isset( $header_data['display'] ) ) && ( !empty( $header_data['display'] ) ) ) { $row[$header_key] = call_user_func_array( $header_data['display'], array( 'header_value' => $header_data['default'], 'header_key' => $header_key, 'item' => new stdClass(), 'report_user' => $report_user, ) ); } else if ( ( isset( $header_data['default'] ) ) && ( !empty( $header_data['default'] ) ) ) { $row[$header_key] = $header_data['default']; } else { $row[$header_key] = ''; } } if ( !empty($row ) ) { $course_progress_data[] = $row; } */ } } if ( $this->out_of_timer() ) { break; } } if ( !empty( $course_progress_data ) ) { $this->csv_parse->file = $this->report_filename; $this->csv_parse->output_filename = $this->report_filename; // legacy $this->csv_parse = apply_filters('learndash_csv_object', $this->csv_parse, 'quizzes' ); /** * Filter to override CSV object attributes * @since 2.4.7 * This is basically the same as the above line with the exeption of the last param used * being the proper data slug instead of just 'courses'. */ $this->csv_parse = apply_filters('learndash_csv_object', $this->csv_parse, $this->data_slug ); $course_progress_data = apply_filters('learndash_csv_data', $course_progress_data, $this->data_slug ); $this->csv_parse->save( $this->report_filename, $course_progress_data, true, wp_list_pluck( $this->data_headers, 'label' ) ); } } $data['result_count'] = $data['total_count'] - count( $this->transient_data['users_ids'] ); $data['progress_percent'] = ( $data['result_count'] / $data['total_count'] ) * 100; $data['progress_label'] = sprintf( esc_html_x('%1$d of %2$s Users', 'placeholders: result count, total count', 'learndash'), $data['result_count'], $data['total_count']); } } } return $data; } function set_report_headers() { $this->data_headers = array(); $this->data_headers['user_id'] = array( 'label' => esc_html__( 'user_id', 'learndash' ), 'default' => '', 'display' => array( $this, 'report_column' ) ); $this->data_headers['user_name'] = array( 'label' => esc_html__( 'name', 'learndash' ), 'default' => '', 'display' => array( $this, 'report_column' ) ); $this->data_headers['user_email'] = array( 'label' => esc_html__( 'email', 'learndash' ), 'default' => '', 'display' => array( $this, 'report_column' ) ); $this->data_headers['quiz_id'] = array( 'label' => esc_html__( 'quiz_id', 'learndash' ), 'default' => '', 'display' => array( $this, 'report_column' ) ); $this->data_headers['quiz_title'] = array( 'label' => esc_html__( 'quiz_title', 'learndash' ), 'default' => '', 'display' => array( $this, 'report_column' ) ); /* $this->data_headers['quiz_rank'] = array( 'label' => 'rank', 'default' => '', 'display' => array( $this, 'report_column' ) ); */ $this->data_headers['quiz_score'] = array( 'label' => esc_html__( 'score', 'learndash' ), 'default' => '0', 'display' => array( $this, 'report_column' ) ); $this->data_headers['quiz_total'] = array( 'label' => esc_html__( 'total', 'learndash' ), 'default' => '0', 'display' => array( $this, 'report_column' ) ); $this->data_headers['quiz_date'] = array( 'label' => esc_html__( 'date', 'learndash' ), 'default' => '', 'display' => array( $this, 'report_column' ) ); $this->data_headers['quiz_points'] = array( 'label' => esc_html__( 'points', 'learndash' ), 'default' => '0', 'display' => array( $this, 'report_column' ) ); $this->data_headers['quiz_points_total'] = array( 'label' => esc_html__( 'points_total', 'learndash' ), 'default' => '0', 'display' => array( $this, 'report_column' ) ); $this->data_headers['quiz_percentage'] = array( 'label' => esc_html__( 'percentage', 'learndash' ), 'default' => '0', 'display' => array( $this, 'report_column' ) ); $this->data_headers['quiz_time_spent'] = array( 'label' => esc_html__( 'time_spent', 'learndash' ), 'default' => '0', 'display' => array( $this, 'report_column' ) ); $this->data_headers['quiz_passed'] = array( 'label' => esc_html__( 'passed', 'learndash' ), 'default' => esc_html_x('NO', 'Quiz Passed Report label: NO', 'learndash'), 'display' => array( $this, 'report_column' ) ); $this->data_headers['course_id'] = array( 'label' => esc_html__( 'course_id', 'learndash' ), 'default' => '', 'display' => array( $this, 'report_column' ) ); $this->data_headers['course_title'] = array( 'label' => esc_html__( 'course_title', 'learndash' ), 'default' => '', 'display' => array( $this, 'report_column' ) ); $this->data_headers = apply_filters('learndash_data_reports_headers', $this->data_headers, $this->data_slug ); } function send_report_headers_to_csv() { if ( !empty( $this->data_headers ) ) { $this->csv_parse->file = $this->report_filename; $this->csv_parse->output_filename = $this->report_filename; $this->csv_parse = apply_filters('learndash_csv_object', $this->csv_parse, 'quizzes' ); /** * Filter to override CSV object attributes * @since 2.4.7 * This is basically the same as the above line with the exeption of the last param used * being the proper data slug instead of just 'courses'. */ $this->csv_parse = apply_filters('learndash_csv_object', $this->csv_parse, $this->data_slug ); $this->data_headers = apply_filters('learndash_csv_data', $this->data_headers, $this->data_slug ); $this->csv_parse->save( $this->report_filename, array(), false, wp_list_pluck( $this->data_headers, 'label' ) ); } } function set_report_filenames( $data ) { $wp_upload_dir = wp_upload_dir(); //$wp_upload_dir['basedir'] = str_replace('\\', '/', $wp_upload_dir['basedir']); $ld_file_part = '/learndash/reports/learndash_reports_'. str_replace( array('ld_data_reports_', '-'), array('', '_'), $this->transient_key ) .'.csv'; $ld_wp_upload_filename = $wp_upload_dir['basedir'] . $ld_file_part; if ( wp_mkdir_p( dirname( $ld_wp_upload_filename ) ) === false ) { $data['error_message'] = esc_html__("ERROR: Cannot create working folder. Check that the parent folder is writable", 'learndash') ." ". $ld_wp_upload_dir; return $data; } file_put_contents( trailingslashit( dirname( $ld_wp_upload_filename ) ) .'index.php', '// nothing to see here'); // Because we on;y want to store the relative path //$ld_wp_upload_filename = str_replace( ABSPATH, '', $ld_wp_upload_filename ); $this->transient_data['report_filename'] = apply_filters( 'learndash_report_filename', $ld_wp_upload_filename, $this->data_slug ); //$this->transient_data['report_url'] = $wp_upload_dir['baseurl'] . $ld_file_part; $this->transient_data['report_url'] = add_query_arg( array( 'data-slug' => $this->data_slug, 'data-nonce' => $data['nonce'], 'ld-report-download' => 1 ), admin_url() //get_option('home') ); } function report_column( $column_value = '', $column_key, $report_item, $report_user ) { switch( $column_key ) { case 'user_id': if ( $report_user instanceof WP_User ) { $column_value = $report_user->ID; } break; case 'user_name': if ( $report_user instanceof WP_User ) { $column_value = $report_user->display_name; $column_value = str_replace("’", "'", $column_value ); } break; case 'user_email': if ( $report_user instanceof WP_User ) { $column_value = $report_user->user_email; } break; case 'quiz_id': if ( property_exists( $report_item, 'post_id' ) ) { $column_value = $report_item->post_id; } break; case 'quiz_title': if ( property_exists( $report_item, 'post_title' ) ) { $column_value = $report_item->post_title; $column_value = str_replace("’", "'", $column_value ); } break; case 'quiz_rank': if ( ( property_exists( $report_item, 'activity_meta' ) ) && ( !empty( $report_item->activity_meta ) ) ) { if ( ( isset( $report_item->activity_meta['rank'] ) ) && (!empty( $report_item->activity_meta['rank'] ) ) ) { $column_value = $report_item->activity_meta['rank']; } } break; case 'quiz_score': if ( ( property_exists( $report_item, 'activity_meta' ) ) && ( !empty( $report_item->activity_meta ) ) ) { if ( ( isset( $report_item->activity_meta['score'] ) ) && (!empty( $report_item->activity_meta['score'] ) ) ) { $column_value = $report_item->activity_meta['score']; } else { $column_value = '0'; } } break; case 'quiz_total': if ( ( property_exists( $report_item, 'activity_meta' ) ) && ( !empty( $report_item->activity_meta ) ) ) { if ( ( isset( $report_item->activity_meta['question_show_count'] ) ) && (!empty( $report_item->activity_meta['question_show_count'] ) ) ) { $column_value = $report_item->activity_meta['question_show_count']; } else if ( ( isset( $report_item->activity_meta['count'] ) ) && (!empty( $report_item->activity_meta['count'] ) ) ) { $column_value = $report_item->activity_meta['count']; } } break; case 'quiz_date': if ( ( property_exists( $report_item, 'activity_completed' ) ) && ( !empty( $report_item->activity_completed ) ) ) { $column_value = learndash_adjust_date_time_display( $report_item->activity_completed, 'Y-m-d' ); } break; case 'quiz_points': if ( ( property_exists( $report_item, 'activity_meta' ) ) && ( !empty( $report_item->activity_meta ) ) ) { if ( ( isset( $report_item->activity_meta['points'] ) ) && (!empty( $report_item->activity_meta['points'] ) ) ) { $column_value = $report_item->activity_meta['points']; } } break; case 'quiz_points_total': if ( ( property_exists( $report_item, 'activity_meta' ) ) && ( !empty( $report_item->activity_meta ) ) ) { if ( ( isset( $report_item->activity_meta['total_points'] ) ) && (!empty( $report_item->activity_meta['total_points'] ) ) ) { $column_value = $report_item->activity_meta['total_points']; } } break; case 'quiz_percentage': if ( ( property_exists( $report_item, 'activity_meta' ) ) && ( !empty( $report_item->activity_meta ) ) ) { if ( ( isset( $report_item->activity_meta['percentage'] ) ) && (!empty( $report_item->activity_meta['percentage'] ) ) ) { $column_value = number_format(round(floatval($report_item->activity_meta['percentage']), 2), 2); } } break; case 'quiz_time_spent': if ( ( property_exists( $report_item, 'activity_meta' ) ) && ( !empty( $report_item->activity_meta ) ) ) { if ( ( isset( $report_item->activity_meta['timespent'] ) ) && (!empty( $report_item->activity_meta['timespent'] ) ) ) { //$column_value = abs(round($report_item->activity_meta['timespent'])); $timespent = abs(round($report_item->activity_meta['timespent'])); $column_value = ''; if ( $timespent > 86400 ) { if ( !empty( $column_value ) ) $column_value .= ' '; $column_value .= floor($timespent / 86400) .'d'; $timespent %= 86400; } if ( $timespent > 3600 ) { if ( !empty( $column_value ) ) $column_value .= ' '; $column_value .= floor( $timespent / 3600 ) .'h'; $timespent %= 3600; } if ( $timespent > 60 ) { if ( !empty( $column_value ) ) $column_value .= ' '; $column_value .= floor( $timespent / 60 ) .'m'; $timespent %= 60; } if ( $timespent > 0 ) { if ( !empty( $column_value ) ) $column_value .= ' '; $column_value .= $timespent .'s'; } } } break; case 'quiz_passed': //$column_value = esc_html_x('NO', 'Quiz Passed Report label: NO', 'learndash'); if ( ( property_exists( $report_item, 'activity_meta' ) ) && ( !empty( $report_item->activity_meta ) ) ) { if ( ( isset( $report_item->activity_meta['pass'] ) ) && ( $report_item->activity_meta['pass'] == 1 ) ) { $column_value = esc_html_x('YES', 'Quiz Passed Report label: YES', 'learndash'); } } break; case 'course_id': if ( property_exists( $report_item, 'activity_course_id' ) ) { $course_id = intval( $report_item->activity_course_id ); if ( !empty( $course_id ) ) $column_value = $course_id; else $column_value = ''; } break; case 'course_title': if ( property_exists( $report_item, 'activity_course_id' ) ) { $course_id = intval( $report_item->activity_course_id ); if ( !empty( $course_id ) ) $column_value = get_the_title( $course_id ); else $column_value = ''; } break; default: break; } /** * Allow filtering of the report column data * @since 2.4.7 */ return apply_filters('learndash_report_column_item', $column_value, $column_key, $report_item, $report_user ); } // End of functions } } //new Learndash_Admin_Data_Reports_Quizzes(); PKc\u^D^D6includes/admin/class-learndash-admin-data-upgrades.phpnuW+Ameta_key = $this->transient_prefix . $this->data_slug; add_action( 'admin_init', array( $this, 'admin_init' ) ); if ( ! defined( 'LEARNDASH_PROCESS_TIME_PERCENT' ) ) { define( 'LEARNDASH_PROCESS_TIME_PERCENT', apply_filters( 'learndash_process_time_percent', 80 ) ); } if ( ! defined( 'LEARNDASH_PROCESS_TIME_SECONDS' ) ) { define( 'LEARNDASH_PROCESS_TIME_SECONDS', apply_filters( 'learndash_process_time_seconds', 10 ) ); } } /** * Get the current instance of this class or new. * * @since 2.3 * * @param string $instance_key Unique identifier for instance. * @return object instance of class. */ public static function get_instance( $instance_key = '' ) { if ( ! empty( $instance_key ) ) { if ( isset( self::$_instances[ $instance_key ] ) ) { return self::$_instances[ $instance_key ]; } } else { if ( null === self::$instance ) { self::$instance = new static(); } return self::$instance; } } /** * Add instance to static tracking array * * @since 2.4.0 */ final public static function add_instance() { $section = get_called_class(); if ( ! isset( self::$_instances[ $section ] ) ) { self::$_instances[ $section ] = new $section(); } } /** * Register the data upgrade action. * * @since 2.3 */ public function register_upgrade_action() { // Add ourselved to the upgrade actions. if ( ! isset( self::$upgrade_actions[ $this->data_slug ] ) ) { self::$upgrade_actions[ $this->data_slug ] = array( 'class' => get_called_class(), 'instance' => $this, 'slug' => $this->data_slug, ); } } /** * Initialize the LearnDash Settings array * * @since 2.3 * * @param bool $force_reload optional to force reload from database. * @return void. */ private function init_data_settings( $force_reload = false ) { if ( ( true !== $this->data_settings_loaded ) || ( true === $force_reload ) ) { $this->data_settings_loaded = true; $this->data_settings = get_option( 'learndash_data_settings', array() ); $data_settings_changed = false; if ( ! isset( $this->data_settings['db_version'] ) ) { $this->data_settings['db_version'] = 0; } if ( ! isset( $this->data_settings['version_history'] ) ) { $this->data_settings['version_history'] = array(); } if ( ! isset( $this->data_settings['prior_version'] ) ) { $this->data_settings['prior_version'] = ''; } if ( empty( $this->data_settings['prior_version'] ) ) { if ( get_option( 'learndash_quiz_migration_completed' ) ) { // If we have a prior version of LD. $this->data_settings['prior_version'] = '0.0.0.0'; } else { // Else we have a new install $this->data_settings['prior_version'] = 'new'; } $this->data_settings['version_history'][0] = $this->data_settings['prior_version']; $data_settings_changed = true; } if ( ! isset( $this->data_settings['current_version'] ) ) { $this->data_settings['current_version'] = 0; } if ( version_compare( LEARNDASH_VERSION, $this->data_settings['current_version'], 'ne' ) ) { if ( ! empty( $this->data_settings['current_version'] ) ) { $this->data_settings['prior_version'] = $this->data_settings['current_version']; if ( ! isset( $this->data_settings['version_history'][0] ) ) { $this->data_settings['version_history'][0] = $this->data_settings['prior_version']; } } $this->data_settings['current_version'] = LEARNDASH_VERSION; $this->data_settings['version_history'][ time() ] = LEARNDASH_VERSION; $data_settings_changed = true; } if ( empty( $this->data_settings['version_history'] ) ) { $this->data_settings['version_history'][ time() ] = $this->data_settings['current_version']; $this->data_settings['version_history'][0] = $this->data_settings['prior_version']; $data_settings_changed = true; } if ( true === $data_settings_changed ) { krsort( $this->data_settings['version_history'] ); $this->data_settings['version_history'] = array_slice( $this->data_settings['version_history'], 0, 25, true ); update_option( 'learndash_data_settings', $this->data_settings ); } } } /** * Get the LearnDash Settings array * * @since 2.3 * * @param string $key optional to return only specifc key value. * @return mixed. */ public function get_data_settings( $key = '' ) { $this->init_data_settings( true ); if ( ! empty( $key ) ) { if ( isset( $this->data_settings[ $key ] ) ) { return $this->data_settings[ $key ]; } } else { return $this->data_settings; } } /** * Set data upgrade option for instance. * * @since 2.3 * * @param string $key Key to data upgrade instance. * @param string $value Value for key iinstance. */ public function set_data_settings( $key = '', $value = '' ) { if ( empty( $key ) ) { return; } $this->init_data_settings( true ); $this->data_settings[ $key ] = $value; return update_option( 'learndash_data_settings', $this->data_settings ); } /** * General admin_init hook function to check admin notices. * * @since 2.3 */ public function admin_init() { $this->init_data_settings(); if ( true === $this->check_upgrade_admin_notice() ) { add_action( 'admin_notices', array( $this, 'show_upgrade_admin_notice' ) ); } } /** * Shows Data Upgrade admin notice. * * @version 2.3 */ public function show_upgrade_admin_notice() { if ( true !== self::$admin_notice_shown ) { self::$admin_notice_shown = true; $admin_notice_message = sprintf( // translators: placeholder: link to LearnDash Data Upgrade admin page. esc_html_x( 'LearnDash Notice: Please perform a %s. This is a required step to ensure accurate reporting.', 'placeholder: link to LearnDash Data Upgrade admin page', 'learndash' ), '' . esc_html__( 'LearnDash Data Upgrade', 'learndash' ) . '' ); ?>

      data_settings['user-meta-courses']['version'] ) ) && ( $this->data_settings['user-meta-courses']['version'] < LEARNDASH_SETTINGS_TRIGGER_UPGRADE_VERSION ) ) { $show_admin_notice = true; } if ( ( isset( $this->data_settings['user-meta-quizzes']['version'] ) ) && ( $this->data_settings['user-meta-quizzes']['version'] < LEARNDASH_SETTINGS_TRIGGER_UPGRADE_VERSION ) ) { $show_admin_notice = true; } return $show_admin_notice; } /** * Show the admin page content. * * @since 2.3 */ public function admin_page() { ?> $upgrade_action ) { $upgrade_action['instance']->show_upgrade_action(); } ?>
      time(), 'user_id' => get_current_user_id(), 'version' => LEARNDASH_SETTINGS_TRIGGER_UPGRADE_VERSION, ), $data ); $data_settings = array_diff_key( $data_settings, array( 'nonce' => '', 'slug' => '', 'continue' => '', 'progress_label' => '', 'result_count' => '', 'progress_percent' => '', ) ); $this->set_data_settings( $this->data_slug, $data_settings ); } /** * Return the last run details for the last completed data upgrade for the instance. * * @since 2.3 */ public function get_last_run_info() { $last_run_info = ''; $data_settings = $this->get_data_settings( $this->data_slug ); $last_run_info = esc_html__( 'Last run: none', 'learndash' ); if ( ! empty( $data_settings ) ) { if ( isset( $data_settings['user_id'] ) ) { $user = get_user_by( 'id', $data_settings['user_id'] ); if ( ( $user ) && ( is_a( $user, 'WP_User' ) ) ) { $last_run_info = sprintf( // translators: placeholders: date/time, user name. _x( 'Last run: %1$s by %2$s', 'placeholders: date/time, user name', 'learndash' ), learndash_adjust_date_time_display( $data_settings['last_run'] ), $user->display_name ); } } } return $last_run_info; } /** * Entry point to perform data upgrade for instance. * * @since 2.3 * * @param array $post_data Array of post dats sent via AJAX. * @param array $reply_data Array of return data returned to browser. * * @return array $reply_data. */ public function do_data_upgrades( $post_data = array(), $reply_data = array() ) { if ( ( isset( $post_data['slug'] ) ) && ( ! empty( $post_data['slug'] ) ) ) { $post_data_slug = esc_attr( $post_data['slug'] ); if ( isset( self::$upgrade_actions[ $post_data_slug ] ) ) { if ( isset( $post_data['data'] ) ) { $data = $post_data['data']; } else { $data = array(); } $reply_data = self::$upgrade_actions[ $post_data_slug ]['instance']->process_upgrade_action( $post_data ); } } return $reply_data; } /** * Initialize the processing timer. * * @since 2.3 */ protected function init_process_times() { $this->process_times['started'] = time(); $this->process_times['limit'] = intval( ini_get( 'max_execution_time' ) ); if ( empty( $this->process_times['limit'] ) ) { $this->process_times['limit'] = 60; } } /** * Check if the process timer is out of time. * * @since 2.3 */ protected function out_of_timer() { $this->process_times['current_time'] = time(); $this->process_times['ticks'] = $this->process_times['current_time'] - $this->process_times['started']; $this->process_times['percent'] = ( $this->process_times['ticks'] / $this->process_times['limit'] ) * 100; // If we are over 80% of the allowed processing time or over 10 seconds then finish up and return. if ( ( $this->process_times['percent'] >= LEARNDASH_PROCESS_TIME_PERCENT ) || ( $this->process_times['ticks'] > LEARNDASH_PROCESS_TIME_SECONDS ) ) { return true; } return false; } /** * Remove the processing transient for instance. * * @since 2.3 * * @param string $transient_key Transient key to identify transient. */ protected function remove_transient( $transient_key = '' ) { if ( ! empty( $transient_key ) ) { $options_key = $this->transient_prefix . $transient_key; $options_key = str_replace( '-', '_', $options_key ); return delete_option( $options_key ); } } /** * Get the processing transient for instance. * * @since 2.3 * * @param string $transient_key Transient key to identify transient. * @return mixed transient data. */ protected function get_transient( $transient_key = '' ) { if ( ! empty( $transient_key ) ) { $options_key = $this->transient_prefix . $transient_key; $options_key = str_replace( '-', '_', $options_key ); return get_option( $options_key ); } } /** * Set the processing transient for instance. * * @since 2.3 * * @param string $transient_key Transient key to identify transient. * @param array $transient_data Array for transient data. */ protected function set_option_cache( $transient_key = '', $transient_data = '' ) { if ( ! empty( $transient_key ) ) { $options_key = $this->transient_prefix . $transient_key; $options_key = str_replace( '-', '_', $options_key ); if ( ! empty( $transient_data ) ) { update_option( $options_key, $transient_data ); } else { delete_option( $options_key ); } } } // End of functions. } } // Go ahead and inlcude out User Meta Courses upgrade class. require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-translations.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-group-leader-role.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-activity-db-table.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-courses.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-quizzes.php'; //require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-quiz-questions.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list-convert.php'; require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-rename_wpproquiz-tables.php'; /** * Action to let other. * * @since 2.6.0 */ do_action( 'learndash_data_upgrades_init' ); /** * AJAX function to handle calls from browser on Data Upgrade cycles. */ function learndash_data_upgrades_ajax() { $reply_data = array( 'status' => false ); if ( isset( $_POST['data'] ) ) { $post_data = $_POST['data']; } else { $post_data = array(); } if ( learndash_is_admin_user() ) { $ld_admin_data_upgrades = Learndash_Admin_Data_Upgrades::get_instance(); $reply_data['data'] = $ld_admin_data_upgrades->do_data_upgrades( $post_data, $reply_data ); if ( ! empty( $reply_data ) ) { echo json_encode( $reply_data ); } } wp_die(); } add_action( 'wp_ajax_learndash-data-upgrades', 'learndash_data_upgrades_ajax' ); /** * Utility function to check if the data upgrade for Quiz Questions has been run. * * @since 2.6.0 * @return boolean true if has been run. */ function is_data_upgrade_quiz_questions_updated() { $data_settings_quiz_questions = learndash_data_upgrades_setting( 'pro-quiz-questions' ); if ( ( isset( $data_settings_quiz_questions['last_run'] ) ) && ( ! empty( $data_settings_quiz_questions['last_run'] ) ) ) { return true; } } function learndash_data_upgrades_setting( $settings_key = '' ) { $element = Learndash_Admin_Data_Upgrades::get_instance(); if ( ( $element ) && ( is_a( $element, 'Learndash_Admin_Data_Upgrades' ) ) ) { return $element->get_data_settings( $settings_key ); } } PKc\ >5>5includes/admin/ld-admin.phpnuW+A id, $learndash_post_types ) ) { $class .= ' learndash-post-type ' . $screen->post_type; } if ( in_array( $screen->post_type, $learndash_post_types ) ) { $class .= ' learndash-screen'; } if ( learndash_is_group_leader_user() ) { $class .= ' learndash-user-group-leader'; } else { $class .= ' learndash-user-admin'; } return $class; } add_filter( 'admin_body_class', 'learndash_admin_body_class' ); /** * Hide top level menu when there are no submenus * * @since 2.1.0 */ function learndash_hide_menu_when_not_required() { ?> post_type, $learndash_post_types ) ) ) { $is_ld_pagenow = true; } $load_admin_assets = false; if ( ( true === $is_ld_page ) || ( true === $is_ld_post_type ) || ( true === $is_ld_pagenow ) ) { $load_admin_assets = true; } return apply_filters( 'learndash_load_admin_assets', $load_admin_assets ); } /** * Scripts/styles for admin * * @since 2.1.0 */ function learndash_load_admin_resources() { global $pagenow, $post, $typenow; //global $learndash_post_types, $learndash_pages; global $learndash_assets_loaded; wp_enqueue_style( 'learndash-admin-menu-style', LEARNDASH_LMS_PLUGIN_URL . 'assets/css/learndash-admin-menu' . leardash_min_asset() . '.css', array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'learndash-admin-menu-style', 'rtl', 'replace' ); $learndash_assets_loaded['styles']['learndash-admin-menu-style'] = __FUNCTION__; wp_enqueue_script( 'learndash-admin-menu-script', LEARNDASH_LMS_PLUGIN_URL . 'assets/js/learndash-admin-menu' . leardash_min_asset() . '.js', array( 'jquery' ), LEARNDASH_SCRIPT_VERSION_TOKEN, true ); wp_style_add_data( 'learndash-admin-menu-script', 'rtl', 'replace' ); $learndash_assets_loaded['scripts']['learndash-admin-menu-script'] = __FUNCTION__; if ( learndash_should_load_admin_assets() ) { /** * Needed for standalone Builders. */ // to get the tinyMCE editor wp_enqueue_editor(); // for media uploads wp_enqueue_media(); wp_enqueue_style( 'learndash_style', LEARNDASH_LMS_PLUGIN_URL . 'assets/css/style' . leardash_min_asset() . '.css', array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'learndash_style', 'rtl', 'replace' ); $learndash_assets_loaded['styles']['learndash_style'] = __FUNCTION__; wp_enqueue_style( 'learndash-admin-style', LEARNDASH_LMS_PLUGIN_URL . 'assets/css/learndash-admin-style' . leardash_min_asset() . '.css', array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'learndash-admin-style', 'rtl', 'replace' ); $learndash_assets_loaded['styles']['learndash-admin-style'] = __FUNCTION__; wp_enqueue_style( 'sfwd-module-style', LEARNDASH_LMS_PLUGIN_URL . 'assets/css/sfwd_module' . leardash_min_asset() . '.css', array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'sfwd-module-style', 'rtl', 'replace' ); $learndash_assets_loaded['styles']['sfwd-module-style'] = __FUNCTION__; if ( ( $pagenow == 'edit.php' ) && ( in_array( $typenow, array( 'sfwd-essays', 'sfwd-assignment', 'sfwd-topic', 'sfwd-quiz' ) ) ) ) { wp_enqueue_script( 'sfwd-module-script', LEARNDASH_LMS_PLUGIN_URL . 'assets/js/sfwd_module' . leardash_min_asset() . '.js', array( 'jquery' ), LEARNDASH_SCRIPT_VERSION_TOKEN, true ); $learndash_assets_loaded['scripts']['sfwd-module-script'] = __FUNCTION__; wp_localize_script( 'sfwd-module-script', 'sfwd_data', array() ); } } if ( ( in_array( $pagenow, array( 'post.php', 'post-new.php' ) ) ) && ( $post->post_type == 'sfwd-quiz' ) ) { wp_enqueue_script( 'wpProQuiz_admin_javascript', plugins_url( 'js/wpProQuiz_admin' . leardash_min_asset() . '.js', WPPROQUIZ_FILE ), array( 'jquery' ), LEARNDASH_SCRIPT_VERSION_TOKEN, true ); $learndash_assets_loaded['scripts']['wpProQuiz_admin_javascript'] = __FUNCTION__; } if ( ( in_array( $pagenow, array( 'post.php', 'post-new.php' ) ) ) && ( $post->post_type == 'sfwd-lessons' ) ) { wp_enqueue_style( 'ld-datepicker-ui-css', LEARNDASH_LMS_PLUGIN_URL . 'assets/css/jquery-ui' . leardash_min_asset() . '.css', array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'ld-datepicker-ui-css', 'rtl', 'replace' ); $learndash_assets_loaded['styles']['ld-datepicker-ui-css'] = __FUNCTION__; } if ( ( ( $pagenow == 'admin.php' ) && ( isset( $_GET['page'] ) ) && ( $_GET['page'] == 'ldAdvQuiz' ) ) && ( ( isset( $_GET['module'] ) ) && ( $_GET['module'] == 'statistics' ) ) ) { wp_enqueue_style( 'ld-datepicker-ui-css', LEARNDASH_LMS_PLUGIN_URL . 'assets/css/jquery-ui' . leardash_min_asset() . '.css', array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'ld-datepicker-ui-css', 'rtl', 'replace' ); $learndash_assets_loaded['styles']['ld-datepicker-ui-css'] = __FUNCTION__; } } add_action( 'admin_enqueue_scripts', 'learndash_load_admin_resources' ); /** * Change label in admin bar on single topic to 'Edit Topic' * * @todo consider for deprecation, action is commented * * @since 2.1.0 */ function learndash_admin_bar_link() { global $wp_admin_bar; global $post; if ( ! is_super_admin() || ! is_admin_bar_showing() ) { return; } if ( is_single() && $post->post_type == 'sfwd-topic' ) { $wp_admin_bar->add_menu( array( 'id' => 'edit_fixed', 'parent' => false, 'title' => sprintf( esc_html_x( 'Edit %s', 'Edit Topic Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'topic' ) ), 'href' => get_edit_post_link( $post->id ), ) ); } } /** * Output Reports Page * * @since 2.1.0 */ function learndash_lms_reports_page() { ?>


      esc_html__( 'Shortcode', 'learndash' ) ), array_slice( $cols, 3 ) ); } /** * Assigned Course columns in admin for Lessons and Quizes * * @since 2.1.0 * * @param array $cols admin columns for post type * @return array $cols admin columns for post type */ function add_course_data_columns( $cols ) { global $typenow; $new_columns = array(); if ( in_array( $typenow, array( 'sfwd-assignment' ) ) !== false ) { $new_columns = array( 'course' => sprintf( esc_html_x( 'Assigned %s', 'Assigned Course Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'lesson' => sprintf( esc_html_x( 'Assigned %s', 'Assigned Lesson Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), ); } else { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) != 'yes' ) { $new_columns = array( 'course' => sprintf( esc_html_x( 'Assigned %s', 'Assigned Course Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), ); } } if ( ! empty( $new_columns ) ) { $cols = array_merge( array_slice( $cols, 0, 3 ), $new_columns, array_slice( $cols, 3 ) ); } return $cols; } /** * Assigned Lesson & Assigned Course columns in admin for Topics and Assignments * * @since 2.1.0 * * @param array $cols admin columns for post type * @return array $cols admin columns for post type */ function add_lesson_data_columns( $cols ) { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) != 'yes' ) { $cols = array_merge( array_slice( $cols, 0, 3 ), array( 'course' => sprintf( esc_html_x( 'Assigned %s', 'Assigned Course Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'lesson' => sprintf( esc_html_x( 'Assigned %s', 'Assigned Lesson Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), ), array_slice( $cols, 3 ) ); } return $cols; } /** * Status columns in admin for Assignments * * @since 2.1.0 * * @param array $cols admin columns for post type * @return array $cols admin columns for post type */ function add_assignment_data_columns( $cols ) { return array_merge( array_slice( $cols, 0, 3 ), array( 'approval_status' => esc_html__( 'Status', 'learndash' ), 'approval_points' => esc_html__( 'Points', 'learndash' ), ), array_slice( $cols, 3 ) ); } /** * Remove tags column for quizzes * * @since 2.1.0 * * @param array $cols admin columns for post type * @return array $cols admin columns for post type */ function remove_tags_column( $cols ) { unset( $cols['tags'] ); return $cols; } /** * Remove categories column for quizzes * * @since 2.1.0 * * @param array $cols admin columns for post type * @return array $cols admin columns for post type */ function remove_categories_column( $cols ) { unset( $cols['categories'] ); return $cols; } /** * Output approval status for assignment in admin column * * @since 2.1.0 * * @param string $column_name Name of the column. * @param int $assignment_id ID of the assigment. */ function manage_asigned_assignment_columns( $column_name, $assignment_id ) { switch ( $column_name ) { case 'approval_status': $assignment_lesson_id = intval( get_post_meta( $assignment_id, 'lesson_id', true ) ); if ( ! empty( $assignment_lesson_id ) ) { $approval_status_flag = learndash_is_assignment_approved_by_meta( $assignment_id ); if ( 1 == $approval_status_flag ) { $approval_status_label = _x( 'Approved', 'Assignment approval status', 'learndash' ); } else { $approval_status_flag = 0; $approval_status_label = _x( 'Not Approved', 'Assignment approval status', 'learndash' ); } $approval_status_url = admin_url( 'edit.php?post_type=' . @$_GET['post_type'] . '&approval_status=' . $approval_status_flag ); echo '' . esc_html( $approval_status_label ) . ''; if ( 1 != $approval_status_flag ) { ?> '; } else { $current_points = '0'; } } echo sprintf( _x( '%1$s / %2$s', 'placeholders: current points / maximum point for assignment', 'learndash' ), $current_points, $max_points ); } else { esc_html_x( 'Not Enabled', 'Points for assignment not enabled', 'learndash' ); } break; default: break; } } /** * Output values for Assigned Courses in admin columns * for lessons, quizzes, topics, assignments * * @since 2.1.0 * * @param string $column_name * @param int $id */ function manage_asigned_course_columns( $column_name, $id ) { global $typenow; switch ( $column_name ) { case 'shortcode': $valid_quiz = false; $quiz_pro_id = learndash_get_setting( $id, 'quiz_pro', true ); $quiz_pro_id = absint( $quiz_pro_id ); if ( ! empty( $quiz_pro_id ) ) { $quiz_mapper = new WpProQuiz_Model_QuizMapper(); $quiz_pro = $quiz_mapper->fetch( $quiz_pro_id ); if ( ( is_a( $quiz_pro, 'WpProQuiz_Model_Quiz' ) ) && ( $quiz_pro_id === $quiz_pro->getId() ) ) { $valid_quiz = true; echo '[ld_quiz quiz_id="' . $id . '"]'; echo '
      [LDAdvQuiz ' . $quiz_pro_id . ']'; echo '
      [LDAdvQuiz_toplist ' . $quiz_pro_id . ']'; } } if ( false === $valid_quiz ) { ?> ' . get_the_title( $course_id ) . ''; $row_actions['edit'] = '' . esc_html__( 'edit', 'learndash' ) . ''; $row_actions['filter_post'] = '' . esc_html__( 'filter', 'learndash' ) . ''; echo learndash_list_table_row_actions( $row_actions ); } else { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) != 'yes' ) { if ( get_post_type( $id ) === 'sfwd-quiz' ) { echo '—'; } else { echo ''; } } else { echo '—'; } } break; case 'lesson': if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { if ( in_array( $typenow, array( 'sfwd-assignment' ) ) ) { $course_id = get_post_meta( $id, 'course_id', true ); $lesson_id = get_post_meta( $id, 'lesson_id', true ); } elseif ( ( isset( $_GET['course_id'] ) ) && ( ! empty( $_GET['course_id'] ) ) ) { $course_id = intval( $_GET['course_id'] ); $lesson_id = learndash_course_get_single_parent_step( $course_id, $id ); } else { $lesson_id = get_post_meta( $id, 'lesson_id', true ); } } else { //$lesson_id = learndash_get_setting( $id, 'lesson' ); $lesson_id = get_post_meta( $id, 'lesson_id', true ); //$course_id = learndash_get_setting( $id, 'course' ); $course_id = get_post_meta( $id, 'course_id', true ); } if ( ! empty( $lesson_id ) ) { $row_actions = array(); $edit_url = get_edit_post_link( $lesson_id ); $filter_url = add_query_arg( 'lesson_id', $lesson_id ); //$course_id = get_post_meta( $id, 'course_id', true ); if ( ! empty( $course_id ) ) { // For the filter URL we always add the course if available. $filter_url = add_query_arg( 'course_id', $course_id, $filter_url ); if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $edit_url = add_query_arg( 'course_id', $course_id, $edit_url ); } else { $edit_url = remove_query_arg( 'course_id', $edit_url ); } } else { $filter_url = remove_query_arg( 'course_id', $filter_url ); $edit_url = remove_query_arg( 'course_id', $edit_url ); } echo '' . get_the_title( $lesson_id ) . ''; $row_actions['edit'] = '' . esc_html__( 'edit', 'learndash' ) . ''; $row_actions['filter_post'] = '' . esc_html__( 'filter', 'learndash' ) . ''; echo learndash_list_table_row_actions( $row_actions ); } else { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) != 'yes' ) { if ( get_post_type( $id ) === 'sfwd-quiz' ) { echo '—'; } else { echo ''; } } else { echo '—'; } } break; default: break; } } function learndash_list_table_row_actions( $actions, $always_visible = false ) { $action_count = count( $actions ); $i = 0; if ( ! $action_count ) { return ''; } $out = '
      '; foreach ( $actions as $action => $link ) { ++$i; ( $i == $action_count ) ? $sep = '' : $sep = ' | '; $out .= "$link$sep"; } $out .= '
      '; $out .= ''; return $out; } /** * Output select dropdown before the filter button to filter post listing * by course * * @since 2.1.0 */ function restrict_listings_by_course( $post_type, $location = '' ) { global $pagenow, $sfwd_lms; $ld_post_types = array( //'sfwd-courses', //'sfwd-lessons', //'sfwd-topic', //'sfwd-quiz', 'sfwd-certificates', 'groups', 'sfwd-assignment', 'sfwd-transactions', 'sfwd-essays', ); if ( ! is_admin() ) { return; } if ( 'edit.php' !== $pagenow ) { return; } if ( ( isset( $_GET['post_status'] ) ) && ( 'trash' === $_GET['post_status'] ) ) { return; } if ( ( ! isset( $post_type ) ) || ( ! in_array( $post_type, $ld_post_types ) ) ) { return; } // First we display the object taxonomies if ( ! in_array( $post_type, array( 'sfwd-quiz' ) ) ) { $object_taxonomies = get_object_taxonomies( $post_type ); if ( ( ! empty( $object_taxonomies ) ) && ( is_array( $object_taxonomies ) ) ) { // We remove 'category' from the object taxonomies because by now WP has already output it. // Maybe at some point we can move the filter earlier $object_taxonomies = array_diff( $object_taxonomies, array( 'category' ) ); } $object_taxonomies = apply_filters( 'learndash-admin-taxonomy-filters-display', $object_taxonomies, $post_type ); if ( ( ! empty( $object_taxonomies ) ) && ( is_array( $object_taxonomies ) ) ) { foreach ( $object_taxonomies as $taxonomy_slug ) { if ( isset( $_GET[ $taxonomy_slug ] ) ) { $selected = esc_attr( $_GET[ $taxonomy_slug ] ); } else { $selected = false; } //if ( $taxonomy_slug == 'post_tag' ) // $taxonomy_slug_name = 'tag'; //else $taxonomy_slug_name = $taxonomy_slug; $dropdown_options = array( 'taxonomy' => $taxonomy_slug, 'name' => $taxonomy_slug_name, //'show_option_all' => get_taxonomy( $taxonomy_slug )->labels->all_items, 'show_option_none' => get_taxonomy( $taxonomy_slug )->labels->all_items, 'option_none_value' => '', 'hide_empty' => 0, 'hierarchical' => get_taxonomy( $taxonomy_slug )->hierarchical, 'show_count' => 0, 'orderby' => 'name', 'value_field' => 'slug', 'selected' => $selected, ); echo ''; wp_dropdown_categories( $dropdown_options ); } } } $cpt_filters_shown['sfwd-courses'] = array( 'sfwd-lessons', 'sfwd-topic', 'sfwd-assignment', 'sfwd-quiz', 'sfwd-essays', /* 'sfwd-certificates', */ 'groups', 'sfwd-transactions' ); $cpt_filters_shown['sfwd-lessons'] = array( 'sfwd-topic', 'sfwd-assignment', 'sfwd-quiz', 'sfwd-essays' ); $cpt_filters_shown['sfwd-topic'] = array(); $cpt_filters_shown['sfwd-quiz'] = array( 'sfwd-essays' /* 'sfwd-certificates' */ ); $cpt_filters_shown = apply_filters( 'learndash-admin-cpt-filters-display', $cpt_filters_shown ); $course_ids = array(); $lesson_ids = array(); $group_ids = array(); // Courses filter if ( in_array( $_GET['post_type'], $cpt_filters_shown['sfwd-courses'] ) ) { $query_options_course = array( 'post_type' => 'sfwd-courses', 'post_status' => 'any', 'posts_per_page' => -1, 'orderby' => 'title', 'order' => 'ASC', ); if ( learndash_is_group_leader_user( get_current_user_id() ) ) { $group_ids = learndash_get_administrators_group_ids( get_current_user_id() ); if ( ! empty( $group_ids ) && is_array( $group_ids ) ) { foreach ( $group_ids as $group_id ) { $group_course_ids = learndash_group_enrolled_courses( $group_id ); if ( ! empty( $group_course_ids ) && is_array( $group_course_ids ) ) { $course_ids = array_merge( $course_ids, $group_course_ids ); } } } if ( ! empty( $course_ids ) && count( $course_ids ) ) { $query_options_course['post__in'] = $course_ids; } } $lazy_load = apply_filters( 'learndash_element_lazy_load_admin', true ); if ( true == $lazy_load ) { $lazy_load = apply_filters( 'learndash_element_lazy_load_admin_' . $_GET['post_type'] . '_filters', true ); if ( true == $lazy_load ) { $query_options_course['paged'] = 1; $query_options_course['posts_per_page'] = apply_filters( 'learndash_element_lazy_load_per_page', LEARNDASH_LMS_DEFAULT_LAZY_LOAD_PER_PAGE, $_GET['post_type'] ); } } $query_options_course = apply_filters( 'learndash_course_post_options_filter', $query_options_course, $_GET['post_type'] ); $query_posts_course = new WP_Query( $query_options_course ); if ( ! empty( $query_posts_course->posts ) ) { if ( count( $query_posts_course->posts ) >= $query_posts_course->found_posts ) { // If the number of returned posts is equal or greater then found_posts then no need to run lazy load $lazy_load = false; } $post_type_nonce = wp_create_nonce( 'sfwd-courses' ); if ( true == $lazy_load ) { $lazy_load_data = array(); $lazy_load_data['query_vars'] = $query_options_course; $lazy_load_data['query_type'] = 'WP_Query'; $lazy_load_data['nonce'] = $post_type_nonce; if ( ( isset( $_GET['course_id'] ) ) && ( ! empty( $_GET['course_id'] ) ) ) { $lazy_load_data['value'] = intval( $_GET['course_id'] ); } else { $lazy_load_data['value'] = 0; } $lazy_load_data = ' learndash_lazy_load_data="' . htmlspecialchars( json_encode( $lazy_load_data ) ) . '" '; } else { $lazy_load_data = ''; } echo ''; $lazy_load_spinner = ''; echo $lazy_load_spinner; } } // Lessons filter if ( in_array( $_GET['post_type'], $cpt_filters_shown['sfwd-lessons'] ) ) { echo "'; } // Topicss filter if ( in_array( $_GET['post_type'], $cpt_filters_shown['sfwd-topic'] ) ) { $query_options_topic = array( 'post_type' => 'sfwd-topic', 'post_status' => 'any', 'posts_per_page' => -1, 'orderby' => 'title', 'order' => 'ASC', ); // If the course_id is selected we limit the lesson selector to only those related to course_id // @since 2.3 if ( ( isset( $_GET['lesson_id'] ) ) && ( ! empty( $_GET['lesson_id'] ) ) ) { $query_options_topic['meta_key'] = 'lesson_id'; $query_options_topic['meta_value'] = intval( $_GET['lesson_id'] ); $query_options_topic['meta_compare'] = '='; } else { if ( ! empty( $lesson_ids ) && count( $lesson_ids ) ) { if ( ! isset( $query_options_topic['meta_query'] ) ) { $query_options_topic['meta_query'] = array(); } $query_options_topic['meta_query'][] = array( 'key' => 'lesson_id', 'value' => $lesson_ids, 'compare' => 'IN', ); } } $lazy_load = apply_filters( 'learndash_element_lazy_load_admin', true ); if ( $lazy_load == true ) { $lazy_load = apply_filters( 'learndash_element_lazy_load_admin_' . $_GET['post_type'] . '_filters', true ); if ( $lazy_load == true ) { $query_options_topic['paged'] = 1; $query_options_topic['posts_per_page'] = apply_filters( 'learndash_element_lazy_load_per_page', LEARNDASH_LMS_DEFAULT_LAZY_LOAD_PER_PAGE, $_GET['post_type'] ); } } $query_options_topic = apply_filters( 'learndash_lesson_post_options_filter', $query_options_topic, $_GET['post_type'] ); $query_posts_topic = new WP_Query( $query_options_topic ); if ( ! empty( $query_posts_topic->posts ) ) { if ( count( $query_posts_topic->posts ) >= $query_posts_topic->found_posts ) { // If the number of returned posts is equal or greater then found_posts then no need to run lazy load $lazy_load = false; } $post_type_nonce = wp_create_nonce( 'sfwd-topic' ); if ( $lazy_load == true ) { $lazy_load_data = array(); $lazy_load_data['query_vars'] = $query_options_topic; $lazy_load_data['query_type'] = 'WP_Query'; $lazy_load_data['nonce'] = $post_type_nonce; if ( isset( $_GET['topic_id'] ) ) { $lazy_load_data['value'] = intval( $_GET['topic_id'] ); } else { $lazy_load_data['value'] = 0; } $lazy_load_data = ' learndash_lazy_load_data="' . htmlspecialchars( json_encode( $lazy_load_data ) ) . '" '; } else { $lazy_load_data = ''; } echo ''; } } // Quiz Filters if ( in_array( $_GET['post_type'], $cpt_filters_shown['sfwd-quiz'] ) ) { //$quiz = new WpProQuiz_Model_QuizMapper(); //$quizzes = $quiz->fetchAll(); //echo "'; $query_options_quiz = array( 'post_type' => 'sfwd-quiz', 'post_status' => 'any', 'posts_per_page' => -1, 'orderby' => 'title', 'order' => 'ASC', ); // If the course_id is selected we limit the lesson selector to only those related to course_id // @since 2.3 if ( ( isset( $_GET['course_id'] ) ) && ( ! empty( $_GET['course_id'] ) ) ) { $query_options_quiz['meta_key'] = 'course_id'; $query_options_quiz['meta_value'] = intval( $_GET['course_id'] ); } else { if ( ! empty( $course_ids ) && count( $course_ids ) ) { if ( ! isset( $query_options_quiz['meta_query'] ) ) { $query_options_quiz['meta_query'] = array(); } $query_options_quiz['meta_query'][] = array( 'key' => 'course_id', 'value' => $course_ids, 'compare' => 'IN', ); } } $query_options_quiz = apply_filters( 'learndash_lesson_post_options_filter', $query_options_quiz, $_GET['post_type'] ); $query_posts_quiz = new WP_Query( $query_options_quiz ); if ( ! empty( $query_posts_quiz->posts ) ) { if ( count( $query_posts_quiz->posts ) >= $query_posts_quiz->found_posts ) { // If the number of returned posts is equal or greater then found_posts then no need to run lazy load $lazy_load = false; } $post_type_nonce = wp_create_nonce( 'sfwd-quiz' ); if ( $lazy_load == true ) { $lazy_load_data = array(); $lazy_load_data['query_vars'] = $query_options_quiz; $lazy_load_data['query_type'] = 'WP_Query'; $lazy_load_data['nonce'] = $post_type_nonce; if ( isset( $_GET['quiz_id'] ) ) { $lazy_load_data['value'] = intval( $_GET['quiz_id'] ); } else { $lazy_load_data['value'] = 0; } $lazy_load_data = ' learndash_lazy_load_data="' . htmlspecialchars( json_encode( $lazy_load_data ) ) . '" '; } else { $lazy_load_data = ''; } echo ''; } else { echo "'; } } if ( $_GET['post_type'] == 'sfwd-assignment' ) { $selected_1 = ''; $selected_0 = ''; if ( isset( $_GET['approval_status'] ) ) { if ( $_GET['approval_status'] == 1 ) { $selected_1 = 'selected="selected"'; $selected_0 = ''; } if ( $_GET['approval_status'] == 0 ) { $selected_0 = 'selected="selected"'; $selected_1 = ''; } } elseif ( ( isset( $_GET['approval_status'] ) ) && ( $_GET['approval_status'] == 0 ) ) { $selected_0 = 'selected="selected"'; $selected_1 = ''; } elseif ( ! isset( $_GET['approval_status'] ) ) { $selected_0 = ''; $selected_1 = ''; } ?> query_vars; if ( ! is_admin() ) { return; } if ( $pagenow != 'edit.php' ) { return; } if ( ! $query->is_main_query() ) { return; } if ( empty( $typenow ) ) { return; } /* if ( ( isset( $_GET['course_id'] ) ) && ( !empty( $_GET['course_id'] ) ) && ( $typenow == 'sfwd-lessons' || $typenow == 'sfwd-topic' || $typenow == 'sfwd-quiz' || $typenow == 'sfwd-assignment' || $typenow == 'sfwd-essays' ) ) { $q_vars['meta_query'][] = array( 'key' => 'course_id', 'value' => $_GET['course_id'], ); } if ( ( isset($_GET['lesson_id'] ) ) && ( !empty( $_GET['lesson_id'] ) ) && ( $typenow == 'sfwd-topic' || $typenow == 'sfwd-assignment' || $typenow == 'sfwd-essays' ) ) { $q_vars['meta_query'][] = array( 'key' => 'lesson_id', 'value' => $_GET['lesson_id'], ); } if ( ( isset( $_GET['quiz_id'] ) ) && ( !empty( $_GET['quiz_id'] ) ) && ( $typenow == 'sfwd-essays' ) ) { $q_vars['meta_query'][] = array( 'key' => 'quiz_id', 'value' => intval( $_GET['quiz_id'] ), ); } // set custom post status anytime we are looking at essays with no particular post status if ( ( isset( $_GET['post_status'] ) ) && ( !isset( $_GET['post_status'] ) ) && ( $typenow == 'sfwd-essays' ) ) { $q_vars['post_status'] = array( 'graded', 'not_graded' ); } if ( ( isset( $_GET['approval_status'] ) ) && ( $typenow == 'sfwd-topic' || $typenow == 'sfwd-assignment' ) ) { if ( $_GET['approval_status'] == 1 ) { $q_vars['meta_query'][] = array( 'key' => 'approval_status', 'value' => 1, ); } else if ( $_GET['approval_status'] == 0 ) { $q_vars['meta_query'][] = array( 'key' => 'approval_status', 'compare' => 'NOT EXISTS', ); } } } */ if ( $typenow == 'sfwd-courses' ) { if ( ( isset( $_GET['post_tag'] ) ) && ( ! empty( $_GET['post_tag'] ) ) ) { $post_tag = esc_attr( $_GET['post_tag'] ); if ( $post_tag != '0' ) { $post_tag_term = get_term_by( 'slug', $post_tag, 'post_tag' ); if ( ( ! empty( $post_tag_term ) ) && ( $post_tag_term instanceof WP_Term ) ) { $q_vars['tag_id'] = $post_tag_term->term_id; } } } } elseif ( $typenow == 'sfwd-lessons' ) { if ( ( isset( $_GET['course_id'] ) ) && ( ! empty( $_GET['course_id'] ) ) ) { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $course_steps_by_type = learndash_course_get_steps_by_type( intval( $_GET['course_id'] ), $typenow ); if ( ! empty( $course_steps_by_type ) ) { $q_vars['post__in'] = $course_steps_by_type; $q_vars['orderby'] = 'post__in'; } } else { if ( ! isset( $q_vars['meta_query'] ) ) { $q_vars['meta_query'] = array(); } $q_vars['meta_query'][] = array( 'key' => 'course_id', 'value' => intval( $_GET['course_id'] ), ); } } if ( ( isset( $_GET['post_tag'] ) ) && ( ! empty( $_GET['post_tag'] ) ) ) { $post_tag = esc_attr( $_GET['post_tag'] ); if ( $post_tag != '0' ) { $post_tag_term = get_term_by( 'slug', $post_tag, 'post_tag' ); if ( ( ! empty( $post_tag_term ) ) && ( $post_tag_term instanceof WP_Term ) ) { $q_vars['tag_id'] = $post_tag_term->term_id; } } } } elseif ( $typenow == 'sfwd-topic' ) { if ( ( isset( $_GET['post_tag'] ) ) && ( ! empty( $_GET['post_tag'] ) ) ) { $post_tag = esc_attr( $_GET['post_tag'] ); if ( $post_tag != '0' ) { $post_tag_term = get_term_by( 'slug', $post_tag, 'post_tag' ); if ( ( ! empty( $post_tag_term ) ) && ( $post_tag_term instanceof WP_Term ) ) { $q_vars['tag_id'] = $post_tag_term->term_id; } } } if ( ( isset( $_GET['course_id'] ) ) && ( ! empty( $_GET['course_id'] ) ) ) { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $course_steps_by_type = learndash_course_get_steps_by_type( intval( $_GET['course_id'] ), $typenow ); if ( ! empty( $course_steps_by_type ) ) { $q_vars['post__in'] = $course_steps_by_type; $q_vars['orderby'] = 'post__in'; } } else { if ( ! isset( $q_vars['meta_query'] ) ) { $q_vars['meta_query'] = array(); } $q_vars['meta_query'][] = array( 'key' => 'course_id', 'value' => intval( $_GET['course_id'] ), ); } } if ( ( isset( $_GET['lesson_id'] ) ) && ( ! empty( $_GET['lesson_id'] ) ) ) { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $lesson_topics = learndash_course_get_children_of_step( intval( $_GET['course_id'] ), intval( $_GET['lesson_id'] ), $typenow ); if ( ! empty( $lesson_topics ) ) { $HAS_LESSONS = true; $q_vars['post__in'] = $lesson_topics; } } else { if ( ! isset( $q_vars['meta_query'] ) ) { $q_vars['meta_query'] = array(); } $q_vars['meta_query'][] = array( 'key' => 'lesson_id', 'value' => intval( $_GET['lesson_id'] ), ); } } $q_vars['relation'] = 'AND'; } elseif ( $typenow == 'sfwd-quiz' ) { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { if ( ( isset( $_GET['course_id'] ) ) && ( ! empty( $_GET['course_id'] ) ) ) { $quiz_ids = array(); if ( ( isset( $_GET['lesson_id'] ) ) && ( ! empty( $_GET['lesson_id'] ) ) ) { $quiz_ids = learndash_course_get_children_of_step( intval( $_GET['course_id'] ), intval( $_GET['lesson_id'] ), 'sfwd-quiz' ); } else { $quiz_ids = learndash_course_get_steps_by_type( intval( $_GET['course_id'] ), 'sfwd-quiz' ); } if ( ! empty( $quiz_ids ) ) { $q_vars['post__in'] = $quiz_ids; } else { $q_vars['post__in'] = array( 0 ); } } } else { if ( ( isset( $_GET['course_id'] ) ) && ( ! empty( $_GET['course_id'] ) ) ) { if ( ! isset( $q_vars['meta_query'] ) ) { $q_vars['meta_query'] = array(); } $q_vars['meta_query'][] = array( 'key' => 'course_id', 'value' => intval( $_GET['course_id'] ), ); } if ( ( isset( $_GET['lesson_id'] ) ) && ( ! empty( $_GET['lesson_id'] ) ) ) { if ( ! isset( $q_vars['meta_query'] ) ) { $q_vars['meta_query'] = array(); } $q_vars['meta_query'][] = array( 'key' => 'lesson_id', 'value' => intval( $_GET['lesson_id'] ), ); } } } elseif ( $typenow == 'sfwd-assignment' ) { if ( ( isset( $_GET['approval_status'] ) ) && ( $_GET['approval_status'] == 1 ) ) { if ( ! isset( $q_vars['meta_query'] ) ) { $q_vars['meta_query'] = array(); } $q_vars['meta_query'][] = array( 'key' => 'approval_status', 'value' => 1, ); } elseif ( ( isset( $_GET['approval_status'] ) ) && ( $_GET['approval_status'] == 0 ) ) { if ( ! isset( $q_vars['meta_query'] ) ) { $q_vars['meta_query'] = array(); } $q_vars['meta_query'][] = array( 'key' => 'approval_status', 'compare' => 'NOT EXISTS', ); } elseif ( ! isset( $_GET['approval_status'] ) ) { /// } if ( ( isset( $_GET['course_id'] ) ) && ( ! empty( $_GET['course_id'] ) ) ) { if ( ! isset( $q_vars['meta_query'] ) ) { $q_vars['meta_query'] = array(); } $q_vars['meta_query'][] = array( 'key' => 'course_id', 'value' => intval( $_GET['course_id'] ), ); } if ( ( isset( $_GET['lesson_id'] ) ) && ( ! empty( $_GET['lesson_id'] ) ) ) { if ( ! isset( $q_vars['meta_query'] ) ) { $q_vars['meta_query'] = array(); } $q_vars['meta_query'][] = array( 'key' => 'lesson_id', 'value' => intval( $_GET['lesson_id'] ), ); } } elseif ( $typenow == 'groups' ) { if ( ( isset( $_GET['course_id'] ) ) && ( ! empty( $_GET['course_id'] ) ) ) { $groups = learndash_get_course_groups( intval( $_GET['course_id'] ), true ); if ( ! empty( $groups ) ) { $q_vars['post__in'] = $groups; } else { $q_vars['post__in'] = array( -1 ); } } } elseif ( $typenow == 'sfwd-essays' ) { if ( ( isset( $_GET['course_id'] ) ) && ( ! empty( $_GET['course_id'] ) ) ) { if ( ! isset( $q_vars['meta_query'] ) ) { $q_vars['meta_query'] = array(); } $q_vars['meta_query'][] = array( 'key' => 'course_id', 'value' => intval( $_GET['course_id'] ), ); } if ( ( isset( $_GET['lesson_id'] ) ) && ( ! empty( $_GET['lesson_id'] ) ) ) { if ( ! isset( $q_vars['meta_query'] ) ) { $q_vars['meta_query'] = array(); } $q_vars['meta_query'][] = array( 'key' => 'lesson_id', 'value' => intval( $_GET['lesson_id'] ), ); } if ( ( isset( $_GET['quiz_id'] ) ) && ( ! empty( $_GET['quiz_id'] ) ) ) { if ( ! isset( $q_vars['meta_query'] ) ) { $q_vars['meta_query'] = array(); } $q_vars['meta_query'][] = array( 'key' => 'quiz_id', 'value' => intval( $_GET['quiz_id'] ), ); } } elseif ( $typenow == 'sfwd-transactions' ) { if ( ( isset( $_GET['course_id'] ) ) && ( ! empty( $_GET['course_id'] ) ) ) { if ( ! isset( $q_vars['meta_query'] ) ) { $q_vars['meta_query'] = array(); } $q_vars['meta_query'][] = array( 'key' => 'course_id', 'value' => intval( $_GET['course_id'] ), ); } } // if ( isset( $q_vars['meta_query'] ) ) { // error_log('meta_query
      '. print_r( $q_vars['meta_query'], true ) .'
      '); // } else { // error_log('meta_query not set'); // } } /** * Generate lesson id's and course id's once for all existing lessons, quizzes and topics * * @since 2.1.0 */ function learndash_generate_patent_course_and_lesson_id_onetime() { if ( isset( $_GET['learndash_generate_patent_course_and_lesson_ids_onetime'] ) || get_option( 'learndash_generate_patent_course_and_lesson_ids_onetime', 'yes' ) == 'yes' ) { $quizzes = get_posts( 'post_type=sfwd-quiz&posts_per_page=-1' ); if ( ! empty( $quizzes ) ) { foreach ( $quizzes as $quiz ) { update_post_meta( $quiz->ID, 'course_id', learndash_get_course_id( $quiz->ID ) ); $meta = get_post_meta( $quiz->ID, '_sfwd-quiz', true ); if ( ! empty( $meta['sfwd-quiz_lesson'] ) ) { update_post_meta( $quiz->ID, 'lesson_id', $meta['sfwd-quiz_lesson'] ); } }//exit; } $topics = get_posts( 'post_type=sfwd-topic&posts_per_page=-1' ); if ( ! empty( $topics ) ) { foreach ( $topics as $topic ) { update_post_meta( $topic->ID, 'course_id', learndash_get_course_id( $topic->ID ) ); $meta = get_post_meta( $topic->ID, '_sfwd-topic', true ); if ( ! empty( $meta['sfwd-topic_lesson'] ) ) { update_post_meta( $topic->ID, 'lesson_id', $meta['sfwd-topic_lesson'] ); } } } $lessons = get_posts( 'post_type=sfwd-lessons&posts_per_page=-1' ); if ( ! empty( $lessons ) ) { foreach ( $lessons as $lesson ) { update_post_meta( $lesson->ID, 'course_id', learndash_get_course_id( $lesson->ID ) ); } } update_option( 'learndash_generate_patent_course_and_lesson_ids_onetime', 'no' ); } } add_action( 'admin_init', 'learndash_generate_patent_course_and_lesson_id_onetime' ); /** * On post save, update post id's that maintain relationships between * courses, lessons, topics, and quizzes * * @since 2.1.0 * * @param int $post_id */ function learndash_patent_course_and_lesson_id_save( $post_id ) { if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return; } if ( empty( $post_id ) || empty( $_POST['post_type'] ) ) { return ''; } // Check permissions if ( 'page' == $_POST['post_type'] ) { if ( ! current_user_can( 'edit_page', $post_id ) ) { return; } } else { if ( ! current_user_can( 'edit_post', $post_id ) ) { return; } } if ( 'sfwd-lessons' == $_POST['post_type'] || 'sfwd-quiz' == $_POST['post_type'] || 'sfwd-topic' == $_POST['post_type'] ) { if ( isset( $_POST[ $_POST['post_type'] . '_course' ] ) ) { update_post_meta( $post_id, 'course_id', (int) $_POST[ $_POST['post_type'] . '_course' ] ); } } if ( 'sfwd-topic' == $_POST['post_type'] || 'sfwd-quiz' == $_POST['post_type'] ) { if ( isset( $_POST[ $_POST['post_type'] . '_lesson' ] ) ) { update_post_meta( $post_id, 'lesson_id', (int) $_POST[ $_POST['post_type'] . '_lesson' ] ); } } if ( 'sfwd-lessons' == $_POST['post_type'] || 'sfwd-topic' == $_POST['post_type'] ) { global $wpdb; if ( isset( $_POST[ $_POST['post_type'] . '_course' ] ) ) { $course_id = (int) get_post_meta( $post_id, 'course_id', true ); } if ( ! empty( $course_id ) ) { $posts_with_lesson = $wpdb->get_col( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = 'lesson_id' AND meta_value = '%d'", $post_id ) ); if ( ! empty( $posts_with_lesson ) && ! empty( $posts_with_lesson[0] ) ) { foreach ( $posts_with_lesson as $post_with_lesson ) { $post_course_id = learndash_get_setting( $post_with_lesson, 'course' ); if ( $post_course_id != $course_id ) { learndash_update_setting( $post_with_lesson, 'course', (int) $course_id ); $quizzes_under_lesson_topic = $wpdb->get_col( $wpdb->prepare( 'SELECT post_id FROM ' . $wpdb->postmeta . ' WHERE meta_key = %s AND meta_value = %d', 'lesson_id', $posts_with_lesson ) ); if ( ! empty( $quizzes_under_lesson_topic ) && ! empty( $quizzes_under_lesson_topic[0] ) ) { foreach ( $quizzes_under_lesson_topic as $quiz_post_id ) { $quiz_course_id = learndash_get_setting( $quiz_post_id, 'course' ); if ( $course_id != $quiz_course_id ) { learndash_update_setting( $quiz_course_id, 'course', (int) $course_id ); } } } } } } } } } function learndash_patent_course_and_lesson_id_save_NEW( $post_id ) { if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return; } if ( empty( $post_id ) || empty( $_POST['post_type'] ) ) { return ''; } // Check permissions // if ( 'page' == $_POST['post_type'] ) { // if ( ! current_user_can( 'edit_page', $post_id ) ) { // return; // } // } else { // if ( ! current_user_can( 'edit_post', $post_id ) ) { // return; // } // } if ( in_array( $_POST['post_type'], array( 'sfwd-lessons', 'sfwd-topic', 'sfwd-quiz' ) ) !== false ) { if ( current_user_can( 'edit_course', $post_id ) ) { // Update the associated course ID $course_id = 0; if ( isset( $_POST[ $_POST['post_type'] . '_course' ] ) ) { $course_id = intval( $_POST[ $_POST['post_type'] . '_course' ] ); } update_post_meta( $post_id, 'course_id', $course_id ); // Update the associated lesson ID if ( in_array( $_POST['post_type'], array( 'sfwd-topic', 'sfwd-quiz' ) ) !== false ) { $lesson_id = 0; if ( isset( $_POST[ $_POST['post_type'] . '_lesson' ] ) ) { $lesson_id = intval( $_POST[ $_POST['post_type'] . '_lesson' ] ); } update_post_meta( $post_id, 'lesson_id', $lesson_id ); } // If here the course_id was changes on a lesson or topic. So we now need to update any sub items (referenced by the post meta lesson_id) if ( in_array( $_POST['post_type'], array( 'sfwd-lessons', 'sfwd-topic' ) ) !== false ) { global $wpdb; if ( isset( $_POST[ $_POST['post_type'] . '_course' ] ) ) { $course_id = get_post_meta( $post_id, 'course_id', true ); } if ( ! empty( $course_id ) ) { $posts_with_lesson = $wpdb->get_col( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = 'lesson_id' AND meta_value = '%d'", $post_id ) ); if ( ! empty( $posts_with_lesson ) && ! empty( $posts_with_lesson[0] ) ) { foreach ( $posts_with_lesson as $post_with_lesson ) { $post_course_id = learndash_get_setting( $post_with_lesson, 'course' ); if ( $post_course_id != $course_id ) { learndash_update_setting( $post_with_lesson, 'course', $course_id ); $quizzes_under_lesson_topic = $wpdb->get_col( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = 'lesson_id' AND meta_value = '%d'", $posts_with_lesson ) ); if ( ! empty( $quizzes_under_lesson_topic ) && ! empty( $quizzes_under_lesson_topic[0] ) ) { foreach ( $quizzes_under_lesson_topic as $quiz_post_id ) { $quiz_course_id = learndash_get_setting( $quiz_post_id, 'course' ); if ( $course_id != $quiz_course_id ) { learndash_update_setting( $quiz_course_id, 'course', $course_id ); } } } } } } } } } } } add_action( 'save_post', 'learndash_patent_course_and_lesson_id_save' ); function learndash_element_lazy_loader() { $reply_data = array(); if ( ( current_user_can( 'read' ) ) && ( isset( $_POST['query_data'] ) ) && ( ! empty( $_POST['query_data'] ) ) ) { if ( ( isset( $_POST['query_data']['query_vars'] ) ) && ( ! empty( $_POST['query_data']['query_vars'] ) ) ) { $reply_data['query_data'] = $_POST['query_data']; if ( isset( $_POST['query_data']['query_type'] ) ) { switch ( $_POST['query_data']['query_type'] ) { case 'WP_Query': $query = new WP_Query( $_POST['query_data']['query_vars'] ); if ( $query instanceof WP_Query ) { if ( ! empty( $query->posts ) ) { $reply_data['html_options'] = ''; foreach ( $query->posts as $p ) { if ( intval( $p->ID ) == intval( $_POST['query_data']['value'] ) ) { $selected = ' selected="selected" '; } else { $selected = ''; } $reply_data['html_options'] .= ''; } } } break; case 'WP_User_Query': $query = new WP_User_Query( $_POST['query_data']['query_vars'] ); break; default: break; } } } } echo json_encode( $reply_data ); wp_die(); // this is required to terminate immediately and return a proper response } add_action( 'wp_ajax_learndash_element_lazy_loader', 'learndash_element_lazy_loader' ); add_filter( 'views_edit-sfwd-essays', 'learndash_edit_list_table_views', 10, 1 ); add_filter( 'views_edit-sfwd-assignment', 'learndash_edit_list_table_views', 10, 1 ); function learndash_edit_list_table_views( $views = array() ) { if ( ! learndash_is_admin_user() ) { $views = array(); } return $views; } add_filter( 'plugin_row_meta', 'learndash_plugin_row_meta', 10, 4 ); function learndash_plugin_row_meta( $plugin_meta, $plugin_file, $plugin_data, $status ) { if ( $plugin_file == LEARNDASH_LMS_PLUGIN_KEY ) { if ( ! isset( $plugin_meta['changelog'] ) ) { $plugin_meta['changelog'] = '' . esc_html__( 'Changelog', 'learndash' ) . ''; } } return $plugin_meta; } // Override the post_tag edit-tags.php 'Count' column to show only the related count for the LD post_type function learndash_manage_edit_post_tag_columns( $columns = array() ) { if ( ( isset( $_GET['post_type'] ) ) && ( ! empty( $_GET['post_type'] ) ) ) { if ( in_array( $_GET['post_type'], array( 'sfwd-courses', 'sfwd-lessons', 'sfwd-topic' ) ) ) { if ( isset( $columns['posts'] ) ) { unset( $columns['posts'] ); } $columns['ld_posts'] = esc_html__( 'Count', 'learndash' ); } } return $columns; } add_filter( 'manage_edit-post_tag_columns', 'learndash_manage_edit_post_tag_columns' ); //function learndash_manage_edit_category_columns( $columns = array() ) { // //error_log('columns
      '. print_r($columns, true) .'
      '); // if ( ( isset( $_GET['post_type'] ) ) && ( !empty( $_GET['post_type'] ) ) ) { // if ( isset( $columns['posts'] ) ) unset( $columns['posts'] ); // // $columns['ld_posts'] = esc_html__( 'Count', 'learndash' ); // } // // return $columns; //} add_filter( 'manage_edit-category_columns', 'learndash_manage_edit_post_tag_columns' ); function learndash_manage_post_tag_custom_column( $column_content = '', $column_name, $term_id ) { if ( $column_name == 'ld_posts' ) { if ( ( isset( $_GET['post_type'] ) ) && ( ! empty( $_GET['post_type'] ) ) ) { if ( in_array( $_GET['post_type'], array( 'sfwd-courses', 'sfwd-lessons', 'sfwd-topic' ) ) ) { $query_args = array( 'post_type' => esc_attr( $_GET['post_type'] ), 'post_status' => 'publish', 'tag_id' => $term_id, 'fields' => 'ids', 'nopaging' => true, ); $query_results = new WP_Query( $query_args ); if ( ! is_wp_error( $query_results ) ) { $count = count( $query_results->posts ); if ( $count > 0 ) { $term = get_term_by( 'id', $term_id, 'category' ); $column_content = " esc_attr( $_GET['post_type'] ), 'taxonomy' => 'post_tag', 'post_tag' => $term->slug, ), 'edit.php' ) ) . "'>" . count( $query_results->posts ) . ''; } else { $column_content = 0; } } } } } return $column_content; } add_filter( 'manage_post_tag_custom_column', 'learndash_manage_post_tag_custom_column', 10, 3 ); // Override the category edit-tags.php 'Count' column to show only the related count for the LD post_type function learndash_manage_category_custom_column( $column_content = '', $column_name, $term_id ) { if ( $column_name == 'ld_posts' ) { if ( ( isset( $_GET['post_type'] ) ) && ( ! empty( $_GET['post_type'] ) ) ) { if ( in_array( $_GET['post_type'], array( 'sfwd-courses', 'sfwd-lessons', 'sfwd-topic' ) ) ) { $query_args = array( 'post_type' => esc_attr( $_GET['post_type'] ), 'post_status' => 'publish', 'cat' => $term_id, 'fields' => 'ids', 'nopaging' => true, ); $query_results = new WP_Query( $query_args ); if ( ! is_wp_error( $query_results ) ) { $count = count( $query_results->posts ); if ( $count > 0 ) { //$term = get_term_by('id', $term_id, 'category'); $column_content = " esc_attr( $_GET['post_type'] ), 'taxonomy' => 'category', 'cat' => $term_id, ), 'edit.php' ) ) . "'>" . count( $query_results->posts ) . ''; } else { $column_content = 0; } } } } } return $column_content; } add_filter( 'manage_category_custom_column', 'learndash_manage_category_custom_column', 10, 3 ); function learndash_delete_all_data() { global $wpdb, $learndash_post_types, $learndash_taxonomies; /** * Under Multisite we don't even want to remove user data. This is because users and usermeta * is shared. Removing the LD user data could result in lost information for other sites. */ if ( ! is_multisite() ) { // USER META SETTINGS ////////////////////////////// $wpdb->query( 'DELETE FROM ' . $wpdb->usermeta . " WHERE meta_key='_sfwd-course_progress'" ); $wpdb->query( 'DELETE FROM ' . $wpdb->usermeta . " WHERE meta_key='_sfwd-quizzes'" ); $wpdb->query( 'DELETE FROM ' . $wpdb->usermeta . " WHERE meta_key LIKE 'completed_%'" ); $wpdb->query( 'DELETE FROM ' . $wpdb->usermeta . " WHERE meta_key LIKE 'course_%_access_from'" ); $wpdb->query( 'DELETE FROM ' . $wpdb->usermeta . " WHERE meta_key LIKE 'course_completed_%'" ); $wpdb->query( 'DELETE FROM ' . $wpdb->usermeta . " WHERE meta_key LIKE 'learndash_course_expired_%'" ); $wpdb->query( 'DELETE FROM ' . $wpdb->usermeta . " WHERE meta_key LIKE 'learndash_group_users_%'" ); $wpdb->query( 'DELETE FROM ' . $wpdb->usermeta . " WHERE meta_key LIKE 'learndash_group_leaders_%'" ); $wpdb->query( 'DELETE FROM ' . $wpdb->usermeta . " WHERE meta_key = 'ld-upgraded-user-meta-courses'" ); $wpdb->query( 'DELETE FROM ' . $wpdb->usermeta . " WHERE meta_key = 'ld-upgraded-user-meta-quizzes'" ); $wpdb->query( 'DELETE FROM ' . $wpdb->usermeta . " WHERE meta_key = 'course_points'" ); } // CUSTOM OPTIONS ////////////////////////////// $wpdb->query( 'DELETE FROM ' . $wpdb->options . " WHERE option_name LIKE 'learndash_%'" ); $wpdb->query( 'DELETE FROM ' . $wpdb->options . " WHERE option_name LIKE 'wpProQuiz_%'" ); // CUSTOMER POST TYPES ////////////////////////////// $ld_post_types = ''; foreach ( $learndash_post_types as $post_type ) { if ( ! empty( $ld_post_types ) ) { $ld_post_types .= ','; } $ld_post_types .= "'" . $post_type . "'"; } $post_ids = $wpdb->get_col( 'SELECT ID FROM ' . $wpdb->posts . ' WHERE post_type IN (' . $ld_post_types . ')' ); if ( ! empty( $post_ids ) ) { $offset = 0; while ( true ) { $post_ids_part = array_slice( $post_ids, $offset, 1000 ); if ( empty( $post_ids_part ) ) { break; } else { $wpdb->query( 'DELETE FROM ' . $wpdb->postmeta . ' WHERE post_id IN (' . implode( ',', $post_ids ) . ')' ); $wpdb->query( 'DELETE FROM ' . $wpdb->posts . ' WHERE post_parent IN (' . implode( ',', $post_ids ) . ')' ); $wpdb->query( 'DELETE FROM ' . $wpdb->posts . ' WHERE ID IN (' . implode( ',', $post_ids ) . ')' ); $offset += 1000; } } } // CUSTOM TAXONOMIES & TERMS ////////////////////////////// foreach ( $learndash_taxonomies as $taxonomy ) { // Prepare & excecute SQL $terms = $wpdb->get_results( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy IN ('%s') ORDER BY t.name ASC", $taxonomy ) ); // Delete Terms if ( $terms ) { foreach ( $terms as $term ) { $wpdb->delete( $wpdb->term_taxonomy, array( 'term_taxonomy_id' => $term->term_taxonomy_id ) ); $wpdb->delete( $wpdb->terms, array( 'term_id' => $term->term_id ) ); } } // Delete Taxonomy $wpdb->delete( $wpdb->term_taxonomy, array( 'taxonomy' => $taxonomy ), array( '%s' ) ); } // CUSTOM DB TABLES ////////////////////////////// $learndash_db_tables = LDLMS_DB::get_tables(); if ( ! empty( $learndash_db_tables ) ) { foreach ( $learndash_db_tables as $table_name ) { //$table_name = $wpdb->prefix . $table_name; if ( $wpdb->get_var( "SHOW TABLES LIKE '$table_name'" ) == $table_name ) { $wpdb->query( 'DROP TABLE ' . $table_name ); } } } // USER ROLES AND CAPABILITIES ////////////////////////////// remove_role( 'group_leader' ); // Remove any user/role capabilities we added $roles = get_editable_roles(); if ( ! empty( $roles ) ) { foreach ( $roles as $role_name => $role_info ) { $role = get_role( $role_name ); if ( ( $role ) && ( $role instanceof WP_Role ) ) { $role->remove_cap( 'read_assignment' ); $role->remove_cap( 'edit_assignment' ); $role->remove_cap( 'edit_assignments' ); $role->remove_cap( 'edit_others_assignments' ); $role->remove_cap( 'publish_assignments' ); $role->remove_cap( 'read_assignment' ); $role->remove_cap( 'read_private_assignments' ); $role->remove_cap( 'delete_assignment' ); $role->remove_cap( 'edit_published_assignments' ); $role->remove_cap( 'delete_others_assignments' ); $role->remove_cap( 'delete_published_assignments' ); $role->remove_cap( 'group_leader' ); $role->remove_cap( 'enroll_users' ); $role->remove_cap( 'edit_essays' ); $role->remove_cap( 'edit_others_essays' ); $role->remove_cap( 'publish_essays' ); $role->remove_cap( 'read_essays' ); $role->remove_cap( 'read_private_essays' ); $role->remove_cap( 'delete_essays' ); $role->remove_cap( 'edit_published_essays' ); $role->remove_cap( 'delete_others_essays' ); $role->remove_cap( 'delete_published_essays' ); $role->remove_cap( 'wpProQuiz_show' ); $role->remove_cap( 'wpProQuiz_add_quiz' ); $role->remove_cap( 'wpProQuiz_edit_quiz' ); $role->remove_cap( 'wpProQuiz_delete_quiz' ); $role->remove_cap( 'wpProQuiz_show_statistics' ); $role->remove_cap( 'wpProQuiz_reset_statistics' ); $role->remove_cap( 'wpProQuiz_import' ); $role->remove_cap( 'wpProQuiz_export' ); $role->remove_cap( 'wpProQuiz_change_settings' ); $role->remove_cap( 'wpProQuiz_toplist_edit' ); $role->remove_cap( 'wpProQuiz_toplist_edit' ); } } } // ASSIGNMENT & ESSAY UPLOADS ////////////////////////////// $url_link_arr = wp_upload_dir(); $assignment_dir = $url_link_arr['basedir'] . '/assignments'; learndash_recursive_rmdir( $assignment_dir ); $essays_dir = $url_link_arr['basedir'] . '/essays'; learndash_recursive_rmdir( $essays_dir ); $ld_template_dir = $url_link_arr['basedir'] . '/template'; learndash_recursive_rmdir( $ld_template_dir ); } function learndash_user_list_columns( $columns = array() ) { if ( ! isset( $columns['courses'] ) ) { $columns['courses'] = LearnDash_Custom_Label::get_label( 'Courses' ); } if ( ! isset( $columns['groups'] ) ) { $columns['groups'] = esc_html__( 'Groups', 'learndash' ); } return $columns; } add_filter( 'manage_users_columns', 'learndash_user_list_columns' ); function learndash_user_list_column_content( $column_content = '', $column_name = '', $user_id = 0 ) { switch ( $column_name ) { case 'courses': $user_courses = learndash_user_get_enrolled_courses( $user_id ); if ( empty( $user_courses ) ) { $user_courses = array(); } if ( ! empty( $user_courses ) ) { $column_content .= sprintf( __( 'Total %s', 'learndash' ), count( $user_courses ) ); $course_names = ''; if ( count( $user_courses ) > 5 ) { $user_courses = array_slice( $user_courses, 0, 5 ); } foreach ( $user_courses as $course_id ) { $course = get_post( $course_id ); if ( ! empty( $course_names ) ) { $course_names .= ', '; } $course_names .= '' . get_the_title( $course_id ) . ''; } if ( ! empty( $course_names ) ) { $column_content .= '
      ' . $course_names; } } break; case 'groups': $user_groups = learndash_get_users_group_ids( $user_id, true ); if ( empty( $user_groups ) ) { $user_groups = array(); } if ( ! empty( $user_groups ) ) { $column_content .= sprintf( __( 'Total %s', 'learndash' ), count( $user_groups ) ); $groups_names = ''; if ( count( $user_groups ) > 5 ) { $user_groups = array_slice( $user_groups, 0, 5 ); } foreach ( $user_groups as $group_id ) { $group = get_post( $group_id ); if ( ! empty( $groups_names ) ) { $groups_names .= ', '; } $groups_names .= '' . get_the_title( $group_id ) . ''; } if ( ! empty( $groups_names ) ) { $column_content .= '
      ' . $groups_names; } } break; default: } return $column_content; } add_filter( 'manage_users_custom_column', 'learndash_user_list_column_content', 10, 3 ); function learndash_add_user_nav_filter( $which = '' ) { $filter_output = ''; if ( $which === 'top' ) { $SHOW_USER_COURSES_FILTER = true; $query_options_course = array( 'post_type' => 'sfwd-courses', 'post_status' => 'any', 'posts_per_page' => -1, 'orderby' => 'title', 'order' => 'ASC', ); if ( learndash_is_group_leader_user( get_current_user_id() ) ) { $group_ids = learndash_get_administrators_group_ids( get_current_user_id() ); if ( ! empty( $group_ids ) && is_array( $group_ids ) ) { $course_ids = array(); foreach ( $group_ids as $group_id ) { $group_course_ids = learndash_group_enrolled_courses( $group_id ); if ( ! empty( $group_course_ids ) && is_array( $group_course_ids ) ) { $course_ids = array_merge( $course_ids, $group_course_ids ); } } if ( ! empty( $course_ids ) && count( $course_ids ) ) { $query_options_course['post__in'] = $course_ids; } else { $SHOW_USER_COURSES_FILTER = false; } } else { $SHOW_USER_COURSES_FILTER = false; } } $lazy_load = apply_filters( 'learndash_element_lazy_load_admin', true ); if ( $lazy_load == true ) { $lazy_load = apply_filters( 'learndash_element_lazy_load_admin_users_filters', true ); if ( $lazy_load == true ) { $query_options_course['paged'] = 1; $query_options_course['posts_per_page'] = apply_filters( 'learndash_element_lazy_load_per_page', LEARNDASH_LMS_DEFAULT_LAZY_LOAD_PER_PAGE, 'sfwd-courses' ); } } $query_options_course = apply_filters( 'learndash_user_courses_options_filter', $query_options_course, 'sfwd-courses' ); $query_posts_course = new WP_Query( $query_options_course ); if ( ! empty( $query_posts_course->posts ) ) { if ( count( $query_posts_course->posts ) >= $query_posts_course->found_posts ) { // If the number of returned posts is equal or greater then found_posts then no need to run lazy load $lazy_load = false; } $post_type_nonce = wp_create_nonce( 'sfwd-courses' ); if ( $lazy_load == true ) { $lazy_load_data = array(); $lazy_load_data['query_vars'] = $query_options_course; $lazy_load_data['query_type'] = 'WP_Query'; $lazy_load_data['nonce'] = $post_type_nonce; if ( ( isset( $_GET['course_id'] ) ) && ( ! empty( $_GET['course_id'] ) ) ) { $lazy_load_data['value'] = intval( $_GET['course_id'] ); } else { $lazy_load_data['value'] = 0; } $lazy_load_data = ' learndash_lazy_load_data="' . htmlspecialchars( json_encode( $lazy_load_data ) ) . '" '; } else { $lazy_load_data = ''; } $filter_output .= ''; $lazy_load_spinner = ''; $filter_output .= $lazy_load_spinner; } $SHOW_USER_GROUPS_FILTER = true; $query_options_group = array( 'post_type' => 'groups', 'post_status' => 'any', 'posts_per_page' => -1, 'orderby' => 'title', 'order' => 'ASC', ); if ( learndash_is_group_leader_user( get_current_user_id() ) ) { $group_ids = learndash_get_administrators_group_ids( get_current_user_id() ); if ( ! empty( $group_ids ) && count( $group_ids ) ) { $query_options_group['post__in'] = $group_ids; } else { $SHOW_USER_GROUPS_FILTER = false; } } if ( $SHOW_USER_GROUPS_FILTER === true ) { $lazy_load = apply_filters( 'learndash_element_lazy_load_admin', true ); if ( $lazy_load == true ) { $lazy_load = apply_filters( 'learndash_element_lazy_load_admin_users_filters', true ); if ( $lazy_load == true ) { $query_options_group['paged'] = 1; $query_options_group['posts_per_page'] = apply_filters( 'learndash_element_lazy_load_per_page', LEARNDASH_LMS_DEFAULT_LAZY_LOAD_PER_PAGE, 'groups' ); } } $query_options_group = apply_filters( 'learndash_user_groups_options_filter', $query_options_group, 'groups' ); $query_user_groups = new WP_Query( $query_options_group ); if ( ! empty( $query_user_groups->posts ) ) { if ( count( $query_user_groups->posts ) >= $query_user_groups->found_posts ) { // If the number of returned posts is equal or greater then found_posts then no need to run lazy load $lazy_load = false; } $post_type_nonce = wp_create_nonce( 'sfwd-courses' ); if ( $lazy_load == true ) { $lazy_load_data = array(); $lazy_load_data['query_vars'] = $query_options_group; $lazy_load_data['query_type'] = 'WP_Query'; $lazy_load_data['nonce'] = $post_type_nonce; if ( ( isset( $_GET['group_id'] ) ) && ( ! empty( $_GET['group_id'] ) ) ) { $lazy_load_data['value'] = intval( $_GET['group_id'] ); } else { $lazy_load_data['value'] = 0; } $lazy_load_data = ' learndash_lazy_load_data="' . htmlspecialchars( json_encode( $lazy_load_data ) ) . '" '; } else { $lazy_load_data = ''; } $filter_output .= ''; $lazy_load_spinner = ''; $filter_output .= $lazy_load_spinner; } } if ( ( $SHOW_USER_GROUPS_FILTER === true ) || ( $SHOW_USER_COURSES_FILTER === true ) ) { $button_id = 'bottom' === $which ? 'ld_submit' : 'ld_submit_bottom'; $filter_output .= get_submit_button( esc_html__( 'Filter', 'learndash' ), 'learndash', $button_id, false ); } if ( ! empty( $filter_output ) ) { $filter_output = '
      ' . $filter_output . ''; echo $filter_output; } } } //add_action( 'manage_users_extra_tablenav', 'learndash_add_user_nav_filter' ); add_action( 'restrict_manage_users', 'learndash_add_user_nav_filter', 99 ); function learndash_filter_users_listing( $query ) { global $pagenow; remove_filter( 'pre_get_users', 'learndash_filter_users_listing' ); if ( is_admin() && 'users.php' == $pagenow ) { if ( isset( $_GET['group_id'] ) ) { $filter_group_id = intval( $_GET['group_id'] ); if ( ! empty( $filter_group_id ) ) { if ( learndash_is_group_leader_user( get_current_user_id() ) ) { $group_ids = learndash_get_administrators_group_ids( get_current_user_id() ); // If the Group Leader doesn't have groups or not a managed group them clear our selected group_id if ( ( empty( $group_ids ) ) || ( in_array( $filter_group_id, $group_ids ) === false ) ) { $filter_group_id = 0; } } if ( ! empty( $filter_group_id ) ) { $query->set( 'meta_key', 'learndash_group_users_' . $filter_group_id ); $query->set( 'meta_value', $filter_group_id ); $query->set( 'meta_compare', '=' ); } } } // @TODO : Need to figure out how to force no results on when no users are found for a course. // @TODO : How to filter all users not enrolled in at least on course. if ( isset( $_GET['course_id'] ) ) { $filter_course_id = intval( $_GET['course_id'] ); if ( ! empty( $filter_course_id ) ) { if ( learndash_is_group_leader_user( get_current_user_id() ) ) { $group_ids = learndash_get_administrators_group_ids( get_current_user_id() ); if ( ! empty( $group_ids ) && is_array( $group_ids ) ) { $course_ids = array(); foreach ( $group_ids as $group_id ) { $group_course_ids = learndash_group_enrolled_courses( $group_id ); if ( ! empty( $group_course_ids ) && is_array( $group_course_ids ) ) { $course_ids = array_merge( $course_ids, $group_course_ids ); } } if ( empty( $course_ids ) ) { $filter_course_id = 0; } } } if ( ! empty( $filter_course_id ) ) { $course_users_query = learndash_get_users_for_course( $filter_course_id, array(), false ); if ( ( $course_users_query instanceof WP_User_Query ) && ( property_exists( $course_users_query, 'results' ) ) && ( ! empty( $course_users_query->results ) ) ) { $user_ids = $course_users_query->get_results(); if ( ! empty( $user_ids ) ) { $query->set( 'include', $user_ids ); } } else { $query->set( 'include', array( 0 ) ); } } } } } } add_filter( 'pre_get_users', 'learndash_filter_users_listing' ); /** * Load the plugin translations into wp.i18n for use in JavaScript markers * * @since 3.0 */ function learndash_load_inline_script_locale_data() { static $loaded = false; if ( false === $loaded ) { $loaded = true; $locale_data = learndash_get_jed_locale_data( LEARNDASH_LMS_TEXT_DOMAIN ); wp_add_inline_script( 'wp-i18n', 'wp.i18n.setLocaleData( ' . json_encode( $locale_data ) . ', "learndash" );' ); } } /** * Load the translations MO file into memory. * * @since 3.0 * @return array Array of transated strings. */ function learndash_get_jed_locale_data() { $translations = get_translations_for_domain( LEARNDASH_LMS_TEXT_DOMAIN ); $locale = array( '' => array( 'domain' => LEARNDASH_LMS_TEXT_DOMAIN, 'lang' => is_admin() ? get_user_locale() : get_locale(), ), ); if ( ! empty( $translations->headers['Plural-Forms'] ) ) { $locale['']['plural_forms'] = $translations->headers['Plural-Forms']; } foreach ( $translations->entries as $msgid => $entry ) { $locale[ $msgid ] = $entry->translations; } return $locale; } PKc\0u..:includes/admin/class-learndash-admin-groups-users-list.phpnuW+Acurrent_action = esc_attr( $_GET['action'] ); //$this->current_action = $this->list_table->current_action(); } if ( ( isset( $_GET['group_id'] ) ) && ( ! empty( $_GET['group_id'] ) ) ) { $this->group_id = intval( $_GET['group_id'] ); } if ( ( isset( $_GET['user_id'] ) ) && ( ! empty( $_GET['user_id'] ) ) ) { $this->user_id = intval( $_GET['user_id'] ); } wp_enqueue_style( 'sfwd-module-style', LEARNDASH_LMS_PLUGIN_URL . '/assets/css/sfwd_module' . leardash_min_asset() . '.css', array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'sfwd-module-style', 'rtl', 'replace' ); $learndash_assets_loaded['styles']['sfwd-module-style'] = __FUNCTION__; wp_enqueue_script( 'sfwd-module-script', LEARNDASH_LMS_PLUGIN_URL . '/assets/js/sfwd_module' . leardash_min_asset() . '.js', array( 'jquery' ), LEARNDASH_SCRIPT_VERSION_TOKEN, true ); $learndash_assets_loaded['scripts']['sfwd-module-script'] = __FUNCTION__; // Because we need the ajaxurl for the pagination AJAX $data = array(); if ( ! isset( $data['ajaxurl'] ) ) { $data['ajaxurl'] = admin_url( 'admin-ajax.php' ); } $data = array( 'json' => json_encode( $data ) ); wp_localize_script( 'sfwd-module-script', 'sfwd_data', $data ); $filepath = SFWD_LMS::get_template( 'learndash_pager.css', null, null, true ); if ( ! empty( $filepath ) ) { wp_enqueue_style( 'learndash_pager_css', learndash_template_url_from_path( $filepath ), array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); $learndash_assets_loaded['styles']['learndash_pager_css'] = __FUNCTION__; } $filepath = SFWD_LMS::get_template( 'learndash_pager.js', null, null, true ); if ( ! empty( $filepath ) ) { wp_enqueue_script( 'learndash_pager_js', learndash_template_url_from_path( $filepath ), array( 'jquery' ), LEARNDASH_SCRIPT_VERSION_TOKEN, true ); $learndash_assets_loaded['scripts']['learndash_pager_js'] = __FUNCTION__; } if ( empty( $this->current_action ) ) { require_once LEARNDASH_LMS_PLUGIN_DIR . 'includes/admin/class-learndash-admin-groups-users-list-table.php'; $this->list_table = new Learndash_Admin_Groups_Users_List_Table(); $screen = get_current_screen(); $screen_key = $screen->id; if ( ! empty( $this->group_id ) ) { $screen_key .= '_users'; } else { $screen_key .= '_groups'; } $screen_key .= '_per_page'; $screen_per_page_option = str_replace( '-', '_', $screen_key ); if ( isset( $_POST['wp_screen_options']['option'] ) ) { if ( isset( $_POST['wp_screen_options']['value'] ) ) { $per_page = intval( $_POST['wp_screen_options']['value'] ); if ( ( ! $per_page ) || ( $per_page < 1 ) ) { $per_page = 20; } update_user_meta( get_current_user_id(), $screen_per_page_option, $per_page ); } } $per_page = get_user_meta( get_current_user_id(), $screen_per_page_option, true ); if ( ( ! $per_page ) || ( empty( $per_page ) ) || ( $per_page < 1 ) ) { $per_page = 20; } $this->title = ''; $this->list_table->per_page = $per_page; add_screen_option( 'per_page', array( 'label' => esc_html__( 'per Page', 'learndash' ), 'default' => $per_page, ) ); if ( ( ! empty( $this->group_id ) ) && ( ! empty( $this->user_id ) ) ) { $this->on_process_actions_list(); $this->form_method = 'post'; $user = get_user_by( 'id', $this->user_id ); return; } elseif ( ! empty( $this->group_id ) ) { $group_post = get_post( $this->group_id ); if ( $group_post ) { $this->list_table->group_id = $this->group_id; $this->list_table->columns['username'] = esc_html__( 'Username', 'learndash' ); $this->list_table->columns['name'] = esc_html__( 'Name', 'learndash' ); $this->list_table->columns['email'] = esc_html__( 'Email', 'learndash' ); $this->list_table->columns['user_actions'] = esc_html__( 'Actions', 'learndash' ); return; } } } elseif ( $this->current_action == 'learndash-group-email' ) { $group_post = get_post( $this->group_id ); if ( $group_post ) { return; } } //$this->title = esc_html__( 'Group Administration', 'learndash' ); $this->list_table->columns['group_name'] = esc_html__( 'Group Name', 'learndash' ); $this->list_table->columns['group_actions'] = esc_html__( 'Actions', 'learndash' ); } public function show_page() { ?>

      title ) ) { ?>

      title; ?>

      current_action == 'learndash-group-email' ) { ?>
      true, 'wpautop' => true, ) ); ?>


      list_table->views(); ?> user_id ) ) { ?> list_table->check_table_filters(); $this->list_table->prepare_items(); if ( ! empty( $this->group_id ) ) { ?> list_table->search_box( esc_html__( 'Search Users', 'learndash' ), 'users' ); } else { $this->list_table->search_box( esc_html__( 'Search Groups', 'learndash' ), 'groups' ); } wp_nonce_field( 'ld-group-list-view-nonce', 'ld-group-list-view-nonce' ); $this->list_table->display(); } else { $group_user_ids = learndash_get_groups_user_ids( $this->group_id ); if ( ! empty( $group_user_ids ) ) { if ( in_array( $this->user_id, $group_user_ids ) ) { $atts = array( 'user_id' => $this->user_id, 'group_id' => $this->group_id, 'progress_num' => LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_General_Per_Page', 'progress_num' ), 'progress_orderby' => 'title', 'progress_order' => 'ASC', 'quiz_num' => LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_General_Per_Page', 'quiz_num' ), 'quiz_orderby' => 'taken', 'quiz_order' => 'DESC', ); /** * Allow filtering of group admininstration output * * @since 2.5.7 */ $atts = apply_filters( 'learndash_group_administration_course_info_atts', $atts, get_user_by( 'id', $this->user_id ) ); echo learndash_course_info_shortcode( $atts ); if ( learndash_show_user_course_complete( $this->user_id ) ) { echo submit_button( esc_html__( 'Update User', 'learndash' ) ); } } } } ?>
      user_id ) ) { learndash_save_user_course_complete( $this->user_id ); } } // End of functions } } function learndash_data_group_reports_ajax() { $reply_data = array( 'status' => false ); if ( ( learndash_is_admin_user() ) || ( learndash_is_group_leader_user() ) ) { if ( isset( $_POST['data'] ) ) { $post_data = $_POST['data']; } else { $post_data = array(); } $ld_admin_settings_data_reports = new Learndash_Admin_Settings_Data_Reports(); $reply_data['data'] = $ld_admin_settings_data_reports->do_data_reports( $post_data, $reply_data ); } if ( ! empty( $reply_data ) ) { echo wp_json_encode( $reply_data ); } wp_die(); // this is required to terminate immediately and return a proper response } add_action( 'wp_ajax_learndash_data_group_reports', 'learndash_data_group_reports_ajax' ); PKc\0{#{#@includes/admin/class-learndash-admin-groups-users-list-table.phpnuW+A 'group', //singular name of the listed records 'plural' => 'groups', //plural name of the listed records 'ajax' => true //does this table support ajax? ) ); } function check_table_filters() { $this->filters = array(); //echo "_GET
      "; print_r($_GET); echo "
      "; //echo "_POST
      "; print_r($_POST); echo "
      "; if ( ( isset( $_GET['s'] ) ) && ( !empty( $_GET['s'] ) ) ) { $this->filters['search'] = esc_attr( $_GET['s'] ); } } function search_box( $text, $input_id ) { if ( empty( $_REQUEST['s'] ) && !$this->has_items() ) return; $input_id = $input_id . '-search-input'; echo ''; ?>group_id ) ) { ?>
      columns; } function column_default($item, $column_name){ //echo 'item
      '. print_r($item, true) .'
      '; //echo "column_name=[". $column_name ."]
      "; } function column_group_name( $item ) { $output = ''; if ( current_user_can( 'edit_groups') ) { $output .= '' . $item->post_title .''; $row_actions = array('edit' => '' . esc_html__('edit', 'learndash' ) .'' ); $output .= $this->row_actions($row_actions); } else { $output .= ''. $item->post_title .''; } echo $output; } function column_group_actions( $item ) { $data_settings_courses = learndash_data_upgrades_setting('user-meta-courses'); $data_settings_quizzes = learndash_data_upgrades_setting('user-meta-quizzes'); $actions = array(); $actions['list-view'] = ''. esc_html__( 'List Users', 'learndash' ) .''; if ( ( !empty( $data_settings_courses ) ) && ( !empty( $data_settings_quizzes ) ) ) { $data_slug = 'user-courses'; $actions[$data_slug] = ''. esc_html__( 'Export Progress', 'learndash' ) .''; $data_slug = 'user-quizzes'; $actions[$data_slug] = ''. esc_html__( 'Export Results', 'learndash' ) .''; } else { $data_slug = 'user-courses'; $actions[$data_slug] = ''. esc_html__( 'Export Progress', 'learndash' ) .''; $data_slug = 'user-quizzes'; $actions[$data_slug] = ''. esc_html__( 'Export Results', 'learndash' ) .''; } if ( current_user_can( 'edit_groups') ) { $data_slug = 'edit-group'; $actions[$data_slug] = ''. esc_html__( 'Edit Group', 'learndash' ) .''; } if ( !empty( $actions ) ) { echo implode(' | ', $actions ); } do_action( 'learndash_group_admin_page_actions', $item->ID ); } function column_username( $item ) { $output = ''; $output .= get_avatar( $item->ID, 32 ); if ( current_user_can( 'edit_users' ) ) { $output .= '' . $item->display_name .''; $row_actions = array('edit' => '' . esc_html__('edit', 'learndash' ) .'' ); $output .= $this->row_actions($row_actions); } else { $output .= ''. $item->display_name .''; } echo $output; } function column_name( $item ) { echo $item->user_login; } function column_email( $item ) { echo $item->user_email; } function column_user_actions( $item ) { ?> get_pagenum(); $total_items = 0; $per_page = $this->per_page; $this->items = array(); if (!empty( $this->group_id ) ) { $users_ids = learndash_get_groups_user_ids( $this->group_id, true ); if ( ! empty( $users_ids ) ) { $user_query_args = array( 'include' => $users_ids, 'orderby' => 'display_name', 'order' => 'ASC', 'number' => $per_page, 'paged' => $current_page ); if ( !empty( $this->filters['search'] ) ) { $user_query_args['search'] = '*'. $this->filters['search'] .'*'; } $user_query = new WP_User_Query( $user_query_args ); $this->items = $user_query->results; $total_items = $user_query->total_users; } } else { $current_user = wp_get_current_user(); $group_ids = learndash_get_administrators_group_ids( $current_user->ID, true ); if ( !empty( $group_ids ) ) { $groups_query_args = array( 'post_type' => 'groups', 'posts_per_page' => $per_page, 'paged' => $current_page, 'post__in' => $group_ids ); if ( !empty( $this->filters['search'] ) ) { $groups_query_args['s'] = '"'. $this->filters['search'] .'"'; add_filter( 'posts_search', array( $this, 'search_filter_by_title' ), 10, 2 ); } $groups_query = new WP_Query( $groups_query_args ); if ( !empty( $this->filters['search'] ) ) { remove_filter( 'posts_search', array( $this, 'search_filter_by_title' ), 10, 2 ); } if ( !empty( $groups_query->posts ) ) { $this->items = $groups_query->posts; $total_items = $groups_query->found_posts; } } } $this->set_pagination_args( array( 'total_items' => intval( $total_items ), //WE have to calculate the total number of items 'per_page' => intval( $per_page ), //WE have to determine how many items to show on a page 'total_pages' => ceil( intval( $total_items ) / intval( $per_page ) ) //WE have to calculate the total number of pages ) ); } function search_filter_by_title( $search, $wp_query ) { if ( ! empty( $search ) && ! empty( $wp_query->query_vars['search_terms'] ) ) { global $wpdb; $q = $wp_query->query_vars; $n = ! empty( $q['exact'] ) ? '' : '%'; $search = array(); foreach ( ( array ) $q['search_terms'] as $term ) $search[] = $wpdb->prepare( "$wpdb->posts.post_title LIKE %s", $n . $wpdb->esc_like( $term ) . $n ); if ( ! is_user_logged_in() ) $search[] = "$wpdb->posts.post_password = ''"; $search = ' AND ' . implode( ' AND ', $search ); } return $search; } } } PKc\Jincludes/ld-groups.phpnuW+AID ) ) && ( !learndash_is_admin_user( $current_user->ID ) ) ) { exit; } $group_email_data = json_decode( stripslashes( $_POST['group_email_data'] ), true ); if ( ( !isset( $group_email_data['group_id'] ) ) || ( empty( $group_email_data['group_id'] ) ) ) die(); $group_email_data['group_id'] = intval( $group_email_data['group_id'] ); if ( ( !isset( $group_email_data['email_subject'] ) ) || ( empty( $group_email_data['email_subject'] ) ) ) die(); $group_email_data['email_subject'] = wp_strip_all_tags( stripcslashes( $group_email_data['email_subject'] ) ); if ( ( !isset( $group_email_data['email_message'] ) ) || ( empty( $group_email_data['email_message'] ) ) ) die(); $group_email_data['email_message'] = wpautop( stripcslashes( $group_email_data['email_message'] ) ); if ( ( !isset( $_POST['nonce'] ) ) || ( empty( $_POST['nonce'] ) ) || ( !wp_verify_nonce( $_POST['nonce'], 'group_email_nonce_'. $group_email_data['group_id'] .'_'. $current_user->ID ) ) ) { die(); } $group_admin_ids = learndash_get_groups_administrator_ids( $group_email_data['group_id'] ); if ( in_array( $current_user->ID, $group_admin_ids ) === false ) { die(); } $mail_args = array( 'to' => $current_user->user_email, 'subject' => $group_email_data['email_subject'], 'message' => $group_email_data['email_message'], 'attachments' => '', 'headers' => array( 'MIME-Version: 1.0', 'content-type: text/html', 'From: '. $current_user->display_name . ' <' . $current_user->user_email . '>', 'Reply-to: '. $current_user->display_name . ' <' . $current_user->user_email . '>' ) ); $group_user_ids = learndash_get_groups_user_ids( $group_email_data['group_id'] ); if ( !empty( $group_user_ids ) ) { $email_addresses = array(); foreach ( $group_user_ids as $user_id ) { $user = get_user_by( 'id', $user_id ); if ( $user ) { $email_addresses[] = 'Bcc: '. sanitize_email( $user->user_email ); } } $group_email_error = null; add_action('wp_mail_failed', function ( $mail_error ) { global $group_email_error; $group_email_error = $mail_error; }); if ( $email_addresses ) { $mail_args['headers'] = array_merge( $mail_args['headers'], $email_addresses ); $mail_args = apply_filters( 'ld_group_email_users_args', $mail_args ); if ( !empty( $mail_args ) ) { do_action( 'ld_group_email_users_before', $mail_args ); $mail_ret = wp_mail( $mail_args['to'], $mail_args['subject'], $mail_args['message'], $mail_args['headers'], $mail_args['attachments'] ); do_action( 'ld_group_email_users_after', $mail_args, $mail_ret ); if ( !$mail_ret ) { $group_email_error_message = ''; if ( is_wp_error( $group_email_error ) ) { $group_email_error_message = $group_email_error->get_error_message(); } wp_send_json_error( array( 'message' => sprintf( wp_kses_post( __( 'Error: Email(s) not sent. Please try again or check with your hosting provider.
      wp_mail() returned %d.
      Error: %s
      ', 'learndash' ) ), $mail_ret, $group_email_error_message ) ) ); } else { wp_send_json_success( array( 'message' => sprintf( wp_kses_post( __( 'Success: Email sent to %d group users.', 'learndash' ) ), count( $email_addresses ) ) ) ); } } else { wp_send_json_error( array( 'message' => __( 'Mail Args empty. Unepected condition from filter: ld_group_email_users_args', 'learndash' ) ) ); } } else { wp_send_json_error( array( 'message' => esc_html__( 'No users in group.', 'learndash' ) ) ); } } wp_send_json_error(); die(); } } add_action( 'wp_ajax_learndash_group_emails', 'learndash_group_emails' ); /** * Register groups post type * * @since 2.1.0 */ function learndash_groups_post_content() { $labels = array( 'name' => esc_html__( 'Groups', 'learndash' ), 'singular_name' => esc_html__( 'Group', 'learndash' ), 'add_new' => esc_html__( 'Add New', 'learndash' ), 'add_new_item' => esc_html__( 'Add New Group', 'learndash' ), 'edit_item' => esc_html__( 'Edit Group', 'learndash' ), 'new_item' => esc_html__( 'New Group', 'learndash' ), 'all_items' => esc_html__( 'Groups', 'learndash' ), 'updated' => esc_html__( 'Group Updated.', 'learndash' ), 'view_item' => esc_html__( 'View Group', 'learndash' ), 'view_items' => esc_html__( 'View Groups', 'learndash' ), 'search_items' => esc_html__( 'Search Group', 'learndash' ), 'not_found' => esc_html__( 'No Group found', 'learndash' ), 'not_found_in_trash' => esc_html__( 'No Group found in the Trash', 'learndash' ), 'parent_item_colon' => '', 'menu_name' => esc_html__( 'Groups', 'learndash' ), 'item_published' => esc_html__( 'Group Published', 'learndash' ), 'item_published_privately' => esc_html__( 'Group Published Privately', 'learndash' ), 'item_reverted_to_draft' => esc_html__( 'Group Reverted to Draft', 'learndash' ), 'item_scheduled' => esc_html__( 'Group Scheduled', 'learndash' ), 'item_updated' => esc_html__( 'Group Updated', 'learndash' ), ); $capabilities = array( 'read_post' => 'read_group', 'publish_posts' => 'publish_groups', 'edit_posts' => 'edit_groups', 'edit_others_posts' => 'edit_others_groups', 'delete_posts' => 'delete_groups', 'delete_others_posts' => 'delete_others_groups', 'read_private_posts' => 'read_private_groups', 'delete_post' => 'delete_group', 'edit_published_posts' => 'edit_published_groups', 'delete_published_posts' => 'delete_published_groups', ); if ( is_admin() ) { $admin_role = get_role( 'administrator' ); if ( ( $admin_role ) && ( $admin_role instanceof WP_Role ) ) { if ( ! $admin_role->has_cap( 'edit_groups' ) ) { foreach ( $capabilities as $key => $cap ) { $admin_role->add_cap( $cap ); } } } } $args = array( 'labels' => $labels, 'description' => esc_html__( 'Holds LearnDash user Groups', 'learndash' ), 'public' => false, 'menu_position' => 10, 'show_in_menu' => true, 'show_in_nav_menus' => false, 'supports' => array( 'title', 'editor' ), //, 'custom-fields', 'author' 'has_archive' => false, 'exclude_from_search' => true, 'publicly_queryable' => false, 'show_ui' => true, 'capability_type' => 'group', 'capabilities' => $capabilities, 'map_meta_cap' => true, 'show_in_rest' => LearnDash_REST_API::enabled( 'groups' ) || LearnDash_REST_API::gutenberg_enabled( 'groups' ), //'rest_base' => LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_Permalinks', 'courses' ), 'rest_controller_class' => LearnDash_REST_API::get_controller( 'groups' ), ); /** * Filter post type registration args * * @var array $args */ $args = apply_filters( 'learndash_post_args_groups', $args ); $args = apply_filters( 'learndash-cpt-options', $args, 'groups' ); /** * Filter via the common 'learndash_post_args' used for most all other * post_types in LearnDash * * @since 2.5.8 */ // Removed. The world is not ready for this filter. //$post_args = array( 'groups' => $args ); //$post_args = apply_filters( 'learndash_post_args', $post_args ); //if ( isset( $post_args['groups'] ) ) // $args = $post_args['groups']; register_post_type( 'groups', $args ); } add_action( 'init', 'learndash_groups_post_content' ); /** * Add Group Leader role * * @since 2.1.0 */ function learndash_add_group_admin_role() { $group_leader = get_role( 'group_leader' ); if ( is_null( $group_leader ) ) { $group_leader = add_role( 'group_leader', 'Group Leader', array( 'read' => true, 'group_leader' => true ) ); } else { $group_leader->add_cap( 'group_leader', true ); } } //add_action( 'init', 'learndash_add_group_admin_role' ); add_action( 'learndash_activated', 'learndash_add_group_admin_role' ); /** * All group leader access to backend * * WooCommerce prevent access to dashboard for all non-admin user roles. This filter allows * us to check if the current user is group_leader and override WC access * * @since 2.2.0.1 * @param bool $prevent_access value from WC. * @return bool adjusted value based on user's access/role */ function learndash_check_group_leader_access( $prevent_access ) { if (learndash_is_group_leader_user('group_leader' ) ) { if (defined('LEARNDASH_GROUP_LEADER_DASHBOARD_ACCESS')) { if (LEARNDASH_GROUP_LEADER_DASHBOARD_ACCESS == true) { $prevent_access = false; } else if (LEARNDASH_GROUP_LEADER_DASHBOARD_ACCESS == false) { $prevent_access = true; } } else { $prevent_access = false; } } return $prevent_access; } add_filter( 'woocommerce_prevent_admin_access', 'learndash_check_group_leader_access', 20, 1 ); /** * Get all group leaders user ids * * @return array of group leaders user ids * @since 2.1.2 */ function learndash_all_group_leader_ids() { $group_leader_user_ids = array(); $group_leader_users = learndash_all_group_leaders(); if (!empty($group_leader_users)) { $group_leader_user_ids = wp_list_pluck( $group_users, 'ID' ); } return $group_leader_user_ids; } /** * Get all group leaders * * @return array of group leaders user objects */ function learndash_all_group_leaders() { $transient_key = "learndash_group_leaders"; //$group_user_objects = get_transient( $transient_key ); $group_user_objects = LDLMS_Transients::get( $transient_key ); if ( $group_user_objects === false ) { $user_query_args = array( 'role' => 'group_leader', 'orderby' => 'display_name', 'order' => 'ASC' ); $user_query = new WP_User_Query( $user_query_args ); if ( isset( $user_query->results ) ) { $group_user_objects = $user_query->results; } else { $group_user_objects = array(); } LDLMS_Transients::set( $transient_key, $group_user_objects, MINUTE_IN_SECONDS ); } return $group_user_objects; } /** * Outputs list of group users in a table * * @since 2.1.0 * * @param int $group_id * @return string */ function learndash_group_user_list( $group_id ) { global $wpdb; global $learndash_shortcode_used; $learndash_shortcode_used = true; $current_user = wp_get_current_user(); if ( ( !learndash_is_admin_user( $current_user ) ) && ( !learndash_is_group_leader_user( $current_user ) ) ) { return esc_html__( 'Please login as a Group Administrator', 'learndash' ); } $users = learndash_get_groups_users( $group_id ); if ( ! empty( $users ) ) { ?> display_name) ? $user->display_name : $user->user_nicename; ?>
      user_login;?> user_email;?>
      prepare("SELECT post_id FROM ". $wpdb->postmeta ." as postmeta INNER JOIN ". $wpdb->posts ." as posts ON posts.ID=postmeta.post_id WHERE posts.post_type = %s AND posts.post_status = %s AND meta_key = %s", 'sfwd-courses', 'publish', 'learndash_group_enrolled_' . $group_id); $group_courses_ids = $wpdb->get_col( $sql_str ); LDLMS_Transients::set( $transient_key, $group_courses_ids, MINUTE_IN_SECONDS ); } else { $group_courses_ids = $group_courses_ids_transient; } } return $group_courses_ids; } /** * Set list of enrolled courses for a group * * @since 2.2.1 * * @param int $group_id * @param array $group_courses_new * @return none */ function learndash_set_group_enrolled_courses( $group_id = 0, $group_courses_new = array() ) { if (!empty( $group_id )) { $group_courses_old = learndash_group_enrolled_courses( $group_id, true ); $group_courses_intersect = array_intersect( $group_courses_new, $group_courses_old ); //error_log('group_courses_intersect
      '. print_r( $group_courses_intersect, true) .'
      '); $group_courses_add = array_diff( $group_courses_new, $group_courses_intersect ); //error_log('group_courses_add
      '. print_r($group_courses_add, true) .'
      '); if ( !empty( $group_courses_add ) ) { foreach ( $group_courses_add as $course_id ) { //update_post_meta( $course_id, 'learndash_group_enrolled_' . $group_id, $group_id ); ld_update_course_group_access( $course_id, $group_id, false ); } } $group_courses_remove = array_diff( $group_courses_old, $group_courses_intersect ); //error_log('group_courses_remove
      '. print_r($group_courses_remove, true) .'
      '); if ( !empty( $group_courses_remove ) ) { foreach ( $group_courses_remove as $course_id ) { //update_post_meta( $course_id, 'learndash_group_enrolled_' . $group_id, $group_id ); ld_update_course_group_access( $course_id, $group_id, true ); } } // Finally clear our cache for other services $transient_key = "learndash_group_courses_" . $group_id; delete_transient( $transient_key ); } } /** * Group all the related course ids for a set of groups_ids * * @since 2.3 * * @param int $user_id he user_id to get the associated groups then course ids. If not provided will user current user id * @param array $group_ids an array of group ids to source the course ids from. If not provided will use group ids based on user_id access. * @return array an array of course_ids. */ function learndash_get_groups_courses_ids( $user_id = 0, $group_ids = array() ) { $course_ids = array(); if ( empty( $user_id ) ) { // If the current user is not able to be determined. Then abort. if ( !is_user_logged_in() ) return $course_ids; $user_id = get_current_user_id(); } if ( learndash_is_group_leader_user( $user_id ) ) { $group_leader_group_ids = learndash_get_administrators_group_ids( $user_id ); // If user is group leader and the group ids is empty, nothing else to do. abort. if ( empty( $group_leader_group_ids ) ) return $course_ids; if ( empty( $group_ids ) ) { $group_ids = $group_leader_group_ids; } else { $group_ids = array_intersect( $group_leader_group_ids, $group_ids ); } } else if ( learndash_is_admin_user( $user_id ) ) { } else { return $course_ids; } if ( !empty( $group_ids ) ) { foreach ( $group_ids as $group_id ) { $group_course_ids = learndash_group_enrolled_courses( $group_id ); if ( !empty( $group_course_ids ) ) { $course_ids = array_merge( $course_ids, $group_course_ids ); } } } if ( !empty( $course_ids ) ) { $course_ids = array_unique( $course_ids ); } return $course_ids; } /** * Is a group enrolled in a certain course * * @since 2.1.0 * * @param int $group_id * @param int $course_id * @return bool */ function learndash_group_has_course( $group_id, $course_id ) { return get_post_meta( $course_id, 'learndash_group_enrolled_' . $group_id, true ); } /** * Gets timestamp of when course is available to group * * @since 2.1.0 * * @param int $group_id * @param int $course_id * @return string time stamp */ function learndash_group_course_access_from( $group_id, $course_id ) { return get_post_meta( $course_id, 'learndash_group_enrolled_' . $group_id, true ); } /** * Does a course belong to a group the user is in * * @since 2.1.0 * * @param int $user_id * @param int $course_id * @return bool */ function learndash_user_group_enrolled_to_course( $user_id, $course_id ) { $group_ids = learndash_get_users_group_ids( $user_id ); if ( !empty( $group_ids ) ) { foreach ( $group_ids as $group_id ) { if ( learndash_group_has_course( $group_id, $course_id ) ) { return true; } } } return false; } /** * Gets timestamp of when course is available to a user in a group * * @since 2.1.0 * * @param int $user_id * @param int $course_id * @return string timestamp */ function learndash_user_group_enrolled_to_course_from( $user_id, $course_id ) { $group_ids = learndash_get_users_group_ids( $user_id ); $enrolled_from = time() + 10000; foreach ( $group_ids as $group_id ) { $enrolled_from_temp = learndash_group_course_access_from( $group_id, $course_id ); if ( ! empty( $enrolled_from_temp ) && $enrolled_from_temp < $enrolled_from ) { $enrolled_from = $enrolled_from_temp; } } if ( $enrolled_from <= time() ) { $user = get_userdata( $user_id ); $user_registered = strtotime( $user->user_registered ); if ( $user_registered > $enrolled_from ) { return $user_registered; } else { return $enrolled_from; } } else { return null; } } /** * Get group ids that the user is an administrator of * * @since 2.1.0 * * @param int $user_id * @return array list of group ids */ function learndash_get_administrators_group_ids( $user_id, $_MENU = false ) { global $wpdb; $group_ids = array(); if ( !empty( $user_id ) ) { if ( ( learndash_is_admin_user( $user_id ) ) && ( $_MENU != true ) ) { $group_ids = learndash_get_groups( true, $user_id ); } else { // LD 2.3 rewrote this double query to be a simple join $sql_str = $wpdb->prepare( "SELECT usermeta.meta_value as group_ids FROM ". $wpdb->usermeta ." as usermeta INNER JOIN ". $wpdb->posts ." as posts ON posts.ID=usermeta.meta_value WHERE user_id = %d AND meta_key LIKE %s AND posts.post_status = 'publish'", $user_id, 'learndash_group_leaders_%'); $group_ids = $wpdb->get_col( $sql_str ); } } return $group_ids; } /** * Set group ids that the user is an administrator of * * @since 2.2.1 * * @param int $user_id * @param array list of group ids */ function learndash_set_administrators_group_ids( $user_id, $leader_groups_new = array() ) { global $wpdb; if ( !empty($user_id ) ) { $leader_groups_old = learndash_get_administrators_group_ids( $user_id, true ); $leader_groups_intersect = array_intersect( $leader_groups_new, $leader_groups_old ); $leader_groups_add = array_diff( $leader_groups_new, $leader_groups_intersect ); if ( !empty( $leader_groups_add ) ) { foreach ( $leader_groups_add as $group_id ) { ld_update_leader_group_access( $user_id, $group_id, false); } } $leader_groups_remove = array_diff( $leader_groups_old, $leader_groups_intersect ); if ( !empty( $leader_groups_remove ) ) { foreach ( $leader_groups_remove as $group_id ) { ld_update_leader_group_access( $user_id, $group_id, true); } } // Finally clear our cache for other services //$transient_key = "learndash_user_groups_" . $user_id; //delete_transient( $transient_key ); } return array(); } /** * Get all groups * * @since 2.1.0 * * @param bool $id_only return id's only * @return array groups */ function learndash_get_groups( $id_only = false, $current_user_id = 0 ) { if ( empty( $current_user_id ) ) { if ( !is_user_logged_in() ) return array(); $current_user_id = get_current_user_id(); } if ( learndash_is_group_leader_user( $current_user_id ) ) { return learndash_get_administrators_group_ids( $current_user_id ); } else if ( learndash_is_admin_user( $current_user_id ) ) { $groups_query_args = array( 'post_type' => 'groups', 'nopaging' => true ); if ( $id_only ) { $groups_query_args['fields'] = 'ids'; } $groups_query = new WP_Query( $groups_query_args ); return $groups_query->posts; } } /** * Get a users group id's * * @since 2.1.0 * * @param int $user_id * @return array list of groups user belongs to */ function learndash_get_users_group_ids( $user_id = 0, $bypass_transient = false ) { global $wpdb; $user_group_ids = array(); if ( !empty( $user_id ) ) { $transient_key = "learndash_user_groups_" . $user_id; if (!$bypass_transient) { $user_group_ids_transient = LDLMS_Transients::get( $transient_key ); } else { $user_group_ids_transient = false; } if ( $user_group_ids_transient === false ) { $sql_str = $wpdb->prepare("SELECT meta_value FROM ". $wpdb->usermeta ." WHERE meta_key LIKE %s AND user_id = %d and meta_value != ''", 'learndash_group_users_%', $user_id ); $col = $wpdb->get_col( $sql_str ); if ( ! empty( $col) && ! empty( $col[0] ) ) { $sql_str = "SELECT ID FROM $wpdb->posts WHERE post_type='groups' AND post_status = 'publish' AND ID IN (" . implode( ',', $col ) . ')'; $user_group_ids = $wpdb->get_col( $sql_str ); } LDLMS_Transients::set( $transient_key, $user_group_ids, MINUTE_IN_SECONDS ); } else { $user_group_ids = $user_group_ids_transient; } } return $user_group_ids; } function learndash_set_users_group_ids( $user_id = 0, $user_groups_new = array() ) { if ( !empty($user_id ) ) { $user_groups_old = learndash_get_users_group_ids( $user_id, true ); $user_groups_intersect = array_intersect( $user_groups_new, $user_groups_old ); $user_groups_add = array_diff( $user_groups_new, $user_groups_intersect ); if ( !empty( $user_groups_add ) ) { foreach ( $user_groups_add as $group_id ) { ld_update_group_access( $user_id, $group_id, false); } } $user_groups_remove = array_diff( $user_groups_old, $user_groups_intersect ); if ( !empty( $user_groups_remove ) ) { foreach ( $user_groups_remove as $group_id ) { ld_update_group_access( $user_id, $group_id, true); } } // Finally clear our cache for other services $transient_key = "learndash_user_groups_" . $user_id; delete_transient( $transient_key ); } } /** * Get a Course group id's * * @since 2.2.1 * * @param int $course_id * @return array list of groups user belongs to */ function learndash_get_course_groups( $course_id = 0, $bypass_transient = false ) { global $wpdb; $course_groups_ids = array(); $course_id = absint( $course_id ); if ( !empty( $course_id ) ) { $transient_key = "learndash_course_groups_" . $course_id; if (!$bypass_transient) { $course_groups_ids_transient = LDLMS_Transients::get( $transient_key ); } else { $course_groups_ids_transient = false; } if ( $course_groups_ids_transient === false ) { // For Groups the meta_value is a datetime. So we need mysql to parse the meta_key to get the group_id $sql_str = $wpdb->prepare("SELECT DISTINCT REPLACE(meta_key, 'learndash_group_enrolled_', '') FROM ". $wpdb->postmeta ." WHERE meta_key LIKE %s AND post_id = %d and meta_value != ''", 'learndash_group_enrolled_%', $course_id ); $col = $wpdb->get_col( $sql_str ); if ( ! empty( $col) && ! empty( $col[0] ) ) { $col = array_map( 'absint', $col ); $sql_str = "SELECT ID FROM $wpdb->posts WHERE post_type='groups' AND post_status = 'publish' AND ID IN (" . implode( ',', $col ) . ')'; $course_groups_ids = $wpdb->get_col( $sql_str ); if ( ! empty( $course_groups_ids ) ) { $course_groups_ids = array_map( 'absint', $course_groups_ids ); } LDLMS_Transients::set( $transient_key, $course_groups_ids, MINUTE_IN_SECONDS ); } } else { $course_groups_ids = $course_groups_ids_transient; } } return $course_groups_ids; } function learndash_set_course_groups( $course_id = 0, $course_groups_new = array() ) { if ( !empty($course_id ) ) { $course_groups_old = learndash_get_course_groups( $course_id, true ); //error_log('course_groups_old
      '. print_r($course_groups_old, true) .'
      '); $course_groups_intersect = array_intersect( $course_groups_new, $course_groups_old ); //error_log('course_groups_intersect
      '. print_r($course_groups_intersect, true) .'
      '); $course_groups_add = array_diff( $course_groups_new, $course_groups_intersect ); //error_log('course_groups_add
      '. print_r($course_groups_add, true) .'
      '); if ( !empty( $course_groups_add ) ) { foreach ( $course_groups_add as $group_id ) { //ld_update_group_access( $user_id, $group_id, false); ld_update_course_group_access( $course_id, $group_id, false ); } } $course_groups_remove = array_diff( $course_groups_old, $course_groups_intersect ); //error_log('course_groups_remove
      '. print_r($course_groups_remove, true) .'
      '); if ( !empty( $course_groups_remove ) ) { foreach ( $course_groups_remove as $group_id ) { //ld_update_group_access( $user_id, $group_id, true); ld_update_course_group_access( $course_id, $group_id, true ); } } // Finally clear our cache for other services $transient_key = "learndash_course_groups_" . $course_id; delete_transient( $transient_key ); } } /** * Get users ids that belong to a group * * @since 2.1.0 * * @param int $group_id * @param bool $bypass_transient to ignore transient cache * @return array array of user ids that belong to group */ function learndash_get_groups_user_ids( $group_id = 0, $bypass_transient = false) { $group_user_ids = array(); if (!empty( $group_id ) ) { $group_users = learndash_get_groups_users( $group_id, $bypass_transient ); if (!empty( $group_users ) ) { $group_user_ids = wp_list_pluck( $group_users, 'ID' ); } } return $group_user_ids; } /** * Get users objects that belong to a group * * @since 2.1.2 * * @param int $group_id * @param bool $bypass_transient to ignore transient cache * @return array list of users objects that belong to group */ function learndash_get_groups_users( $group_id, $bypass_transient = false ) { //echo "group_id[". $group_id ."] [". $bypass_transient ."]
      "; if (!$bypass_transient) { $transient_key = "learndash_group_users_" . $group_id; $group_users_objects = LDLMS_Transients::get( $transient_key ); } else { $group_users_objects = false; } //echo "group_users_objects
      "; print_r($group_users_objects); echo "
      "; if ( $group_users_objects === false ) { // Changed in v2.3 we no longer exclude ALL group leaders from groups. // A group leader CAN be a member of a group user list. // For this group get the group leaders. They will be excluded from the regular users. //$group_leader_user_ids = learndash_get_groups_administrator_ids( $group_id ); $user_query_args = array( //'exclude' => $group_leader_user_ids, 'orderby' => 'display_name', 'order' => 'ASC', 'meta_query' => array( array( 'key' => 'learndash_group_users_'. intval( $group_id ), 'compare' => 'EXISTS', ) ) ); $user_query = new WP_User_Query( $user_query_args ); if ( isset( $user_query->results ) ) { $group_users_objects = $user_query->results; } else { $group_users_objects = array(); } if (!$bypass_transient) { LDLMS_Transients::set( $transient_key, $group_users_objects, MINUTE_IN_SECONDS ); } } return $group_users_objects; } /** * Set Group Users users * * @since 2.1.2 * * @param int $group_id * @param array list of users objects * @return none */ function learndash_set_groups_users( $group_id = 0, $group_users_new = array() ) { update_post_meta( $group_id, 'learndash_group_users_' . $group_id, $group_users_new); $group_users_old = learndash_get_groups_user_ids( $group_id, true ); $group_users_intersect = array_intersect( $group_users_new, $group_users_old ); $group_users_add = array_diff( $group_users_new, $group_users_intersect ); if ( !empty( $group_users_add ) ) { foreach ( $group_users_add as $user_id ) { //update_user_meta( $user_id, 'learndash_group_users_' . $group_id, $group_id ); ld_update_group_access( $user_id, $group_id, false); } } $group_users_remove = array_diff( $group_users_old, $group_users_intersect ); if ( !empty( $group_users_remove ) ) { foreach ( $group_users_remove as $user_id ) { //delete_user_meta( $user_id, 'learndash_group_users_' . $group_id, null ); ld_update_group_access( $user_id, $group_id, true); } /** * Action hook for remove group users * * $group_id int ID of the group * $group_users_remove array User IDs that are removed from group */ do_action( 'learndash_remove_group_users', $group_id, $group_users_remove ); } // Finally clear our cache for other services $transient_key = "learndash_group_users_" . $group_id; delete_transient( $transient_key ); } /** * Get admin id's that belong to group * * @since 2.1.0 * * @param int $group_id * @param bool $bypass_transient to ignore transient cache * @return array array of goup leader user ids */ function learndash_get_groups_administrator_ids( $group_id, $bypass_transient = false ) { /* global $wpdb; if ( is_numeric( $group_id ) ) { return $wpdb->get_col( " SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'learndash_group_leaders_" . $group_id . "' AND meta_value = '" . $group_id . "'" ); } else { return array(); } */ $group_leader_user_ids = array(); if ( !empty( $group_id ) ) { $group_leader_users = learndash_get_groups_administrators( $group_id, $bypass_transient ); if ( !empty( $group_leader_users ) ) { $group_leader_user_ids = wp_list_pluck( $group_leader_users, 'ID' ); } } return $group_leader_user_ids; } /** * Get group_leader user objects that belong to group * * @since 2.1.2 * * @param int $group_id * @param bool $bypass_transient to ignore transient cache * @return array array of group leader user objects */ function learndash_get_groups_administrators( $group_id, $bypass_transient = false ) { $transient_key = "learndash_group_leaders_" . $group_id; if ( !$bypass_transient ) { $group_user_objects = LDLMS_Transients::get( $transient_key ); } else { $group_user_objects = false; } if ( $group_user_objects === false ) { $user_query_args = array( //'role' => 'group_leader', 'orderby' => 'display_name', 'order' => 'ASC', 'meta_query' => array( array( 'key' => 'learndash_group_leaders_'. intval( $group_id ), 'value' => intval( $group_id ), 'compare' => '=', 'type' => 'NUMERIC' ) ) ); $user_query = new WP_User_Query( $user_query_args ); if ( isset( $user_query->results ) ) { $group_user_objects = $user_query->results; } else { $group_user_objects = array(); } if ( !$bypass_transient ) { LDLMS_Transients::set( $transient_key, $group_user_objects, MINUTE_IN_SECONDS ); } } return $group_user_objects; } /** * Set Group Leader/Administrator users * * @since 2.1.2 * * @param int $group_id * @param array list of users objects * @return none */ function learndash_set_groups_administrators( $group_id = 0, $group_leaders_new = array() ) { if (!empty( $group_id )) { $group_leaders_old = learndash_get_groups_administrator_ids( $group_id, true ); $group_leaders_intersect = array_intersect( $group_leaders_new, $group_leaders_old ); //error_log('$group_leaders_intersect
      '. print_r( $group_leaders_intersect, true) .'
      '); $group_leaders_add = array_diff( $group_leaders_new, $group_leaders_intersect ); //error_log('group_leaders_add
      '. print_r($group_leaders_add, true) .'
      '); if ( !empty( $group_leaders_add ) ) { foreach ( $group_leaders_add as $user_id ) { update_user_meta( $user_id, 'learndash_group_leaders_' . $group_id, $group_id ); } } $group_leaders_remove = array_diff( $group_leaders_old, $group_leaders_intersect ); //error_log('group_leaders_remove
      '. print_r( $group_leaders_remove, true) .'
      '); if ( !empty( $group_leaders_remove ) ) { foreach ( $group_leaders_remove as $user_id ) { delete_user_meta( $user_id, 'learndash_group_leaders_' . $group_id, $group_id ); } } // Finally clear our cache for other services $transient_key = "learndash_group_leaders_" . $group_id; delete_transient( $transient_key ); } } /** * Is user a group leader * Replaces is_group_leader * @since 2.3 * * @param int|object $user * @return bool true if user is group leader, else false */ function learndash_is_group_leader_user( $user = 0 ) { $user_id = 0; if ( ( is_numeric( $user ) ) && ( !empty( $user ) ) ) { $user_id = $user; } else if ($user instanceof WP_User) { $user_id = $user->ID; } else { $user_id = get_current_user_id(); } if ( ( !empty( $user_id ) ) && ( !learndash_is_admin_user( $user_id ) ) && ( defined( 'LEARNDASH_GROUP_LEADER_CAPABILITY_CHECK' ) ) && ( LEARNDASH_GROUP_LEADER_CAPABILITY_CHECK != '' ) ) { return user_can( $user_id, LEARNDASH_GROUP_LEADER_CAPABILITY_CHECK ); } } function learndash_is_admin_user( $user = 0 ) { $user_id = 0; if ( ( is_numeric( $user ) ) && ( !empty( $user ) ) ) { $user_id = $user; } else if ($user instanceof WP_User) { $user_id = $user->ID; } else { $user_id = get_current_user_id(); } if ( ( !empty( $user_id ) ) && ( defined( 'LEARNDASH_ADMIN_CAPABILITY_CHECK' ) ) && ( LEARNDASH_ADMIN_CAPABILITY_CHECK != '' ) ) { return user_can( $user_id, LEARNDASH_ADMIN_CAPABILITY_CHECK ); } } /** * Is group leader an admin of a group this user belongs to * * @since 2.1.0 * * @param int $group_leader_id * @param int $user_id * @return bool */ function learndash_is_group_leader_of_user( $group_leader_id, $user_id ) { $admin_groups = learndash_get_administrators_group_ids( $group_leader_id ); $has_admin_groups = ! empty( $admin_groups ) && is_array( $admin_groups ) && ! empty( $admin_groups[0] ); foreach ( $admin_groups as $group_id ) { $learndash_is_user_in_group = learndash_is_user_in_group( $user_id, $group_id ); if ( $learndash_is_user_in_group ) { return true; } } return false; } /** * Does user belong to group * * @since 2.1.0 * * @param int $user_id * @param int $group_id * @return bool */ function learndash_is_user_in_group( $user_id, $group_id ) { return get_user_meta( $user_id, 'learndash_group_users_' . $group_id, true ); } /** * Shortcode to HTML output of display a users list of groups * * @since 2.1.0 * * @param array $attr shortcode attributes * @return string shortcode output */ function learndash_user_groups( $attr ) { global $learndash_shortcode_used; $learndash_shortcode_used = true; $shortcode_atts = shortcode_atts( array( 'user_id' => '', ), $attr ); extract( $shortcode_atts ); if ( empty( $user_id ) ) { $user_id = get_current_user_id(); } if ( empty( $user_id ) ) { return ''; } $admin_groups = learndash_get_administrators_group_ids( $user_id ); $user_groups = learndash_get_users_group_ids( $user_id ); $has_admin_groups = ! empty( $admin_groups ) && is_array( $admin_groups ) && ! empty( $admin_groups[0] ); $has_user_groups = ! empty( $user_groups ) && is_array( $user_groups ) && ! empty( $user_groups[0] ); return SFWD_LMS::get_template('user_groups_shortcode', array( 'admin_groups' => $admin_groups, 'user_groups' => $user_groups, 'has_admin_groups' => $has_admin_groups, 'has_user_groups' => $has_user_groups, ) ); } add_shortcode( 'user_groups', 'learndash_user_groups' ); /** * Delete group id from all users meta when group is deleted * * @todo restrict function to only run if post type is grou * will run against db everytime a post is deleted * * @since 2.1.0 * * @param int $pid id of group * @return bool successful deletion */ function learndash_delete_group( $pid ) { global $wpdb; if ( ! empty( $pid ) && is_numeric( $pid ) ) { $wpdb->delete( $wpdb->usermeta, array( 'meta_key' => 'learndash_group_users_' . $pid, 'meta_value' => $pid ) ); $wpdb->delete( $wpdb->usermeta, array( 'meta_key' => 'learndash_group_leaders_' . $pid, 'meta_value' => $pid ) ); } return true; } add_action( 'delete_post', 'learndash_delete_group', 10 ); /** * Update a users group access * * @since 2.1.0 * * @param int $user_id * @param int $group_id * @param bool $remove */ function ld_update_group_access( $user_id, $group_id, $remove = false ) { if ( $remove ) { delete_user_meta( $user_id, 'learndash_group_users_' . $group_id ); /** * Run actions after group access is removed for user * * @since 2.1.0 * * @param int $user_id */ do_action( 'ld_removed_group_access', $user_id, $group_id ); } else { update_user_meta( $user_id, 'learndash_group_users_' . $group_id, $group_id ); /** * Run actions after group access is added for user * * @since 2.1.0 * * @param int $user_id */ do_action( 'ld_added_group_access', $user_id, $group_id ); } } /** * Update a users group access * * @since 2.1.0 * * @param int $user_id * @param int $group_id * @param bool $remove */ function ld_update_course_group_access( $course_id, $group_id, $remove = false ) { if ( $remove ) { delete_post_meta( $course_id, 'learndash_group_enrolled_' . $group_id ); /** * Run actions after group access is removed for user * * @since 2.1.0 * * @param int $user_id */ do_action( 'ld_removed_course_group_access', $course_id, $group_id ); } else { update_post_meta( $course_id, 'learndash_group_enrolled_' . $group_id, time() ); /** * Run actions after group access is added for user * * @since 2.1.0 * * @param int $user_id */ do_action( 'ld_added_course_group_access', $course_id, $group_id ); } } /** * Update a group leader group access * * @since 2.2.1 * * @param int $user_id * @param int $group_id * @param bool $remove */ function ld_update_leader_group_access( $user_id, $group_id, $remove = false ) { if ( $remove ) { delete_user_meta( $user_id, 'learndash_group_leaders_' . $group_id ); /** * Run actions after group access is removed for user * * @since 2.1.0 * * @param int $user_id */ do_action( 'ld_removed_leader_group_access', $user_id, $group_id ); } else { update_user_meta( $user_id, 'learndash_group_leaders_' . $group_id, $group_id ); /** * Run actions after group access is added for user * * @since 2.1.0 * * @param int $user_id */ do_action( 'ld_added_leader_group_access', $user_id, $group_id ); } } /** * For a given Course and if course is associated with a group(s) get all user_ids * * @since 2.3 * * @param int $course_id * @return array array of user_ids */ function get_course_groups_users_access( $course_id = 0 ) { $user_ids = array(); if ( !empty( $course_id ) ) { $course_groups = learndash_get_course_groups( $course_id ); //error_log('course_groups
      '. print_r($course_groups, true) .'
      '); if ( !empty( $course_groups ) ) { foreach( $course_groups as $group_id ) { $group_users_ids = learndash_get_groups_user_ids( $group_id ); if ( !empty( $group_users_ids ) ) { $user_ids = array_merge( $user_ids, $group_users_ids ); } } } } if ( !empty( $user_ids ) ) { $user_ids = array_unique( $user_ids ); } return $user_ids; } /** * Get all Quizzes related to Group Courses * * Given a group ID will determine all Quizzes associated with Courses of the group * * @since 2.3 * * @param int $group_id * @return array array of quiz_ids */ function learndash_get_group_course_quiz_ids( $group_id = 0 ) { $group_quiz_ids = array(); if ( !empty( $group_id ) ) { $group_course_ids = learndash_group_enrolled_courses( intval( $group_id ) ); if ( !empty( $group_course_ids ) ) { foreach( $group_course_ids as $course_id ) { $group_quiz_query_args = array( 'post_type' => 'sfwd-quiz', 'nopaging' => true, 'fields' => 'ids', 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'course_id', 'value' => $course_id, 'compare' => '=', ), array( 'key' => 'ld_course_' . $course_id, 'value' => $course_id, 'compare' => '=', ) ) ); $group_quiz_query = new WP_Query( $group_quiz_query_args ); if ( ! empty( $group_quiz_query->posts ) ) { $group_quiz_ids = array_merge( $group_quiz_ids, $group_quiz_query->posts ); $group_quiz_ids = array_unique( $group_quiz_ids ); } } } } return $group_quiz_ids; }PKc\?=ddincludes/gutenberg/index.phpnuW+A{ld_block_error_message});\n }\n const outputBlock = (\n
      \n
      \n {ld_block_error_message}\n \n
      \n
      \n );\n */\n\n function do_serverside_render(attributes) {\n if (attributes.preview_show == true) {\n return wp.element.createElement(ld_certificate_ServerSideRender, {\n block: 'learndash/ld-certificate',\n attributes: attributes\n });\n } else {\n return ld_certificate_('[ld_certificate] shortcode output shown here', 'learndash');\n }\n }\n\n return [inspectorControls, do_serverside_render(props.attributes)];\n }\n});\n// CONCATENATED MODULE: ./blocks/ld-quiz-complete/index.js\n/**\n * LearnDash Block ld-quiz-complete\n *\n * @since 3.2\n * @package LearnDash\n */\n\n/**\n * LearnDash block functions\n */\n\n\n/**\n * Internal block libraries\n */\nvar ld_quiz_complete_wp$i18n = wp.i18n,\n ld_quiz_complete_ = ld_quiz_complete_wp$i18n.__,\n ld_quiz_complete_x = ld_quiz_complete_wp$i18n._x,\n ld_quiz_complete_sprintf = ld_quiz_complete_wp$i18n.sprintf;\nvar ld_quiz_complete_registerBlockType = wp.blocks.registerBlockType;\nvar ld_quiz_complete_wp$editor = wp.editor,\n ld_quiz_complete_InnerBlocks = ld_quiz_complete_wp$editor.InnerBlocks,\n ld_quiz_complete_InspectorControls = ld_quiz_complete_wp$editor.InspectorControls;\nvar ld_quiz_complete_wp$components = wp.components,\n ld_quiz_complete_ServerSideRender = ld_quiz_complete_wp$components.ServerSideRender,\n ld_quiz_complete_PanelBody = ld_quiz_complete_wp$components.PanelBody,\n ld_quiz_complete_TextControl = ld_quiz_complete_wp$components.TextControl,\n ld_quiz_complete_ToggleControl = ld_quiz_complete_wp$components.ToggleControl;\n\n\nld_quiz_complete_registerBlockType('learndash/ld-quiz-complete', {\n title: ld_quiz_complete_sprintf(ld_quiz_complete_x('LearnDash %s Complete', 'placeholder: Quiz', 'learndash'), ldlms_get_custom_label('quiz')),\n description: ld_quiz_complete_sprintf(ld_quiz_complete_x('This block shows the content if the user is has completed the %s.', 'placeholders: quiz', 'learndash'), ldlms_get_custom_label('quiz')),\n icon: 'star-filled',\n category: 'learndash-blocks',\n supports: {\n customClassName: false\n },\n attributes: {\n course_id: {\n type: 'string',\n default: ''\n },\n quiz_id: {\n type: 'string',\n default: ''\n },\n user_id: {\n type: 'string',\n default: ''\n }\n },\n edit: function edit(props) {\n var _props$attributes = props.attributes,\n course_id = _props$attributes.course_id,\n quiz_id = _props$attributes.quiz_id,\n user_id = _props$attributes.user_id,\n className = props.className,\n setAttributes = props.setAttributes;\n\n\n var inspectorControls = wp.element.createElement(\n ld_quiz_complete_InspectorControls,\n null,\n wp.element.createElement(\n ld_quiz_complete_PanelBody,\n {\n title: ld_quiz_complete_('Settings', 'learndash')\n },\n wp.element.createElement(ld_quiz_complete_TextControl, {\n label: ld_quiz_complete_sprintf(ld_quiz_complete_x('%s ID', 'Quiz ID', 'learndash'), ldlms_get_custom_label('quiz')),\n help: ld_quiz_complete_sprintf(ld_quiz_complete_x('Enter single %1$s ID. Leave blank if used within a %2$s.', 'placeholders: quiz, quiz', 'learndash'), ldlms_get_custom_label('quiz'), ldlms_get_custom_label('quiz')),\n value: quiz_id || '',\n onChange: function onChange(quiz_id) {\n return setAttributes({ quiz_id: quiz_id });\n }\n }),\n wp.element.createElement(ld_quiz_complete_TextControl, {\n label: ld_quiz_complete_sprintf(ld_quiz_complete_x('%s ID', 'Course ID', 'learndash'), ldlms_get_custom_label('course')),\n help: ld_quiz_complete_sprintf(ld_quiz_complete_x('Enter single %1$s ID. Leave blank if used within a %2$s.', 'placeholders: course, course', 'learndash'), ldlms_get_custom_label('course'), ldlms_get_custom_label('course')),\n value: course_id || '',\n onChange: function onChange(course_id) {\n return setAttributes({ course_id: course_id });\n }\n }),\n wp.element.createElement(ld_quiz_complete_TextControl, {\n label: ld_quiz_complete_('User ID', 'learndash'),\n help: ld_quiz_complete_('Enter specific User ID. Leave blank for current User.', 'learndash'),\n value: user_id || '',\n onChange: function onChange(user_id) {\n return setAttributes({ user_id: user_id });\n }\n })\n )\n );\n\n var ld_block_error_message = '';\n var preview_quiz_id = ldlms_get_integer_value(quiz_id);\n if (preview_quiz_id === 0) {\n if ('sfwd-quiz' === ldlms_get_post_edit_meta('post_type')) {\n preview_quiz_id = ldlms_get_post_edit_meta('post_id');\n preview_quiz_id = ldlms_get_integer_value(preview_quiz_id);\n }\n if (preview_quiz_id == 0) {\n ld_block_error_message = ld_quiz_complete_sprintf(ld_quiz_complete_x('%1$s ID is required when not used within a %2$s.', 'placeholders: Quiz, Quiz', 'learndash'), ldlms_get_custom_label('quiz'), ldlms_get_custom_label('quiz'));\n }\n }\n\n if (ld_block_error_message.length) {\n ld_block_error_message = wp.element.createElement(\n 'span',\n { className: 'learndash-block-error-message' },\n ld_block_error_message\n );\n }\n\n var outputBlock = wp.element.createElement(\n 'div',\n { className: className },\n wp.element.createElement(\n 'div',\n { className: 'learndash-block-inner' },\n ld_block_error_message,\n wp.element.createElement(ld_quiz_complete_InnerBlocks, null)\n )\n );\n\n return [inspectorControls, outputBlock];\n },\n save: function save(props) {\n return wp.element.createElement(ld_quiz_complete_InnerBlocks.Content, null);\n }\n});\n// CONCATENATED MODULE: ./blocks/ld-courseinfo/index.js\n/**\n * LearnDash Block ld-courseinfo\n *\n * @since 2.5.9\n * @package LearnDash\n */\n\n/**\n * LearnDash block functions\n */\n\n\n/**\n * Internal block libraries\n */\nvar ld_courseinfo_wp$i18n = wp.i18n,\n ld_courseinfo_ = ld_courseinfo_wp$i18n.__,\n ld_courseinfo_x = ld_courseinfo_wp$i18n._x,\n ld_courseinfo_sprintf = ld_courseinfo_wp$i18n.sprintf;\nvar ld_courseinfo_registerBlockType = wp.blocks.registerBlockType;\nvar ld_courseinfo_InspectorControls = wp.editor.InspectorControls;\nvar ld_courseinfo_wp$components = wp.components,\n ld_courseinfo_ServerSideRender = ld_courseinfo_wp$components.ServerSideRender,\n ld_courseinfo_PanelBody = ld_courseinfo_wp$components.PanelBody,\n ld_courseinfo_SelectControl = ld_courseinfo_wp$components.SelectControl,\n ld_courseinfo_ToggleControl = ld_courseinfo_wp$components.ToggleControl,\n ld_courseinfo_TextControl = ld_courseinfo_wp$components.TextControl;\n\n\nld_courseinfo_registerBlockType('learndash/ld-courseinfo', {\n\ttitle: ld_courseinfo_sprintf(ld_courseinfo_x('LearnDash %s Info [courseinfo]', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('course')),\n\tdescription: ld_courseinfo_sprintf(ld_courseinfo_x('This block displays %s related information', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('course')),\n\ticon: 'analytics',\n\tcategory: 'learndash-blocks',\n\tsupports: {\n\t\tcustomClassName: false\n\t},\n\tattributes: {\n\t\tshow: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tcourse_id: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tuser_id: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tformat: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tseconds_format: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tdecimals: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tpreview_show: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: 1\n\t\t},\n\t\tpreview_course_id: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tpreview_user_id: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tmeta: {\n\t\t\ttype: 'object'\n\t\t}\n\t},\n\tedit: function edit(props) {\n\t\tvar _props$attributes = props.attributes,\n\t\t course_id = _props$attributes.course_id,\n\t\t show = _props$attributes.show,\n\t\t user_id = _props$attributes.user_id,\n\t\t format = _props$attributes.format,\n\t\t seconds_format = _props$attributes.seconds_format,\n\t\t decimals = _props$attributes.decimals,\n\t\t preview_show = _props$attributes.preview_show,\n\t\t preview_user_id = _props$attributes.preview_user_id,\n\t\t className = props.className,\n\t\t setAttributes = props.setAttributes;\n\n\n\t\tvar field_show = wp.element.createElement(ld_courseinfo_SelectControl, {\n\t\t\tkey: 'show',\n\t\t\tvalue: show,\n\t\t\tlabel: ld_courseinfo_('Show', 'learndash'),\n\t\t\toptions: [{\n\t\t\t\tlabel: ld_courseinfo_sprintf(ld_courseinfo_x('%s Title', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('course')),\n\t\t\t\tvalue: 'course_title'\n\t\t\t}, {\n\t\t\t\tlabel: ld_courseinfo_sprintf(ld_courseinfo_x('%s URL', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('course')),\n\t\t\t\tvalue: 'course_url'\n\t\t\t}, {\n\t\t\t\tlabel: ld_courseinfo_sprintf(ld_courseinfo_x('%s Points', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('course')),\n\t\t\t\tvalue: 'course_points'\n\t\t\t}, {\n\t\t\t\tlabel: ld_courseinfo_sprintf(ld_courseinfo_x('%s Price', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('course')),\n\t\t\t\tvalue: 'course_price'\n\t\t\t}, {\n\t\t\t\tlabel: ld_courseinfo_sprintf(ld_courseinfo_x('%s Price Type', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('course')),\n\t\t\t\tvalue: 'course_price_type'\n\t\t\t}, {\n\t\t\t\tlabel: ld_courseinfo_sprintf(ld_courseinfo_x('Total User %s Points', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('course')),\n\t\t\t\tvalue: 'user_course_points'\n\t\t\t}, {\n\t\t\t\tlabel: ld_courseinfo_sprintf(ld_courseinfo_x('Total User %s Time', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('course')),\n\t\t\t\tvalue: 'user_course_time'\n\t\t\t}, {\n\t\t\t\tlabel: ld_courseinfo_sprintf(ld_courseinfo_x('%s Completed On (date)', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('course')),\n\t\t\t\tvalue: 'completed_on'\n\t\t\t}, {\n\t\t\t\tlabel: ld_courseinfo_sprintf(ld_courseinfo_x('%s Enrolled On (date)', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('course')),\n\t\t\t\tvalue: 'enrolled_on'\n\t\t\t}, {\n\t\t\t\tlabel: ld_courseinfo_sprintf(ld_courseinfo_x('Cumulative %s Score', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('quizzes')),\n\t\t\t\tvalue: 'cumulative_score'\n\t\t\t}, {\n\t\t\t\tlabel: ld_courseinfo_sprintf(ld_courseinfo_x('Cumulative %s Points', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('quizzes')),\n\t\t\t\tvalue: 'cumulative_points'\n\t\t\t}, {\n\t\t\t\tlabel: ld_courseinfo_sprintf(ld_courseinfo_x('Possible Cumulative %s Total Points', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('quizzes')),\n\t\t\t\tvalue: 'cumulative_total_points'\n\t\t\t}, {\n\t\t\t\tlabel: ld_courseinfo_sprintf(ld_courseinfo_x('Cumulative %s Percentage', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('quizzes')),\n\t\t\t\tvalue: 'cumulative_percentage'\n\t\t\t}, {\n\t\t\t\tlabel: ld_courseinfo_sprintf(ld_courseinfo_x('Cumulative %s Time Spent', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('quizzes')),\n\t\t\t\tvalue: 'cumulative_timespent'\n\t\t\t}, {\n\t\t\t\tlabel: ld_courseinfo_sprintf(ld_courseinfo_x('Aggregate %s Percentage', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('quizzes')),\n\t\t\t\tvalue: 'aggregate_percentage'\n\t\t\t}, {\n\t\t\t\tlabel: ld_courseinfo_sprintf(ld_courseinfo_x('Aggregate %s Score', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('quizzes')),\n\t\t\t\tvalue: 'aggregate_score'\n\t\t\t}, {\n\t\t\t\tlabel: ld_courseinfo_sprintf(ld_courseinfo_x('Aggregate %s Points', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('quizzes')),\n\t\t\t\tvalue: 'aggregate_points'\n\t\t\t}, {\n\t\t\t\tlabel: ld_courseinfo_sprintf(ld_courseinfo_x('Possible Aggregate %s Total Points', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('quizzes')),\n\t\t\t\tvalue: 'aggregate_total_points'\n\t\t\t}, {\n\t\t\t\tlabel: ld_courseinfo_sprintf(ld_courseinfo_x('Aggregate %s Time Spent', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('quizzes')),\n\t\t\t\tvalue: 'aggregate_timespent'\n\t\t\t}],\n\t\t\tonChange: function onChange(show) {\n\t\t\t\treturn setAttributes({ show: show });\n\t\t\t}\n\t\t});\n\n\t\tvar field_course_id = wp.element.createElement(ld_courseinfo_TextControl, {\n\t\t\tlabel: ld_courseinfo_sprintf(ld_courseinfo_x('%s ID', 'Course ID', 'learndash'), ldlms_get_custom_label('course')),\n\t\t\thelp: ld_courseinfo_sprintf(ld_courseinfo_x('Enter single %1$s ID. Leave blank if used within a %2$s.', 'placeholders: course, course', 'learndash'), ldlms_get_custom_label('course'), ldlms_get_custom_label('course')),\n\t\t\tvalue: course_id || '',\n\t\t\tonChange: function onChange(course_id) {\n\t\t\t\treturn setAttributes({ course_id: course_id });\n\t\t\t}\n\t\t});\n\t\tvar field_user_id = '';\n\n\t\tif (show != 'course_title' && show != 'course_url' && show != 'course_url' && show != 'course_points' && show != 'course_price' && show != 'course_price_type') {\n\t\t\tfield_user_id = wp.element.createElement(ld_courseinfo_TextControl, {\n\t\t\t\tlabel: ld_courseinfo_('User ID', 'learndash'),\n\t\t\t\thelp: ld_courseinfo_('Enter specific User ID. Leave blank for current User.', 'learndash'),\n\t\t\t\tvalue: user_id || '',\n\t\t\t\tonChange: function onChange(user_id) {\n\t\t\t\t\treturn setAttributes({ user_id: user_id });\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvar field_format = '';\n\t\tif (show == 'completed_on' || show == 'enrolled_on') {\n\t\t\tfield_format = wp.element.createElement(ld_courseinfo_TextControl, {\n\t\t\t\tlabel: ld_courseinfo_('Format', 'learndash'),\n\t\t\t\thelp: ld_courseinfo_('This can be used to change the date format. Default: \"F j, Y, g:i a.', 'learndash'),\n\t\t\t\tvalue: format || '',\n\t\t\t\tonChange: function onChange(format) {\n\t\t\t\t\treturn setAttributes({ format: format });\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvar field_seconds_format = '';\n\t\tif (show == 'user_course_time') {\n\t\t\tfield_seconds_format = wp.element.createElement(ld_courseinfo_SelectControl, {\n\t\t\t\tkey: 'seconds_format',\n\t\t\t\tvalue: seconds_format,\n\t\t\t\tlabel: ld_courseinfo_('Seconds Format', 'learndash'),\n\t\t\t\toptions: [{\n\t\t\t\t\tlabel: ld_courseinfo_('Time - 20min 49sec', 'learndash'),\n\t\t\t\t\tvalue: 'time'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: ld_courseinfo_('Seconds - 1436', 'learndash'),\n\t\t\t\t\tvalue: 'seconds'\n\t\t\t\t}],\n\t\t\t\tonChange: function onChange(seconds_format) {\n\t\t\t\t\treturn setAttributes({ seconds_format: seconds_format });\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvar field_decimals = '';\n\t\tif (show == 'course_points' || show == 'user_course_points') {\n\t\t\tfield_decimals = wp.element.createElement(ld_courseinfo_TextControl, {\n\t\t\t\tlabel: ld_courseinfo_('Decimals', 'learndash'),\n\t\t\t\thelp: ld_courseinfo_('Number of decimal places to show. Default is 2.', 'learndash'),\n\t\t\t\tvalue: decimals || '',\n\t\t\t\tonChange: function onChange(decimals) {\n\t\t\t\t\treturn setAttributes({ decimals: decimals });\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvar panel_preview = wp.element.createElement(\n\t\t\tld_courseinfo_PanelBody,\n\t\t\t{\n\t\t\t\ttitle: ld_courseinfo_('Preview', 'learndash'),\n\t\t\t\tinitialOpen: false\n\t\t\t},\n\t\t\twp.element.createElement(ld_courseinfo_ToggleControl, {\n\t\t\t\tlabel: ld_courseinfo_('Show Preview', 'learndash'),\n\t\t\t\tchecked: !!preview_show,\n\t\t\t\tonChange: function onChange(preview_show) {\n\t\t\t\t\treturn setAttributes({ preview_show: preview_show });\n\t\t\t\t}\n\t\t\t}),\n\t\t\twp.element.createElement(ld_courseinfo_TextControl, {\n\t\t\t\tlabel: ld_courseinfo_('User ID', 'learndash'),\n\t\t\t\thelp: ld_courseinfo_('Enter a User ID to test preview', 'learndash'),\n\t\t\t\tvalue: preview_user_id || '',\n\t\t\t\ttype: 'number',\n\t\t\t\tonChange: function onChange(preview_user_id) {\n\t\t\t\t\treturn setAttributes({ preview_user_id: preview_user_id });\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\n\t\tvar inspectorControls = wp.element.createElement(\n\t\t\tld_courseinfo_InspectorControls,\n\t\t\tnull,\n\t\t\twp.element.createElement(\n\t\t\t\tld_courseinfo_PanelBody,\n\t\t\t\t{\n\t\t\t\t\ttitle: ld_courseinfo_('Settings', 'learndash')\n\t\t\t\t},\n\t\t\t\tfield_course_id,\n\t\t\t\tfield_user_id,\n\t\t\t\tfield_show,\n\t\t\t\tfield_format,\n\t\t\t\tfield_seconds_format,\n\t\t\t\tfield_decimals\n\t\t\t),\n\t\t\tpanel_preview\n\t\t);\n\n\t\tfunction do_serverside_render(attributes) {\n\t\t\tif (attributes.preview_show == true) {\n\t\t\t\t// We add the meta so the server knowns what is being edited.\n\t\t\t\tattributes.meta = ldlms_get_post_edit_meta();\n\n\t\t\t\treturn wp.element.createElement(ld_courseinfo_ServerSideRender, {\n\t\t\t\t\tblock: 'learndash/ld-courseinfo',\n\t\t\t\t\tattributes: attributes\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn ld_courseinfo_('[courseinfo] shortcode output shown here', 'learndash');\n\t\t\t}\n\t\t}\n\n\t\treturn [inspectorControls, do_serverside_render(props.attributes)];\n\t},\n\tsave: function save(props) {\n\t\t// Delete meta from props to prevent it being saved.\n\t\tdelete props.attributes.meta;\n\t}\n});\n// EXTERNAL MODULE: ./blocks/ld-usermeta/index.js\nvar ld_usermeta = __webpack_require__(2);\n\n// CONCATENATED MODULE: ./blocks/index.js\n//import './i18n.js';\n\n/**\n * Import LearnDash blocks\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Jsb2Nrcy9sZGxtcy5qcz9mOGEwIiwid2VicGFjazovLy8uL2Jsb2Nrcy9sZC1wcm9maWxlL2luZGV4LmpzPzA5YTUiLCJ3ZWJwYWNrOi8vLy4vYmxvY2tzL2xkLWNvdXJzZS1saXN0L2luZGV4LmpzP2ZkNmQiLCJ3ZWJwYWNrOi8vLy4vYmxvY2tzL2xkLWxlc3Nvbi1saXN0L2luZGV4LmpzPzliODYiLCJ3ZWJwYWNrOi8vLy4vYmxvY2tzL2xkLXRvcGljLWxpc3QvaW5kZXguanM/MTI4NCIsIndlYnBhY2s6Ly8vLi9ibG9ja3MvbGQtcXVpei1saXN0L2luZGV4LmpzP2UwMDUiLCJ3ZWJwYWNrOi8vLy4vYmxvY2tzL2xkLWNvdXJzZS1wcm9ncmVzcy9pbmRleC5qcz8xNDc5Iiwid2VicGFjazovLy8uL2Jsb2Nrcy9sZC12aXNpdG9yL2luZGV4LmpzPzc2NGYiLCJ3ZWJwYWNrOi8vLy4vYmxvY2tzL2xkLXN0dWRlbnQvaW5kZXguanM/Y2IxOSIsIndlYnBhY2s6Ly8vLi9ibG9ja3MvbGQtY291cnNlLWNvbXBsZXRlL2luZGV4LmpzPzM0YjAiLCJ3ZWJwYWNrOi8vLy4vYmxvY2tzL2xkLWNvdXJzZS1pbnByb2dyZXNzL2luZGV4LmpzPzUxNDYiLCJ3ZWJwYWNrOi8vLy4vYmxvY2tzL2xkLWNvdXJzZS1ub3RzdGFydGVkL2luZGV4LmpzP2ZjOTciLCJ3ZWJwYWNrOi8vLy4vYmxvY2tzL2xkLWNvdXJzZS1yZXN1bWUvaW5kZXguanM/MmNlNSIsIndlYnBhY2s6Ly8vLi9ibG9ja3MvbGQtY291cnNlLWluZm8vaW5kZXguanM/MzZhOSIsIndlYnBhY2s6Ly8vLi9ibG9ja3MvbGQtdXNlci1jb3Vyc2UtcG9pbnRzL2luZGV4LmpzPzMyYWEiLCJ3ZWJwYWNrOi8vLy4vYmxvY2tzL2xkLWdyb3VwL2luZGV4LmpzPzkwMjUiLCJ3ZWJwYWNrOi8vLy4vYmxvY2tzL2xkLXBheW1lbnQtYnV0dG9ucy9pbmRleC5qcz9kYjNkIiwid2VicGFjazovLy8uL2Jsb2Nrcy9sZC1jb3Vyc2UtY29udGVudC9pbmRleC5qcz9kZjFjIiwid2VicGFjazovLy8uL2Jsb2Nrcy9sZC1jb3Vyc2UtZXhwaXJlLXN0YXR1cy9pbmRleC5qcz9iY2ZmIiwid2VicGFjazovLy8uL2Jsb2Nrcy9sZC1jZXJ0aWZpY2F0ZS9pbmRleC5qcz85MGIxIiwid2VicGFjazovLy8uL2Jsb2Nrcy9sZC1xdWl6LWNvbXBsZXRlL2luZGV4LmpzPzc5NDQiLCJ3ZWJwYWNrOi8vLy4vYmxvY2tzL2xkLWNvdXJzZWluZm8vaW5kZXguanM/ODYxMyIsIndlYnBhY2s6Ly8vLi9ibG9ja3MvaW5kZXguanM/ZDc3ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIExlYXJuRGFzaCBCbG9jayBGdW5jdGlvbnNcbiAqIFxuICogVGhpcyBpcyBhIGNvbGxlY3Rpb24gb2YgY29tbW9uIGZ1bmN0aW9ucyB1c2VkIHdpdGhpbiB0aGUgTGVhbkRhc2ggYmxvY2tzXG4gKiBcbiAqIEBzaW5jZSAyLjUuOVxuICogQHBhY2thZ2UgTGVhcm5EYXNoXG4gKi9cblxuLyoqXG4gKiBXaWxsIHJldHJpdmUgbWV0YSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcG9zdCBiZWluZyBlZGl0ZWQuIEZvciBub3dcbiAqIHRoaXMgaXMgb25seSBsb2FkZWQgb24gcG9zdCBlZGl0IHNjcmVlbiBmb3IgR3V0ZW5iZXJnLiBTbyBubyBjaGVja3MgXG4gKiBhcmUgbWFkZSB0byBlbnN1cmUgdGhhdCBhIHBvc3QgaXMgYmVpbmcgZWRpdGVkLiBcbiAqIEBwYXJhbSBzdHJpbmcgdG9rZW4gVG9rZW4gdG8gcmV0dXJuIGZyb20gbWV0YSBhcnJheS4gSWYgbm90IHByb3ZpZGVkIHdpbGwgYXJyYXkgaXMgcmV0dXJuZWQuIFxuICovXG5leHBvcnQgZnVuY3Rpb24gbGRsbXNfZ2V0X3Bvc3RfZWRpdF9tZXRhKHRva2VuKSB7XG5cdGlmICh0eXBlb2YgdG9rZW4gIT09ICd1bmRlZmluZWQnICYmIHRva2VuICE9ICcnKSB7XG5cdFx0aWYgKHR5cGVvZiBsZGxtc19zZXR0aW5nc1snbWV0YSddWydwb3N0J11bdG9rZW5dICE9PSAndW5kZWZpbmVkJykge1xuXHRcdFx0cmV0dXJuIGxkbG1zX3NldHRpbmdzWydtZXRhJ11bJ3Bvc3QnXVt0b2tlbl07XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGlmICh0eXBlb2YgbGRsbXNfc2V0dGluZ3NbJ21ldGEnXVsncG9zdCddICE9PSAndW5kZWZpbmVkJykge1xuXHRcdFx0cmV0dXJuIGxkbG1zX3NldHRpbmdzWydtZXRhJ11bJ3Bvc3QnXTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBXaWxsIHJldHJpdmUgbWV0YSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcG9zdCBiZWluZyBlZGl0ZWQuIEZvciBub3dcbiAqIHRoaXMgaXMgb25seSBsb2FkZWQgb24gcG9zdCBlZGl0IHNjcmVlbiBmb3IgR3V0ZW5iZXJnLiBTbyBubyBjaGVja3MgXG4gKiBhcmUgbWFkZSB0byBlbnN1cmUgdGhhdCBhIHBvc3QgaXMgYmVpbmcgZWRpdGVkLiBcbiAqIEBwYXJhbSBzdHJpbmcgdG9rZW4gVG9rZW4gdG8gcmV0dXJuIGZyb20gbWV0YSBhcnJheS4gSWYgbm90IHByb3ZpZGVkIHdpbGwgYXJyYXkgaXMgcmV0dXJuZWQuIFxuICovXG5leHBvcnQgZnVuY3Rpb24gbGRsbXNfZ2V0X3NldHRpbmcodG9rZW4sIGRlZmF1bHRfdmFsdWUpIHtcblx0aWYgKHR5cGVvZiB0b2tlbiAhPT0gJ3VuZGVmaW5lZCcgJiYgdG9rZW4gIT0gJycgJiYgdHlwZW9mIGxkbG1zX3NldHRpbmdzWydzZXR0aW5ncyddW3Rva2VuXSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0XHR2YXIgdG9rZW5fdmFsdWUgPSBsZGxtc19zZXR0aW5nc1snc2V0dGluZ3MnXVt0b2tlbl07XG5cdFx0cmV0dXJuIGxkbG1zX3NldHRpbmdzWydzZXR0aW5ncyddW3Rva2VuXTtcblx0fVxuXHRyZXR1cm4gZGVmYXVsdF92YWx1ZTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBsYWJlbCBmb3IgY3VzdG9tIGxhYmVsIGVsZW1lbnQgXG4gKiBAcGFyYW0gc3RyaW5nIHRva2VuIFdpbGwgcmVwcmVzZW50IHRoZSBjdXN0b20gbGFiZWwgZmllbGQgdG8gcmV0cmVpdmUgQ291cnNlLCBDb3Vyc2VzLCBMZXNzb24sIFF1aXouXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKHRva2VuKSB7XG5cdGlmICh0eXBlb2YgbGRsbXNfc2V0dGluZ3NbJ21ldGEnXVsncG9zdCddICE9PSAndW5kZWZpbmVkJyAmJiB0b2tlbiAhPSAnJykge1xuXHRcdGlmICh0eXBlb2YgbGRsbXNfc2V0dGluZ3NbJ3NldHRpbmdzJ11bJ2N1c3RvbV9sYWJlbHMnXVt0b2tlbl0gIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHR0b2tlbiA9IGxkbG1zX3NldHRpbmdzWydzZXR0aW5ncyddWydjdXN0b21fbGFiZWxzJ11bdG9rZW5dO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdG9rZW47XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbG93ZXJjYXNlIGxhYmVsIGZvciBjdXN0b20gbGFiZWwgZWxlbWVudCBcbiAqIEBwYXJhbSBzdHJpbmcgdG9rZW4gV2lsbCByZXByZXNlbnQgdGhlIGN1c3RvbSBsYWJlbCBmaWVsZCB0byByZXRyZWl2ZSBDb3Vyc2UsIENvdXJzZXMsIExlc3NvbiwgUXVpei5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxkbG1zX2dldF9jdXN0b21fbGFiZWxfbG93ZXIodG9rZW4pIHtcblx0aWYgKHR5cGVvZiBsZGxtc19zZXR0aW5nc1snbWV0YSddWydwb3N0J10gIT09ICd1bmRlZmluZWQnICYmIHRva2VuICE9ICcnKSB7XG5cdFx0aWYgKHR5cGVvZiBsZGxtc19zZXR0aW5nc1snc2V0dGluZ3MnXVsnY3VzdG9tX2xhYmVscyddW3Rva2VuICsgJ19sb3dlciddICE9PSAndW5kZWZpbmVkJykge1xuXHRcdFx0dG9rZW4gPSBsZGxtc19zZXR0aW5nc1snc2V0dGluZ3MnXVsnY3VzdG9tX2xhYmVscyddW3Rva2VuICsgJ19sb3dlciddO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdG9rZW47XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgc2x1ZyBmb3IgY3VzdG9tIGxhYmVsIGVsZW1lbnQgXG4gKiBAcGFyYW0gc3RyaW5nIHRva2VuIFdpbGwgcmVwcmVzZW50IHRoZSBjdXN0b20gbGFiZWwgZmllbGQgdG8gcmV0cmVpdmUgQ291cnNlLCBDb3Vyc2VzLCBMZXNzb24sIFF1aXouXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsZGxtc19nZXRfY3VzdG9tX2xhYmVsX3NsdWcodG9rZW4pIHtcblx0aWYgKHRva2VuICE9ICcnKSB7XG5cdFx0aWYgKHR5cGVvZiBsZGxtc19zZXR0aW5nc1snc2V0dGluZ3MnXVsnY3VzdG9tX2xhYmVscyddW3Rva2VuICsgJ19zbHVnJ10gIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHR0b2tlbiA9IGxkbG1zX3NldHRpbmdzWydzZXR0aW5ncyddWydjdXN0b21fbGFiZWxzJ11bdG9rZW4gKyAnX3NsdWcnXTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHRva2VuO1xufVxuXG4vKipcbiAqIFdpbGwgcmV0cml2ZSBtZXRhIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwb3N0IGJlaW5nIGVkaXRlZC4gRm9yIG5vd1xuICogdGhpcyBpcyBvbmx5IGxvYWRlZCBvbiBwb3N0IGVkaXQgc2NyZWVuIGZvciBHdXRlbmJlcmcuIFNvIG5vIGNoZWNrcyBcbiAqIGFyZSBtYWRlIHRvIGVuc3VyZSB0aGF0IGEgcG9zdCBpcyBiZWluZyBlZGl0ZWQuIFxuICogQHBhcmFtIHN0cmluZyB0b2tlbiBUb2tlbiB0byByZXR1cm4gZnJvbSBtZXRhIGFycmF5LiBJZiBub3QgcHJvdmlkZWQgd2lsbCBhcnJheSBpcyByZXR1cm5lZC4gXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsZGxtc19nZXRfcGVyX3BhZ2UodG9rZW4pIHtcblx0aWYgKHR5cGVvZiB0b2tlbiAhPT0gJ3VuZGVmaW5lZCcgJiYgdG9rZW4gIT0gJycpIHtcblx0XHRpZiAodHlwZW9mIGxkbG1zX3NldHRpbmdzWydzZXR0aW5ncyddWydwZXJfcGFnZSddW3Rva2VuXSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0XHRcdHJldHVybiBsZGxtc19zZXR0aW5nc1snc2V0dGluZ3MnXVsncGVyX3BhZ2UnXVt0b2tlbl07XG5cdFx0fVxuXHR9IGVsc2UgaWYgKHR5cGVvZiBsZGxtc19zZXR0aW5nc1snbWV0YSddWydwb3N0c19wZXJfcGFnZSddICE9PSAndW5kZWZpbmVkJykge1xuXHRcdHJldHVybiBsZGxtc19zZXR0aW5nc1snbWV0YSddWydwb3N0c19wZXJfcGFnZSddO1xuXHR9XG59XG5cbi8qKlxuICogUmV0dXJucyBpbnRlZ2V0IHZhbHVlIGZvciB2YXJpYWJsZS5cbiAqIFxuICogQHBhcmFtIG1peGVkIHZhcl92YWx1ZSBWYXJpYWJsZSB0byBkZXRlcm1pbiBpbnRlZ2VyIGZyb20uXG4gKiBcbiAqIEByZXR1cm4gaW50ZWdlciB2YWx1ZSBvZiB6ZXJvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbGRsbXNfZ2V0X2ludGVnZXJfdmFsdWUodmFyX3ZhbHVlKSB7XG5cdGlmICh0eXBlb2YgdmFyX3ZhbHVlID09PSAndW5kZWZpbmVkJykge1xuXHRcdHZhcl92YWx1ZSA9IDA7XG5cdH1cblx0dmFyX3ZhbHVlID0gcGFyc2VJbnQodmFyX3ZhbHVlKTtcblx0aWYgKGlzTmFOKHZhcl92YWx1ZSkpIHtcblx0XHR2YXJfdmFsdWUgPSAwO1xuXHR9XG5cblx0cmV0dXJuIHZhcl92YWx1ZTtcbn0iLCIvKipcbiAqIExlYXJuRGFzaCBCbG9jayBsZC1wcm9maWxlXG4gKlxuICogQHNpbmNlIDIuNS45XG4gKiBAcGFja2FnZSBMZWFybkRhc2hcbiAqL1xuXG4vKipcbiAqIExlYXJuRGFzaCBibG9jayBmdW5jdGlvbnNcbiAqL1xuaW1wb3J0IHsgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCwgbGRsbXNfZ2V0X3Blcl9wYWdlIH0gZnJvbSAnLi4vbGRsbXMuanMnO1xuXG4vKipcbiAqIEludGVybmFsIGJsb2NrIGxpYnJhcmllc1xuICovXG52YXIgX3dwJGkxOG4gPSB3cC5pMThuLFxuICAgIF9fID0gX3dwJGkxOG4uX18sXG4gICAgX3ggPSBfd3AkaTE4bi5feCxcbiAgICBzcHJpbnRmID0gX3dwJGkxOG4uc3ByaW50ZjtcbnZhciByZWdpc3RlckJsb2NrVHlwZSA9IHdwLmJsb2Nrcy5yZWdpc3RlckJsb2NrVHlwZTtcbnZhciBJbnNwZWN0b3JDb250cm9scyA9IHdwLmVkaXRvci5JbnNwZWN0b3JDb250cm9scztcbnZhciBfd3AkY29tcG9uZW50cyA9IHdwLmNvbXBvbmVudHMsXG4gICAgU2VydmVyU2lkZVJlbmRlciA9IF93cCRjb21wb25lbnRzLlNlcnZlclNpZGVSZW5kZXIsXG4gICAgUGFuZWxCb2R5ID0gX3dwJGNvbXBvbmVudHMuUGFuZWxCb2R5LFxuICAgIFNlbGVjdENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5TZWxlY3RDb250cm9sLFxuICAgIFRvZ2dsZUNvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5Ub2dnbGVDb250cm9sLFxuICAgIFRleHRDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVGV4dENvbnRyb2w7XG5cblxucmVnaXN0ZXJCbG9ja1R5cGUoJ2xlYXJuZGFzaC9sZC1wcm9maWxlJywge1xuXHR0aXRsZTogX18oJ0xlYXJuRGFzaCBQcm9maWxlJywgJ2xlYXJuZGFzaCcpLFxuXHRkZXNjcmlwdGlvbjogc3ByaW50ZihfeChcIkRpc3BsYXlzIHVzZXIncyBlbnJvbGxlZCAlMSRzLCAlMiRzIHByb2dyZXNzLCAlMyRzIHNjb3JlcywgYW5kIGFjaGlldmVkIGNlcnRpZmljYXRlcy5cIiwgJ3BsYWNlaG9sZGVyOiBjb3Vyc2VzLCBjb3Vyc2UsIHF1aXonLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZXMnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3F1aXonKSksXG5cdGljb246ICdpZC1hbHQnLFxuXHRjYXRlZ29yeTogJ2xlYXJuZGFzaC1ibG9ja3MnLFxuXHRleGFtcGxlOiB7XG5cdFx0YXR0cmlidXRlczoge1xuXHRcdFx0ZXhhbXBsZV9zaG93OiAxXG5cdFx0fVxuXHR9LFxuXHRzdXBwb3J0czoge1xuXHRcdGN1c3RvbUNsYXNzTmFtZTogZmFsc2Vcblx0fSxcblx0YXR0cmlidXRlczoge1xuXHRcdHBlcl9wYWdlOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRvcmRlcmJ5OiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICdJRCdcblx0XHR9LFxuXHRcdG9yZGVyOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICdERVNDJ1xuXHRcdH0sXG5cdFx0Y291cnNlX3BvaW50c191c2VyOiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiAxXG5cdFx0fSxcblx0XHRleHBhbmRfYWxsOiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiAwXG5cdFx0fSxcblx0XHRwcm9maWxlX2xpbms6IHtcblx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdGRlZmF1bHQ6IDFcblx0XHR9LFxuXHRcdHNob3dfaGVhZGVyOiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiAxXG5cdFx0fSxcblx0XHRzaG93X3NlYXJjaDoge1xuXHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0ZGVmYXVsdDogMVxuXHRcdH0sXG5cdFx0c2hvd19xdWl6emVzOiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiAxXG5cdFx0fSxcblx0XHRwcmV2aWV3X3Nob3c6IHtcblx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdGRlZmF1bHQ6IDFcblx0XHR9LFxuXHRcdHByZXZpZXdfdXNlcl9pZDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0ZXhhbXBsZV9zaG93OiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiAwXG5cdFx0fVxuXHR9LFxuXHRlZGl0OiBmdW5jdGlvbiBlZGl0KHByb3BzKSB7XG5cdFx0dmFyIF9wcm9wcyRhdHRyaWJ1dGVzID0gcHJvcHMuYXR0cmlidXRlcyxcblx0XHQgICAgcGVyX3BhZ2UgPSBfcHJvcHMkYXR0cmlidXRlcy5wZXJfcGFnZSxcblx0XHQgICAgb3JkZXJieSA9IF9wcm9wcyRhdHRyaWJ1dGVzLm9yZGVyYnksXG5cdFx0ICAgIG9yZGVyID0gX3Byb3BzJGF0dHJpYnV0ZXMub3JkZXIsXG5cdFx0ICAgIGNvdXJzZV9wb2ludHNfdXNlciA9IF9wcm9wcyRhdHRyaWJ1dGVzLmNvdXJzZV9wb2ludHNfdXNlcixcblx0XHQgICAgZXhwYW5kX2FsbCA9IF9wcm9wcyRhdHRyaWJ1dGVzLmV4cGFuZF9hbGwsXG5cdFx0ICAgIHByb2ZpbGVfbGluayA9IF9wcm9wcyRhdHRyaWJ1dGVzLnByb2ZpbGVfbGluayxcblx0XHQgICAgc2hvd19oZWFkZXIgPSBfcHJvcHMkYXR0cmlidXRlcy5zaG93X2hlYWRlcixcblx0XHQgICAgc2hvd19zZWFyY2ggPSBfcHJvcHMkYXR0cmlidXRlcy5zaG93X3NlYXJjaCxcblx0XHQgICAgc2hvd19xdWl6emVzID0gX3Byb3BzJGF0dHJpYnV0ZXMuc2hvd19xdWl6emVzLFxuXHRcdCAgICBwcmV2aWV3X3VzZXJfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy5wcmV2aWV3X3VzZXJfaWQsXG5cdFx0ICAgIHByZXZpZXdfc2hvdyA9IF9wcm9wcyRhdHRyaWJ1dGVzLnByZXZpZXdfc2hvdyxcblx0XHQgICAgZXhhbXBsZV9zaG93ID0gX3Byb3BzJGF0dHJpYnV0ZXMuZXhhbXBsZV9zaG93LFxuXHRcdCAgICBzZXRBdHRyaWJ1dGVzID0gcHJvcHMuc2V0QXR0cmlidXRlcztcblxuXG5cdFx0dmFyIGluc3BlY3RvckNvbnRyb2xzID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0SW5zcGVjdG9yQ29udHJvbHMsXG5cdFx0XHRudWxsLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0aXRsZTogX18oJ1NldHRpbmdzJywgJ2xlYXJuZGFzaCcpXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBzcHJpbnRmKF94KCclcyBwZXIgcGFnZScsICdwbGFjZWhvbGRlcjogTGVzc29ucycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlcycpKSxcblx0XHRcdFx0XHRoZWxwOiBzcHJpbnRmKF94KCdMZWF2ZSBlbXB0eSBmb3IgZGVmYXVsdCAoJWQpIG9yIDAgdG8gc2hvdyBhbGwgaXRlbXMuJywgJ3BsYWNlaG9sZGVyOiBkZWZhdWx0IHBlciBwYWdlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfcGVyX3BhZ2UoJ3Blcl9wYWdlJykpLFxuXHRcdFx0XHRcdHZhbHVlOiBwZXJfcGFnZSB8fCAnJyxcblx0XHRcdFx0XHR0eXBlOiAnbnVtYmVyJyxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocGVyX3BhZ2UpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcGVyX3BhZ2U6IHBlcl9wYWdlIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdFx0a2V5OiAnb3JkZXJieScsXG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdPcmRlciBieScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogb3JkZXJieSxcblx0XHRcdFx0XHRvcHRpb25zOiBbe1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdJRCAtIE9yZGVyIGJ5IHBvc3QgaWQuIChkZWZhdWx0KScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnSUQnXG5cdFx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdUaXRsZSAtIE9yZGVyIGJ5IHBvc3QgdGl0bGUnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ3RpdGxlJ1xuXHRcdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnRGF0ZSAtIE9yZGVyIGJ5IHBvc3QgZGF0ZScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnZGF0ZSdcblx0XHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0XHRsYWJlbDogX18oJ01lbnUgLSBPcmRlciBieSBQYWdlIE9yZGVyIFZhbHVlJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICdtZW51X29yZGVyJ1xuXHRcdFx0XHRcdH1dLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShvcmRlcmJ5KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IG9yZGVyYnk6IG9yZGVyYnkgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcblx0XHRcdFx0XHRrZXk6ICdvcmRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdPcmRlcicsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogb3JkZXIsXG5cdFx0XHRcdFx0b3B0aW9uczogW3tcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnREVTQyAtIGhpZ2hlc3QgdG8gbG93ZXN0IHZhbHVlcyAoZGVmYXVsdCknLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ0RFU0MnXG5cdFx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdBU0MgLSBsb3dlc3QgdG8gaGlnaGVzdCB2YWx1ZXMnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ0FTQydcblx0XHRcdFx0XHR9XSxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2Uob3JkZXIpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgb3JkZXI6IG9yZGVyIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdTaG93IFNlYXJjaCcsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRjaGVja2VkOiAhIXNob3dfc2VhcmNoLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShzaG93X3NlYXJjaCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBzaG93X3NlYXJjaDogc2hvd19zZWFyY2ggfSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRoZWxwOiBfXygnTEQzMCB0ZW1wbGF0ZSBvbmx5JywgJ2xlYXJuZGFzaCcpXG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnU2hvdyBQcm9maWxlIEhlYWRlcicsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRjaGVja2VkOiAhIXNob3dfaGVhZGVyLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShzaG93X2hlYWRlcikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBzaG93X2hlYWRlcjogc2hvd19oZWFkZXIgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRvZ2dsZUNvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnU2hvdyBFYXJuZWQgJXMgUG9pbnRzJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcblx0XHRcdFx0XHRjaGVja2VkOiAhIWNvdXJzZV9wb2ludHNfdXNlcixcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoY291cnNlX3BvaW50c191c2VyKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGNvdXJzZV9wb2ludHNfdXNlcjogY291cnNlX3BvaW50c191c2VyIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdTaG93IFByb2ZpbGUgTGluaycsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRjaGVja2VkOiAhIXByb2ZpbGVfbGluayxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocHJvZmlsZV9saW5rKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHByb2ZpbGVfbGluazogcHJvZmlsZV9saW5rIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJ1Nob3cgVXNlciBRdWl6IEF0dGVtcHRzJywgJ3BsYWNlaG9sZGVyOiBRdWl6JywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdxdWl6JykpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6ICEhc2hvd19xdWl6emVzLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShzaG93X3F1aXp6ZXMpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc2hvd19xdWl6emVzOiBzaG93X3F1aXp6ZXMgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRvZ2dsZUNvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnRXhwYW5kIEFsbCAlcyBTZWN0aW9ucycsICdwbGFjZWhvbGRlcjogQ291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG5cdFx0XHRcdFx0Y2hlY2tlZDogISFleHBhbmRfYWxsLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShleHBhbmRfYWxsKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGV4cGFuZF9hbGw6IGV4cGFuZF9hbGwgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGl0bGU6IF9fKCdQcmV2aWV3JywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdGluaXRpYWxPcGVuOiBmYWxzZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnU2hvdyBQcmV2aWV3JywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6ICEhcHJldmlld19zaG93LFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShwcmV2aWV3X3Nob3cpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcHJldmlld19zaG93OiBwcmV2aWV3X3Nob3cgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdVc2VyIElEJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdGhlbHA6IF9fKCdFbnRlciBhIFVzZXIgSUQgdG8gdGVzdCBwcmV2aWV3JywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdHZhbHVlOiBwcmV2aWV3X3VzZXJfaWQgfHwgJycsXG5cdFx0XHRcdFx0dHlwZTogJ251bWJlcicsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHByZXZpZXdfdXNlcl9pZCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBwcmV2aWV3X3VzZXJfaWQ6IHByZXZpZXdfdXNlcl9pZCB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHQpXG5cdFx0KTtcblxuXHRcdGZ1bmN0aW9uIGRvX3NlcnZlcnNpZGVfcmVuZGVyKGF0dHJpYnV0ZXMpIHtcblx0XHRcdGlmIChhdHRyaWJ1dGVzLnByZXZpZXdfc2hvdyA9PSB0cnVlKSB7XG5cdFx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoU2VydmVyU2lkZVJlbmRlciwge1xuXHRcdFx0XHRcdGJsb2NrOiAnbGVhcm5kYXNoL2xkLXByb2ZpbGUnLFxuXHRcdFx0XHRcdGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXNcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gX18oJ1tsZF9wcm9maWxlXSBzaG9ydGNvZGUgb3V0cHV0IHNob3duIGhlcmUnLCAnbGVhcm5kYXNoJyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIFtpbnNwZWN0b3JDb250cm9scywgZG9fc2VydmVyc2lkZV9yZW5kZXIocHJvcHMuYXR0cmlidXRlcyldO1xuXHR9LFxuXG5cdHNhdmU6IGZ1bmN0aW9uIHNhdmUocHJvcHMpIHtcblx0XHQvLyBEZWxldGUgcHJldmlld191c2VyX2lkIGZyb20gcHJvcHMgdG8gcHJldmVudCBpdCBiZWluZyBzYXZlZC5cblx0XHRkZWxldGUgcHJvcHMuYXR0cmlidXRlcy5wcmV2aWV3X3VzZXJfaWQ7XG5cdH1cbn0pOyIsIi8qKlxuICogTGVhcm5EYXNoIEJsb2NrIGxkLWNvdXJzZS1saXN0XG4gKlxuICogQHNpbmNlIDIuNS45XG4gKiBAcGFja2FnZSBMZWFybkRhc2hcbiAqL1xuXG4vKipcbiAqIExlYXJuRGFzaCBibG9jayBmdW5jdGlvbnNcbiAqL1xuaW1wb3J0IHsgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCwgbGRsbXNfZ2V0X3Blcl9wYWdlIH0gZnJvbSAnLi4vbGRsbXMuanMnO1xuXG4vKipcbiAqIEludGVybmFsIGJsb2NrIGxpYnJhcmllc1xuICovXG52YXIgX3dwJGkxOG4gPSB3cC5pMThuLFxuICAgIF9fID0gX3dwJGkxOG4uX18sXG4gICAgX3ggPSBfd3AkaTE4bi5feCxcbiAgICBzcHJpbnRmID0gX3dwJGkxOG4uc3ByaW50ZjtcbnZhciByZWdpc3RlckJsb2NrVHlwZSA9IHdwLmJsb2Nrcy5yZWdpc3RlckJsb2NrVHlwZTtcbnZhciBJbnNwZWN0b3JDb250cm9scyA9IHdwLmVkaXRvci5JbnNwZWN0b3JDb250cm9scztcbnZhciBfd3AkY29tcG9uZW50cyA9IHdwLmNvbXBvbmVudHMsXG4gICAgU2VydmVyU2lkZVJlbmRlciA9IF93cCRjb21wb25lbnRzLlNlcnZlclNpZGVSZW5kZXIsXG4gICAgUGFuZWxCb2R5ID0gX3dwJGNvbXBvbmVudHMuUGFuZWxCb2R5LFxuICAgIFJhbmdlQ29udHJvbCA9IF93cCRjb21wb25lbnRzLlJhbmdlQ29udHJvbCxcbiAgICBTZWxlY3RDb250cm9sID0gX3dwJGNvbXBvbmVudHMuU2VsZWN0Q29udHJvbCxcbiAgICBUb2dnbGVDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVG9nZ2xlQ29udHJvbCxcbiAgICBUZXh0Q29udHJvbCA9IF93cCRjb21wb25lbnRzLlRleHRDb250cm9sO1xuXG5cbnJlZ2lzdGVyQmxvY2tUeXBlKCdsZWFybmRhc2gvbGQtY291cnNlLWxpc3QnLCB7XG5cdHRpdGxlOiBzcHJpbnRmKF94KCdMZWFybkRhc2ggJXMgTGlzdCcsICdwbGFjZWhvbGRlcjogQ291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG5cdGRlc2NyaXB0aW9uOiBzcHJpbnRmKF94KCdUaGlzIGJsb2NrIHNob3dzIGEgbGlzdCBvZiAlcy4nLCAncGxhY2Vob2xkZXJzOiBjb3Vyc2VzJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2VzJykpLFxuXHRpY29uOiAnbGlzdC12aWV3Jyxcblx0Y2F0ZWdvcnk6ICdsZWFybmRhc2gtYmxvY2tzJyxcblx0ZXhhbXBsZToge1xuXHRcdGF0dHJpYnV0ZXM6IHtcblx0XHRcdGV4YW1wbGVfc2hvdzogMVxuXHRcdH1cblx0fSxcblx0c3VwcG9ydHM6IHtcblx0XHRjdXN0b21DbGFzc05hbWU6IGZhbHNlXG5cdH0sXG5cdGF0dHJpYnV0ZXM6IHtcblx0XHRvcmRlcmJ5OiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICdJRCdcblx0XHR9LFxuXHRcdG9yZGVyOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICdERVNDJ1xuXHRcdH0sXG5cdFx0cGVyX3BhZ2U6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdG15Y291cnNlczoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0c3RhdHVzOiB7XG5cdFx0XHR0eXBlOiAnYXJyYXknLFxuXHRcdFx0ZGVmYXVsdDogWydub3Rfc3RhcnRlZCcsICdpbl9wcm9ncmVzcycsICdjb21wbGV0ZWQnXVxuXHRcdH0sXG5cdFx0c2hvd19jb250ZW50OiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiB0cnVlXG5cdFx0fSxcblx0XHRzaG93X3RodW1ibmFpbDoge1xuXHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0ZGVmYXVsdDogdHJ1ZVxuXHRcdH0sXG5cdFx0Y291cnNlX2NhdGVnb3J5X25hbWU6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdGNvdXJzZV9jYXQ6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdGNvdXJzZV9jYXRlZ29yeXNlbGVjdG9yOiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiBmYWxzZVxuXHRcdH0sXG5cdFx0Y291cnNlX3RhZzoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0Y291cnNlX3RhZ19pZDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0Y2F0ZWdvcnlfbmFtZToge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0Y2F0OiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRjYXRlZ29yeXNlbGVjdG9yOiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiBmYWxzZVxuXHRcdH0sXG5cdFx0dGFnOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHR0YWdfaWQ6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdGNvdXJzZV9ncmlkOiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbidcblx0XHR9LFxuXHRcdHByb2dyZXNzX2Jhcjoge1xuXHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0ZGVmYXVsdDogZmFsc2Vcblx0XHR9LFxuXHRcdGNvbDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiBsZGxtc19zZXR0aW5nc1sncGx1Z2lucyddWydsZWFybmRhc2gtY291cnNlLWdyaWQnXVsnZW5hYmxlZCddWydjb2xfZGVmYXVsdCddIHx8IDNcblx0XHR9LFxuXHRcdHByZXZpZXdfc2hvdzoge1xuXHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0ZGVmYXVsdDogdHJ1ZVxuXHRcdH0sXG5cdFx0ZXhhbXBsZV9zaG93OiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiAwXG5cdFx0fVxuXHR9LFxuXHRlZGl0OiBmdW5jdGlvbiBlZGl0KHByb3BzKSB7XG5cdFx0dmFyIF9wcm9wcyRhdHRyaWJ1dGVzID0gcHJvcHMuYXR0cmlidXRlcyxcblx0XHQgICAgb3JkZXJieSA9IF9wcm9wcyRhdHRyaWJ1dGVzLm9yZGVyYnksXG5cdFx0ICAgIG9yZGVyID0gX3Byb3BzJGF0dHJpYnV0ZXMub3JkZXIsXG5cdFx0ICAgIHBlcl9wYWdlID0gX3Byb3BzJGF0dHJpYnV0ZXMucGVyX3BhZ2UsXG5cdFx0ICAgIG15Y291cnNlcyA9IF9wcm9wcyRhdHRyaWJ1dGVzLm15Y291cnNlcyxcblx0XHQgICAgc3RhdHVzID0gX3Byb3BzJGF0dHJpYnV0ZXMuc3RhdHVzLFxuXHRcdCAgICBzaG93X2NvbnRlbnQgPSBfcHJvcHMkYXR0cmlidXRlcy5zaG93X2NvbnRlbnQsXG5cdFx0ICAgIHNob3dfdGh1bWJuYWlsID0gX3Byb3BzJGF0dHJpYnV0ZXMuc2hvd190aHVtYm5haWwsXG5cdFx0ICAgIGNvdXJzZV9jYXRlZ29yeV9uYW1lID0gX3Byb3BzJGF0dHJpYnV0ZXMuY291cnNlX2NhdGVnb3J5X25hbWUsXG5cdFx0ICAgIGNvdXJzZV9jYXQgPSBfcHJvcHMkYXR0cmlidXRlcy5jb3Vyc2VfY2F0LFxuXHRcdCAgICBjb3Vyc2VfY2F0ZWdvcnlzZWxlY3RvciA9IF9wcm9wcyRhdHRyaWJ1dGVzLmNvdXJzZV9jYXRlZ29yeXNlbGVjdG9yLFxuXHRcdCAgICBjb3Vyc2VfdGFnID0gX3Byb3BzJGF0dHJpYnV0ZXMuY291cnNlX3RhZyxcblx0XHQgICAgY291cnNlX3RhZ19pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLmNvdXJzZV90YWdfaWQsXG5cdFx0ICAgIGNhdGVnb3J5X25hbWUgPSBfcHJvcHMkYXR0cmlidXRlcy5jYXRlZ29yeV9uYW1lLFxuXHRcdCAgICBjYXQgPSBfcHJvcHMkYXR0cmlidXRlcy5jYXQsXG5cdFx0ICAgIGNhdGVnb3J5c2VsZWN0b3IgPSBfcHJvcHMkYXR0cmlidXRlcy5jYXRlZ29yeXNlbGVjdG9yLFxuXHRcdCAgICB0YWcgPSBfcHJvcHMkYXR0cmlidXRlcy50YWcsXG5cdFx0ICAgIHRhZ19pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLnRhZ19pZCxcblx0XHQgICAgY291cnNlX2dyaWQgPSBfcHJvcHMkYXR0cmlidXRlcy5jb3Vyc2VfZ3JpZCxcblx0XHQgICAgcHJvZ3Jlc3NfYmFyID0gX3Byb3BzJGF0dHJpYnV0ZXMucHJvZ3Jlc3NfYmFyLFxuXHRcdCAgICBjb2wgPSBfcHJvcHMkYXR0cmlidXRlcy5jb2wsXG5cdFx0ICAgIHByZXZpZXdfdXNlcl9pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLnByZXZpZXdfdXNlcl9pZCxcblx0XHQgICAgcHJldmlld19zaG93ID0gX3Byb3BzJGF0dHJpYnV0ZXMucHJldmlld19zaG93LFxuXHRcdCAgICBleGFtcGxlX3Nob3cgPSBfcHJvcHMkYXR0cmlidXRlcy5leGFtcGxlX3Nob3csXG5cdFx0ICAgIHNldEF0dHJpYnV0ZXMgPSBwcm9wcy5zZXRBdHRyaWJ1dGVzO1xuXG5cblx0XHR2YXIgZmllbGRfc2hvd19jb250ZW50ID0gJyc7XG5cdFx0dmFyIGZpZWxkX3Nob3dfdGh1bWJuYWlsID0gJyc7XG5cdFx0dmFyIHBhbmVsX2NvdXJzZV9ncmlkX3NlY3Rpb24gPSAnJztcblxuXHRcdHZhciBjb3Vyc2VfZ3JpZF9kZWZhdWx0ID0gdHJ1ZTtcblx0XHRpZiAobGRsbXNfc2V0dGluZ3NbJ3BsdWdpbnMnXVsnbGVhcm5kYXNoLWNvdXJzZS1ncmlkJ11bJ2VuYWJsZWQnXSA9PT0gdHJ1ZSkge1xuXHRcdFx0aWYgKHR5cGVvZiBjb3Vyc2VfZ3JpZCAhPT0gJ3VuZGVmaW5lZCcgJiYgKGNvdXJzZV9ncmlkID09IHRydWUgfHwgY291cnNlX2dyaWQgPT0gZmFsc2UpKSB7XG5cdFx0XHRcdGNvdXJzZV9ncmlkX2RlZmF1bHQgPSBjb3Vyc2VfZ3JpZDtcblx0XHRcdH1cblxuXHRcdFx0dmFyIGNvdXJzZV9ncmlkX3NlY3Rpb25fb3BlbiA9IGZhbHNlO1xuXHRcdFx0aWYgKGNvdXJzZV9ncmlkX2RlZmF1bHQgPT0gdHJ1ZSkge1xuXHRcdFx0XHRjb3Vyc2VfZ3JpZF9zZWN0aW9uX29wZW4gPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0cGFuZWxfY291cnNlX2dyaWRfc2VjdGlvbiA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGl0bGU6IF9fKCdHcmlkIFNldHRpbmdzJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdGluaXRpYWxPcGVuOiBjb3Vyc2VfZ3JpZF9zZWN0aW9uX29wZW5cblx0XHRcdFx0fSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRvZ2dsZUNvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ1Nob3cgR3JpZCcsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRjaGVja2VkOiAhIWNvdXJzZV9ncmlkX2RlZmF1bHQsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGNvdXJzZV9ncmlkKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGNvdXJzZV9ncmlkOiBjb3Vyc2VfZ3JpZCB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnU2hvdyBQcm9ncmVzcyBCYXInLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0Y2hlY2tlZDogISFwcm9ncmVzc19iYXIsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHByb2dyZXNzX2Jhcikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBwcm9ncmVzc19iYXI6IHByb2dyZXNzX2JhciB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoUmFuZ2VDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdDb2x1bW5zJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdHZhbHVlOiBjb2wgfHwgbGRsbXNfc2V0dGluZ3NbJ3BsdWdpbnMnXVsnbGVhcm5kYXNoLWNvdXJzZS1ncmlkJ11bJ2VuYWJsZWQnXVsnY29sX2RlZmF1bHQnXSxcblx0XHRcdFx0XHRtaW46IDEsXG5cdFx0XHRcdFx0bWF4OiBsZGxtc19zZXR0aW5nc1sncGx1Z2lucyddWydsZWFybmRhc2gtY291cnNlLWdyaWQnXVsnZW5hYmxlZCddWydjb2xfbWF4J10sXG5cdFx0XHRcdFx0c3RlcDogMSxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoY29sKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGNvbDogY29sIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0Ly9pZiAoY291cnNlX2dyaWQgIT09IHRydWUpIHtcblx0XHRmaWVsZF9zaG93X2NvbnRlbnQgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0bGFiZWw6IF9fKCdTaG93IENvbnRlbnQnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRjaGVja2VkOiAhIXNob3dfY29udGVudCxcblx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShzaG93X2NvbnRlbnQpIHtcblx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBzaG93X2NvbnRlbnQ6IHNob3dfY29udGVudCB9KTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGZpZWxkX3Nob3dfdGh1bWJuYWlsID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRvZ2dsZUNvbnRyb2wsIHtcblx0XHRcdGxhYmVsOiBfXygnU2hvdyBUaHVtYm5haWwnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRjaGVja2VkOiAhIXNob3dfdGh1bWJuYWlsLFxuXHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHNob3dfdGh1bWJuYWlsKSB7XG5cdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc2hvd190aHVtYm5haWw6IHNob3dfdGh1bWJuYWlsIH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdC8vfVxuXG5cdFx0dmFyIHBhbmVsYm9keV9oZWFkZXIgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRQYW5lbEJvZHksXG5cdFx0XHR7XG5cdFx0XHRcdHRpdGxlOiBfXygnU2V0dGluZ3MnLCAnbGVhcm5kYXNoJylcblx0XHRcdH0sXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoU2VsZWN0Q29udHJvbCwge1xuXHRcdFx0XHRrZXk6ICdvcmRlcmJ5Jyxcblx0XHRcdFx0bGFiZWw6IF9fKCdPcmRlciBieScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0dmFsdWU6IG9yZGVyYnksXG5cdFx0XHRcdG9wdGlvbnM6IFt7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdJRCAtIE9yZGVyIGJ5IHBvc3QgaWQuIChkZWZhdWx0KScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ0lEJ1xuXHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdUaXRsZSAtIE9yZGVyIGJ5IHBvc3QgdGl0bGUnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd0aXRsZSdcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnRGF0ZSAtIE9yZGVyIGJ5IHBvc3QgZGF0ZScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2RhdGUnXG5cdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ01lbnUgLSBPcmRlciBieSBQYWdlIE9yZGVyIFZhbHVlJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbWVudV9vcmRlcidcblx0XHRcdFx0fV0sXG5cdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShvcmRlcmJ5KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBvcmRlcmJ5OiBvcmRlcmJ5IH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdGtleTogJ29yZGVyJyxcblx0XHRcdFx0bGFiZWw6IF9fKCdPcmRlcicsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0dmFsdWU6IG9yZGVyLFxuXHRcdFx0XHRvcHRpb25zOiBbe1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnREVTQyAtIGhpZ2hlc3QgdG8gbG93ZXN0IHZhbHVlcyAoZGVmYXVsdCknLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdERVNDJ1xuXHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdBU0MgLSBsb3dlc3QgdG8gaGlnaGVzdCB2YWx1ZXMnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdBU0MnXG5cdFx0XHRcdH1dLFxuXHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2Uob3JkZXIpIHtcblx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IG9yZGVyOiBvcmRlciB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJyVzIHBlciBwYWdlJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2VzJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2VzJykpLFxuXHRcdFx0XHRoZWxwOiBzcHJpbnRmKF94KCdMZWF2ZSBlbXB0eSBmb3IgZGVmYXVsdCAoJWQpIG9yIDAgdG8gc2hvdyBhbGwgaXRlbXMuJywgJ3BsYWNlaG9sZGVyOiBkZWZhdWx0IHBlciBwYWdlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfcGVyX3BhZ2UoJ3Blcl9wYWdlJykpLFxuXHRcdFx0XHR2YWx1ZTogcGVyX3BhZ2UgfHwgJycsXG5cdFx0XHRcdHR5cGU6ICdudW1iZXInLFxuXHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocGVyX3BhZ2UpIHtcblx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHBlcl9wYWdlOiBwZXJfcGFnZSB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoU2VsZWN0Q29udHJvbCwge1xuXHRcdFx0XHRrZXk6ICdteWNvdXJzZXMnLFxuXHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnTXkgJXMnLCAncGxhY2Vob2xkZXI6IENvdXJzZXMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZXMnKSksXG5cdFx0XHRcdHZhbHVlOiBteWNvdXJzZXMsXG5cdFx0XHRcdG9wdGlvbnM6IFt7XG5cdFx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJ1Nob3cgQWxsICVzIChkZWZhdWx0KScsICdwbGFjZWhvbGRlcnM6IGNvdXJzZXMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZXMnKSksXG5cdFx0XHRcdFx0dmFsdWU6ICcnXG5cdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnU2hvdyBFbnJvbGxlZCAlcyBvbmx5JywgJ3BsYWNlaG9sZGVyczogY291cnNlcycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlcycpKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2Vucm9sbGVkJ1xuXHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJ1Nob3cgbm90LUVucm9sbGVkICVzIG9ubHknLCAncGxhY2Vob2xkZXJzOiBjb3Vyc2VzJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2VzJykpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbm90LWVucm9sbGVkJ1xuXHRcdFx0XHR9XSxcblx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKG15Y291cnNlcykge1xuXHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgbXljb3Vyc2VzOiBteWNvdXJzZXMgfSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0J2Vucm9sbGVkJyA9PT0gbXljb3Vyc2VzICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0XHRrZXk6ICdzdGF0dXMnLFxuXHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnRW5yb2xsZWQgJXMgU3RhdHVzJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2VzJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2VzJykpLFxuXHRcdFx0XHR2YWx1ZTogc3RhdHVzLFxuXHRcdFx0XHRvcHRpb25zOiBbe1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnTm90IFN0YXJ0ZWQnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdub3Rfc3RhcnRlZCdcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnSW4gUHJvZ3Jlc3MnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdpbl9wcm9ncmVzcydcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnQ29tcGxldGVkJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdHZhbHVlOiAnY29tcGxldGVkJ1xuXHRcdFx0XHR9XSxcblx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHN0YXR1cykge1xuXHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc3RhdHVzOiBzdGF0dXMgfSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZmllbGRfc2hvd19jb250ZW50LFxuXHRcdFx0ZmllbGRfc2hvd190aHVtYm5haWxcblx0XHQpO1xuXG5cdFx0dmFyIHBhbmVsX2NvdXJzZV9jYXRlZ29yeV9zZWN0aW9uID0gJyc7XG5cdFx0aWYgKGxkbG1zX3NldHRpbmdzWydzZXR0aW5ncyddWydjb3Vyc2VzX3RheG9ub21pZXMnXVsnbGRfY291cnNlX2NhdGVnb3J5J10gPT09ICd5ZXMnKSB7XG5cdFx0XHR2YXIgcGFuZWxfY291cnNlX2NhdGVnb3J5X3NlY3Rpb25fb3BlbiA9IGZhbHNlO1xuXHRcdFx0aWYgKGNvdXJzZV9jYXRlZ29yeV9uYW1lICE9ICcnIHx8IGNvdXJzZV9jYXQgIT0gJycpIHtcblx0XHRcdFx0cGFuZWxfY291cnNlX2NhdGVnb3J5X3NlY3Rpb25fb3BlbiA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRwYW5lbF9jb3Vyc2VfY2F0ZWdvcnlfc2VjdGlvbiA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGl0bGU6IHNwcmludGYoX3goJyVzIENhdGVnb3J5IFNldHRpbmdzJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcblx0XHRcdFx0XHRpbml0aWFsT3BlbjogcGFuZWxfY291cnNlX2NhdGVnb3J5X3NlY3Rpb25fb3BlblxuXHRcdFx0XHR9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnJXMgQ2F0ZWdvcnkgU2x1ZycsICdwbGFjZWhvbGRlcjogQ291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG5cdFx0XHRcdFx0aGVscDogc3ByaW50ZihfeCgnc2hvd3MgJXMgd2l0aCBtZW50aW9uZWQgY2F0ZWdvcnkgc2x1Zy4nLCAncGxhY2Vob2xkZXI6IENvdXJzZXMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZXMnKSksXG5cdFx0XHRcdFx0dmFsdWU6IGNvdXJzZV9jYXRlZ29yeV9uYW1lIHx8ICcnLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShjb3Vyc2VfY2F0ZWdvcnlfbmFtZSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBjb3Vyc2VfY2F0ZWdvcnlfbmFtZTogY291cnNlX2NhdGVnb3J5X25hbWUgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJyVzIENhdGVnb3J5IElEJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcblx0XHRcdFx0XHRoZWxwOiBzcHJpbnRmKF94KCdzaG93cyAlcyB3aXRoIG1lbnRpb25lZCBjYXRlZ29yeSBJRC4nLCAncGxhY2Vob2xkZXI6IENvdXJzZXMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZXMnKSksXG5cdFx0XHRcdFx0dmFsdWU6IGNvdXJzZV9jYXQgfHwgJycsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGNvdXJzZV9jYXQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgY291cnNlX2NhdDogY291cnNlX2NhdCB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBzcHJpbnRmKF94KCclcyBDYXRlZ29yeSBTZWxlY3RvcicsICdwbGFjZWhvbGRlcjogQ291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG5cdFx0XHRcdFx0aGVscDogc3ByaW50ZihfeCgnc2hvd3MgYSAlcyBjYXRlZ29yeSBkcm9wZG93bi4nLCAncGxhY2Vob2xkZXI6IENvdXJzZXMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZXMnKSksXG5cdFx0XHRcdFx0Y2hlY2tlZDogISFjb3Vyc2VfY2F0ZWdvcnlzZWxlY3Rvcixcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoY291cnNlX2NhdGVnb3J5c2VsZWN0b3IpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgY291cnNlX2NhdGVnb3J5c2VsZWN0b3I6IGNvdXJzZV9jYXRlZ29yeXNlbGVjdG9yIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0dmFyIHBhbmVsX2NvdXJzZV90YWdfc2VjdGlvbiA9ICcnO1xuXHRcdGlmIChsZGxtc19zZXR0aW5nc1snc2V0dGluZ3MnXVsnY291cnNlc190YXhvbm9taWVzJ11bJ2xkX2NvdXJzZV90YWcnXSA9PT0gJ3llcycpIHtcblx0XHRcdHZhciBwYW5lbF9jb3Vyc2VfdGFnX3NlY3Rpb25fb3BlbiA9IGZhbHNlO1xuXHRcdFx0aWYgKGNvdXJzZV90YWcgIT0gJycgfHwgY291cnNlX3RhZ19pZCAhPSAnJykge1xuXHRcdFx0XHRwYW5lbF9jb3Vyc2VfdGFnX3NlY3Rpb25fb3BlbiA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRwYW5lbF9jb3Vyc2VfdGFnX3NlY3Rpb24gPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFBhbmVsQm9keSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRpdGxlOiBzcHJpbnRmKF94KCclcyBUYWcgU2V0dGluZ3MnLCAncGxhY2Vob2xkZXI6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuXHRcdFx0XHRcdGluaXRpYWxPcGVuOiBwYW5lbF9jb3Vyc2VfdGFnX3NlY3Rpb25fb3BlblxuXHRcdFx0XHR9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnJXMgVGFnIFNsdWcnLCAncGxhY2Vob2xkZXI6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuXHRcdFx0XHRcdGhlbHA6IHNwcmludGYoX3goJ3Nob3dzICVzIHdpdGggbWVudGlvbmVkIHRhZyBzbHVnLicsICdwbGFjZWhvbGRlcjogQ291cnNlcycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlcycpKSxcblx0XHRcdFx0XHR2YWx1ZTogY291cnNlX3RhZyB8fCAnJyxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoY291cnNlX3RhZykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBjb3Vyc2VfdGFnOiBjb3Vyc2VfdGFnIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBzcHJpbnRmKF94KCclcyBUYWcgSUQnLCAncGxhY2Vob2xkZXI6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuXHRcdFx0XHRcdGhlbHA6IHNwcmludGYoX3goJ3Nob3dzICVzIHdpdGggbWVudGlvbmVkIHRhZyBJRC4nLCAncGxhY2Vob2xkZXI6IENvdXJzZXMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZXMnKSksXG5cdFx0XHRcdFx0dmFsdWU6IGNvdXJzZV90YWdfaWQgfHwgJycsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGNvdXJzZV90YWdfaWQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgY291cnNlX3RhZ19pZDogY291cnNlX3RhZ19pZCB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHZhciBwYW5lbF93cF9jYXRlZ29yeV9zZWN0aW9uID0gJyc7XG5cdFx0aWYgKGxkbG1zX3NldHRpbmdzWydzZXR0aW5ncyddWydjb3Vyc2VzX3RheG9ub21pZXMnXVsnd3BfcG9zdF9jYXRlZ29yeSddID09PSAneWVzJykge1xuXHRcdFx0dmFyIHBhbmVsX3dwX2NhdGVnb3J5X3NlY3Rpb25fb3BlbiA9IGZhbHNlO1xuXHRcdFx0aWYgKGNhdGVnb3J5X25hbWUgIT0gJycgfHwgY2F0ICE9ICcnKSB7XG5cdFx0XHRcdHBhbmVsX3dwX2NhdGVnb3J5X3NlY3Rpb25fb3BlbiA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRwYW5lbF93cF9jYXRlZ29yeV9zZWN0aW9uID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0aXRsZTogX18oJ1dQIENhdGVnb3J5IFNldHRpbmdzJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdGluaXRpYWxPcGVuOiBwYW5lbF93cF9jYXRlZ29yeV9zZWN0aW9uX29wZW5cblx0XHRcdFx0fSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdXUCBDYXRlZ29yeSBTbHVnJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdGhlbHA6IHNwcmludGYoX3goJ3Nob3dzICVzIHdpdGggbWVudGlvbmVkIFdQIGNhdGVnb3J5IHNsdWcuJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2VzJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2VzJykpLFxuXHRcdFx0XHRcdHZhbHVlOiBjYXRlZ29yeV9uYW1lIHx8ICcnLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShjYXRlZ29yeV9uYW1lKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGNhdGVnb3J5X25hbWU6IGNhdGVnb3J5X25hbWUgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJyVzIENhdGVnb3J5IElEJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcblx0XHRcdFx0XHRoZWxwOiBzcHJpbnRmKF94KCdzaG93cyAlcyB3aXRoIG1lbnRpb25lZCBjYXRlZ29yeSBJRC4nLCAncGxhY2Vob2xkZXI6IENvdXJzZXMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZXMnKSksXG5cdFx0XHRcdFx0dmFsdWU6IGNhdCB8fCAnJyxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoY2F0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGNhdDogY2F0IH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdXUCBDYXRlZ29yeSBTZWxlY3RvcicsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRoZWxwOiBfXygnc2hvd3MgYSBXUCBjYXRlZ29yeSBkcm9wZG93bi4nLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0Y2hlY2tlZDogISFjYXRlZ29yeXNlbGVjdG9yLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShjYXRlZ29yeXNlbGVjdG9yKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGNhdGVnb3J5c2VsZWN0b3I6IGNhdGVnb3J5c2VsZWN0b3IgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHR2YXIgcGFuZWxfd3BfdGFnX3NlY3Rpb24gPSAnJztcblx0XHRpZiAobGRsbXNfc2V0dGluZ3NbJ3NldHRpbmdzJ11bJ2NvdXJzZXNfdGF4b25vbWllcyddWyd3cF9wb3N0X3RhZyddID09PSAneWVzJykge1xuXHRcdFx0dmFyIHBhbmVsX3dwX3RhZ19zZWN0aW9uX29wZW4gPSBmYWxzZTtcblx0XHRcdGlmICh0YWcgIT0gJycgfHwgdGFnX2lkICE9ICcnKSB7XG5cdFx0XHRcdHBhbmVsX3dwX3RhZ19zZWN0aW9uX29wZW4gPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0cGFuZWxfd3BfdGFnX3NlY3Rpb24gPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFBhbmVsQm9keSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRpdGxlOiBfXygnV1AgVGFnIFNldHRpbmdzJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdGluaXRpYWxPcGVuOiBwYW5lbF93cF90YWdfc2VjdGlvbl9vcGVuXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnV1AgVGFnIFNsdWcnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0aGVscDogc3ByaW50ZihfeCgnc2hvd3MgJXMgd2l0aCBtZW50aW9uZWQgV1AgdGFnIHNsdWcuJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2VzJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2VzJykpLFxuXHRcdFx0XHRcdHZhbHVlOiB0YWcgfHwgJycsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHRhZykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyB0YWc6IHRhZyB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ1dQIFRhZyBJRCcsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRoZWxwOiBzcHJpbnRmKF94KCdzaG93cyAlcyB3aXRoIG1lbnRpb25lZCBXUCB0YWcgSUQuJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2VzJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2VzJykpLFxuXHRcdFx0XHRcdHZhbHVlOiB0YWdfaWQgfHwgJycsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHRhZ19pZCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyB0YWdfaWQ6IHRhZ19pZCB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHZhciBwYW5lbF9wcmV2aWV3ID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0e1xuXHRcdFx0XHR0aXRsZTogX18oJ1ByZXZpZXcnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdGluaXRpYWxPcGVuOiBmYWxzZVxuXHRcdFx0fSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnU2hvdyBQcmV2aWV3JywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRjaGVja2VkOiAhIXByZXZpZXdfc2hvdyxcblx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHByZXZpZXdfc2hvdykge1xuXHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcHJldmlld19zaG93OiBwcmV2aWV3X3Nob3cgfSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnVXNlciBJRCcsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0aGVscDogX18oJ0VudGVyIGEgVXNlciBJRCB0byB0ZXN0IHByZXZpZXcnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdHZhbHVlOiBwcmV2aWV3X3VzZXJfaWQgfHwgJycsXG5cdFx0XHRcdHR5cGU6ICdudW1iZXInLFxuXHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocHJldmlld191c2VyX2lkKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBwcmV2aWV3X3VzZXJfaWQ6IHByZXZpZXdfdXNlcl9pZCB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHQpO1xuXG5cdFx0dmFyIGluc3BlY3RvckNvbnRyb2xzID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0SW5zcGVjdG9yQ29udHJvbHMsXG5cdFx0XHRudWxsLFxuXHRcdFx0cGFuZWxib2R5X2hlYWRlcixcblx0XHRcdHBhbmVsX2NvdXJzZV9ncmlkX3NlY3Rpb24sXG5cdFx0XHRwYW5lbF9jb3Vyc2VfY2F0ZWdvcnlfc2VjdGlvbixcblx0XHRcdHBhbmVsX2NvdXJzZV90YWdfc2VjdGlvbixcblx0XHRcdHBhbmVsX3dwX2NhdGVnb3J5X3NlY3Rpb24sXG5cdFx0XHRwYW5lbF93cF90YWdfc2VjdGlvbixcblx0XHRcdHBhbmVsX3ByZXZpZXdcblx0XHQpO1xuXG5cdFx0ZnVuY3Rpb24gZG9fc2VydmVyc2lkZV9yZW5kZXIoYXR0cmlidXRlcykge1xuXHRcdFx0aWYgKGF0dHJpYnV0ZXMucHJldmlld19zaG93ID09IHRydWUpIHtcblx0XHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZXJ2ZXJTaWRlUmVuZGVyLCB7XG5cdFx0XHRcdFx0YmxvY2s6ICdsZWFybmRhc2gvbGQtY291cnNlLWxpc3QnLFxuXHRcdFx0XHRcdGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXNcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gX18oJ1tsZF9jb3Vyc2VfbGlzdF0gc2hvcnRjb2RlIG91dHB1dCBzaG93biBoZXJlJywgJ2xlYXJuZGFzaCcpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBbaW5zcGVjdG9yQ29udHJvbHMsIGRvX3NlcnZlcnNpZGVfcmVuZGVyKHByb3BzLmF0dHJpYnV0ZXMpXTtcblx0fSxcblxuXHRzYXZlOiBmdW5jdGlvbiBzYXZlKHByb3BzKSB7fVxufSk7IiwiLyoqXG4gKiBMZWFybkRhc2ggQmxvY2sgbGQtbGVzc29uLWxpc3RcbiAqXG4gKiBAc2luY2UgMi41LjlcbiAqIEBwYWNrYWdlIExlYXJuRGFzaFxuICovXG5cbi8qKlxuICogTGVhcm5EYXNoIGJsb2NrIGZ1bmN0aW9uc1xuICovXG5pbXBvcnQgeyBsZGxtc19nZXRfY3VzdG9tX2xhYmVsLCBsZGxtc19nZXRfcGVyX3BhZ2UgfSBmcm9tICcuLi9sZGxtcy5qcyc7XG5cbi8qKlxuICogSW50ZXJuYWwgYmxvY2sgbGlicmFyaWVzXG4gKi9cbnZhciBfd3AkaTE4biA9IHdwLmkxOG4sXG4gICAgX18gPSBfd3AkaTE4bi5fXyxcbiAgICBfeCA9IF93cCRpMThuLl94LFxuICAgIHNwcmludGYgPSBfd3AkaTE4bi5zcHJpbnRmO1xudmFyIHJlZ2lzdGVyQmxvY2tUeXBlID0gd3AuYmxvY2tzLnJlZ2lzdGVyQmxvY2tUeXBlO1xudmFyIEluc3BlY3RvckNvbnRyb2xzID0gd3AuZWRpdG9yLkluc3BlY3RvckNvbnRyb2xzO1xudmFyIF93cCRjb21wb25lbnRzID0gd3AuY29tcG9uZW50cyxcbiAgICBTZXJ2ZXJTaWRlUmVuZGVyID0gX3dwJGNvbXBvbmVudHMuU2VydmVyU2lkZVJlbmRlcixcbiAgICBQYW5lbEJvZHkgPSBfd3AkY29tcG9uZW50cy5QYW5lbEJvZHksXG4gICAgUmFuZ2VDb250cm9sID0gX3dwJGNvbXBvbmVudHMuUmFuZ2VDb250cm9sLFxuICAgIFNlbGVjdENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5TZWxlY3RDb250cm9sLFxuICAgIFRvZ2dsZUNvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5Ub2dnbGVDb250cm9sLFxuICAgIFRleHRDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVGV4dENvbnRyb2w7XG5cblxucmVnaXN0ZXJCbG9ja1R5cGUoJ2xlYXJuZGFzaC9sZC1sZXNzb24tbGlzdCcsIHtcblx0dGl0bGU6IHNwcmludGYoX3goJ0xlYXJuRGFzaCAlcyBMaXN0JywgJ3BsYWNlaG9sZGVyOiBMZXNzb24nLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2xlc3NvbicpKSxcblx0ZGVzY3JpcHRpb246IHNwcmludGYoX3goJ1RoaXMgYmxvY2sgc2hvd3MgYSBsaXN0IG9mICVzLicsICdwbGFjZWhvbGRlcnM6IGxlc3NvbnMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2xlc3NvbnMnKSksXG5cdGljb246ICdsaXN0LXZpZXcnLFxuXHRjYXRlZ29yeTogJ2xlYXJuZGFzaC1ibG9ja3MnLFxuXHRleGFtcGxlOiB7XG5cdFx0YXR0cmlidXRlczoge1xuXHRcdFx0ZXhhbXBsZV9zaG93OiAxXG5cdFx0fVxuXHR9LFxuXHRzdXBwb3J0czoge1xuXHRcdGN1c3RvbUNsYXNzTmFtZTogZmFsc2Vcblx0fSxcblx0YXR0cmlidXRlczoge1xuXHRcdG9yZGVyYnk6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJ0lEJ1xuXHRcdH0sXG5cdFx0b3JkZXI6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJ0RFU0MnXG5cdFx0fSxcblx0XHRwZXJfcGFnZToge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0Y291cnNlX2lkOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRzaG93X2NvbnRlbnQ6IHtcblx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdGRlZmF1bHQ6IHRydWVcblx0XHR9LFxuXHRcdHNob3dfdGh1bWJuYWlsOiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiB0cnVlXG5cdFx0fSxcblx0XHRsZXNzb25fY2F0ZWdvcnlfbmFtZToge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0bGVzc29uX2NhdDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0bGVzc29uX2NhdGVnb3J5c2VsZWN0b3I6IHtcblx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdGRlZmF1bHQ6IGZhbHNlXG5cdFx0fSxcblx0XHRsZXNzb25fdGFnOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRsZXNzb25fdGFnX2lkOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRjYXRlZ29yeV9uYW1lOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRjYXQ6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdGNhdGVnb3J5c2VsZWN0b3I6IHtcblx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdGRlZmF1bHQ6IGZhbHNlXG5cdFx0fSxcblx0XHR0YWc6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdHRhZ19pZDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0Y291cnNlX2dyaWQ6IHtcblx0XHRcdHR5cGU6ICdib29sZWFuJ1xuXHRcdH0sXG5cdFx0Y29sOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6IGxkbG1zX3NldHRpbmdzWydwbHVnaW5zJ11bJ2xlYXJuZGFzaC1jb3Vyc2UtZ3JpZCddWydlbmFibGVkJ11bJ2NvbF9kZWZhdWx0J10gfHwgM1xuXHRcdH0sXG5cdFx0cHJldmlld19zaG93OiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiB0cnVlXG5cdFx0fSxcblx0XHRleGFtcGxlX3Nob3c6IHtcblx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdGRlZmF1bHQ6IDBcblx0XHR9XG5cdH0sXG5cdGVkaXQ6IGZ1bmN0aW9uIGVkaXQocHJvcHMpIHtcblx0XHR2YXIgX3Byb3BzJGF0dHJpYnV0ZXMgPSBwcm9wcy5hdHRyaWJ1dGVzLFxuXHRcdCAgICBvcmRlcmJ5ID0gX3Byb3BzJGF0dHJpYnV0ZXMub3JkZXJieSxcblx0XHQgICAgb3JkZXIgPSBfcHJvcHMkYXR0cmlidXRlcy5vcmRlcixcblx0XHQgICAgcGVyX3BhZ2UgPSBfcHJvcHMkYXR0cmlidXRlcy5wZXJfcGFnZSxcblx0XHQgICAgY291cnNlX2lkID0gX3Byb3BzJGF0dHJpYnV0ZXMuY291cnNlX2lkLFxuXHRcdCAgICBzaG93X2NvbnRlbnQgPSBfcHJvcHMkYXR0cmlidXRlcy5zaG93X2NvbnRlbnQsXG5cdFx0ICAgIHNob3dfdGh1bWJuYWlsID0gX3Byb3BzJGF0dHJpYnV0ZXMuc2hvd190aHVtYm5haWwsXG5cdFx0ICAgIGxlc3Nvbl9jYXRlZ29yeV9uYW1lID0gX3Byb3BzJGF0dHJpYnV0ZXMubGVzc29uX2NhdGVnb3J5X25hbWUsXG5cdFx0ICAgIGxlc3Nvbl9jYXQgPSBfcHJvcHMkYXR0cmlidXRlcy5sZXNzb25fY2F0LFxuXHRcdCAgICBsZXNzb25fY2F0ZWdvcnlzZWxlY3RvciA9IF9wcm9wcyRhdHRyaWJ1dGVzLmxlc3Nvbl9jYXRlZ29yeXNlbGVjdG9yLFxuXHRcdCAgICBsZXNzb25fdGFnID0gX3Byb3BzJGF0dHJpYnV0ZXMubGVzc29uX3RhZyxcblx0XHQgICAgbGVzc29uX3RhZ19pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLmxlc3Nvbl90YWdfaWQsXG5cdFx0ICAgIGNhdGVnb3J5X25hbWUgPSBfcHJvcHMkYXR0cmlidXRlcy5jYXRlZ29yeV9uYW1lLFxuXHRcdCAgICBjYXQgPSBfcHJvcHMkYXR0cmlidXRlcy5jYXQsXG5cdFx0ICAgIGNhdGVnb3J5c2VsZWN0b3IgPSBfcHJvcHMkYXR0cmlidXRlcy5jYXRlZ29yeXNlbGVjdG9yLFxuXHRcdCAgICB0YWcgPSBfcHJvcHMkYXR0cmlidXRlcy50YWcsXG5cdFx0ICAgIHRhZ19pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLnRhZ19pZCxcblx0XHQgICAgY291cnNlX2dyaWQgPSBfcHJvcHMkYXR0cmlidXRlcy5jb3Vyc2VfZ3JpZCxcblx0XHQgICAgY29sID0gX3Byb3BzJGF0dHJpYnV0ZXMuY29sLFxuXHRcdCAgICBwcmV2aWV3X3Nob3cgPSBfcHJvcHMkYXR0cmlidXRlcy5wcmV2aWV3X3Nob3csXG5cdFx0ICAgIGV4YW1wbGVfc2hvdyA9IF9wcm9wcyRhdHRyaWJ1dGVzLmV4YW1wbGVfc2hvdyxcblx0XHQgICAgc2V0QXR0cmlidXRlcyA9IHByb3BzLnNldEF0dHJpYnV0ZXM7XG5cblxuXHRcdHZhciBmaWVsZF9zaG93X2NvbnRlbnQgPSAnJztcblx0XHR2YXIgZmllbGRfc2hvd190aHVtYm5haWwgPSAnJztcblx0XHR2YXIgcGFuZWxfbGVzc29uX2dyaWRfc2VjdGlvbiA9ICcnO1xuXG5cdFx0dmFyIGNvdXJzZV9ncmlkX2RlZmF1bHQgPSB0cnVlO1xuXHRcdGlmIChsZGxtc19zZXR0aW5nc1sncGx1Z2lucyddWydsZWFybmRhc2gtY291cnNlLWdyaWQnXVsnZW5hYmxlZCddID09PSB0cnVlKSB7XG5cdFx0XHRpZiAodHlwZW9mIGNvdXJzZV9ncmlkICE9PSAndW5kZWZpbmVkJyAmJiAoY291cnNlX2dyaWQgPT0gdHJ1ZSB8fCBjb3Vyc2VfZ3JpZCA9PSBmYWxzZSkpIHtcblx0XHRcdFx0Y291cnNlX2dyaWRfZGVmYXVsdCA9IGNvdXJzZV9ncmlkO1xuXHRcdFx0fVxuXG5cdFx0XHR2YXIgbGVzc29uX2dyaWRfc2VjdGlvbl9vcGVuID0gZmFsc2U7XG5cdFx0XHRpZiAoY291cnNlX2dyaWRfZGVmYXVsdCA9PSB0cnVlKSB7XG5cdFx0XHRcdGxlc3Nvbl9ncmlkX3NlY3Rpb25fb3BlbiA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRwYW5lbF9sZXNzb25fZ3JpZF9zZWN0aW9uID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0aXRsZTogX18oJ0dyaWQgU2V0dGluZ3MnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0aW5pdGlhbE9wZW46IGxlc3Nvbl9ncmlkX3NlY3Rpb25fb3BlblxuXHRcdFx0XHR9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnU2hvdyBHcmlkJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6ICEhY291cnNlX2dyaWRfZGVmYXVsdCxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoY291cnNlX2dyaWQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgY291cnNlX2dyaWQ6IGNvdXJzZV9ncmlkIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChSYW5nZUNvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ0NvbHVtbnMnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0dmFsdWU6IGNvbCB8fCBsZGxtc19zZXR0aW5nc1sncGx1Z2lucyddWydsZWFybmRhc2gtY291cnNlLWdyaWQnXVsnZW5hYmxlZCddWydjb2xfZGVmYXVsdCddLFxuXHRcdFx0XHRcdG1pbjogMSxcblx0XHRcdFx0XHRtYXg6IGxkbG1zX3NldHRpbmdzWydwbHVnaW5zJ11bJ2xlYXJuZGFzaC1jb3Vyc2UtZ3JpZCddWydlbmFibGVkJ11bJ2NvbF9tYXgnXSxcblx0XHRcdFx0XHRzdGVwOiAxLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShjb2wpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgY29sOiBjb2wgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRmaWVsZF9zaG93X2NvbnRlbnQgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0bGFiZWw6IF9fKCdTaG93IENvbnRlbnQnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRjaGVja2VkOiAhIXNob3dfY29udGVudCxcblx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShzaG93X2NvbnRlbnQpIHtcblx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBzaG93X2NvbnRlbnQ6IHNob3dfY29udGVudCB9KTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGZpZWxkX3Nob3dfdGh1bWJuYWlsID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRvZ2dsZUNvbnRyb2wsIHtcblx0XHRcdGxhYmVsOiBfXygnU2hvdyBUaHVtYm5haWwnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRjaGVja2VkOiAhIXNob3dfdGh1bWJuYWlsLFxuXHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHNob3dfdGh1bWJuYWlsKSB7XG5cdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc2hvd190aHVtYm5haWw6IHNob3dfdGh1bWJuYWlsIH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dmFyIHBhbmVsYm9keV9oZWFkZXIgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRQYW5lbEJvZHksXG5cdFx0XHR7XG5cdFx0XHRcdHRpdGxlOiBfXygnU2V0dGluZ3MnLCAnbGVhcm5kYXNoJylcblx0XHRcdH0sXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJyVzIElEJywgJ0NvdXJzZSBJRCcsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuXHRcdFx0XHRoZWxwOiBzcHJpbnRmKF94KCdFbnRlciBzaW5nbGUgJTEkcyBJRCB0byBsaW1pdCBsaXN0aW5nLiBMZWF2ZSBibGFuayBpZiB1c2VkIHdpdGhpbiBhICUyJHMuJywgJ3BsYWNlaG9sZGVyczogY291cnNlLCBjb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG5cdFx0XHRcdHZhbHVlOiBjb3Vyc2VfaWQgfHwgJycsXG5cdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShjb3Vyc2VfaWQpIHtcblx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGNvdXJzZV9pZDogY291cnNlX2lkIH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdGtleTogJ29yZGVyYnknLFxuXHRcdFx0XHRsYWJlbDogX18oJ09yZGVyIGJ5JywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHR2YWx1ZTogb3JkZXJieSxcblx0XHRcdFx0b3B0aW9uczogW3tcblx0XHRcdFx0XHRsYWJlbDogX18oJ0lEIC0gT3JkZXIgYnkgcG9zdCBpZC4gKGRlZmF1bHQpJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdHZhbHVlOiAnSUQnXG5cdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ1RpdGxlIC0gT3JkZXIgYnkgcG9zdCB0aXRsZScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3RpdGxlJ1xuXHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdEYXRlIC0gT3JkZXIgYnkgcG9zdCBkYXRlJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdHZhbHVlOiAnZGF0ZSdcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnTWVudSAtIE9yZGVyIGJ5IFBhZ2UgT3JkZXIgVmFsdWUnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdtZW51X29yZGVyJ1xuXHRcdFx0XHR9XSxcblx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKG9yZGVyYnkpIHtcblx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IG9yZGVyYnk6IG9yZGVyYnkgfSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcblx0XHRcdFx0a2V5OiAnb3JkZXInLFxuXHRcdFx0XHRsYWJlbDogX18oJ09yZGVyJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHR2YWx1ZTogb3JkZXIsXG5cdFx0XHRcdG9wdGlvbnM6IFt7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdERVNDIC0gaGlnaGVzdCB0byBsb3dlc3QgdmFsdWVzIChkZWZhdWx0KScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ0RFU0MnXG5cdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ0FTQyAtIGxvd2VzdCB0byBoaWdoZXN0IHZhbHVlcycsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ0FTQydcblx0XHRcdFx0fV0sXG5cdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShvcmRlcikge1xuXHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgb3JkZXI6IG9yZGVyIH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnJXMgcGVyIHBhZ2UnLCAncGxhY2Vob2xkZXI6IExlc3NvbnMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2xlc3NvbnMnKSksXG5cdFx0XHRcdGhlbHA6IHNwcmludGYoX3goJ0xlYXZlIGVtcHR5IGZvciBkZWZhdWx0ICglZCkgb3IgMCB0byBzaG93IGFsbCBpdGVtcy4nLCAncGxhY2Vob2xkZXI6IGRlZmF1bHQgcGVyIHBhZ2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9wZXJfcGFnZSgncGVyX3BhZ2UnKSksXG5cdFx0XHRcdHZhbHVlOiBwZXJfcGFnZSB8fCAnJyxcblx0XHRcdFx0dHlwZTogJ251bWJlcicsXG5cdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShwZXJfcGFnZSkge1xuXHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcGVyX3BhZ2U6IHBlcl9wYWdlIH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdGZpZWxkX3Nob3dfY29udGVudCxcblx0XHRcdGZpZWxkX3Nob3dfdGh1bWJuYWlsXG5cdFx0KTtcblxuXHRcdHZhciBwYW5lbF9sZXNzb25fY2F0ZWdvcnlfc2VjdGlvbiA9ICcnO1xuXHRcdGlmIChsZGxtc19zZXR0aW5nc1snc2V0dGluZ3MnXVsnbGVzc29uc190YXhvbm9taWVzJ11bJ2xkX2xlc3Nvbl9jYXRlZ29yeSddID09PSAneWVzJykge1xuXHRcdFx0dmFyIHBhbmVsX2xlc3Nvbl9jYXRlZ29yeV9zZWN0aW9uX29wZW4gPSBmYWxzZTtcblx0XHRcdGlmIChsZXNzb25fY2F0ZWdvcnlfbmFtZSAhPSAnJyB8fCBsZXNzb25fY2F0ICE9ICcnKSB7XG5cdFx0XHRcdHBhbmVsX2xlc3Nvbl9jYXRlZ29yeV9zZWN0aW9uX29wZW4gPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0cGFuZWxfbGVzc29uX2NhdGVnb3J5X3NlY3Rpb24gPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFBhbmVsQm9keSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRpdGxlOiBzcHJpbnRmKF94KCclcyBDYXRlZ29yeSBTZXR0aW5ncycsICdwbGFjZWhvbGRlcjogTGVzc29uJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdsZXNzb24nKSksXG5cdFx0XHRcdFx0aW5pdGlhbE9wZW46IHBhbmVsX2xlc3Nvbl9jYXRlZ29yeV9zZWN0aW9uX29wZW5cblx0XHRcdFx0fSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJyVzIENhdGVnb3J5IFNsdWcnLCAncGxhY2Vob2xkZXI6IExlc3NvbicsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnbGVzc29uJykpLFxuXHRcdFx0XHRcdGhlbHA6IHNwcmludGYoX3goJ3Nob3dzICVzIHdpdGggbWVudGlvbmVkIGNhdGVnb3J5IHNsdWcuJywgJ3BsYWNlaG9sZGVyOiBsZXNzb25zJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdsZXNzb25zJykpLFxuXHRcdFx0XHRcdHZhbHVlOiBsZXNzb25fY2F0ZWdvcnlfbmFtZSB8fCAnJyxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UobGVzc29uX2NhdGVnb3J5X25hbWUpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgbGVzc29uX2NhdGVnb3J5X25hbWU6IGxlc3Nvbl9jYXRlZ29yeV9uYW1lIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBzcHJpbnRmKF94KCclcyBDYXRlZ29yeSBJRCcsICdwbGFjZWhvbGRlcjogTGVzc29uJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdsZXNzb24nKSksXG5cdFx0XHRcdFx0aGVscDogc3ByaW50ZihfeCgnc2hvd3MgJXMgd2l0aCBtZW50aW9uZWQgY2F0ZWdvcnkgSUQuJywgJ3BsYWNlaG9sZGVyOiBsZXNzb25zJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdsZXNzb25zJykpLFxuXHRcdFx0XHRcdHZhbHVlOiBsZXNzb25fY2F0IHx8ICcnLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShsZXNzb25fY2F0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGxlc3Nvbl9jYXQ6IGxlc3Nvbl9jYXQgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRvZ2dsZUNvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnJXMgQ2F0ZWdvcnkgU2VsZWN0b3InLCAncGxhY2Vob2xkZXI6IExlc3NvbicsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnbGVzc29uJykpLFxuXHRcdFx0XHRcdGhlbHA6IHNwcmludGYoX3goJ3Nob3dzIGEgJXMgY2F0ZWdvcnkgZHJvcGRvd24uJywgJ3BsYWNlaG9sZGVyOiBMZXNzb25zJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdsZXNzb25zJykpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6ICEhbGVzc29uX2NhdGVnb3J5c2VsZWN0b3IsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGxlc3Nvbl9jYXRlZ29yeXNlbGVjdG9yKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGxlc3Nvbl9jYXRlZ29yeXNlbGVjdG9yOiBsZXNzb25fY2F0ZWdvcnlzZWxlY3RvciB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHZhciBwYW5lbF9sZXNzb25fdGFnX3NlY3Rpb24gPSAnJztcblx0XHRpZiAobGRsbXNfc2V0dGluZ3NbJ3NldHRpbmdzJ11bJ2xlc3NvbnNfdGF4b25vbWllcyddWydsZF9sZXNzb25fdGFnJ10gPT09ICd5ZXMnKSB7XG5cdFx0XHR2YXIgcGFuZWxfbGVzc29uX3RhZ19zZWN0aW9uX29wZW4gPSBmYWxzZTtcblx0XHRcdGlmIChsZXNzb25fdGFnICE9ICcnIHx8IGxlc3Nvbl90YWdfaWQgIT0gJycpIHtcblx0XHRcdFx0cGFuZWxfbGVzc29uX3RhZ19zZWN0aW9uX29wZW4gPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0cGFuZWxfbGVzc29uX3RhZ19zZWN0aW9uID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0aXRsZTogc3ByaW50ZihfeCgnJXMgVGFnIFNldHRpbmdzJywgJ3BsYWNlaG9sZGVyOiBMZXNzb24nLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2xlc3NvbicpKSxcblx0XHRcdFx0XHRpbml0aWFsT3BlbjogcGFuZWxfbGVzc29uX3RhZ19zZWN0aW9uX29wZW5cblx0XHRcdFx0fSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJyVzIFRhZyBTbHVnJywgJ3BsYWNlaG9sZGVyOiBMZXNzb24nLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2xlc3NvbicpKSxcblx0XHRcdFx0XHRoZWxwOiBzcHJpbnRmKF94KCdzaG93cyAlcyB3aXRoIG1lbnRpb25lZCB0YWcgc2x1Zy4nLCAncGxhY2Vob2xkZXI6IExlc3NvbnMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2xlc3NvbnMnKSksXG5cdFx0XHRcdFx0dmFsdWU6IGxlc3Nvbl90YWcgfHwgJycsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGxlc3Nvbl90YWcpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgbGVzc29uX3RhZzogbGVzc29uX3RhZyB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnJXMgVGFnIElEJywgJ3BsYWNlaG9sZGVyOiBMZXNzb24nLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2xlc3NvbicpKSxcblx0XHRcdFx0XHRoZWxwOiBzcHJpbnRmKF94KCdzaG93cyAlcyB3aXRoIG1lbnRpb25lZCB0YWcgSUQuJywgJ3BsYWNlaG9sZGVyOiBMZXNzb25zJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdsZXNzb25zJykpLFxuXHRcdFx0XHRcdHZhbHVlOiBsZXNzb25fdGFnX2lkIHx8ICcnLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShsZXNzb25fdGFnX2lkKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGxlc3Nvbl90YWdfaWQ6IGxlc3Nvbl90YWdfaWQgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHR2YXIgcGFuZWxfd3BfY2F0ZWdvcnlfc2VjdGlvbiA9ICcnO1xuXHRcdGlmIChsZGxtc19zZXR0aW5nc1snc2V0dGluZ3MnXVsnbGVzc29uc190YXhvbm9taWVzJ11bJ3dwX3Bvc3RfY2F0ZWdvcnknXSA9PT0gJ3llcycpIHtcblx0XHRcdHZhciBwYW5lbF93cF9jYXRlZ29yeV9zZWN0aW9uX29wZW4gPSBmYWxzZTtcblx0XHRcdGlmIChjYXRlZ29yeV9uYW1lICE9ICcnIHx8IGNhdCAhPSAnJykge1xuXHRcdFx0XHRwYW5lbF93cF9jYXRlZ29yeV9zZWN0aW9uX29wZW4gPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0cGFuZWxfd3BfY2F0ZWdvcnlfc2VjdGlvbiA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGl0bGU6IF9fKCdXUCBDYXRlZ29yeSBTZXR0aW5ncycsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRpbml0aWFsT3BlbjogcGFuZWxfd3BfY2F0ZWdvcnlfc2VjdGlvbl9vcGVuXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnV1AgQ2F0ZWdvcnkgU2x1ZycsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRoZWxwOiBzcHJpbnRmKF94KCdzaG93cyAlcyB3aXRoIG1lbnRpb25lZCBXUCBjYXRlZ29yeSBzbHVnLicsICdwbGFjZWhvbGRlcjogTGVzc29ucycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnbGVzc29ucycpKSxcblx0XHRcdFx0XHR2YWx1ZTogY2F0ZWdvcnlfbmFtZSB8fCAnJyxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoY2F0ZWdvcnlfbmFtZSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBjYXRlZ29yeV9uYW1lOiBjYXRlZ29yeV9uYW1lIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBzcHJpbnRmKF94KCclcyBDYXRlZ29yeSBJRCcsICdwbGFjZWhvbGRlcjogTGVzc29uJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdsZXNzb24nKSksXG5cdFx0XHRcdFx0aGVscDogc3ByaW50ZihfeCgnc2hvd3MgJXMgd2l0aCBtZW50aW9uZWQgY2F0ZWdvcnkgSUQuJywgJ3BsYWNlaG9sZGVyOiBMZXNzb25zJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdsZXNzb25zJykpLFxuXHRcdFx0XHRcdHZhbHVlOiBjYXQgfHwgJycsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGNhdCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBjYXQ6IGNhdCB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnV1AgQ2F0ZWdvcnkgU2VsZWN0b3InLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0aGVscDogX18oJ3Nob3dzIGEgV1AgY2F0ZWdvcnkgZHJvcGRvd24uJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6ICEhY2F0ZWdvcnlzZWxlY3Rvcixcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoY2F0ZWdvcnlzZWxlY3Rvcikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBjYXRlZ29yeXNlbGVjdG9yOiBjYXRlZ29yeXNlbGVjdG9yIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0dmFyIHBhbmVsX3dwX3RhZ19zZWN0aW9uID0gJyc7XG5cdFx0aWYgKGxkbG1zX3NldHRpbmdzWydzZXR0aW5ncyddWydsZXNzb25zX3RheG9ub21pZXMnXVsnd3BfcG9zdF90YWcnXSA9PT0gJ3llcycpIHtcblx0XHRcdHZhciBwYW5lbF93cF90YWdfc2VjdGlvbl9vcGVuID0gZmFsc2U7XG5cdFx0XHRpZiAodGFnICE9ICcnIHx8IHRhZ19pZCAhPSAnJykge1xuXHRcdFx0XHRwYW5lbF93cF90YWdfc2VjdGlvbl9vcGVuID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdHBhbmVsX3dwX3RhZ19zZWN0aW9uID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0aXRsZTogX18oJ1dQIFRhZyBTZXR0aW5ncycsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRpbml0aWFsT3BlbjogcGFuZWxfd3BfdGFnX3NlY3Rpb25fb3BlblxuXHRcdFx0XHR9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ1dQIFRhZyBTbHVnJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdGhlbHA6IHNwcmludGYoX3goJ3Nob3dzICVzIHdpdGggbWVudGlvbmVkIFdQIHRhZyBzbHVnLicsICdwbGFjZWhvbGRlcjogTGVzc29ucycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnbGVzc29ucycpKSxcblx0XHRcdFx0XHR2YWx1ZTogdGFnIHx8ICcnLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh0YWcpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgdGFnOiB0YWcgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdXUCBUYWcgSUQnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0aGVscDogc3ByaW50ZihfeCgnc2hvd3MgJXMgd2l0aCBtZW50aW9uZWQgV1AgdGFnIElELicsICdwbGFjZWhvbGRlcjogTGVzc29ucycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnbGVzc29ucycpKSxcblx0XHRcdFx0XHR2YWx1ZTogdGFnX2lkIHx8ICcnLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh0YWdfaWQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgdGFnX2lkOiB0YWdfaWQgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHR2YXIgcGFuZWxfcHJldmlldyA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFBhbmVsQm9keSxcblx0XHRcdHtcblx0XHRcdFx0dGl0bGU6IF9fKCdQcmV2aWV3JywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRpbml0aWFsT3BlbjogZmFsc2Vcblx0XHRcdH0sXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ1Nob3cgUHJldmlldycsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0Y2hlY2tlZDogISFwcmV2aWV3X3Nob3csXG5cdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShwcmV2aWV3X3Nob3cpIHtcblx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHByZXZpZXdfc2hvdzogcHJldmlld19zaG93IH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdCk7XG5cblx0XHR2YXIgaW5zcGVjdG9yQ29udHJvbHMgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRJbnNwZWN0b3JDb250cm9scyxcblx0XHRcdG51bGwsXG5cdFx0XHRwYW5lbGJvZHlfaGVhZGVyLFxuXHRcdFx0cGFuZWxfbGVzc29uX2dyaWRfc2VjdGlvbixcblx0XHRcdHBhbmVsX2xlc3Nvbl9jYXRlZ29yeV9zZWN0aW9uLFxuXHRcdFx0cGFuZWxfbGVzc29uX3RhZ19zZWN0aW9uLFxuXHRcdFx0cGFuZWxfd3BfY2F0ZWdvcnlfc2VjdGlvbixcblx0XHRcdHBhbmVsX3dwX3RhZ19zZWN0aW9uLFxuXHRcdFx0cGFuZWxfcHJldmlld1xuXHRcdCk7XG5cblx0XHRmdW5jdGlvbiBkb19zZXJ2ZXJzaWRlX3JlbmRlcihhdHRyaWJ1dGVzKSB7XG5cdFx0XHRpZiAoYXR0cmlidXRlcy5wcmV2aWV3X3Nob3cgPT0gdHJ1ZSkge1xuXHRcdFx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlcnZlclNpZGVSZW5kZXIsIHtcblx0XHRcdFx0XHRibG9jazogJ2xlYXJuZGFzaC9sZC1sZXNzb24tbGlzdCcsXG5cdFx0XHRcdFx0YXR0cmlidXRlczogYXR0cmlidXRlc1xuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBfXygnW2xkX2xlc3Nvbl9saXN0XSBzaG9ydGNvZGUgb3V0cHV0IHNob3duIGhlcmUnLCAnbGVhcm5kYXNoJyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIFtpbnNwZWN0b3JDb250cm9scywgZG9fc2VydmVyc2lkZV9yZW5kZXIocHJvcHMuYXR0cmlidXRlcyldO1xuXHR9LFxuXG5cdHNhdmU6IGZ1bmN0aW9uIHNhdmUocHJvcHMpIHt9XG59KTsiLCIvKipcbiAqIExlYXJuRGFzaCBCbG9jayBsZC10b3BpYy1saXN0XG4gKlxuICogQHNpbmNlIDIuNS45XG4gKiBAcGFja2FnZSBMZWFybkRhc2hcbiAqL1xuXG4vKipcbiAqIExlYXJuRGFzaCBibG9jayBmdW5jdGlvbnNcbiAqL1xuaW1wb3J0IHsgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCwgbGRsbXNfZ2V0X3Blcl9wYWdlIH0gZnJvbSAnLi4vbGRsbXMuanMnO1xuXG4vKipcbiAqIEludGVybmFsIGJsb2NrIGxpYnJhcmllc1xuICovXG52YXIgX3dwJGkxOG4gPSB3cC5pMThuLFxuICAgIF9fID0gX3dwJGkxOG4uX18sXG4gICAgX3ggPSBfd3AkaTE4bi5feCxcbiAgICBzcHJpbnRmID0gX3dwJGkxOG4uc3ByaW50ZjtcbnZhciByZWdpc3RlckJsb2NrVHlwZSA9IHdwLmJsb2Nrcy5yZWdpc3RlckJsb2NrVHlwZTtcbnZhciBJbnNwZWN0b3JDb250cm9scyA9IHdwLmVkaXRvci5JbnNwZWN0b3JDb250cm9scztcbnZhciBfd3AkY29tcG9uZW50cyA9IHdwLmNvbXBvbmVudHMsXG4gICAgU2VydmVyU2lkZVJlbmRlciA9IF93cCRjb21wb25lbnRzLlNlcnZlclNpZGVSZW5kZXIsXG4gICAgUGFuZWxCb2R5ID0gX3dwJGNvbXBvbmVudHMuUGFuZWxCb2R5LFxuICAgIFJhbmdlQ29udHJvbCA9IF93cCRjb21wb25lbnRzLlJhbmdlQ29udHJvbCxcbiAgICBTZWxlY3RDb250cm9sID0gX3dwJGNvbXBvbmVudHMuU2VsZWN0Q29udHJvbCxcbiAgICBUb2dnbGVDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVG9nZ2xlQ29udHJvbCxcbiAgICBUZXh0Q29udHJvbCA9IF93cCRjb21wb25lbnRzLlRleHRDb250cm9sO1xuXG5cbnJlZ2lzdGVyQmxvY2tUeXBlKCdsZWFybmRhc2gvbGQtdG9waWMtbGlzdCcsIHtcblx0dGl0bGU6IHNwcmludGYoX3goJ0xlYXJuRGFzaCAlcyBMaXN0JywgJ3BsYWNlaG9sZGVyOiBUb3BpYycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgndG9waWMnKSksXG5cdGRlc2NyaXB0aW9uOiBzcHJpbnRmKF94KCdUaGlzIGJsb2NrIHNob3dzIGEgbGlzdCBvZiAlcy4nLCAncGxhY2Vob2xkZXJzOiB0b3BpY3MnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3RvcGljcycpKSxcblx0aWNvbjogJ2xpc3QtdmlldycsXG5cdGNhdGVnb3J5OiAnbGVhcm5kYXNoLWJsb2NrcycsXG5cdGV4YW1wbGU6IHtcblx0XHRhdHRyaWJ1dGVzOiB7XG5cdFx0XHRleGFtcGxlX3Nob3c6IDFcblx0XHR9XG5cdH0sXG5cdHN1cHBvcnRzOiB7XG5cdFx0Y3VzdG9tQ2xhc3NOYW1lOiBmYWxzZVxuXHR9LFxuXHRhdHRyaWJ1dGVzOiB7XG5cdFx0b3JkZXJieToge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnSUQnXG5cdFx0fSxcblx0XHRvcmRlcjoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnREVTQydcblx0XHR9LFxuXHRcdHBlcl9wYWdlOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRjb3Vyc2VfaWQ6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdGxlc3Nvbl9pZDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0c2hvd19jb250ZW50OiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiB0cnVlXG5cdFx0fSxcblx0XHRzaG93X3RodW1ibmFpbDoge1xuXHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0ZGVmYXVsdDogdHJ1ZVxuXHRcdH0sXG5cdFx0dG9waWNfY2F0ZWdvcnlfbmFtZToge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0dG9waWNfY2F0OiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHR0b3BpY19jYXRlZ29yeXNlbGVjdG9yOiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiBmYWxzZVxuXHRcdH0sXG5cdFx0dG9waWNfdGFnOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHR0b3BpY190YWdfaWQ6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdGNhdGVnb3J5X25hbWU6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdGNhdDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0Y2F0ZWdvcnlzZWxlY3Rvcjoge1xuXHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0ZGVmYXVsdDogZmFsc2Vcblx0XHR9LFxuXHRcdHRhZzoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0dGFnX2lkOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRjb3Vyc2VfZ3JpZDoge1xuXHRcdFx0dHlwZTogJ2Jvb2xlYW4nXG5cdFx0fSxcblx0XHRjb2w6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogbGRsbXNfc2V0dGluZ3NbJ3BsdWdpbnMnXVsnbGVhcm5kYXNoLWNvdXJzZS1ncmlkJ11bJ2VuYWJsZWQnXVsnY29sX2RlZmF1bHQnXSB8fCAzXG5cdFx0fSxcblx0XHRwcmV2aWV3X3Nob3c6IHtcblx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdGRlZmF1bHQ6IHRydWVcblx0XHR9LFxuXHRcdGV4YW1wbGVfc2hvdzoge1xuXHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0ZGVmYXVsdDogMFxuXHRcdH1cblx0fSxcblx0ZWRpdDogZnVuY3Rpb24gZWRpdChwcm9wcykge1xuXHRcdHZhciBfcHJvcHMkYXR0cmlidXRlcyA9IHByb3BzLmF0dHJpYnV0ZXMsXG5cdFx0ICAgIG9yZGVyYnkgPSBfcHJvcHMkYXR0cmlidXRlcy5vcmRlcmJ5LFxuXHRcdCAgICBvcmRlciA9IF9wcm9wcyRhdHRyaWJ1dGVzLm9yZGVyLFxuXHRcdCAgICBwZXJfcGFnZSA9IF9wcm9wcyRhdHRyaWJ1dGVzLnBlcl9wYWdlLFxuXHRcdCAgICBjb3Vyc2VfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy5jb3Vyc2VfaWQsXG5cdFx0ICAgIGxlc3Nvbl9pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLmxlc3Nvbl9pZCxcblx0XHQgICAgc2hvd19jb250ZW50ID0gX3Byb3BzJGF0dHJpYnV0ZXMuc2hvd19jb250ZW50LFxuXHRcdCAgICBzaG93X3RodW1ibmFpbCA9IF9wcm9wcyRhdHRyaWJ1dGVzLnNob3dfdGh1bWJuYWlsLFxuXHRcdCAgICB0b3BpY19jYXRlZ29yeV9uYW1lID0gX3Byb3BzJGF0dHJpYnV0ZXMudG9waWNfY2F0ZWdvcnlfbmFtZSxcblx0XHQgICAgdG9waWNfY2F0ID0gX3Byb3BzJGF0dHJpYnV0ZXMudG9waWNfY2F0LFxuXHRcdCAgICB0b3BpY19jYXRlZ29yeXNlbGVjdG9yID0gX3Byb3BzJGF0dHJpYnV0ZXMudG9waWNfY2F0ZWdvcnlzZWxlY3Rvcixcblx0XHQgICAgdG9waWNfdGFnID0gX3Byb3BzJGF0dHJpYnV0ZXMudG9waWNfdGFnLFxuXHRcdCAgICB0b3BpY190YWdfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy50b3BpY190YWdfaWQsXG5cdFx0ICAgIGNhdGVnb3J5X25hbWUgPSBfcHJvcHMkYXR0cmlidXRlcy5jYXRlZ29yeV9uYW1lLFxuXHRcdCAgICBjYXQgPSBfcHJvcHMkYXR0cmlidXRlcy5jYXQsXG5cdFx0ICAgIGNhdGVnb3J5c2VsZWN0b3IgPSBfcHJvcHMkYXR0cmlidXRlcy5jYXRlZ29yeXNlbGVjdG9yLFxuXHRcdCAgICB0YWcgPSBfcHJvcHMkYXR0cmlidXRlcy50YWcsXG5cdFx0ICAgIHRhZ19pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLnRhZ19pZCxcblx0XHQgICAgY291cnNlX2dyaWQgPSBfcHJvcHMkYXR0cmlidXRlcy5jb3Vyc2VfZ3JpZCxcblx0XHQgICAgY29sID0gX3Byb3BzJGF0dHJpYnV0ZXMuY29sLFxuXHRcdCAgICBwcmV2aWV3X3Nob3cgPSBfcHJvcHMkYXR0cmlidXRlcy5wcmV2aWV3X3Nob3csXG5cdFx0ICAgIGV4YW1wbGVfc2hvdyA9IF9wcm9wcyRhdHRyaWJ1dGVzLmV4YW1wbGVfc2hvdyxcblx0XHQgICAgc2V0QXR0cmlidXRlcyA9IHByb3BzLnNldEF0dHJpYnV0ZXM7XG5cblxuXHRcdHZhciBmaWVsZF9zaG93X2NvbnRlbnQgPSAnJztcblx0XHR2YXIgZmllbGRfc2hvd190aHVtYm5haWwgPSAnJztcblx0XHR2YXIgcGFuZWxfdG9waWNfZ3JpZF9zZWN0aW9uID0gJyc7XG5cblx0XHR2YXIgY291cnNlX2dyaWRfZGVmYXVsdCA9IHRydWU7XG5cdFx0aWYgKGxkbG1zX3NldHRpbmdzWydwbHVnaW5zJ11bJ2xlYXJuZGFzaC1jb3Vyc2UtZ3JpZCddWydlbmFibGVkJ10gPT09IHRydWUpIHtcblx0XHRcdGlmICh0eXBlb2YgY291cnNlX2dyaWQgIT09ICd1bmRlZmluZWQnICYmIChjb3Vyc2VfZ3JpZCA9PSB0cnVlIHx8IGNvdXJzZV9ncmlkID09IGZhbHNlKSkge1xuXHRcdFx0XHRjb3Vyc2VfZ3JpZF9kZWZhdWx0ID0gY291cnNlX2dyaWQ7XG5cdFx0XHR9XG5cblx0XHRcdHZhciB0b3BpY19ncmlkX3NlY3Rpb25fb3BlbiA9IGZhbHNlO1xuXHRcdFx0aWYgKGNvdXJzZV9ncmlkX2RlZmF1bHQgPT0gdHJ1ZSkge1xuXHRcdFx0XHR0b3BpY19ncmlkX3NlY3Rpb25fb3BlbiA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRwYW5lbF90b3BpY19ncmlkX3NlY3Rpb24gPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFBhbmVsQm9keSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRpdGxlOiBfXygnR3JpZCBTZXR0aW5ncycsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRpbml0aWFsT3BlbjogdG9waWNfZ3JpZF9zZWN0aW9uX29wZW5cblx0XHRcdFx0fSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRvZ2dsZUNvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ1Nob3cgR3JpZCcsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRjaGVja2VkOiAhIWNvdXJzZV9ncmlkX2RlZmF1bHQsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGNvdXJzZV9ncmlkKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGNvdXJzZV9ncmlkOiBjb3Vyc2VfZ3JpZCB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoUmFuZ2VDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdDb2x1bW5zJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdHZhbHVlOiBjb2wgfHwgbGRsbXNfc2V0dGluZ3NbJ3BsdWdpbnMnXVsnbGVhcm5kYXNoLWNvdXJzZS1ncmlkJ11bJ2VuYWJsZWQnXVsnY29sX2RlZmF1bHQnXSxcblx0XHRcdFx0XHRtaW46IDEsXG5cdFx0XHRcdFx0bWF4OiBsZGxtc19zZXR0aW5nc1sncGx1Z2lucyddWydsZWFybmRhc2gtY291cnNlLWdyaWQnXVsnZW5hYmxlZCddWydjb2xfbWF4J10sXG5cdFx0XHRcdFx0c3RlcDogMSxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoY29sKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGNvbDogY29sIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0ZmllbGRfc2hvd19jb250ZW50ID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRvZ2dsZUNvbnRyb2wsIHtcblx0XHRcdGxhYmVsOiBfXygnU2hvdyBDb250ZW50JywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0Y2hlY2tlZDogISFzaG93X2NvbnRlbnQsXG5cdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2Uoc2hvd19jb250ZW50KSB7XG5cdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc2hvd19jb250ZW50OiBzaG93X2NvbnRlbnQgfSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRmaWVsZF9zaG93X3RodW1ibmFpbCA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRsYWJlbDogX18oJ1Nob3cgVGh1bWJuYWlsJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0Y2hlY2tlZDogISFzaG93X3RodW1ibmFpbCxcblx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShzaG93X3RodW1ibmFpbCkge1xuXHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHNob3dfdGh1bWJuYWlsOiBzaG93X3RodW1ibmFpbCB9KTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHZhciBwYW5lbGJvZHlfaGVhZGVyID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0e1xuXHRcdFx0XHR0aXRsZTogX18oJ1NldHRpbmdzJywgJ2xlYXJuZGFzaCcpXG5cdFx0XHR9LFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBzcHJpbnRmKF94KCclcyBJRCcsICdDb3Vyc2UgSUQnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcblx0XHRcdFx0aGVscDogc3ByaW50ZihfeCgnRW50ZXIgc2luZ2xlICUxJHMgSUQgdG8gbGltaXQgbGlzdGluZy4gTGVhdmUgYmxhbmsgaWYgdXNlZCB3aXRoaW4gYSAlMiRzLicsICdwbGFjZWhvbGRlcnM6IGNvdXJzZSwgY291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuXHRcdFx0XHR2YWx1ZTogY291cnNlX2lkIHx8ICcnLFxuXHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoY291cnNlX2lkKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBjb3Vyc2VfaWQ6IGNvdXJzZV9pZCB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJyVzIElEJywgJ0xlc3NvbiBJRCcsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnbGVzc29uJykpLFxuXHRcdFx0XHRoZWxwOiBzcHJpbnRmKF94KCdFbnRlciBzaW5nbGUgJTEkcyBJRCB0byBsaW1pdCBsaXN0aW5nLiBMZWF2ZSBibGFuayBpZiB1c2VkIHdpdGhpbiBhICUyJHMuJywgJ3BsYWNlaG9sZGVyczogbGVzc29uLCBjb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2xlc3NvbicpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG5cdFx0XHRcdHZhbHVlOiBsZXNzb25faWQgfHwgJycsXG5cdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShsZXNzb25faWQpIHtcblx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGxlc3Nvbl9pZDogbGVzc29uX2lkIH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdGtleTogJ29yZGVyYnknLFxuXHRcdFx0XHRsYWJlbDogX18oJ09yZGVyIGJ5JywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHR2YWx1ZTogb3JkZXJieSxcblx0XHRcdFx0b3B0aW9uczogW3tcblx0XHRcdFx0XHRsYWJlbDogX18oJ0lEIC0gT3JkZXIgYnkgcG9zdCBpZC4gKGRlZmF1bHQpJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdHZhbHVlOiAnSUQnXG5cdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ1RpdGxlIC0gT3JkZXIgYnkgcG9zdCB0aXRsZScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3RpdGxlJ1xuXHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdEYXRlIC0gT3JkZXIgYnkgcG9zdCBkYXRlJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdHZhbHVlOiAnZGF0ZSdcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnTWVudSAtIE9yZGVyIGJ5IFBhZ2UgT3JkZXIgVmFsdWUnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdtZW51X29yZGVyJ1xuXHRcdFx0XHR9XSxcblx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKG9yZGVyYnkpIHtcblx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IG9yZGVyYnk6IG9yZGVyYnkgfSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcblx0XHRcdFx0a2V5OiAnb3JkZXInLFxuXHRcdFx0XHRsYWJlbDogX18oJ09yZGVyJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHR2YWx1ZTogb3JkZXIsXG5cdFx0XHRcdG9wdGlvbnM6IFt7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdERVNDIC0gaGlnaGVzdCB0byBsb3dlc3QgdmFsdWVzIChkZWZhdWx0KScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ0RFU0MnXG5cdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ0FTQyAtIGxvd2VzdCB0byBoaWdoZXN0IHZhbHVlcycsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ0FTQydcblx0XHRcdFx0fV0sXG5cdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShvcmRlcikge1xuXHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgb3JkZXI6IG9yZGVyIH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnJXMgcGVyIHBhZ2UnLCAncGxhY2Vob2xkZXI6IFRvcGljcycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgndG9waWNzJykpLFxuXHRcdFx0XHRoZWxwOiBzcHJpbnRmKF94KCdMZWF2ZSBlbXB0eSBmb3IgZGVmYXVsdCAoJWQpIG9yIDAgdG8gc2hvdyBhbGwgaXRlbXMuJywgJ3BsYWNlaG9sZGVyOiBkZWZhdWx0IHBlciBwYWdlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfcGVyX3BhZ2UoJ3Blcl9wYWdlJykpLFxuXHRcdFx0XHR2YWx1ZTogcGVyX3BhZ2UgfHwgJycsXG5cdFx0XHRcdHR5cGU6ICdudW1iZXInLFxuXHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocGVyX3BhZ2UpIHtcblx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHBlcl9wYWdlOiBwZXJfcGFnZSB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmaWVsZF9zaG93X2NvbnRlbnQsXG5cdFx0XHRmaWVsZF9zaG93X3RodW1ibmFpbFxuXHRcdCk7XG5cblx0XHR2YXIgcGFuZWxfdG9waWNfY2F0ZWdvcnlfc2VjdGlvbiA9ICcnO1xuXHRcdGlmIChsZGxtc19zZXR0aW5nc1snc2V0dGluZ3MnXVsndG9waWNzX3RheG9ub21pZXMnXVsnbGRfdG9waWNfY2F0ZWdvcnknXSA9PT0gJ3llcycpIHtcblx0XHRcdHZhciBwYW5lbF90b3BpY19jYXRlZ29yeV9zZWN0aW9uX29wZW4gPSBmYWxzZTtcblx0XHRcdGlmICh0b3BpY19jYXRlZ29yeV9uYW1lICE9ICcnIHx8IHRvcGljX2NhdCAhPSAnJykge1xuXHRcdFx0XHRwYW5lbF90b3BpY19jYXRlZ29yeV9zZWN0aW9uX29wZW4gPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0cGFuZWxfdG9waWNfY2F0ZWdvcnlfc2VjdGlvbiA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGl0bGU6IHNwcmludGYoX3goJyVzIENhdGVnb3J5IFNldHRpbmdzJywgJ3BsYWNlaG9sZGVyOiBUb3BpYycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgndG9waWMnKSksXG5cdFx0XHRcdFx0aW5pdGlhbE9wZW46IHBhbmVsX3RvcGljX2NhdGVnb3J5X3NlY3Rpb25fb3BlblxuXHRcdFx0XHR9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnJXMgQ2F0ZWdvcnkgU2x1ZycsICdwbGFjZWhvbGRlcjogVG9waWMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3RvcGljJykpLFxuXHRcdFx0XHRcdGhlbHA6IHNwcmludGYoX3goJ3Nob3dzICVzIHdpdGggbWVudGlvbmVkIGNhdGVnb3J5IHNsdWcuJywgJ3BsYWNlaG9sZGVyOiB0b3BpY3MnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3RvcGljcycpKSxcblx0XHRcdFx0XHR2YWx1ZTogdG9waWNfY2F0ZWdvcnlfbmFtZSB8fCAnJyxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodG9waWNfY2F0ZWdvcnlfbmFtZSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyB0b3BpY19jYXRlZ29yeV9uYW1lOiB0b3BpY19jYXRlZ29yeV9uYW1lIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBzcHJpbnRmKF94KCclcyBDYXRlZ29yeSBJRCcsICdwbGFjZWhvbGRlcjogVG9waWMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3RvcGljJykpLFxuXHRcdFx0XHRcdGhlbHA6IHNwcmludGYoX3goJ3Nob3dzICVzIHdpdGggbWVudGlvbmVkIGNhdGVnb3J5IElELicsICdwbGFjZWhvbGRlcjogdG9waWNzJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCd0b3BpY3MnKSksXG5cdFx0XHRcdFx0dmFsdWU6IHRvcGljX2NhdCB8fCAnJyxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodG9waWNfY2F0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHRvcGljX2NhdDogdG9waWNfY2F0IH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJyVzIENhdGVnb3J5IFNlbGVjdG9yJywgJ3BsYWNlaG9sZGVyOiB0b3BpYycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgndG9waWMnKSksXG5cdFx0XHRcdFx0aGVscDogc3ByaW50ZihfeCgnc2hvd3MgYSAlcyBjYXRlZ29yeSBkcm9wZG93bi4nLCAncGxhY2Vob2xkZXI6IHRvcGljcycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgndG9waWNzJykpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6ICEhdG9waWNfY2F0ZWdvcnlzZWxlY3Rvcixcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodG9waWNfY2F0ZWdvcnlzZWxlY3Rvcikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyB0b3BpY19jYXRlZ29yeXNlbGVjdG9yOiB0b3BpY19jYXRlZ29yeXNlbGVjdG9yIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0dmFyIHBhbmVsX3RvcGljX3RhZ19zZWN0aW9uID0gJyc7XG5cdFx0aWYgKGxkbG1zX3NldHRpbmdzWydzZXR0aW5ncyddWyd0b3BpY3NfdGF4b25vbWllcyddWydsZF90b3BpY190YWcnXSA9PT0gJ3llcycpIHtcblx0XHRcdHZhciBwYW5lbF90b3BpY190YWdfc2VjdGlvbl9vcGVuID0gZmFsc2U7XG5cdFx0XHRpZiAodG9waWNfdGFnICE9ICcnIHx8IHRvcGljX3RhZ19pZCAhPSAnJykge1xuXHRcdFx0XHRwYW5lbF90b3BpY190YWdfc2VjdGlvbl9vcGVuID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdHBhbmVsX3RvcGljX3RhZ19zZWN0aW9uID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0aXRsZTogc3ByaW50ZihfeCgnJXMgVGFnIFNldHRpbmdzJywgJ3BsYWNlaG9sZGVyOiBUb3BpYycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgndG9waWMnKSksXG5cdFx0XHRcdFx0aW5pdGlhbE9wZW46IHBhbmVsX3RvcGljX3RhZ19zZWN0aW9uX29wZW5cblx0XHRcdFx0fSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJyVzIFRhZyBTbHVnJywgJ3BsYWNlaG9sZGVyOiBUb3BpYycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgndG9waWMnKSksXG5cdFx0XHRcdFx0aGVscDogc3ByaW50ZihfeCgnc2hvd3MgJXMgd2l0aCBtZW50aW9uZWQgdGFnIHNsdWcuJywgJ3BsYWNlaG9sZGVyOiB0b3BpY3MnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3RvcGljcycpKSxcblx0XHRcdFx0XHR2YWx1ZTogdG9waWNfdGFnIHx8ICcnLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh0b3BpY190YWcpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgdG9waWNfdGFnOiB0b3BpY190YWcgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJyVzIFRhZyBJRCcsICdwbGFjZWhvbGRlcjogVG9waWMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3RvcGljJykpLFxuXHRcdFx0XHRcdGhlbHA6IHNwcmludGYoX3goJ3Nob3dzICVzIHdpdGggbWVudGlvbmVkIHRhZyBJRC4nLCAncGxhY2Vob2xkZXI6IFRvcGljcycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgndG9waWNzJykpLFxuXHRcdFx0XHRcdHZhbHVlOiB0b3BpY190YWdfaWQgfHwgJycsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHRvcGljX3RhZ19pZCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyB0b3BpY190YWdfaWQ6IHRvcGljX3RhZ19pZCB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHZhciBwYW5lbF93cF9jYXRlZ29yeV9zZWN0aW9uID0gJyc7XG5cdFx0aWYgKGxkbG1zX3NldHRpbmdzWydzZXR0aW5ncyddWyd0b3BpY3NfdGF4b25vbWllcyddWyd3cF9wb3N0X2NhdGVnb3J5J10gPT09ICd5ZXMnKSB7XG5cdFx0XHR2YXIgcGFuZWxfd3BfY2F0ZWdvcnlfc2VjdGlvbl9vcGVuID0gZmFsc2U7XG5cdFx0XHRpZiAoY2F0ZWdvcnlfbmFtZSAhPSAnJyB8fCBjYXQgIT0gJycpIHtcblx0XHRcdFx0cGFuZWxfd3BfY2F0ZWdvcnlfc2VjdGlvbl9vcGVuID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdHBhbmVsX3dwX2NhdGVnb3J5X3NlY3Rpb24gPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFBhbmVsQm9keSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRpdGxlOiBfXygnV1AgQ2F0ZWdvcnkgU2V0dGluZ3MnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0aW5pdGlhbE9wZW46IHBhbmVsX3dwX2NhdGVnb3J5X3NlY3Rpb25fb3BlblxuXHRcdFx0XHR9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ1dQIENhdGVnb3J5IFNsdWcnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0aGVscDogc3ByaW50ZihfeCgnc2hvd3MgJXMgd2l0aCBtZW50aW9uZWQgV1AgY2F0ZWdvcnkgc2x1Zy4nLCAncGxhY2Vob2xkZXI6IFRvcGljcycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgndG9waWNzJykpLFxuXHRcdFx0XHRcdHZhbHVlOiBjYXRlZ29yeV9uYW1lIHx8ICcnLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShjYXRlZ29yeV9uYW1lKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGNhdGVnb3J5X25hbWU6IGNhdGVnb3J5X25hbWUgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJyVzIENhdGVnb3J5IElEJywgJ3BsYWNlaG9sZGVyOiBUb3BpYycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgndG9waWMnKSksXG5cdFx0XHRcdFx0aGVscDogc3ByaW50ZihfeCgnc2hvd3MgJXMgd2l0aCBtZW50aW9uZWQgY2F0ZWdvcnkgSUQuJywgJ3BsYWNlaG9sZGVyOiBUb3BpY3MnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3RvcGljcycpKSxcblx0XHRcdFx0XHR2YWx1ZTogY2F0IHx8ICcnLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShjYXQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgY2F0OiBjYXQgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRvZ2dsZUNvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ1dQIENhdGVnb3J5IFNlbGVjdG9yJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdGhlbHA6IF9fKCdzaG93cyBhIFdQIGNhdGVnb3J5IGRyb3Bkb3duLicsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRjaGVja2VkOiAhIWNhdGVnb3J5c2VsZWN0b3IsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGNhdGVnb3J5c2VsZWN0b3IpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgY2F0ZWdvcnlzZWxlY3RvcjogY2F0ZWdvcnlzZWxlY3RvciB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHZhciBwYW5lbF93cF90YWdfc2VjdGlvbiA9ICcnO1xuXHRcdGlmIChsZGxtc19zZXR0aW5nc1snc2V0dGluZ3MnXVsndG9waWNzX3RheG9ub21pZXMnXVsnd3BfcG9zdF90YWcnXSA9PT0gJ3llcycpIHtcblx0XHRcdHZhciBwYW5lbF93cF90YWdfc2VjdGlvbl9vcGVuID0gZmFsc2U7XG5cdFx0XHRpZiAodGFnICE9ICcnIHx8IHRhZ19pZCAhPSAnJykge1xuXHRcdFx0XHRwYW5lbF93cF90YWdfc2VjdGlvbl9vcGVuID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdHBhbmVsX3dwX3RhZ19zZWN0aW9uID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0aXRsZTogX18oJ1dQIFRhZyBTZXR0aW5ncycsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRpbml0aWFsT3BlbjogcGFuZWxfd3BfdGFnX3NlY3Rpb25fb3BlblxuXHRcdFx0XHR9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ1dQIFRhZyBTbHVnJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdGhlbHA6IHNwcmludGYoX3goJ3Nob3dzICVzIHdpdGggbWVudGlvbmVkIFdQIHRhZyBzbHVnLicsICdwbGFjZWhvbGRlcjogVG9waWNzJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCd0b3BpY3MnKSksXG5cdFx0XHRcdFx0dmFsdWU6IHRhZyB8fCAnJyxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodGFnKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHRhZzogdGFnIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnV1AgVGFnIElEJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdGhlbHA6IHNwcmludGYoX3goJ3Nob3dzICVzIHdpdGggbWVudGlvbmVkIFdQIHRhZyBJRC4nLCAncGxhY2Vob2xkZXI6IFRvcGljcycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgndG9waWNzJykpLFxuXHRcdFx0XHRcdHZhbHVlOiB0YWdfaWQgfHwgJycsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHRhZ19pZCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyB0YWdfaWQ6IHRhZ19pZCB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHZhciBwYW5lbF9wcmV2aWV3ID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0e1xuXHRcdFx0XHR0aXRsZTogX18oJ1ByZXZpZXcnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdGluaXRpYWxPcGVuOiBmYWxzZVxuXHRcdFx0fSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnU2hvdyBQcmV2aWV3JywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRjaGVja2VkOiAhIXByZXZpZXdfc2hvdyxcblx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHByZXZpZXdfc2hvdykge1xuXHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcHJldmlld19zaG93OiBwcmV2aWV3X3Nob3cgfSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdHZhciBpbnNwZWN0b3JDb250cm9scyA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdEluc3BlY3RvckNvbnRyb2xzLFxuXHRcdFx0bnVsbCxcblx0XHRcdHBhbmVsYm9keV9oZWFkZXIsXG5cdFx0XHRwYW5lbF90b3BpY19ncmlkX3NlY3Rpb24sXG5cdFx0XHRwYW5lbF90b3BpY19jYXRlZ29yeV9zZWN0aW9uLFxuXHRcdFx0cGFuZWxfdG9waWNfdGFnX3NlY3Rpb24sXG5cdFx0XHRwYW5lbF93cF9jYXRlZ29yeV9zZWN0aW9uLFxuXHRcdFx0cGFuZWxfd3BfdGFnX3NlY3Rpb24sXG5cdFx0XHRwYW5lbF9wcmV2aWV3XG5cdFx0KTtcblxuXHRcdGZ1bmN0aW9uIGRvX3NlcnZlcnNpZGVfcmVuZGVyKGF0dHJpYnV0ZXMpIHtcblx0XHRcdGlmIChhdHRyaWJ1dGVzLnByZXZpZXdfc2hvdyA9PSB0cnVlKSB7XG5cdFx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoU2VydmVyU2lkZVJlbmRlciwge1xuXHRcdFx0XHRcdGJsb2NrOiAnbGVhcm5kYXNoL2xkLXRvcGljLWxpc3QnLFxuXHRcdFx0XHRcdGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXNcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gX18oJ1tsZF90b3BpY19saXN0XSBzaG9ydGNvZGUgb3V0cHV0IHNob3duIGhlcmUnLCAnbGVhcm5kYXNoJyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIFtpbnNwZWN0b3JDb250cm9scywgZG9fc2VydmVyc2lkZV9yZW5kZXIocHJvcHMuYXR0cmlidXRlcyldO1xuXHR9LFxuXG5cdHNhdmU6IGZ1bmN0aW9uIHNhdmUocHJvcHMpIHt9XG59KTsiLCIvKipcbiAqIExlYXJuRGFzaCBCbG9jayBsZC1xdWl6LWxpc3RcbiAqXG4gKiBAc2luY2UgMi41LjlcbiAqIEBwYWNrYWdlIExlYXJuRGFzaFxuICovXG5cbi8qKlxuICogTGVhcm5EYXNoIGJsb2NrIGZ1bmN0aW9uc1xuICovXG5pbXBvcnQgeyBsZGxtc19nZXRfY3VzdG9tX2xhYmVsLCBsZGxtc19nZXRfcGVyX3BhZ2UgfSBmcm9tICcuLi9sZGxtcy5qcyc7XG5cbi8qKlxuICogSW50ZXJuYWwgYmxvY2sgbGlicmFyaWVzXG4gKi9cbnZhciBfd3AkaTE4biA9IHdwLmkxOG4sXG4gICAgX18gPSBfd3AkaTE4bi5fXyxcbiAgICBfeCA9IF93cCRpMThuLl94LFxuICAgIHNwcmludGYgPSBfd3AkaTE4bi5zcHJpbnRmO1xudmFyIHJlZ2lzdGVyQmxvY2tUeXBlID0gd3AuYmxvY2tzLnJlZ2lzdGVyQmxvY2tUeXBlO1xudmFyIEluc3BlY3RvckNvbnRyb2xzID0gd3AuZWRpdG9yLkluc3BlY3RvckNvbnRyb2xzO1xudmFyIF93cCRjb21wb25lbnRzID0gd3AuY29tcG9uZW50cyxcbiAgICBTZXJ2ZXJTaWRlUmVuZGVyID0gX3dwJGNvbXBvbmVudHMuU2VydmVyU2lkZVJlbmRlcixcbiAgICBQYW5lbEJvZHkgPSBfd3AkY29tcG9uZW50cy5QYW5lbEJvZHksXG4gICAgUmFuZ2VDb250cm9sID0gX3dwJGNvbXBvbmVudHMuUmFuZ2VDb250cm9sLFxuICAgIFNlbGVjdENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5TZWxlY3RDb250cm9sLFxuICAgIFRvZ2dsZUNvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5Ub2dnbGVDb250cm9sLFxuICAgIFRleHRDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVGV4dENvbnRyb2w7XG5cblxucmVnaXN0ZXJCbG9ja1R5cGUoJ2xlYXJuZGFzaC9sZC1xdWl6LWxpc3QnLCB7XG5cdHRpdGxlOiBzcHJpbnRmKF94KCdMZWFybkRhc2ggJXMgTGlzdCcsICdwbGFjZWhvbGRlcjogUXVpeicsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpeicpKSxcblx0ZGVzY3JpcHRpb246IHNwcmludGYoX3goJ1RoaXMgYmxvY2sgc2hvd3MgYSBsaXN0IG9mICVzLicsICdwbGFjZWhvbGRlcnM6IHF1aXp6ZXMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3F1aXp6ZXMnKSksXG5cdGljb246ICdsaXN0LXZpZXcnLFxuXHRjYXRlZ29yeTogJ2xlYXJuZGFzaC1ibG9ja3MnLFxuXHRleGFtcGxlOiB7XG5cdFx0YXR0cmlidXRlczoge1xuXHRcdFx0ZXhhbXBsZV9zaG93OiAxXG5cdFx0fVxuXHR9LFxuXHRzdXBwb3J0czoge1xuXHRcdGN1c3RvbUNsYXNzTmFtZTogZmFsc2Vcblx0fSxcblx0YXR0cmlidXRlczoge1xuXHRcdG9yZGVyYnk6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJ0lEJ1xuXHRcdH0sXG5cdFx0b3JkZXI6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJ0RFU0MnXG5cdFx0fSxcblx0XHRwZXJfcGFnZToge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0Y291cnNlX2lkOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRsZXNzb25faWQ6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdHNob3dfY29udGVudDoge1xuXHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0ZGVmYXVsdDogdHJ1ZVxuXHRcdH0sXG5cdFx0c2hvd190aHVtYm5haWw6IHtcblx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdGRlZmF1bHQ6IHRydWVcblx0XHR9LFxuXHRcdHF1aXpfY2F0ZWdvcnlfbmFtZToge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0cXVpel9jYXQ6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdHF1aXpfY2F0ZWdvcnlzZWxlY3Rvcjoge1xuXHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0ZGVmYXVsdDogZmFsc2Vcblx0XHR9LFxuXHRcdHF1aXpfdGFnOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRxdWl6X3RhZ19pZDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0Y2F0ZWdvcnlfbmFtZToge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0Y2F0OiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRjYXRlZ29yeXNlbGVjdG9yOiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiBmYWxzZVxuXHRcdH0sXG5cdFx0dGFnOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHR0YWdfaWQ6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdGNvdXJzZV9ncmlkOiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbidcblx0XHR9LFxuXHRcdGNvbDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiBsZGxtc19zZXR0aW5nc1sncGx1Z2lucyddWydsZWFybmRhc2gtY291cnNlLWdyaWQnXVsnZW5hYmxlZCddWydjb2xfZGVmYXVsdCddIHx8IDNcblx0XHR9LFxuXHRcdHByZXZpZXdfc2hvdzoge1xuXHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0ZGVmYXVsdDogdHJ1ZVxuXHRcdH0sXG5cdFx0ZXhhbXBsZV9zaG93OiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiAwXG5cdFx0fVxuXHR9LFxuXHRlZGl0OiBmdW5jdGlvbiBlZGl0KHByb3BzKSB7XG5cdFx0dmFyIF9wcm9wcyRhdHRyaWJ1dGVzID0gcHJvcHMuYXR0cmlidXRlcyxcblx0XHQgICAgb3JkZXJieSA9IF9wcm9wcyRhdHRyaWJ1dGVzLm9yZGVyYnksXG5cdFx0ICAgIG9yZGVyID0gX3Byb3BzJGF0dHJpYnV0ZXMub3JkZXIsXG5cdFx0ICAgIHBlcl9wYWdlID0gX3Byb3BzJGF0dHJpYnV0ZXMucGVyX3BhZ2UsXG5cdFx0ICAgIGNvdXJzZV9pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLmNvdXJzZV9pZCxcblx0XHQgICAgbGVzc29uX2lkID0gX3Byb3BzJGF0dHJpYnV0ZXMubGVzc29uX2lkLFxuXHRcdCAgICBzaG93X2NvbnRlbnQgPSBfcHJvcHMkYXR0cmlidXRlcy5zaG93X2NvbnRlbnQsXG5cdFx0ICAgIHNob3dfdGh1bWJuYWlsID0gX3Byb3BzJGF0dHJpYnV0ZXMuc2hvd190aHVtYm5haWwsXG5cdFx0ICAgIHF1aXpfY2F0ZWdvcnlfbmFtZSA9IF9wcm9wcyRhdHRyaWJ1dGVzLnF1aXpfY2F0ZWdvcnlfbmFtZSxcblx0XHQgICAgcXVpel9jYXQgPSBfcHJvcHMkYXR0cmlidXRlcy5xdWl6X2NhdCxcblx0XHQgICAgcXVpel9jYXRlZ29yeXNlbGVjdG9yID0gX3Byb3BzJGF0dHJpYnV0ZXMucXVpel9jYXRlZ29yeXNlbGVjdG9yLFxuXHRcdCAgICBxdWl6X3RhZyA9IF9wcm9wcyRhdHRyaWJ1dGVzLnF1aXpfdGFnLFxuXHRcdCAgICBxdWl6X3RhZ19pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLnF1aXpfdGFnX2lkLFxuXHRcdCAgICBjYXRlZ29yeV9uYW1lID0gX3Byb3BzJGF0dHJpYnV0ZXMuY2F0ZWdvcnlfbmFtZSxcblx0XHQgICAgY2F0ID0gX3Byb3BzJGF0dHJpYnV0ZXMuY2F0LFxuXHRcdCAgICBjYXRlZ29yeXNlbGVjdG9yID0gX3Byb3BzJGF0dHJpYnV0ZXMuY2F0ZWdvcnlzZWxlY3Rvcixcblx0XHQgICAgdGFnID0gX3Byb3BzJGF0dHJpYnV0ZXMudGFnLFxuXHRcdCAgICB0YWdfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy50YWdfaWQsXG5cdFx0ICAgIGNvdXJzZV9ncmlkID0gX3Byb3BzJGF0dHJpYnV0ZXMuY291cnNlX2dyaWQsXG5cdFx0ICAgIGNvbCA9IF9wcm9wcyRhdHRyaWJ1dGVzLmNvbCxcblx0XHQgICAgcHJldmlld19zaG93ID0gX3Byb3BzJGF0dHJpYnV0ZXMucHJldmlld19zaG93LFxuXHRcdCAgICBleGFtcGxlX3Nob3cgPSBfcHJvcHMkYXR0cmlidXRlcy5leGFtcGxlX3Nob3csXG5cdFx0ICAgIHNldEF0dHJpYnV0ZXMgPSBwcm9wcy5zZXRBdHRyaWJ1dGVzO1xuXG5cblx0XHR2YXIgZmllbGRfc2hvd19jb250ZW50ID0gJyc7XG5cdFx0dmFyIGZpZWxkX3Nob3dfdGh1bWJuYWlsID0gJyc7XG5cdFx0dmFyIHBhbmVsX3F1aXpfZ3JpZF9zZWN0aW9uID0gJyc7XG5cblx0XHR2YXIgY291cnNlX2dyaWRfZGVmYXVsdCA9IHRydWU7XG5cdFx0aWYgKGxkbG1zX3NldHRpbmdzWydwbHVnaW5zJ11bJ2xlYXJuZGFzaC1jb3Vyc2UtZ3JpZCddWydlbmFibGVkJ10gPT09IHRydWUpIHtcblx0XHRcdGlmICh0eXBlb2YgY291cnNlX2dyaWQgIT09ICd1bmRlZmluZWQnICYmIChjb3Vyc2VfZ3JpZCA9PSB0cnVlIHx8IGNvdXJzZV9ncmlkID09IGZhbHNlKSkge1xuXHRcdFx0XHRjb3Vyc2VfZ3JpZF9kZWZhdWx0ID0gY291cnNlX2dyaWQ7XG5cdFx0XHR9XG5cblx0XHRcdHZhciBxdWl6X2dyaWRfc2VjdGlvbl9vcGVuID0gZmFsc2U7XG5cdFx0XHRpZiAoY291cnNlX2dyaWRfZGVmYXVsdCA9PSB0cnVlKSB7XG5cdFx0XHRcdHF1aXpfZ3JpZF9zZWN0aW9uX29wZW4gPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0cGFuZWxfcXVpel9ncmlkX3NlY3Rpb24gPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFBhbmVsQm9keSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRpdGxlOiBfXygnR3JpZCBTZXR0aW5ncycsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRpbml0aWFsT3BlbjogcXVpel9ncmlkX3NlY3Rpb25fb3BlblxuXHRcdFx0XHR9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnU2hvdyBHcmlkJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6ICEhY291cnNlX2dyaWRfZGVmYXVsdCxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoY291cnNlX2dyaWQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgY291cnNlX2dyaWQ6IGNvdXJzZV9ncmlkIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChSYW5nZUNvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ0NvbHVtbnMnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0dmFsdWU6IGNvbCB8fCBsZGxtc19zZXR0aW5nc1sncGx1Z2lucyddWydsZWFybmRhc2gtY291cnNlLWdyaWQnXVsnZW5hYmxlZCddWydjb2xfZGVmYXVsdCddLFxuXHRcdFx0XHRcdG1pbjogMSxcblx0XHRcdFx0XHRtYXg6IGxkbG1zX3NldHRpbmdzWydwbHVnaW5zJ11bJ2xlYXJuZGFzaC1jb3Vyc2UtZ3JpZCddWydlbmFibGVkJ11bJ2NvbF9tYXgnXSxcblx0XHRcdFx0XHRzdGVwOiAxLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShjb2wpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgY29sOiBjb2wgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRmaWVsZF9zaG93X2NvbnRlbnQgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0bGFiZWw6IF9fKCdTaG93IENvbnRlbnQnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRjaGVja2VkOiAhIXNob3dfY29udGVudCxcblx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShzaG93X2NvbnRlbnQpIHtcblx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBzaG93X2NvbnRlbnQ6IHNob3dfY29udGVudCB9KTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGZpZWxkX3Nob3dfdGh1bWJuYWlsID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRvZ2dsZUNvbnRyb2wsIHtcblx0XHRcdGxhYmVsOiBfXygnU2hvdyBUaHVtYm5haWwnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRjaGVja2VkOiAhIXNob3dfdGh1bWJuYWlsLFxuXHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHNob3dfdGh1bWJuYWlsKSB7XG5cdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgc2hvd190aHVtYm5haWw6IHNob3dfdGh1bWJuYWlsIH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dmFyIHBhbmVsYm9keV9oZWFkZXIgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRQYW5lbEJvZHksXG5cdFx0XHR7XG5cdFx0XHRcdHRpdGxlOiBfXygnU2V0dGluZ3MnLCAnbGVhcm5kYXNoJylcblx0XHRcdH0sXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJyVzIElEJywgJ0NvdXJzZSBJRCcsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuXHRcdFx0XHRoZWxwOiBzcHJpbnRmKF94KCdFbnRlciBzaW5nbGUgJTEkcyBJRCB0byBsaW1pdCBsaXN0aW5nLiBMZWF2ZSBibGFuayBpZiB1c2VkIHdpdGhpbiBhICUyJHMuJywgJ3BsYWNlaG9sZGVyczogY291cnNlLCBjb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG5cdFx0XHRcdHZhbHVlOiBjb3Vyc2VfaWQgfHwgJycsXG5cdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShjb3Vyc2VfaWQpIHtcblx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGNvdXJzZV9pZDogY291cnNlX2lkIH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnJXMgSUQnLCAnTGVzc29uIElEJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdsZXNzb24nKSksXG5cdFx0XHRcdGhlbHA6IHNwcmludGYoX3goJ0VudGVyIHNpbmdsZSAlMSRzIElEIHRvIGxpbWl0IGxpc3RpbmcuIExlYXZlIGJsYW5rIGlmIHVzZWQgd2l0aGluIGEgJTIkcy4gWmVybyBmb3IgZ2xvYmFsLicsICdwbGFjZWhvbGRlcnM6IGxlc3NvbiwgY291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdsZXNzb24nKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnbGVzc29uJykpLFxuXHRcdFx0XHR2YWx1ZTogbGVzc29uX2lkIHx8ICcnLFxuXHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UobGVzc29uX2lkKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBsZXNzb25faWQ6IGxlc3Nvbl9pZCB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoU2VsZWN0Q29udHJvbCwge1xuXHRcdFx0XHRrZXk6ICdvcmRlcmJ5Jyxcblx0XHRcdFx0bGFiZWw6IF9fKCdPcmRlciBieScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0dmFsdWU6IG9yZGVyYnksXG5cdFx0XHRcdG9wdGlvbnM6IFt7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdJRCAtIE9yZGVyIGJ5IHBvc3QgaWQuIChkZWZhdWx0KScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ0lEJ1xuXHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdUaXRsZSAtIE9yZGVyIGJ5IHBvc3QgdGl0bGUnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd0aXRsZSdcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnRGF0ZSAtIE9yZGVyIGJ5IHBvc3QgZGF0ZScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2RhdGUnXG5cdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ01lbnUgLSBPcmRlciBieSBQYWdlIE9yZGVyIFZhbHVlJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbWVudV9vcmRlcidcblx0XHRcdFx0fV0sXG5cdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShvcmRlcmJ5KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBvcmRlcmJ5OiBvcmRlcmJ5IH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdGtleTogJ29yZGVyJyxcblx0XHRcdFx0bGFiZWw6IF9fKCdPcmRlcicsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0dmFsdWU6IG9yZGVyLFxuXHRcdFx0XHRvcHRpb25zOiBbe1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnREVTQyAtIGhpZ2hlc3QgdG8gbG93ZXN0IHZhbHVlcyAoZGVmYXVsdCknLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdERVNDJ1xuXHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdBU0MgLSBsb3dlc3QgdG8gaGlnaGVzdCB2YWx1ZXMnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdBU0MnXG5cdFx0XHRcdH1dLFxuXHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2Uob3JkZXIpIHtcblx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IG9yZGVyOiBvcmRlciB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJyVzIHBlciBwYWdlJywgJ3BsYWNlaG9sZGVyOiBRdWl6emVzcycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpenplcycpKSxcblx0XHRcdFx0aGVscDogc3ByaW50ZihfeCgnTGVhdmUgZW1wdHkgZm9yIGRlZmF1bHQgKCVkKSBvciAwIHRvIHNob3cgYWxsIGl0ZW1zLicsICdwbGFjZWhvbGRlcjogZGVmYXVsdCBwZXIgcGFnZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X3Blcl9wYWdlKCdwZXJfcGFnZScpKSxcblx0XHRcdFx0dmFsdWU6IHBlcl9wYWdlIHx8ICcnLFxuXHRcdFx0XHR0eXBlOiAnbnVtYmVyJyxcblx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHBlcl9wYWdlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBwZXJfcGFnZTogcGVyX3BhZ2UgfSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZmllbGRfc2hvd19jb250ZW50LFxuXHRcdFx0ZmllbGRfc2hvd190aHVtYm5haWxcblx0XHQpO1xuXG5cdFx0dmFyIHBhbmVsX3F1aXpfY2F0ZWdvcnlfc2VjdGlvbiA9ICcnO1xuXHRcdGlmIChsZGxtc19zZXR0aW5nc1snc2V0dGluZ3MnXVsncXVpenplc190YXhvbm9taWVzJ11bJ2xkX3F1aXpfY2F0ZWdvcnknXSA9PT0gJ3llcycpIHtcblx0XHRcdHZhciBwYW5lbF9xdWl6X2NhdGVnb3J5X3NlY3Rpb25fb3BlbiA9IGZhbHNlO1xuXHRcdFx0aWYgKHF1aXpfY2F0ZWdvcnlfbmFtZSAhPSAnJyB8fCBxdWl6X2NhdCAhPSAnJykge1xuXHRcdFx0XHRwYW5lbF9xdWl6X2NhdGVnb3J5X3NlY3Rpb25fb3BlbiA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRwYW5lbF9xdWl6X2NhdGVnb3J5X3NlY3Rpb24gPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFBhbmVsQm9keSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRpdGxlOiBzcHJpbnRmKF94KCclcyBDYXRlZ29yeSBTZXR0aW5ncycsICdwbGFjZWhvbGRlcjogUXVpeicsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpeicpKSxcblx0XHRcdFx0XHRpbml0aWFsT3BlbjogcGFuZWxfcXVpel9jYXRlZ29yeV9zZWN0aW9uX29wZW5cblx0XHRcdFx0fSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJyVzIENhdGVnb3J5IFNsdWcnLCAncGxhY2Vob2xkZXI6IFF1aXonLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3F1aXonKSksXG5cdFx0XHRcdFx0aGVscDogc3ByaW50ZihfeCgnc2hvd3MgJXMgd2l0aCBtZW50aW9uZWQgY2F0ZWdvcnkgc2x1Zy4nLCAncGxhY2Vob2xkZXI6IHF1aXp6ZXMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3F1aXp6ZXMnKSksXG5cdFx0XHRcdFx0dmFsdWU6IHF1aXpfY2F0ZWdvcnlfbmFtZSB8fCAnJyxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocXVpel9jYXRlZ29yeV9uYW1lKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHF1aXpfY2F0ZWdvcnlfbmFtZTogcXVpel9jYXRlZ29yeV9uYW1lIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBzcHJpbnRmKF94KCclcyBDYXRlZ29yeSBJRCcsICdwbGFjZWhvbGRlcjogUXVpeicsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpeicpKSxcblx0XHRcdFx0XHRoZWxwOiBzcHJpbnRmKF94KCdzaG93cyAlcyB3aXRoIG1lbnRpb25lZCBjYXRlZ29yeSBJRC4nLCAncGxhY2Vob2xkZXI6IFF1aXp6ZXMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3F1aXp6ZXMnKSksXG5cdFx0XHRcdFx0dmFsdWU6IHF1aXpfY2F0IHx8ICcnLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShxdWl6X2NhdCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBxdWl6X2NhdDogcXVpel9jYXQgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRvZ2dsZUNvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnJXMgQ2F0ZWdvcnkgU2VsZWN0b3InLCAncGxhY2Vob2xkZXI6IFF1aXonLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3F1aXonKSksXG5cdFx0XHRcdFx0aGVscDogc3ByaW50ZihfeCgnc2hvd3MgYSAlcyBjYXRlZ29yeSBkcm9wZG93bi4nLCAncGxhY2Vob2xkZXI6IFF1aXp6ZXMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3F1aXp6ZXMnKSksXG5cdFx0XHRcdFx0Y2hlY2tlZDogISFxdWl6X2NhdGVnb3J5c2VsZWN0b3IsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHF1aXpfY2F0ZWdvcnlzZWxlY3Rvcikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBxdWl6X2NhdGVnb3J5c2VsZWN0b3I6IHF1aXpfY2F0ZWdvcnlzZWxlY3RvciB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHZhciBwYW5lbF9xdWl6X3RhZ19zZWN0aW9uID0gJyc7XG5cdFx0aWYgKGxkbG1zX3NldHRpbmdzWydzZXR0aW5ncyddWydxdWl6emVzX3RheG9ub21pZXMnXVsnbGRfcXVpel90YWcnXSA9PT0gJ3llcycpIHtcblx0XHRcdHZhciBwYW5lbF9xdWl6X3RhZ19zZWN0aW9uX29wZW4gPSBmYWxzZTtcblx0XHRcdGlmIChxdWl6X3RhZyAhPSAnJyB8fCBxdWl6X3RhZ19pZCAhPSAnJykge1xuXHRcdFx0XHRwYW5lbF9xdWl6X3RhZ19zZWN0aW9uX29wZW4gPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0cGFuZWxfcXVpel90YWdfc2VjdGlvbiA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGl0bGU6IHNwcmludGYoX3goJyVzIFRhZyBTZXR0aW5ncycsICdwbGFjZWhvbGRlcjogUXVpeicsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpeicpKSxcblx0XHRcdFx0XHRpbml0aWFsT3BlbjogcGFuZWxfcXVpel90YWdfc2VjdGlvbl9vcGVuXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBzcHJpbnRmKF94KCclcyBUYWcgU2x1ZycsICdwbGFjZWhvbGRlcjogUXVpeicsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpeicpKSxcblx0XHRcdFx0XHRoZWxwOiBzcHJpbnRmKF94KCdzaG93cyAlcyB3aXRoIG1lbnRpb25lZCB0YWcgc2x1Zy4nLCAncGxhY2Vob2xkZXI6IHF1aXp6ZXMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3F1aXp6ZXMnKSksXG5cdFx0XHRcdFx0dmFsdWU6IHF1aXpfdGFnIHx8ICcnLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShxdWl6X3RhZykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBxdWl6X3RhZzogcXVpel90YWcgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJyVzIFRhZyBJRCcsICdwbGFjZWhvbGRlcjogUXVpeicsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpeicpKSxcblx0XHRcdFx0XHRoZWxwOiBzcHJpbnRmKF94KCdzaG93cyAlcyB3aXRoIG1lbnRpb25lZCB0YWcgSUQuJywgJ3BsYWNlaG9sZGVyOiBRdWl6emVzJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdxdWl6emVzJykpLFxuXHRcdFx0XHRcdHZhbHVlOiBxdWl6X3RhZ19pZCB8fCAnJyxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocXVpel90YWdfaWQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcXVpel90YWdfaWQ6IHF1aXpfdGFnX2lkIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0dmFyIHBhbmVsX3dwX2NhdGVnb3J5X3NlY3Rpb24gPSAnJztcblx0XHRpZiAobGRsbXNfc2V0dGluZ3NbJ3NldHRpbmdzJ11bJ3F1aXp6ZXNfdGF4b25vbWllcyddWyd3cF9wb3N0X2NhdGVnb3J5J10gPT09ICd5ZXMnKSB7XG5cdFx0XHR2YXIgcGFuZWxfd3BfY2F0ZWdvcnlfc2VjdGlvbl9vcGVuID0gZmFsc2U7XG5cdFx0XHRpZiAoY2F0ZWdvcnlfbmFtZSAhPSAnJyB8fCBjYXQgIT0gJycpIHtcblx0XHRcdFx0cGFuZWxfd3BfY2F0ZWdvcnlfc2VjdGlvbl9vcGVuID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdHBhbmVsX3dwX2NhdGVnb3J5X3NlY3Rpb24gPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFBhbmVsQm9keSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRpdGxlOiBfXygnV1AgQ2F0ZWdvcnkgU2V0dGluZ3MnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0aW5pdGlhbE9wZW46IHBhbmVsX3dwX2NhdGVnb3J5X3NlY3Rpb25fb3BlblxuXHRcdFx0XHR9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ1dQIENhdGVnb3J5IFNsdWcnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0aGVscDogc3ByaW50ZihfeCgnc2hvd3MgJXMgd2l0aCBtZW50aW9uZWQgV1AgY2F0ZWdvcnkgc2x1Zy4nLCAncGxhY2Vob2xkZXI6IFF1aXp6ZXMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3F1aXp6ZXMnKSksXG5cdFx0XHRcdFx0dmFsdWU6IGNhdGVnb3J5X25hbWUgfHwgJycsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGNhdGVnb3J5X25hbWUpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgY2F0ZWdvcnlfbmFtZTogY2F0ZWdvcnlfbmFtZSB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnJXMgQ2F0ZWdvcnkgSUQnLCAncGxhY2Vob2xkZXI6IFF1aXonLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3F1aXonKSksXG5cdFx0XHRcdFx0aGVscDogc3ByaW50ZihfeCgnc2hvd3MgJXMgd2l0aCBtZW50aW9uZWQgY2F0ZWdvcnkgSUQuJywgJ3BsYWNlaG9sZGVyOiBRdWl6emVzJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdxdWl6emVzJykpLFxuXHRcdFx0XHRcdHZhbHVlOiBjYXQgfHwgJycsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGNhdCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBjYXQ6IGNhdCB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnV1AgQ2F0ZWdvcnkgU2VsZWN0b3InLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0aGVscDogX18oJ3Nob3dzIGEgV1AgY2F0ZWdvcnkgZHJvcGRvd24uJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdGNoZWNrZWQ6ICEhY2F0ZWdvcnlzZWxlY3Rvcixcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoY2F0ZWdvcnlzZWxlY3Rvcikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBjYXRlZ29yeXNlbGVjdG9yOiBjYXRlZ29yeXNlbGVjdG9yIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0dmFyIHBhbmVsX3dwX3RhZ19zZWN0aW9uID0gJyc7XG5cdFx0aWYgKGxkbG1zX3NldHRpbmdzWydzZXR0aW5ncyddWydxdWl6emVzX3RheG9ub21pZXMnXVsnd3BfcG9zdF90YWcnXSA9PT0gJ3llcycpIHtcblx0XHRcdHZhciBwYW5lbF93cF90YWdfc2VjdGlvbl9vcGVuID0gZmFsc2U7XG5cdFx0XHRpZiAodGFnICE9ICcnIHx8IHRhZ19pZCAhPSAnJykge1xuXHRcdFx0XHRwYW5lbF93cF90YWdfc2VjdGlvbl9vcGVuID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdHBhbmVsX3dwX3RhZ19zZWN0aW9uID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0aXRsZTogX18oJ1dQIFRhZyBTZXR0aW5ncycsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRpbml0aWFsT3BlbjogcGFuZWxfd3BfdGFnX3NlY3Rpb25fb3BlblxuXHRcdFx0XHR9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ1dQIFRhZyBTbHVnJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdGhlbHA6IHNwcmludGYoX3goJ3Nob3dzICVzIHdpdGggbWVudGlvbmVkIFdQIHRhZyBzbHVnLicsICdwbGFjZWhvbGRlcjogUXVpenplcycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpenplcycpKSxcblx0XHRcdFx0XHR2YWx1ZTogdGFnIHx8ICcnLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh0YWcpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgdGFnOiB0YWcgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdXUCBUYWcgSUQnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0aGVscDogc3ByaW50ZihfeCgnc2hvd3MgJXMgd2l0aCBtZW50aW9uZWQgV1AgdGFnIElELicsICdwbGFjZWhvbGRlcjogUXVpenplcycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpenplcycpKSxcblx0XHRcdFx0XHR2YWx1ZTogdGFnX2lkIHx8ICcnLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh0YWdfaWQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgdGFnX2lkOiB0YWdfaWQgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHR2YXIgcGFuZWxfcHJldmlldyA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFBhbmVsQm9keSxcblx0XHRcdHtcblx0XHRcdFx0dGl0bGU6IF9fKCdQcmV2aWV3JywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRpbml0aWFsT3BlbjogZmFsc2Vcblx0XHRcdH0sXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ1Nob3cgUHJldmlldycsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0Y2hlY2tlZDogISFwcmV2aWV3X3Nob3csXG5cdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShwcmV2aWV3X3Nob3cpIHtcblx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHByZXZpZXdfc2hvdzogcHJldmlld19zaG93IH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdCk7XG5cblx0XHR2YXIgaW5zcGVjdG9yQ29udHJvbHMgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRJbnNwZWN0b3JDb250cm9scyxcblx0XHRcdG51bGwsXG5cdFx0XHRwYW5lbGJvZHlfaGVhZGVyLFxuXHRcdFx0cGFuZWxfcXVpel9ncmlkX3NlY3Rpb24sXG5cdFx0XHRwYW5lbF9xdWl6X2NhdGVnb3J5X3NlY3Rpb24sXG5cdFx0XHRwYW5lbF9xdWl6X3RhZ19zZWN0aW9uLFxuXHRcdFx0cGFuZWxfd3BfY2F0ZWdvcnlfc2VjdGlvbixcblx0XHRcdHBhbmVsX3dwX3RhZ19zZWN0aW9uLFxuXHRcdFx0cGFuZWxfcHJldmlld1xuXHRcdCk7XG5cblx0XHRmdW5jdGlvbiBkb19zZXJ2ZXJzaWRlX3JlbmRlcihhdHRyaWJ1dGVzKSB7XG5cdFx0XHRpZiAoYXR0cmlidXRlcy5wcmV2aWV3X3Nob3cgPT0gdHJ1ZSkge1xuXHRcdFx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlcnZlclNpZGVSZW5kZXIsIHtcblx0XHRcdFx0XHRibG9jazogJ2xlYXJuZGFzaC9sZC1xdWl6LWxpc3QnLFxuXHRcdFx0XHRcdGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXNcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gX18oJ1tsZF9xdWl6X2xpc3RdIHNob3J0Y29kZSBvdXRwdXQgc2hvd24gaGVyZScsICdsZWFybmRhc2gnKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gW2luc3BlY3RvckNvbnRyb2xzLCBkb19zZXJ2ZXJzaWRlX3JlbmRlcihwcm9wcy5hdHRyaWJ1dGVzKV07XG5cdH0sXG5cblx0c2F2ZTogZnVuY3Rpb24gc2F2ZShwcm9wcykge31cbn0pOyIsIi8qKlxuICogTGVhcm5EYXNoIEJsb2NrIGxkLWNvdXJzZS1wcm9ncmVzc1xuICpcbiAqIEBzaW5jZSAyLjUuOVxuICogQHBhY2thZ2UgTGVhcm5EYXNoXG4gKi9cblxuLyoqXG4gKiBMZWFybkRhc2ggYmxvY2sgZnVuY3Rpb25zXG4gKi9cbmltcG9ydCB7IGxkbG1zX2dldF9wb3N0X2VkaXRfbWV0YSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCB9IGZyb20gJy4uL2xkbG1zLmpzJztcblxuLyoqXG4gKiBJbnRlcm5hbCBibG9jayBsaWJyYXJpZXNcbiAqL1xudmFyIF93cCRpMThuID0gd3AuaTE4bixcbiAgICBfXyA9IF93cCRpMThuLl9fLFxuICAgIF94ID0gX3dwJGkxOG4uX3gsXG4gICAgc3ByaW50ZiA9IF93cCRpMThuLnNwcmludGY7XG52YXIgcmVnaXN0ZXJCbG9ja1R5cGUgPSB3cC5ibG9ja3MucmVnaXN0ZXJCbG9ja1R5cGU7XG52YXIgX3dwJGVkaXRvciA9IHdwLmVkaXRvcixcbiAgICBJbm5lckJsb2NrcyA9IF93cCRlZGl0b3IuSW5uZXJCbG9ja3MsXG4gICAgSW5zcGVjdG9yQ29udHJvbHMgPSBfd3AkZWRpdG9yLkluc3BlY3RvckNvbnRyb2xzO1xudmFyIF93cCRjb21wb25lbnRzID0gd3AuY29tcG9uZW50cyxcbiAgICBTZXJ2ZXJTaWRlUmVuZGVyID0gX3dwJGNvbXBvbmVudHMuU2VydmVyU2lkZVJlbmRlcixcbiAgICBQYW5lbEJvZHkgPSBfd3AkY29tcG9uZW50cy5QYW5lbEJvZHksXG4gICAgVG9nZ2xlQ29udHJvbCA9IF93cCRjb21wb25lbnRzLlRvZ2dsZUNvbnRyb2wsXG4gICAgVGV4dENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5UZXh0Q29udHJvbDtcblxuXG52YXIgZWwgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQ7XG5cbnZhciBpY29uRWwgPSBlbCgnc3ZnJywgeyB3aWR0aDogMzAwLCBoZWlnaHQ6IDMwMCwgdmlld0JveDogJzAgMCA1MCAxMCcgfSwgZWwoJ3BhdGgnLCB7IGQ6IFwiTTQ3LjEsMGgtNDRjLTEuNywwLTMsMS4zLTMsM3Y0YzAsMS43LDEuMywzLDMsM2g0NGMxLjcsMCwzLTEuMywzLTNWM0M1MC4xLDEuMyw0OC43LDAsNDcuMSwweiBNNDguMSw3YzAsMC42LTAuNCwxLTEsMWgtMTIgVjJoMTJjMC42LDAsMSwwLjQsMSwxVjd6XCIgfSkpO1xuXG5yZWdpc3RlckJsb2NrVHlwZSgnbGVhcm5kYXNoL2xkLWNvdXJzZS1wcm9ncmVzcycsIHtcbiAgICB0aXRsZTogc3ByaW50ZihfeCgnTGVhcm5EYXNoICVzIFByb2dyZXNzJywgJ0xlYXJuRGFzaCBDb3Vyc2UgUHJvZ3Jlc3MnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcbiAgICBkZXNjcmlwdGlvbjogc3ByaW50ZihfeCgnVGhpcyBibG9jayBkaXNwbGF5cyB1c2VycyBwcm9ncmVzcyBiYXIgZm9yIHRoZSAlMSRzLicsICdwbGFjZWhvbGRlcnM6IGNvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuICAgIGljb246IGljb25FbCxcbiAgICBjYXRlZ29yeTogJ2xlYXJuZGFzaC1ibG9ja3MnLFxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgZXhhbXBsZV9zaG93OiAxXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHN1cHBvcnRzOiB7XG4gICAgICAgIGN1c3RvbUNsYXNzTmFtZTogZmFsc2VcbiAgICB9LFxuICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgY291cnNlX2lkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnXG4gICAgICAgIH0sXG4gICAgICAgIHVzZXJfaWQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVmYXVsdDogJydcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlld19zaG93OiB7XG4gICAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgICAgICBkZWZhdWx0OiAxXG4gICAgICAgIH0sXG4gICAgICAgIHByZXZpZXdfdXNlcl9pZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZydcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlld19jb3Vyc2VfaWQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnXG4gICAgICAgIH0sXG4gICAgICAgIGV4YW1wbGVfc2hvdzoge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgZGVmYXVsdDogMFxuICAgICAgICB9XG4gICAgfSxcbiAgICBlZGl0OiBmdW5jdGlvbiBlZGl0KHByb3BzKSB7XG4gICAgICAgIHZhciBjb3Vyc2VfaWQgPSBwcm9wcy5hdHRyaWJ1dGVzLmNvdXJzZV9pZCxcbiAgICAgICAgICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICAgICAgdmFyIF9wcm9wcyRhdHRyaWJ1dGVzID0gcHJvcHMuYXR0cmlidXRlcyxcbiAgICAgICAgICAgIHVzZXJfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy51c2VyX2lkLFxuICAgICAgICAgICAgcHJldmlld19zaG93ID0gX3Byb3BzJGF0dHJpYnV0ZXMucHJldmlld19zaG93LFxuICAgICAgICAgICAgcHJldmlld191c2VyX2lkID0gX3Byb3BzJGF0dHJpYnV0ZXMucHJldmlld191c2VyX2lkLFxuICAgICAgICAgICAgcHJldmlld19jb3Vyc2VfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy5wcmV2aWV3X2NvdXJzZV9pZCxcbiAgICAgICAgICAgIGV4YW1wbGVfc2hvdyA9IF9wcm9wcyRhdHRyaWJ1dGVzLmV4YW1wbGVfc2hvdyxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMgPSBwcm9wcy5zZXRBdHRyaWJ1dGVzO1xuXG5cbiAgICAgICAgdmFyIGluc3BlY3RvckNvbnRyb2xzID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgIFBhbmVsQm9keSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfXygnU2V0dGluZ3MnLCAnbGVhcm5kYXNoJylcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogc3ByaW50ZihfeCgnJXMgSUQnLCAnQ291cnNlIElEJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgICAgICAgICAgICAgICAgIGhlbHA6IHNwcmludGYoX3goJ0VudGVyIHNpbmdsZSAlMSRzIElELiBMZWF2ZSBibGFuayBpZiB1c2VkIHdpdGhpbiBhICUyJHMuJywgJ3BsYWNlaG9sZGVyczogY291cnNlLCBjb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjb3Vyc2VfaWQgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShjb3Vyc2VfaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgY291cnNlX2lkOiBjb3Vyc2VfaWQgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdVc2VyIElEJywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICBoZWxwOiBfXygnRW50ZXIgc3BlY2lmaWMgVXNlciBJRC4gTGVhdmUgYmxhbmsgZm9yIGN1cnJlbnQgVXNlci4nLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1c2VyX2lkIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodXNlcl9pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyB1c2VyX2lkOiB1c2VyX2lkIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgUGFuZWxCb2R5LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF9fKCdQcmV2aWV3JywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3BlbjogZmFsc2VcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnU2hvdyBQcmV2aWV3JywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkOiAhIXByZXZpZXdfc2hvdyxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHByZXZpZXdfc2hvdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBwcmV2aWV3X3Nob3c6IHByZXZpZXdfc2hvdyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogc3ByaW50ZihfeCgnJXMgSUQnLCAncGxhY2Vob2xkZXI6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuICAgICAgICAgICAgICAgICAgICBoZWxwOiBzcHJpbnRmKF94KCdFbnRlciBhICVzIElEIHRvIHRlc3QgcHJldmlldycsICdwbGFjZWhvbGRlcjogQ291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwcmV2aWV3X2NvdXJzZV9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShwcmV2aWV3X2NvdXJzZV9pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBwcmV2aWV3X2NvdXJzZV9pZDogcHJldmlld19jb3Vyc2VfaWQgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdVc2VyIElEJywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICBoZWxwOiBfXygnRW50ZXIgYSBVc2VyIElEIHRvIHRlc3QgcHJldmlldycsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHByZXZpZXdfdXNlcl9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShwcmV2aWV3X3VzZXJfaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcHJldmlld191c2VyX2lkOiBwcmV2aWV3X3VzZXJfaWQgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIGZ1bmN0aW9uIGRvX3NlcnZlcnNpZGVfcmVuZGVyKGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLnByZXZpZXdfc2hvdyA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgYWRkIHRoZSBtZXRhIHNvIHRoZSBzZXJ2ZXIga25vd25zIHdoYXQgaXMgYmVpbmcgZWRpdGVkLlxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMubWV0YSA9IGxkbG1zX2dldF9wb3N0X2VkaXRfbWV0YSgpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZXJ2ZXJTaWRlUmVuZGVyLCB7XG4gICAgICAgICAgICAgICAgICAgIGJsb2NrOiAnbGVhcm5kYXNoL2xkLWNvdXJzZS1wcm9ncmVzcycsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fKCdbbGVhcm5kYXNoX2NvdXJzZV9wcm9ncmVzc10gc2hvcnRjb2RlIG91dHB1dCBzaG93biBoZXJlJywgJ2xlYXJuZGFzaCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtpbnNwZWN0b3JDb250cm9scywgZG9fc2VydmVyc2lkZV9yZW5kZXIocHJvcHMuYXR0cmlidXRlcyldO1xuICAgIH0sXG5cbiAgICBzYXZlOiBmdW5jdGlvbiBzYXZlKHByb3BzKSB7XG4gICAgICAgIC8vIERlbGV0ZSBtZXRhIGZyb20gcHJvcHMgdG8gcHJldmVudCBpdCBiZWluZyBzYXZlZC5cbiAgICAgICAgZGVsZXRlIHByb3BzLmF0dHJpYnV0ZXMubWV0YTtcbiAgICB9XG59KTsiLCJcbi8qKlxuICogTGVhcm5EYXNoIEJsb2NrIGxkLXZpc2l0b3JcbiAqXG4gKiBAc2luY2UgMi41LjlcbiAqIEBwYWNrYWdlIExlYXJuRGFzaFxuICovXG5cbi8qKlxuICogTGVhcm5EYXNoIGJsb2NrIGZ1bmN0aW9uc1xuICovXG5pbXBvcnQgeyBsZGxtc19nZXRfcG9zdF9lZGl0X21ldGEsIGxkbG1zX2dldF9jdXN0b21fbGFiZWwsIGxkbG1zX2dldF9pbnRlZ2VyX3ZhbHVlIH0gZnJvbSAnLi4vbGRsbXMuanMnO1xuXG4vKipcbiAqIEludGVybmFsIGJsb2NrIGxpYnJhcmllc1xuICovXG52YXIgX3dwJGkxOG4gPSB3cC5pMThuLFxuICAgIF9fID0gX3dwJGkxOG4uX18sXG4gICAgX3ggPSBfd3AkaTE4bi5feCxcbiAgICBzcHJpbnRmID0gX3dwJGkxOG4uc3ByaW50ZjtcbnZhciByZWdpc3RlckJsb2NrVHlwZSA9IHdwLmJsb2Nrcy5yZWdpc3RlckJsb2NrVHlwZTtcbnZhciBfd3AkZWRpdG9yID0gd3AuZWRpdG9yLFxuICAgIElubmVyQmxvY2tzID0gX3dwJGVkaXRvci5Jbm5lckJsb2NrcyxcbiAgICBJbnNwZWN0b3JDb250cm9scyA9IF93cCRlZGl0b3IuSW5zcGVjdG9yQ29udHJvbHM7XG52YXIgX3dwJGNvbXBvbmVudHMgPSB3cC5jb21wb25lbnRzLFxuICAgIFBhbmVsQm9keSA9IF93cCRjb21wb25lbnRzLlBhbmVsQm9keSxcbiAgICBUZXh0Q29udHJvbCA9IF93cCRjb21wb25lbnRzLlRleHRDb250cm9sLFxuICAgIFRvZ2dsZUNvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5Ub2dnbGVDb250cm9sO1xuXG5cbnJlZ2lzdGVyQmxvY2tUeXBlKCdsZWFybmRhc2gvbGQtdmlzaXRvcicsIHtcbiAgICB0aXRsZTogX18oJ0xlYXJuRGFzaCBWaXNpdG9yJywgJ2xlYXJuZGFzaCcpLFxuICAgIGRlc2NyaXB0aW9uOiBzcHJpbnRmKF94KCdUaGlzIGJsb2NrIHNob3dzIHRoZSBjb250ZW50IGlmIHRoZSB1c2VyIGlzIG5vdCBlbnJvbGxlZCBpbnRvIHRoZSAlcy4nLCAncGxhY2Vob2xkZXJzOiBjb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcbiAgICBpY29uOiAndmlzaWJpbGl0eScsXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgY3VzdG9tQ2xhc3NOYW1lOiBmYWxzZVxuICAgIH0sXG4gICAgY2F0ZWdvcnk6ICdsZWFybmRhc2gtYmxvY2tzJyxcbiAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgIGNvdXJzZV9pZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJ1xuICAgICAgICB9LFxuICAgICAgICBhdXRvcDoge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgICAgICB9XG4gICAgfSxcbiAgICBlZGl0OiBmdW5jdGlvbiBlZGl0KHByb3BzKSB7XG4gICAgICAgIHZhciBfcHJvcHMkYXR0cmlidXRlcyA9IHByb3BzLmF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBjb3Vyc2VfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy5jb3Vyc2VfaWQsXG4gICAgICAgICAgICBhdXRvcCA9IF9wcm9wcyRhdHRyaWJ1dGVzLmF1dG9wLFxuICAgICAgICAgICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyA9IHByb3BzLnNldEF0dHJpYnV0ZXM7XG5cblxuICAgICAgICB2YXIgaW5zcGVjdG9yQ29udHJvbHMgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICBJbnNwZWN0b3JDb250cm9scyxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgUGFuZWxCb2R5LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF9fKCdTZXR0aW5ncycsICdsZWFybmRhc2gnKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBzcHJpbnRmKF94KCclcyBJRCcsICdDb3Vyc2UgSUQnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcbiAgICAgICAgICAgICAgICAgICAgaGVscDogc3ByaW50ZihfeCgnRW50ZXIgc2luZ2xlICUxJHMgSUQuIExlYXZlIGJsYW5rIGlmIHVzZWQgd2l0aGluIGEgJTIkcy4nLCAncGxhY2Vob2xkZXJzOiBjb3Vyc2UsIGNvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvdXJzZV9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGNvdXJzZV9pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBjb3Vyc2VfaWQ6IGNvdXJzZV9pZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnQXV0byBQYXJhZ3JhcGgnLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6ICEhYXV0b3AsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShhdXRvcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBhdXRvcDogYXV0b3AgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHZhciBsZF9ibG9ja19lcnJvcl9tZXNzYWdlID0gJyc7XG4gICAgICAgIHZhciBwcmV2aWV3X2NvdXJzZV9pZCA9IGxkbG1zX2dldF9pbnRlZ2VyX3ZhbHVlKGNvdXJzZV9pZCk7XG5cbiAgICAgICAgaWYgKHByZXZpZXdfY291cnNlX2lkID09PSAwKSB7XG4gICAgICAgICAgICBwcmV2aWV3X2NvdXJzZV9pZCA9IGxkbG1zX2dldF9wb3N0X2VkaXRfbWV0YSgnY291cnNlX2lkJyk7XG4gICAgICAgICAgICBwcmV2aWV3X2NvdXJzZV9pZCA9IGxkbG1zX2dldF9pbnRlZ2VyX3ZhbHVlKHByZXZpZXdfY291cnNlX2lkKTtcblxuICAgICAgICAgICAgaWYgKHByZXZpZXdfY291cnNlX2lkID09IDApIHtcbiAgICAgICAgICAgICAgICBsZF9ibG9ja19lcnJvcl9tZXNzYWdlID0gc3ByaW50ZihfeCgnJTEkcyBJRCBpcyByZXF1aXJlZCB3aGVuIG5vdCB1c2VkIHdpdGhpbiBhICUyJHMuJywgJ3BsYWNlaG9sZGVyczogQ291cnNlLCBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGRfYmxvY2tfZXJyb3JfbWVzc2FnZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2UgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgJ3NwYW4nLFxuICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnbGVhcm5kYXNoLWJsb2NrLWVycm9yLW1lc3NhZ2UnIH0sXG4gICAgICAgICAgICAgICAgbGRfYmxvY2tfZXJyb3JfbWVzc2FnZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBvdXRwdXRCbG9jayA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSB9LFxuICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnbGVhcm5kYXNoLWJsb2NrLWlubmVyJyB9LFxuICAgICAgICAgICAgICAgIGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2UsXG4gICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KElubmVyQmxvY2tzLCBudWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBbaW5zcGVjdG9yQ29udHJvbHMsIG91dHB1dEJsb2NrXTtcbiAgICB9LFxuICAgIHNhdmU6IGZ1bmN0aW9uIHNhdmUocHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChJbm5lckJsb2Nrcy5Db250ZW50LCBudWxsKTtcbiAgICB9XG59KTsiLCIvKipcbiAqIExlYXJuRGFzaCBCbG9jayBsZC1zdHVkZW50XG4gKlxuICogQHNpbmNlIDIuNS45XG4gKiBAcGFja2FnZSBMZWFybkRhc2hcbiAqL1xuXG4vKipcbiAqIExlYXJuRGFzaCBibG9jayBmdW5jdGlvbnNcbiAqL1xuaW1wb3J0IHsgbGRsbXNfZ2V0X3Bvc3RfZWRpdF9tZXRhLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsLCBsZGxtc19nZXRfaW50ZWdlcl92YWx1ZSB9IGZyb20gJy4uL2xkbG1zLmpzJztcblxuLyoqXG4gKiBJbnRlcm5hbCBibG9jayBsaWJyYXJpZXNcbiAqL1xudmFyIF93cCRpMThuID0gd3AuaTE4bixcbiAgICBfXyA9IF93cCRpMThuLl9fLFxuICAgIF94ID0gX3dwJGkxOG4uX3gsXG4gICAgc3ByaW50ZiA9IF93cCRpMThuLnNwcmludGY7XG52YXIgcmVnaXN0ZXJCbG9ja1R5cGUgPSB3cC5ibG9ja3MucmVnaXN0ZXJCbG9ja1R5cGU7XG52YXIgX3dwJGVkaXRvciA9IHdwLmVkaXRvcixcbiAgICBJbm5lckJsb2NrcyA9IF93cCRlZGl0b3IuSW5uZXJCbG9ja3MsXG4gICAgSW5zcGVjdG9yQ29udHJvbHMgPSBfd3AkZWRpdG9yLkluc3BlY3RvckNvbnRyb2xzO1xudmFyIF93cCRjb21wb25lbnRzID0gd3AuY29tcG9uZW50cyxcbiAgICBQYW5lbEJvZHkgPSBfd3AkY29tcG9uZW50cy5QYW5lbEJvZHksXG4gICAgVGV4dENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5UZXh0Q29udHJvbCxcbiAgICBUb2dnbGVDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVG9nZ2xlQ29udHJvbDtcblxuXG5yZWdpc3RlckJsb2NrVHlwZSgnbGVhcm5kYXNoL2xkLXN0dWRlbnQnLCB7XG4gICAgdGl0bGU6IF9fKCdMZWFybkRhc2ggU3R1ZGVudCcsICdsZWFybmRhc2gnKSxcbiAgICBkZXNjcmlwdGlvbjogc3ByaW50ZihfeCgnVGhpcyBibG9jayBzaG93cyB0aGUgY29udGVudCBpZiB0aGUgdXNlciBpcyBlbnJvbGxlZCBpbiB0aGUgJXMuJywgJ3BsYWNlaG9sZGVyczogY291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgaWNvbjogJ3dlbGNvbWUtbGVhcm4tbW9yZScsXG4gICAgY2F0ZWdvcnk6ICdsZWFybmRhc2gtYmxvY2tzJyxcbiAgICBzdXBwb3J0czoge1xuICAgICAgICBjdXN0b21DbGFzc05hbWU6IGZhbHNlXG4gICAgfSxcbiAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgIGNvdXJzZV9pZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJ1xuICAgICAgICB9LFxuICAgICAgICB1c2VyX2lkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnXG4gICAgICAgIH0sXG4gICAgICAgIGF1dG9wOiB7XG4gICAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgICAgICBkZWZhdWx0OiB0cnVlXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGVkaXQ6IGZ1bmN0aW9uIGVkaXQocHJvcHMpIHtcbiAgICAgICAgdmFyIF9wcm9wcyRhdHRyaWJ1dGVzID0gcHJvcHMuYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGNvdXJzZV9pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLmNvdXJzZV9pZCxcbiAgICAgICAgICAgIHVzZXJfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy51c2VyX2lkLFxuICAgICAgICAgICAgYXV0b3AgPSBfcHJvcHMkYXR0cmlidXRlcy5hdXRvcCxcbiAgICAgICAgICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMgPSBwcm9wcy5zZXRBdHRyaWJ1dGVzO1xuXG5cbiAgICAgICAgdmFyIGluc3BlY3RvckNvbnRyb2xzID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgIFBhbmVsQm9keSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfXygnU2V0dGluZ3MnLCAnbGVhcm5kYXNoJylcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogc3ByaW50ZihfeCgnJXMgSUQnLCAnQ291cnNlIElEJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgICAgICAgICAgICAgICAgIGhlbHA6IHNwcmludGYoX3goJ0VudGVyIHNpbmdsZSAlMSRzIElELiBMZWF2ZSBibGFuayBpZiB1c2VkIHdpdGhpbiBhICUyJHMuJywgJ3BsYWNlaG9sZGVyczogY291cnNlLCBjb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjb3Vyc2VfaWQgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShjb3Vyc2VfaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgY291cnNlX2lkOiBjb3Vyc2VfaWQgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdVc2VyIElEJywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICBoZWxwOiBfXygnRW50ZXIgc3BlY2lmaWMgVXNlciBJRC4gTGVhdmUgYmxhbmsgZm9yIGN1cnJlbnQgVXNlci4nLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1c2VyX2lkIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodXNlcl9pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyB1c2VyX2lkOiB1c2VyX2lkIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRvZ2dsZUNvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdBdXRvIFBhcmFncmFwaCcsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZDogISFhdXRvcCxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGF1dG9wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0QXR0cmlidXRlcyh7IGF1dG9wOiBhdXRvcCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdmFyIGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2UgPSAnJztcbiAgICAgICAgdmFyIHByZXZpZXdfY291cnNlX2lkID0gbGRsbXNfZ2V0X2ludGVnZXJfdmFsdWUoY291cnNlX2lkKTtcblxuICAgICAgICBpZiAocHJldmlld19jb3Vyc2VfaWQgPT09IDApIHtcbiAgICAgICAgICAgIHByZXZpZXdfY291cnNlX2lkID0gbGRsbXNfZ2V0X3Bvc3RfZWRpdF9tZXRhKCdjb3Vyc2VfaWQnKTtcbiAgICAgICAgICAgIHByZXZpZXdfY291cnNlX2lkID0gbGRsbXNfZ2V0X2ludGVnZXJfdmFsdWUocHJldmlld19jb3Vyc2VfaWQpO1xuXG4gICAgICAgICAgICBpZiAocHJldmlld19jb3Vyc2VfaWQgPT0gMCkge1xuICAgICAgICAgICAgICAgIGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2UgPSBzcHJpbnRmKF94KCclMSRzIElEIGlzIHJlcXVpcmVkIHdoZW4gbm90IHVzZWQgd2l0aGluIGEgJTIkcy4nLCAncGxhY2Vob2xkZXJzOiBDb3Vyc2UsIENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsZF9ibG9ja19lcnJvcl9tZXNzYWdlLmxlbmd0aCkge1xuICAgICAgICAgICAgbGRfYmxvY2tfZXJyb3JfbWVzc2FnZSA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAnc3BhbicsXG4gICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdsZWFybmRhc2gtYmxvY2stZXJyb3ItbWVzc2FnZScgfSxcbiAgICAgICAgICAgICAgICBsZF9ibG9ja19lcnJvcl9tZXNzYWdlXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG91dHB1dEJsb2NrID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICB7IGNsYXNzTmFtZTogY2xhc3NOYW1lIH0sXG4gICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdsZWFybmRhc2gtYmxvY2staW5uZXInIH0sXG4gICAgICAgICAgICAgICAgbGRfYmxvY2tfZXJyb3JfbWVzc2FnZSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoSW5uZXJCbG9ja3MsIG51bGwpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIFtpbnNwZWN0b3JDb250cm9scywgb3V0cHV0QmxvY2tdO1xuICAgIH0sXG5cbiAgICBzYXZlOiBmdW5jdGlvbiBzYXZlKHByb3BzKSB7XG4gICAgICAgIHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoSW5uZXJCbG9ja3MuQ29udGVudCwgbnVsbCk7XG4gICAgfVxufSk7IiwiLyoqXG4gKiBMZWFybkRhc2ggQmxvY2sgbGQtY291cnNlLWNvbXBsZXRlXG4gKlxuICogQHNpbmNlIDIuNS45XG4gKiBAcGFja2FnZSBMZWFybkRhc2hcbiAqL1xuXG4vKipcbiAqIExlYXJuRGFzaCBibG9jayBmdW5jdGlvbnNcbiAqL1xuaW1wb3J0IHsgbGRsbXNfZ2V0X3Bvc3RfZWRpdF9tZXRhLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsLCBsZGxtc19nZXRfaW50ZWdlcl92YWx1ZSB9IGZyb20gJy4uL2xkbG1zLmpzJztcblxuLyoqXG4gKiBJbnRlcm5hbCBibG9jayBsaWJyYXJpZXNcbiAqL1xudmFyIF93cCRpMThuID0gd3AuaTE4bixcbiAgICBfXyA9IF93cCRpMThuLl9fLFxuICAgIF94ID0gX3dwJGkxOG4uX3gsXG4gICAgc3ByaW50ZiA9IF93cCRpMThuLnNwcmludGY7XG52YXIgcmVnaXN0ZXJCbG9ja1R5cGUgPSB3cC5ibG9ja3MucmVnaXN0ZXJCbG9ja1R5cGU7XG52YXIgX3dwJGVkaXRvciA9IHdwLmVkaXRvcixcbiAgICBJbm5lckJsb2NrcyA9IF93cCRlZGl0b3IuSW5uZXJCbG9ja3MsXG4gICAgSW5zcGVjdG9yQ29udHJvbHMgPSBfd3AkZWRpdG9yLkluc3BlY3RvckNvbnRyb2xzO1xudmFyIF93cCRjb21wb25lbnRzID0gd3AuY29tcG9uZW50cyxcbiAgICBQYW5lbEJvZHkgPSBfd3AkY29tcG9uZW50cy5QYW5lbEJvZHksXG4gICAgVGV4dENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5UZXh0Q29udHJvbCxcbiAgICBUb2dnbGVDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVG9nZ2xlQ29udHJvbDtcblxuXG5yZWdpc3RlckJsb2NrVHlwZSgnbGVhcm5kYXNoL2xkLWNvdXJzZS1jb21wbGV0ZScsIHtcbiAgICB0aXRsZTogc3ByaW50ZihfeCgnTGVhcm5EYXNoICVzIENvbXBsZXRlJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcbiAgICBkZXNjcmlwdGlvbjogc3ByaW50ZihfeCgnVGhpcyBibG9jayBzaG93cyB0aGUgY29udGVudCBpZiB0aGUgdXNlciBpcyBlbnJvbGxlZCBpbnRvIHRoZSAlcyBhbmQgaXQgaXMgY29tcGxldGVkLicsICdwbGFjZWhvbGRlcnM6IGNvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuICAgIGljb246ICdzdGFyLWZpbGxlZCcsXG4gICAgY2F0ZWdvcnk6ICdsZWFybmRhc2gtYmxvY2tzJyxcbiAgICBzdXBwb3J0czoge1xuICAgICAgICBjdXN0b21DbGFzc05hbWU6IGZhbHNlXG4gICAgfSxcbiAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgIGNvdXJzZV9pZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJ1xuICAgICAgICB9LFxuICAgICAgICB1c2VyX2lkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnXG4gICAgICAgIH0sXG4gICAgICAgIGF1dG9wOiB7XG4gICAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgICAgICBkZWZhdWx0OiB0cnVlXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGVkaXQ6IGZ1bmN0aW9uIGVkaXQocHJvcHMpIHtcbiAgICAgICAgdmFyIF9wcm9wcyRhdHRyaWJ1dGVzID0gcHJvcHMuYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGNvdXJzZV9pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLmNvdXJzZV9pZCxcbiAgICAgICAgICAgIHVzZXJfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy51c2VyX2lkLFxuICAgICAgICAgICAgYXV0b3AgPSBfcHJvcHMkYXR0cmlidXRlcy5hdXRvcCxcbiAgICAgICAgICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMgPSBwcm9wcy5zZXRBdHRyaWJ1dGVzO1xuXG5cbiAgICAgICAgdmFyIGluc3BlY3RvckNvbnRyb2xzID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgIFBhbmVsQm9keSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfXygnU2V0dGluZ3MnLCAnbGVhcm5kYXNoJylcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogc3ByaW50ZihfeCgnJXMgSUQnLCAnQ291cnNlIElEJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgICAgICAgICAgICAgICAgIGhlbHA6IHNwcmludGYoX3goJ0VudGVyIHNpbmdsZSAlMSRzIElELiBMZWF2ZSBibGFuayBpZiB1c2VkIHdpdGhpbiBhICUyJHMuJywgJ3BsYWNlaG9sZGVyczogY291cnNlLCBjb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjb3Vyc2VfaWQgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShjb3Vyc2VfaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgY291cnNlX2lkOiBjb3Vyc2VfaWQgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdVc2VyIElEJywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICBoZWxwOiBfXygnRW50ZXIgc3BlY2lmaWMgVXNlciBJRC4gTGVhdmUgYmxhbmsgZm9yIGN1cnJlbnQgVXNlci4nLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1c2VyX2lkIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodXNlcl9pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyB1c2VyX2lkOiB1c2VyX2lkIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRvZ2dsZUNvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdBdXRvIFBhcmFncmFwaCcsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZDogISFhdXRvcCxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGF1dG9wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0QXR0cmlidXRlcyh7IGF1dG9wOiBhdXRvcCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdmFyIGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2UgPSAnJztcbiAgICAgICAgdmFyIHByZXZpZXdfY291cnNlX2lkID0gbGRsbXNfZ2V0X2ludGVnZXJfdmFsdWUoY291cnNlX2lkKTtcbiAgICAgICAgaWYgKHByZXZpZXdfY291cnNlX2lkID09PSAwKSB7XG4gICAgICAgICAgICBwcmV2aWV3X2NvdXJzZV9pZCA9IGxkbG1zX2dldF9wb3N0X2VkaXRfbWV0YSgnY291cnNlX2lkJyk7XG4gICAgICAgICAgICBwcmV2aWV3X2NvdXJzZV9pZCA9IGxkbG1zX2dldF9pbnRlZ2VyX3ZhbHVlKHByZXZpZXdfY291cnNlX2lkKTtcblxuICAgICAgICAgICAgaWYgKHByZXZpZXdfY291cnNlX2lkID09IDApIHtcbiAgICAgICAgICAgICAgICBsZF9ibG9ja19lcnJvcl9tZXNzYWdlID0gc3ByaW50ZihfeCgnJTEkcyBJRCBpcyByZXF1aXJlZCB3aGVuIG5vdCB1c2VkIHdpdGhpbiBhICUyJHMuJywgJ3BsYWNlaG9sZGVyczogQ291cnNlLCBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGRfYmxvY2tfZXJyb3JfbWVzc2FnZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2UgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgJ3NwYW4nLFxuICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnbGVhcm5kYXNoLWJsb2NrLWVycm9yLW1lc3NhZ2UnIH0sXG4gICAgICAgICAgICAgICAgbGRfYmxvY2tfZXJyb3JfbWVzc2FnZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBvdXRwdXRCbG9jayA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSB9LFxuICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnbGVhcm5kYXNoLWJsb2NrLWlubmVyJyB9LFxuICAgICAgICAgICAgICAgIGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2UsXG4gICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KElubmVyQmxvY2tzLCBudWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBbaW5zcGVjdG9yQ29udHJvbHMsIG91dHB1dEJsb2NrXTtcbiAgICB9LFxuXG4gICAgc2F2ZTogZnVuY3Rpb24gc2F2ZShwcm9wcykge1xuICAgICAgICByZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KElubmVyQmxvY2tzLkNvbnRlbnQsIG51bGwpO1xuICAgIH1cbn0pOyIsIi8qKlxuICogTGVhcm5EYXNoIEJsb2NrIGxkLWNvdXJzZS1pbnByb2dyZXNzXG4gKlxuICogQHNpbmNlIDIuNS45XG4gKiBAcGFja2FnZSBMZWFybkRhc2hcbiAqL1xuXG4vKipcbiAqIExlYXJuRGFzaCBibG9jayBmdW5jdGlvbnNcbiAqL1xuaW1wb3J0IHsgbGRsbXNfZ2V0X3Bvc3RfZWRpdF9tZXRhLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsLCBsZGxtc19nZXRfaW50ZWdlcl92YWx1ZSB9IGZyb20gJy4uL2xkbG1zLmpzJztcblxuLyoqXG4gKiBJbnRlcm5hbCBibG9jayBsaWJyYXJpZXNcbiAqL1xudmFyIF93cCRpMThuID0gd3AuaTE4bixcbiAgICBfXyA9IF93cCRpMThuLl9fLFxuICAgIF94ID0gX3dwJGkxOG4uX3gsXG4gICAgc3ByaW50ZiA9IF93cCRpMThuLnNwcmludGY7XG52YXIgcmVnaXN0ZXJCbG9ja1R5cGUgPSB3cC5ibG9ja3MucmVnaXN0ZXJCbG9ja1R5cGU7XG52YXIgX3dwJGVkaXRvciA9IHdwLmVkaXRvcixcbiAgICBJbm5lckJsb2NrcyA9IF93cCRlZGl0b3IuSW5uZXJCbG9ja3MsXG4gICAgSW5zcGVjdG9yQ29udHJvbHMgPSBfd3AkZWRpdG9yLkluc3BlY3RvckNvbnRyb2xzO1xudmFyIF93cCRjb21wb25lbnRzID0gd3AuY29tcG9uZW50cyxcbiAgICBQYW5lbEJvZHkgPSBfd3AkY29tcG9uZW50cy5QYW5lbEJvZHksXG4gICAgVGV4dENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5UZXh0Q29udHJvbCxcbiAgICBUb2dnbGVDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVG9nZ2xlQ29udHJvbDtcblxuXG5yZWdpc3RlckJsb2NrVHlwZSgnbGVhcm5kYXNoL2xkLWNvdXJzZS1pbnByb2dyZXNzJywge1xuICAgIHRpdGxlOiBzcHJpbnRmKF94KCdMZWFybkRhc2ggJXMgSW4gUHJvZ3Jlc3MnLCAncGxhY2Vob2xkZXI6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuICAgIGRlc2NyaXB0aW9uOiBzcHJpbnRmKF94KCdUaGlzIGJsb2NrIHNob3dzIHRoZSBjb250ZW50IGlmIHRoZSB1c2VyIGlzIGVucm9sbGVkIGludG8gdGhlICVzIGJ1dCBub3QgeWV0IGNvbXBsZXRlZC4nLCAncGxhY2Vob2xkZXI6IGNvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuICAgIGljb246ICdzdGFyLWhhbGYnLFxuICAgIGNhdGVnb3J5OiAnbGVhcm5kYXNoLWJsb2NrcycsXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgY3VzdG9tQ2xhc3NOYW1lOiBmYWxzZVxuICAgIH0sXG4gICAgYXR0cmlidXRlczoge1xuICAgICAgICBjb3Vyc2VfaWQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVmYXVsdDogJydcbiAgICAgICAgfSxcbiAgICAgICAgdXNlcl9pZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJ1xuICAgICAgICB9LFxuICAgICAgICBhdXRvcDoge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgICAgICB9XG4gICAgfSxcbiAgICBlZGl0OiBmdW5jdGlvbiBlZGl0KHByb3BzKSB7XG4gICAgICAgIHZhciBfcHJvcHMkYXR0cmlidXRlcyA9IHByb3BzLmF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBjb3Vyc2VfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy5jb3Vyc2VfaWQsXG4gICAgICAgICAgICB1c2VyX2lkID0gX3Byb3BzJGF0dHJpYnV0ZXMudXNlcl9pZCxcbiAgICAgICAgICAgIGF1dG9wID0gX3Byb3BzJGF0dHJpYnV0ZXMuYXV0b3AsXG4gICAgICAgICAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzID0gcHJvcHMuc2V0QXR0cmlidXRlcztcblxuXG4gICAgICAgIHZhciBpbnNwZWN0b3JDb250cm9scyA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICBQYW5lbEJvZHksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogX18oJ1NldHRpbmdzJywgJ2xlYXJuZGFzaCcpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHNwcmludGYoX3goJyVzIElEJywgJ0NvdXJzZSBJRCcsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuICAgICAgICAgICAgICAgICAgICBoZWxwOiBzcHJpbnRmKF94KCdFbnRlciBzaW5nbGUgJTEkcyBJRC4gTGVhdmUgYmxhbmsgaWYgdXNlZCB3aXRoaW4gYSAlMiRzLicsICdwbGFjZWhvbGRlcnM6IGNvdXJzZSwgY291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY291cnNlX2lkIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoY291cnNlX2lkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0QXR0cmlidXRlcyh7IGNvdXJzZV9pZDogY291cnNlX2lkIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnVXNlciBJRCcsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgaGVscDogX18oJ0VudGVyIHNwZWNpZmljIFVzZXIgSUQuIExlYXZlIGJsYW5rIGZvciBjdXJyZW50IFVzZXIuJywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdXNlcl9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHVzZXJfaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgdXNlcl9pZDogdXNlcl9pZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnQXV0byBQYXJhZ3JhcGgnLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6ICEhYXV0b3AsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShhdXRvcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBhdXRvcDogYXV0b3AgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHZhciBsZF9ibG9ja19lcnJvcl9tZXNzYWdlID0gJyc7XG4gICAgICAgIHZhciBwcmV2aWV3X2NvdXJzZV9pZCA9IGxkbG1zX2dldF9pbnRlZ2VyX3ZhbHVlKGNvdXJzZV9pZCk7XG5cbiAgICAgICAgaWYgKHByZXZpZXdfY291cnNlX2lkID09PSAwKSB7XG4gICAgICAgICAgICBwcmV2aWV3X2NvdXJzZV9pZCA9IGxkbG1zX2dldF9wb3N0X2VkaXRfbWV0YSgnY291cnNlX2lkJyk7XG4gICAgICAgICAgICBwcmV2aWV3X2NvdXJzZV9pZCA9IGxkbG1zX2dldF9pbnRlZ2VyX3ZhbHVlKHByZXZpZXdfY291cnNlX2lkKTtcblxuICAgICAgICAgICAgaWYgKHByZXZpZXdfY291cnNlX2lkID09IDApIHtcbiAgICAgICAgICAgICAgICBsZF9ibG9ja19lcnJvcl9tZXNzYWdlID0gc3ByaW50ZihfeCgnJTEkcyBJRCBpcyByZXF1aXJlZCB3aGVuIG5vdCB1c2VkIHdpdGhpbiBhICUyJHMuJywgJ3BsYWNlaG9sZGVyczogQ291cnNlLCBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGRfYmxvY2tfZXJyb3JfbWVzc2FnZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2UgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgJ3NwYW4nLFxuICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnbGVhcm5kYXNoLWJsb2NrLWVycm9yLW1lc3NhZ2UnIH0sXG4gICAgICAgICAgICAgICAgbGRfYmxvY2tfZXJyb3JfbWVzc2FnZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBvdXRwdXRCbG9jayA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSB9LFxuICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnbGVhcm5kYXNoLWJsb2NrLWlubmVyJyB9LFxuICAgICAgICAgICAgICAgIGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2UsXG4gICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KElubmVyQmxvY2tzLCBudWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBbaW5zcGVjdG9yQ29udHJvbHMsIG91dHB1dEJsb2NrXTtcbiAgICB9LFxuXG4gICAgc2F2ZTogZnVuY3Rpb24gc2F2ZShwcm9wcykge1xuICAgICAgICByZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KElubmVyQmxvY2tzLkNvbnRlbnQsIG51bGwpO1xuICAgIH1cbn0pOyIsIi8qKlxuICogTGVhcm5EYXNoIEJsb2NrIGxkLWNvdXJzZS1ub3RzdGFydGVkXG4gKlxuICogQHNpbmNlIDIuNS45XG4gKiBAcGFja2FnZSBMZWFybkRhc2hcbiAqL1xuXG4vKipcbiAqIExlYXJuRGFzaCBibG9jayBmdW5jdGlvbnNcbiAqL1xuaW1wb3J0IHsgbGRsbXNfZ2V0X3Bvc3RfZWRpdF9tZXRhLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsLCBsZGxtc19nZXRfaW50ZWdlcl92YWx1ZSB9IGZyb20gJy4uL2xkbG1zLmpzJztcblxuLyoqXG4gKiBJbnRlcm5hbCBibG9jayBsaWJyYXJpZXNcbiAqL1xudmFyIF93cCRpMThuID0gd3AuaTE4bixcbiAgICBfXyA9IF93cCRpMThuLl9fLFxuICAgIF94ID0gX3dwJGkxOG4uX3gsXG4gICAgc3ByaW50ZiA9IF93cCRpMThuLnNwcmludGY7XG52YXIgcmVnaXN0ZXJCbG9ja1R5cGUgPSB3cC5ibG9ja3MucmVnaXN0ZXJCbG9ja1R5cGU7XG52YXIgX3dwJGVkaXRvciA9IHdwLmVkaXRvcixcbiAgICBJbm5lckJsb2NrcyA9IF93cCRlZGl0b3IuSW5uZXJCbG9ja3MsXG4gICAgSW5zcGVjdG9yQ29udHJvbHMgPSBfd3AkZWRpdG9yLkluc3BlY3RvckNvbnRyb2xzO1xudmFyIF93cCRjb21wb25lbnRzID0gd3AuY29tcG9uZW50cyxcbiAgICBQYW5lbEJvZHkgPSBfd3AkY29tcG9uZW50cy5QYW5lbEJvZHksXG4gICAgVGV4dENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5UZXh0Q29udHJvbCxcbiAgICBUb2dnbGVDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVG9nZ2xlQ29udHJvbDtcblxuXG5yZWdpc3RlckJsb2NrVHlwZSgnbGVhcm5kYXNoL2xkLWNvdXJzZS1ub3RzdGFydGVkJywge1xuICAgIHRpdGxlOiBzcHJpbnRmKF94KCdMZWFybkRhc2ggJXMgTm90IFN0YXJ0ZWQnLCAncGxhY2Vob2xkZXI6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuICAgIGRlc2NyaXB0aW9uOiBzcHJpbnRmKF94KCdUaGlzIGJsb2NrIHNob3dzIHRoZSBjb250ZW50IGlmIHRoZSB1c2VyIGlzIGVucm9sbGVkIGludG8gdGhlICVzIGJ1dCBub3QgeWV0IHN0YXJ0ZWQuJywgJ3BsYWNlaG9sZGVyczogY291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgaWNvbjogJ3N0YXItZW1wdHknLFxuICAgIGNhdGVnb3J5OiAnbGVhcm5kYXNoLWJsb2NrcycsXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgY3VzdG9tQ2xhc3NOYW1lOiBmYWxzZVxuICAgIH0sXG4gICAgYXR0cmlidXRlczoge1xuICAgICAgICBjb3Vyc2VfaWQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVmYXVsdDogJydcbiAgICAgICAgfSxcbiAgICAgICAgdXNlcl9pZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJ1xuICAgICAgICB9LFxuICAgICAgICBhdXRvcDoge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgICAgICB9XG4gICAgfSxcbiAgICBlZGl0OiBmdW5jdGlvbiBlZGl0KHByb3BzKSB7XG4gICAgICAgIHZhciBfcHJvcHMkYXR0cmlidXRlcyA9IHByb3BzLmF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBjb3Vyc2VfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy5jb3Vyc2VfaWQsXG4gICAgICAgICAgICB1c2VyX2lkID0gX3Byb3BzJGF0dHJpYnV0ZXMudXNlcl9pZCxcbiAgICAgICAgICAgIGF1dG9wID0gX3Byb3BzJGF0dHJpYnV0ZXMuYXV0b3AsXG4gICAgICAgICAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzID0gcHJvcHMuc2V0QXR0cmlidXRlcztcblxuXG4gICAgICAgIHZhciBpbnNwZWN0b3JDb250cm9scyA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICBQYW5lbEJvZHksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogX18oJ1NldHRpbmdzJywgJ2xlYXJuZGFzaCcpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHNwcmludGYoX3goJyVzIElEJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcbiAgICAgICAgICAgICAgICAgICAgaGVscDogc3ByaW50ZihfeCgnRW50ZXIgc2luZ2xlICUxJHMgSUQuIExlYXZlIGJsYW5rIGlmIHVzZWQgd2l0aGluIGEgJTIkcy4nLCAncGxhY2Vob2xkZXJzOiBjb3Vyc2UsIGNvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvdXJzZV9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGNvdXJzZV9pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBjb3Vyc2VfaWQ6IGNvdXJzZV9pZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1VzZXIgSUQnLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIGhlbHA6IF9fKCdFbnRlciBzcGVjaWZpYyBVc2VyIElELiBMZWF2ZSBibGFuayBmb3IgY3VycmVudCBVc2VyLicsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVzZXJfaWQgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh1c2VyX2lkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0QXR0cmlidXRlcyh7IHVzZXJfaWQ6IHVzZXJfaWQgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ0F1dG8gUGFyYWdyYXBoJywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkOiAhIWF1dG9wLFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoYXV0b3ApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgYXV0b3A6IGF1dG9wIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB2YXIgbGRfYmxvY2tfZXJyb3JfbWVzc2FnZSA9ICcnO1xuICAgICAgICB2YXIgcHJldmlld19jb3Vyc2VfaWQgPSBsZGxtc19nZXRfaW50ZWdlcl92YWx1ZShjb3Vyc2VfaWQpO1xuXG4gICAgICAgIGlmIChwcmV2aWV3X2NvdXJzZV9pZCA9PT0gMCkge1xuICAgICAgICAgICAgcHJldmlld19jb3Vyc2VfaWQgPSBsZGxtc19nZXRfcG9zdF9lZGl0X21ldGEoJ2NvdXJzZV9pZCcpO1xuICAgICAgICAgICAgcHJldmlld19jb3Vyc2VfaWQgPSBsZGxtc19nZXRfaW50ZWdlcl92YWx1ZShwcmV2aWV3X2NvdXJzZV9pZCk7XG5cbiAgICAgICAgICAgIGlmIChwcmV2aWV3X2NvdXJzZV9pZCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgbGRfYmxvY2tfZXJyb3JfbWVzc2FnZSA9IHNwcmludGYoX3goJyUxJHMgSUQgaXMgcmVxdWlyZWQgd2hlbiBub3QgdXNlZCB3aXRoaW4gYSAlMiRzLicsICdwbGFjZWhvbGRlcnM6IENvdXJzZSwgQ291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2UubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZF9ibG9ja19lcnJvcl9tZXNzYWdlID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdzcGFuJyxcbiAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2xlYXJuZGFzaC1ibG9jay1lcnJvci1tZXNzYWdlJyB9LFxuICAgICAgICAgICAgICAgIGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2VcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgb3V0cHV0QmxvY2sgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUgfSxcbiAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2xlYXJuZGFzaC1ibG9jay1pbm5lcicgfSxcbiAgICAgICAgICAgICAgICBsZF9ibG9ja19lcnJvcl9tZXNzYWdlLFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChJbm5lckJsb2NrcywgbnVsbClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gW2luc3BlY3RvckNvbnRyb2xzLCBvdXRwdXRCbG9ja107XG4gICAgfSxcblxuICAgIHNhdmU6IGZ1bmN0aW9uIHNhdmUocHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChJbm5lckJsb2Nrcy5Db250ZW50LCBudWxsKTtcbiAgICB9XG59KTsiLCIvKipcbiAqIExlYXJuRGFzaCBCbG9jayBsZC1jZXJ0aWZpY2F0ZVxuICpcbiAqIEBzaW5jZSAzLjJcbiAqIEBwYWNrYWdlIExlYXJuRGFzaFxuICovXG5cbi8qKlxuICogTGVhcm5EYXNoIGJsb2NrIGZ1bmN0aW9uc1xuICovXG5pbXBvcnQgeyBsZGxtc19nZXRfcG9zdF9lZGl0X21ldGEsIGxkbG1zX2dldF9jdXN0b21fbGFiZWwsIGxkbG1zX2dldF9pbnRlZ2VyX3ZhbHVlIH0gZnJvbSAnLi4vbGRsbXMuanMnO1xuXG4vKipcbiAqIEludGVybmFsIGJsb2NrIGxpYnJhcmllc1xuICovXG52YXIgX3dwJGkxOG4gPSB3cC5pMThuLFxuICAgIF9fID0gX3dwJGkxOG4uX18sXG4gICAgX3ggPSBfd3AkaTE4bi5feCxcbiAgICBzcHJpbnRmID0gX3dwJGkxOG4uc3ByaW50ZjtcbnZhciByZWdpc3RlckJsb2NrVHlwZSA9IHdwLmJsb2Nrcy5yZWdpc3RlckJsb2NrVHlwZTtcbnZhciBJbnNwZWN0b3JDb250cm9scyA9IHdwLmVkaXRvci5JbnNwZWN0b3JDb250cm9scztcbnZhciBfd3AkY29tcG9uZW50cyA9IHdwLmNvbXBvbmVudHMsXG4gICAgU2VydmVyU2lkZVJlbmRlciA9IF93cCRjb21wb25lbnRzLlNlcnZlclNpZGVSZW5kZXIsXG4gICAgUGFuZWxCb2R5ID0gX3dwJGNvbXBvbmVudHMuUGFuZWxCb2R5LFxuICAgIFRleHRDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVGV4dENvbnRyb2wsXG4gICAgU2VsZWN0Q29udHJvbCA9IF93cCRjb21wb25lbnRzLlNlbGVjdENvbnRyb2wsXG4gICAgVG9nZ2xlQ29udHJvbCA9IF93cCRjb21wb25lbnRzLlRvZ2dsZUNvbnRyb2w7XG5cblxucmVnaXN0ZXJCbG9ja1R5cGUoJ2xlYXJuZGFzaC9sZC1jb3Vyc2UtcmVzdW1lJywge1xuICAgIHRpdGxlOiBzcHJpbnRmKF94KCclcyBSZXN1bWUnLCAnQ291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgZGVzY3JpcHRpb246IHNwcmludGYoX3goJ1JldHVybiB0byAlcyBsaW5rL2J1dHRvbi4nLCAnQ291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgaWNvbjogJ3dlbGNvbWUtbGVhcm4tbW9yZScsXG4gICAgY2F0ZWdvcnk6ICdsZWFybmRhc2gtYmxvY2tzJyxcbiAgICBzdXBwb3J0czoge1xuICAgICAgICBjdXN0b21DbGFzc05hbWU6IGZhbHNlXG4gICAgfSxcbiAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgIGNvdXJzZV9pZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJ1xuICAgICAgICB9LFxuICAgICAgICB1c2VyX2lkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnXG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnXG4gICAgICAgIH0sXG4gICAgICAgIGh0bWxfY2xhc3M6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVmYXVsdDogJydcbiAgICAgICAgfSxcbiAgICAgICAgYnV0dG9uOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnXG4gICAgICAgIH0sXG4gICAgICAgIHByZXZpZXdfc2hvdzoge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgZGVmYXVsdDogMVxuICAgICAgICB9LFxuICAgICAgICBwcmV2aWV3X2NvdXJzZV9pZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJ1xuICAgICAgICB9LFxuICAgICAgICBwcmV2aWV3X3VzZXJfaWQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVmYXVsdDogJydcbiAgICAgICAgfSxcbiAgICAgICAgZXhhbXBsZV9zaG93OiB7XG4gICAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgICAgICBkZWZhdWx0OiAwXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGVkaXQ6IGZ1bmN0aW9uIGVkaXQocHJvcHMpIHtcbiAgICAgICAgdmFyIF9wcm9wcyRhdHRyaWJ1dGVzID0gcHJvcHMuYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGNvdXJzZV9pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLmNvdXJzZV9pZCxcbiAgICAgICAgICAgIHVzZXJfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy51c2VyX2lkLFxuICAgICAgICAgICAgbGFiZWwgPSBfcHJvcHMkYXR0cmlidXRlcy5sYWJlbCxcbiAgICAgICAgICAgIGh0bWxfY2xhc3MgPSBfcHJvcHMkYXR0cmlidXRlcy5odG1sX2NsYXNzLFxuICAgICAgICAgICAgYnV0dG9uID0gX3Byb3BzJGF0dHJpYnV0ZXMuYnV0dG9uLFxuICAgICAgICAgICAgcHJldmlld19zaG93ID0gX3Byb3BzJGF0dHJpYnV0ZXMucHJldmlld19zaG93LFxuICAgICAgICAgICAgcHJldmlld19jb3Vyc2VfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy5wcmV2aWV3X2NvdXJzZV9pZCxcbiAgICAgICAgICAgIHByZXZpZXdfdXNlcl9pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLnByZXZpZXdfdXNlcl9pZCxcbiAgICAgICAgICAgIGV4YW1wbGVfc2hvdyA9IF9wcm9wcyRhdHRyaWJ1dGVzLmV4YW1wbGVfc2hvdyxcbiAgICAgICAgICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMgPSBwcm9wcy5zZXRBdHRyaWJ1dGVzO1xuXG5cbiAgICAgICAgdmFyIGluc3BlY3RvckNvbnRyb2xzID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgIFBhbmVsQm9keSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfXygnU2V0dGluZ3MnLCAnbGVhcm5kYXNoJylcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogc3ByaW50ZihfeCgnJXMgSUQnLCAnQ291cnNlIElEJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgICAgICAgICAgICAgICAgIGhlbHA6IHNwcmludGYoX3goJ0VudGVyIHNpbmdsZSAlMSRzIElELiBMZWF2ZSBibGFuayBpZiB1c2VkIHdpdGhpbiBhICUyJHMuJywgJ3BsYWNlaG9sZGVyczogY291cnNlLCBjb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjb3Vyc2VfaWQgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShjb3Vyc2VfaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgY291cnNlX2lkOiBjb3Vyc2VfaWQgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdVc2VyIElEJywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICBoZWxwOiBfXygnRW50ZXIgc3BlY2lmaWMgVXNlciBJRC4gTGVhdmUgYmxhbmsgZm9yIGN1cnJlbnQgVXNlci4nLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1c2VyX2lkIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodXNlcl9pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyB1c2VyX2lkOiB1c2VyX2lkIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdTaG93IGFzIGJ1dHRvbicsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGJ1dHRvbixcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnWWVzJywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICd0cnVlJ1xuICAgICAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ05vJywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICdmYWxzZSdcbiAgICAgICAgICAgICAgICAgICAgfV0sXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShidXR0b24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgYnV0dG9uOiBidXR0b24gfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdMYWJlbCcsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgaGVscDogX18oJ0xhYmVsIGZvciBsaW5rIHNob3duIHRvIHVzZXInLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBsYWJlbCB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0QXR0cmlidXRlcyh7IGxhYmVsOiBsYWJlbCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuICAgICAgICAgICAgICAgICAgICBrZXk6ICdodG1sX2NsYXNzJyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdDbGFzcycsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgaGVscDogX18oJ0hUTUwgY2xhc3MgZm9yIGxpbmsgZWxlbWVudCcsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGh0bWxfY2xhc3MgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShodG1sX2NsYXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0QXR0cmlidXRlcyh7IGh0bWxfY2xhc3M6IGh0bWxfY2xhc3MgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICBQYW5lbEJvZHksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogX18oJ1ByZXZpZXcnLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRvZ2dsZUNvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdTaG93IFByZXZpZXcnLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6ICEhcHJldmlld19zaG93LFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocHJldmlld19zaG93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0QXR0cmlidXRlcyh7IHByZXZpZXdfc2hvdzogcHJldmlld19zaG93IH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBzcHJpbnRmKF94KCclcyBJRCcsICdwbGFjZWhvbGRlcjogQ291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgICAgICAgICAgICAgICAgIGhlbHA6IHNwcmludGYoX3goJ0VudGVyIGEgJXMgSUQgdG8gdGVzdCBwcmV2aWV3JywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHByZXZpZXdfY291cnNlX2lkIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHByZXZpZXdfY291cnNlX2lkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0QXR0cmlidXRlcyh7IHByZXZpZXdfY291cnNlX2lkOiBwcmV2aWV3X2NvdXJzZV9pZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1VzZXIgSUQnLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIGhlbHA6IF9fKCdFbnRlciBzcGVjaWZpYyBVc2VyIElELiBMZWF2ZSBibGFuayBmb3IgY3VycmVudCBVc2VyLicsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHByZXZpZXdfdXNlcl9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHByZXZpZXdfdXNlcl9pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBwcmV2aWV3X3VzZXJfaWQ6IHByZXZpZXdfdXNlcl9pZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgZnVuY3Rpb24gZG9fc2VydmVyc2lkZV9yZW5kZXIoYXR0cmlidXRlcykge1xuICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMucHJldmlld19zaG93ID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlcnZlclNpZGVSZW5kZXIsIHtcbiAgICAgICAgICAgICAgICAgICAgYmxvY2s6ICdsZWFybmRhc2gvbGQtY291cnNlLXJlc3VtZScsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fKCdbbGRfY291cnNlX3Jlc3VtZV0gc2hvcnRjb2RlIG91dHB1dCBzaG93biBoZXJlJywgJ2xlYXJuZGFzaCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtpbnNwZWN0b3JDb250cm9scywgZG9fc2VydmVyc2lkZV9yZW5kZXIocHJvcHMuYXR0cmlidXRlcyldO1xuICAgIH1cbn0pOyIsIi8qKlxuICogTGVhcm5EYXNoIEJsb2NrIGxkLWNvdXJzZS1pbmZvXG4gKlxuICogQHNpbmNlIDIuNS45XG4gKiBAcGFja2FnZSBMZWFybkRhc2hcbiAqL1xuXG4vKipcbiAqIExlYXJuRGFzaCBibG9jayBmdW5jdGlvbnNcbiAqL1xuaW1wb3J0IHsgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCwgbGRsbXNfZ2V0X3Blcl9wYWdlIH0gZnJvbSAnLi4vbGRsbXMuanMnO1xuXG4vKipcbiAqIEludGVybmFsIGJsb2NrIGxpYnJhcmllc1xuICovXG52YXIgX3dwJGkxOG4gPSB3cC5pMThuLFxuICAgIF9fID0gX3dwJGkxOG4uX18sXG4gICAgX3ggPSBfd3AkaTE4bi5feCxcbiAgICBzcHJpbnRmID0gX3dwJGkxOG4uc3ByaW50ZjtcbnZhciByZWdpc3RlckJsb2NrVHlwZSA9IHdwLmJsb2Nrcy5yZWdpc3RlckJsb2NrVHlwZTtcbnZhciBJbnNwZWN0b3JDb250cm9scyA9IHdwLmVkaXRvci5JbnNwZWN0b3JDb250cm9scztcbnZhciBfd3AkY29tcG9uZW50cyA9IHdwLmNvbXBvbmVudHMsXG4gICAgU2VydmVyU2lkZVJlbmRlciA9IF93cCRjb21wb25lbnRzLlNlcnZlclNpZGVSZW5kZXIsXG4gICAgUGFuZWxCb2R5ID0gX3dwJGNvbXBvbmVudHMuUGFuZWxCb2R5LFxuICAgIFJhbmdlQ29udHJvbCA9IF93cCRjb21wb25lbnRzLlJhbmdlQ29udHJvbCxcbiAgICBTZWxlY3RDb250cm9sID0gX3dwJGNvbXBvbmVudHMuU2VsZWN0Q29udHJvbCxcbiAgICBUb2dnbGVDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVG9nZ2xlQ29udHJvbCxcbiAgICBUZXh0Q29udHJvbCA9IF93cCRjb21wb25lbnRzLlRleHRDb250cm9sO1xuXG5cbnJlZ2lzdGVyQmxvY2tUeXBlKCdsZWFybmRhc2gvbGQtY291cnNlLWluZm8nLCB7XG5cdHRpdGxlOiBzcHJpbnRmKF94KCdMZWFybkRhc2ggJXMgSW5mbyBbbGRfY291cnNlX2luZm9dJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcblx0ZGVzY3JpcHRpb246IHNwcmludGYoX3goJ1RoaXMgYmxvY2sgc2hvd3MgdGhlICVzIGFuZCBwcm9ncmVzcyBmb3IgdGhlIHVzZXIuJywgJ3BsYWNlaG9sZGVyczogY291cnNlcycsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuXHRpY29uOiAnYW5hbHl0aWNzJyxcblx0Y2F0ZWdvcnk6ICdsZWFybmRhc2gtYmxvY2tzJyxcblx0ZXhhbXBsZToge1xuXHRcdGF0dHJpYnV0ZXM6IHtcblx0XHRcdGV4YW1wbGVfc2hvdzogMVxuXHRcdH1cblx0fSxcblx0c3VwcG9ydHM6IHtcblx0XHRjdXN0b21DbGFzc05hbWU6IGZhbHNlXG5cdH0sXG5cdGF0dHJpYnV0ZXM6IHtcblx0XHR1c2VyX2lkOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6IDBcblx0XHR9LFxuXHRcdHJlZ2lzdGVyZWRfc2hvdzoge1xuXHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0ZGVmYXVsdDogdHJ1ZVxuXHRcdH0sXG5cdFx0cmVnaXN0ZXJlZF9zaG93X3RodW1ibmFpbDoge1xuXHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0ZGVmYXVsdDogdHJ1ZVxuXHRcdH0sXG5cdFx0cmVnaXN0ZXJlZF9udW06IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdHJlZ2lzdGVyZWRfb3JkZXJieToge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnSUQnXG5cdFx0fSxcblx0XHRyZWdpc3RlcmVkX29yZGVyOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICdBU0MnXG5cdFx0fSxcblx0XHRwcm9ncmVzc19zaG93OiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiB0cnVlXG5cdFx0fSxcblx0XHRwcm9ncmVzc19udW06IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdHByb2dyZXNzX29yZGVyYnk6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJ0lEJ1xuXHRcdH0sXG5cdFx0cHJvZ3Jlc3Nfb3JkZXI6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJ0FTQydcblx0XHR9LFxuXHRcdHF1aXpfc2hvdzoge1xuXHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0ZGVmYXVsdDogdHJ1ZVxuXHRcdH0sXG5cdFx0cXVpel9udW06IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdHF1aXpfb3JkZXJieToge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAndGFrZW4nXG5cdFx0fSxcblx0XHRxdWl6X29yZGVyOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICdERVNDJ1xuXHRcdH0sXG5cdFx0cHJldmlld19zaG93OiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiB0cnVlXG5cdFx0fSxcblx0XHRwcmV2aWV3X3VzZXJfaWQ6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdGV4YW1wbGVfc2hvdzoge1xuXHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0ZGVmYXVsdDogMFxuXHRcdH0sXG5cdFx0bWV0YToge1xuXHRcdFx0dHlwZTogJ29iamVjdCdcblx0XHR9XG5cdH0sXG5cdGVkaXQ6IGZ1bmN0aW9uIGVkaXQocHJvcHMpIHtcblx0XHR2YXIgX3Byb3BzJGF0dHJpYnV0ZXMgPSBwcm9wcy5hdHRyaWJ1dGVzLFxuXHRcdCAgICB1c2VyX2lkID0gX3Byb3BzJGF0dHJpYnV0ZXMudXNlcl9pZCxcblx0XHQgICAgcmVnaXN0ZXJlZF9zaG93ID0gX3Byb3BzJGF0dHJpYnV0ZXMucmVnaXN0ZXJlZF9zaG93LFxuXHRcdCAgICByZWdpc3RlcmVkX3Nob3dfdGh1bWJuYWlsID0gX3Byb3BzJGF0dHJpYnV0ZXMucmVnaXN0ZXJlZF9zaG93X3RodW1ibmFpbCxcblx0XHQgICAgcmVnaXN0ZXJlZF9udW0gPSBfcHJvcHMkYXR0cmlidXRlcy5yZWdpc3RlcmVkX251bSxcblx0XHQgICAgcmVnaXN0ZXJlZF9vcmRlcmJ5ID0gX3Byb3BzJGF0dHJpYnV0ZXMucmVnaXN0ZXJlZF9vcmRlcmJ5LFxuXHRcdCAgICByZWdpc3RlcmVkX29yZGVyID0gX3Byb3BzJGF0dHJpYnV0ZXMucmVnaXN0ZXJlZF9vcmRlcixcblx0XHQgICAgcHJvZ3Jlc3Nfc2hvdyA9IF9wcm9wcyRhdHRyaWJ1dGVzLnByb2dyZXNzX3Nob3csXG5cdFx0ICAgIHByb2dyZXNzX251bSA9IF9wcm9wcyRhdHRyaWJ1dGVzLnByb2dyZXNzX251bSxcblx0XHQgICAgcHJvZ3Jlc3Nfb3JkZXJieSA9IF9wcm9wcyRhdHRyaWJ1dGVzLnByb2dyZXNzX29yZGVyYnksXG5cdFx0ICAgIHByb2dyZXNzX29yZGVyID0gX3Byb3BzJGF0dHJpYnV0ZXMucHJvZ3Jlc3Nfb3JkZXIsXG5cdFx0ICAgIHF1aXpfc2hvdyA9IF9wcm9wcyRhdHRyaWJ1dGVzLnF1aXpfc2hvdyxcblx0XHQgICAgcXVpel9udW0gPSBfcHJvcHMkYXR0cmlidXRlcy5xdWl6X251bSxcblx0XHQgICAgcXVpel9vcmRlcmJ5ID0gX3Byb3BzJGF0dHJpYnV0ZXMucXVpel9vcmRlcmJ5LFxuXHRcdCAgICBxdWl6X29yZGVyID0gX3Byb3BzJGF0dHJpYnV0ZXMucXVpel9vcmRlcixcblx0XHQgICAgcHJldmlld191c2VyX2lkID0gX3Byb3BzJGF0dHJpYnV0ZXMucHJldmlld191c2VyX2lkLFxuXHRcdCAgICBwcmV2aWV3X3Nob3cgPSBfcHJvcHMkYXR0cmlidXRlcy5wcmV2aWV3X3Nob3csXG5cdFx0ICAgIHNldEF0dHJpYnV0ZXMgPSBwcm9wcy5zZXRBdHRyaWJ1dGVzO1xuXG5cblx0XHR2YXIgcGFuZWxib2R5X2hlYWRlciA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFBhbmVsQm9keSxcblx0XHRcdHtcblx0XHRcdFx0dGl0bGU6IF9fKCdTZXR0aW5ncycsICdsZWFybmRhc2gnKVxuXHRcdFx0fSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ1VzZXIgSUQnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdGhlbHA6IF9fKCdFbnRlciBzcGVjaWZpYyBVc2VyIElELiBMZWF2ZSBibGFuayBmb3IgY3VycmVudCBVc2VyLicsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0dmFsdWU6IHVzZXJfaWQgfHwgJycsXG5cdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh1c2VyX2lkKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyB1c2VyX2lkOiB1c2VyX2lkIH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBzcHJpbnRmKF94KCdTaG93IFJlZ2lzdGVyZWQgJXMnLCAncGxhY2Vob2xkZXI6IENvdXJzZXMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZXMnKSksXG5cdFx0XHRcdGNoZWNrZWQ6ICEhcmVnaXN0ZXJlZF9zaG93LFxuXHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocmVnaXN0ZXJlZF9zaG93KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyByZWdpc3RlcmVkX3Nob3c6IHJlZ2lzdGVyZWRfc2hvdyB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnU2hvdyAlcyBQcm9nZXNzJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcblx0XHRcdFx0Y2hlY2tlZDogISFwcm9ncmVzc19zaG93LFxuXHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocHJvZ3Jlc3Nfc2hvdykge1xuXHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcHJvZ3Jlc3Nfc2hvdzogcHJvZ3Jlc3Nfc2hvdyB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnU2hvdyAlcyBBdHRlbXB0cycsICdwbGFjZWhvbGRlcjogUXVpeicsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpeicpKSxcblx0XHRcdFx0Y2hlY2tlZDogISFxdWl6X3Nob3csXG5cdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShxdWl6X3Nob3cpIHtcblx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHF1aXpfc2hvdzogcXVpel9zaG93IH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdCk7XG5cblx0XHR2YXIgcGFuZWxib2R5X3JlZ2lzdGVyZWQgPSAnJztcblx0XHRpZiAocmVnaXN0ZXJlZF9zaG93ID09PSB0cnVlKSB7XG5cdFx0XHRwYW5lbGJvZHlfcmVnaXN0ZXJlZCA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGl0bGU6IHNwcmludGYoX3goJ1JlZ2lzdGVyZWQgJXMnLCAncGxhY2Vob2xkZXI6IENvdXJzZXMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZXMnKSksXG5cdFx0XHRcdFx0aW5pdGlhbE9wZW46IGZhbHNlXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdTaG93IFRodW1ibmFpbCcsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRjaGVja2VkOiAhIXJlZ2lzdGVyZWRfc2hvd190aHVtYm5haWwsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHJlZ2lzdGVyZWRfc2hvd190aHVtYm5haWwpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcmVnaXN0ZXJlZF9zaG93X3RodW1ibmFpbDogcmVnaXN0ZXJlZF9zaG93X3RodW1ibmFpbCB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ3BlciBwYWdlJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdGhlbHA6IHNwcmludGYoX3goJ0xlYXZlIGVtcHR5IGZvciBkZWZhdWx0ICglZCkgb3IgMCB0byBzaG93IGFsbCBpdGVtcy4nLCAncGxhY2Vob2xkZXI6IGRlZmF1bHQgcGVyIHBhZ2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9wZXJfcGFnZSgncGVyX3BhZ2UnKSksXG5cdFx0XHRcdFx0dmFsdWU6IHJlZ2lzdGVyZWRfbnVtIHx8ICcnLFxuXHRcdFx0XHRcdG1pbjogMCxcblx0XHRcdFx0XHRtYXg6IDEwMCxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocmVnaXN0ZXJlZF9udW0pIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcmVnaXN0ZXJlZF9udW06IHJlZ2lzdGVyZWRfbnVtIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdFx0a2V5OiAncmVnaXN0ZXJlZF9vcmRlcmJ5Jyxcblx0XHRcdFx0XHRsYWJlbDogX18oJ09yZGVyIGJ5JywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdHZhbHVlOiByZWdpc3RlcmVkX29yZGVyYnksXG5cdFx0XHRcdFx0b3B0aW9uczogW3tcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnSUQgLSBPcmRlciBieSBwb3N0IGlkLiAoZGVmYXVsdCknLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ0lEJ1xuXHRcdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnVGl0bGUgLSBPcmRlciBieSBwb3N0IHRpdGxlJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICd0aXRsZSdcblx0XHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0XHRsYWJlbDogX18oJ0RhdGUgLSBPcmRlciBieSBwb3N0IGRhdGUnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ2RhdGUnXG5cdFx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdNZW51IC0gT3JkZXIgYnkgUGFnZSBPcmRlciBWYWx1ZScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnbWVudV9vcmRlcidcblx0XHRcdFx0XHR9XSxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocmVnaXN0ZXJlZF9vcmRlcmJ5KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHJlZ2lzdGVyZWRfb3JkZXJieTogcmVnaXN0ZXJlZF9vcmRlcmJ5IH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdFx0a2V5OiAncmVnaXN0ZXJlZF9vcmRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdPcmRlcicsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogcmVnaXN0ZXJlZF9vcmRlcixcblx0XHRcdFx0XHRvcHRpb25zOiBbe1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdERVNDIC0gaGlnaGVzdCB0byBsb3dlc3QgdmFsdWVzIChkZWZhdWx0KScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnREVTQydcblx0XHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0XHRsYWJlbDogX18oJ0FTQyAtIGxvd2VzdCB0byBoaWdoZXN0IHZhbHVlcycsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnQVNDJ1xuXHRcdFx0XHRcdH1dLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShyZWdpc3RlcmVkX29yZGVyKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHJlZ2lzdGVyZWRfb3JkZXI6IHJlZ2lzdGVyZWRfb3JkZXIgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHR2YXIgcGFuZWxib2R5X3Byb2dyZXNzID0gJyc7XG5cdFx0aWYgKHByb2dyZXNzX3Nob3cgPT09IHRydWUpIHtcblx0XHRcdHBhbmVsYm9keV9wcm9ncmVzcyA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGl0bGU6IHNwcmludGYoX3goJyVzIFByb2dyZXNzJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcblx0XHRcdFx0XHRpbml0aWFsT3BlbjogZmFsc2Vcblx0XHRcdFx0fSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdwZXIgcGFnZScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRoZWxwOiBzcHJpbnRmKF94KCdMZWF2ZSBlbXB0eSBmb3IgZGVmYXVsdCAoJWQpIG9yIDAgdG8gc2hvdyBhbGwgaXRlbXMuJywgJ3BsYWNlaG9sZGVyOiBkZWZhdWx0IHBlciBwYWdlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfcGVyX3BhZ2UoJ3Byb2dyZXNzX251bScpKSxcblx0XHRcdFx0XHR2YWx1ZTogcHJvZ3Jlc3NfbnVtIHx8ICcnLFxuXHRcdFx0XHRcdG1pbjogMCxcblx0XHRcdFx0XHRtYXg6IDEwMCxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocHJvZ3Jlc3NfbnVtKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHByb2dyZXNzX251bTogcHJvZ3Jlc3NfbnVtIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdFx0a2V5OiAncHJvZ3Jlc3Nfb3JkZXJieScsXG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdPcmRlciBieScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogcHJvZ3Jlc3Nfb3JkZXJieSxcblx0XHRcdFx0XHRvcHRpb25zOiBbe1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdJRCAtIE9yZGVyIGJ5IHBvc3QgaWQuIChkZWZhdWx0KScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnSUQnXG5cdFx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdUaXRsZSAtIE9yZGVyIGJ5IHBvc3QgdGl0bGUnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ3RpdGxlJ1xuXHRcdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnRGF0ZSAtIE9yZGVyIGJ5IHBvc3QgZGF0ZScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnZGF0ZSdcblx0XHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0XHRsYWJlbDogX18oJ01lbnUgLSBPcmRlciBieSBQYWdlIE9yZGVyIFZhbHVlJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICdtZW51X29yZGVyJ1xuXHRcdFx0XHRcdH1dLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShwcm9ncmVzc19vcmRlcmJ5KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHByb2dyZXNzX29yZGVyYnk6IHByb2dyZXNzX29yZGVyYnkgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcblx0XHRcdFx0XHRrZXk6ICdwcm9ncmVzc19vcmRlcicsXG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdPcmRlcicsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogcHJvZ3Jlc3Nfb3JkZXIsXG5cdFx0XHRcdFx0b3B0aW9uczogW3tcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnREVTQyAtIGhpZ2hlc3QgdG8gbG93ZXN0IHZhbHVlcyAoZGVmYXVsdCknLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ0RFU0MnXG5cdFx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdBU0MgLSBsb3dlc3QgdG8gaGlnaGVzdCB2YWx1ZXMnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ0FTQydcblx0XHRcdFx0XHR9XSxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocHJvZ3Jlc3Nfb3JkZXIpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcHJvZ3Jlc3Nfb3JkZXI6IHByb2dyZXNzX29yZGVyIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0dmFyIHBhbmVsYm9keV9xdWl6ID0gJyc7XG5cdFx0aWYgKHF1aXpfc2hvdyA9PT0gdHJ1ZSkge1xuXHRcdFx0cGFuZWxib2R5X3F1aXogPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFBhbmVsQm9keSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRpdGxlOiBzcHJpbnRmKF94KCclcyBBdHRlbXB0cycsICdwbGFjZWhvbGRlcjogUXVpeicsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpeicpKSxcblx0XHRcdFx0XHRpbml0aWFsT3BlbjogZmFsc2Vcblx0XHRcdFx0fSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdwZXIgcGFnZScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRoZWxwOiBzcHJpbnRmKF94KCdMZWF2ZSBlbXB0eSBmb3IgZGVmYXVsdCAoJWQpIG9yIDAgdG8gc2hvdyBhbGwgaXRlbXMuJywgJ3BsYWNlaG9sZGVyOiBkZWZhdWx0IHBlciBwYWdlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfcGVyX3BhZ2UoJ3F1aXpfbnVtJykpLFxuXHRcdFx0XHRcdHZhbHVlOiBxdWl6X251bSB8fCAnJyxcblx0XHRcdFx0XHRtaW46IDAsXG5cdFx0XHRcdFx0bWF4OiAxMDAsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHF1aXpfbnVtKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHF1aXpfbnVtOiBxdWl6X251bSB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoU2VsZWN0Q29udHJvbCwge1xuXHRcdFx0XHRcdGtleTogJ3F1aXpfb3JkZXJieScsXG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdPcmRlciBieScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogcXVpel9vcmRlcmJ5LFxuXHRcdFx0XHRcdG9wdGlvbnM6IFt7XG5cdFx0XHRcdFx0XHRsYWJlbDogX18oJ0RhdGUgVGFrZW4gKGRlZmF1bHQpIC0gT3JkZXIgYnkgZGF0ZSB0YWtlbicsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAndGFrZW4nXG5cdFx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdUaXRsZSAtIE9yZGVyIGJ5IHBvc3QgdGl0bGUnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ3RpdGxlJ1xuXHRcdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnSUQgLSBPcmRlciBieSBwb3N0IGlkLiAoZGVmYXVsdCknLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogJ0lEJ1xuXHRcdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnRGF0ZSAtIE9yZGVyIGJ5IHBvc3QgZGF0ZScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiAnZGF0ZSdcblx0XHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0XHRsYWJlbDogX18oJ01lbnUgLSBPcmRlciBieSBQYWdlIE9yZGVyIFZhbHVlJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICdtZW51X29yZGVyJ1xuXHRcdFx0XHRcdH1dLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShxdWl6X29yZGVyYnkpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcXVpel9vcmRlcmJ5OiBxdWl6X29yZGVyYnkgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcblx0XHRcdFx0XHRrZXk6ICdxdWl6X29yZGVyJyxcblx0XHRcdFx0XHRsYWJlbDogX18oJ09yZGVyJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdHZhbHVlOiBxdWl6X29yZGVyLFxuXHRcdFx0XHRcdG9wdGlvbnM6IFt7XG5cdFx0XHRcdFx0XHRsYWJlbDogX18oJ0RFU0MgLSBoaWdoZXN0IHRvIGxvd2VzdCB2YWx1ZXMgKGRlZmF1bHQpJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICdERVNDJ1xuXHRcdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnQVNDIC0gbG93ZXN0IHRvIGhpZ2hlc3QgdmFsdWVzJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6ICdBU0MnXG5cdFx0XHRcdFx0fV0sXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHF1aXpfb3JkZXIpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcXVpel9vcmRlcjogcXVpel9vcmRlciB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHZhciBpbnNwZWN0b3JDb250cm9scyA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdEluc3BlY3RvckNvbnRyb2xzLFxuXHRcdFx0bnVsbCxcblx0XHRcdHBhbmVsYm9keV9oZWFkZXIsXG5cdFx0XHRwYW5lbGJvZHlfcmVnaXN0ZXJlZCxcblx0XHRcdHBhbmVsYm9keV9wcm9ncmVzcyxcblx0XHRcdHBhbmVsYm9keV9xdWl6LFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0aXRsZTogX18oJ1ByZXZpZXcnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0aW5pdGlhbE9wZW46IGZhbHNlXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdTaG93IFByZXZpZXcnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0Y2hlY2tlZDogISFwcmV2aWV3X3Nob3csXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHByZXZpZXdfc2hvdykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBwcmV2aWV3X3Nob3c6IHByZXZpZXdfc2hvdyB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ1VzZXIgSUQnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0aGVscDogX18oJ0VudGVyIGEgVXNlciBJRCB0byB0ZXN0IHByZXZpZXcnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0dmFsdWU6IHByZXZpZXdfdXNlcl9pZCB8fCAnJyxcblx0XHRcdFx0XHR0eXBlOiAnbnVtYmVyJyxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocHJldmlld191c2VyX2lkKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHByZXZpZXdfdXNlcl9pZDogcHJldmlld191c2VyX2lkIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdClcblx0XHQpO1xuXG5cdFx0ZnVuY3Rpb24gZG9fc2VydmVyc2lkZV9yZW5kZXIoYXR0cmlidXRlcykge1xuXHRcdFx0aWYgKGF0dHJpYnV0ZXMucHJldmlld19zaG93ID09IHRydWUpIHtcblx0XHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZXJ2ZXJTaWRlUmVuZGVyLCB7XG5cdFx0XHRcdFx0YmxvY2s6ICdsZWFybmRhc2gvbGQtY291cnNlLWluZm8nLFxuXHRcdFx0XHRcdGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXNcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gX18oJ1tsZF9jb3Vyc2VfaW5mb10gc2hvcnRjb2RlIG91dHB1dCBzaG93biBoZXJlJywgJ2xlYXJuZGFzaCcpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBbaW5zcGVjdG9yQ29udHJvbHMsIGRvX3NlcnZlcnNpZGVfcmVuZGVyKHByb3BzLmF0dHJpYnV0ZXMpXTtcblx0fSxcblxuXHRzYXZlOiBmdW5jdGlvbiBzYXZlKHByb3BzKSB7XG5cdFx0Ly8gRGVsZXRlIG1ldGEgZnJvbSBwcm9wcyB0byBwcmV2ZW50IGl0IGJlaW5nIHNhdmVkLlxuXHRcdGRlbGV0ZSBwcm9wcy5hdHRyaWJ1dGVzLm1ldGE7XG5cblx0XHQvLyBEZWxldGUgcHJldmlld191c2VyX2lkIGZyb20gcHJvcHMgdG8gcHJldmVudCBpdCBiZWluZyBzYXZlZC5cblx0XHRkZWxldGUgcHJvcHMuYXR0cmlidXRlcy5wcmV2aWV3X3VzZXJfaWQ7XG5cdH1cbn0pOyIsIi8qKlxuICogTGVhcm5EYXNoIEJsb2NrIGxkLXVzZXItY291cnNlLXBvaW50c1xuICpcbiAqIEBzaW5jZSAyLjUuOVxuICogQHBhY2thZ2UgTGVhcm5EYXNoXG4gKi9cblxuLyoqXG4gKiBMZWFybkRhc2ggYmxvY2sgZnVuY3Rpb25zXG4gKi9cbmltcG9ydCB7IGxkbG1zX2dldF9jdXN0b21fbGFiZWwgfSBmcm9tICcuLi9sZGxtcy5qcyc7XG5cbi8qKlxuICogSW50ZXJuYWwgYmxvY2sgbGlicmFyaWVzXG4gKi9cbnZhciBfd3AkaTE4biA9IHdwLmkxOG4sXG4gICAgX18gPSBfd3AkaTE4bi5fXyxcbiAgICBfeCA9IF93cCRpMThuLl94LFxuICAgIHNwcmludGYgPSBfd3AkaTE4bi5zcHJpbnRmO1xudmFyIHJlZ2lzdGVyQmxvY2tUeXBlID0gd3AuYmxvY2tzLnJlZ2lzdGVyQmxvY2tUeXBlO1xudmFyIEluc3BlY3RvckNvbnRyb2xzID0gd3AuZWRpdG9yLkluc3BlY3RvckNvbnRyb2xzO1xudmFyIF93cCRjb21wb25lbnRzID0gd3AuY29tcG9uZW50cyxcbiAgICBTZXJ2ZXJTaWRlUmVuZGVyID0gX3dwJGNvbXBvbmVudHMuU2VydmVyU2lkZVJlbmRlcixcbiAgICBQYW5lbEJvZHkgPSBfd3AkY29tcG9uZW50cy5QYW5lbEJvZHksXG4gICAgVG9nZ2xlQ29udHJvbCA9IF93cCRjb21wb25lbnRzLlRvZ2dsZUNvbnRyb2wsXG4gICAgVGV4dENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5UZXh0Q29udHJvbDtcblxuXG5yZWdpc3RlckJsb2NrVHlwZSgnbGVhcm5kYXNoL2xkLXVzZXItY291cnNlLXBvaW50cycsIHtcbiAgICB0aXRsZTogc3ByaW50ZihfeCgnTGVhcm5EYXNoIFVzZXIgJXMgUG9pbnRzJywgJ0xlYXJuRGFzaCBVc2VyIENvdXJzZSBQb2ludHMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcbiAgICBkZXNjcmlwdGlvbjogc3ByaW50ZihfeCgnVGhpcyBibG9jayBzaG93cyB0aGUgZWFybmVkICVzIHBvaW50cyBmb3IgdGhlIHVzZXIuJywgJ3BsYWNlaG9sZGVyczogY291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgaWNvbjogJ2NoYXJ0LWFyZWEnLFxuICAgIGNhdGVnb3J5OiAnbGVhcm5kYXNoLWJsb2NrcycsXG4gICAgZXhhbXBsZToge1xuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICBleGFtcGxlX3Nob3c6IDFcbiAgICAgICAgfVxuICAgIH0sXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgY3VzdG9tQ2xhc3NOYW1lOiBmYWxzZVxuICAgIH0sXG4gICAgYXR0cmlidXRlczoge1xuICAgICAgICB1c2VyX2lkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnXG4gICAgICAgIH0sXG4gICAgICAgIHByZXZpZXdfc2hvdzoge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgZGVmYXVsdDogMVxuICAgICAgICB9LFxuICAgICAgICBwcmV2aWV3X3VzZXJfaWQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGVkaXQ6IGZ1bmN0aW9uIGVkaXQocHJvcHMpIHtcbiAgICAgICAgdmFyIF9wcm9wcyRhdHRyaWJ1dGVzID0gcHJvcHMuYXR0cmlidXRlcyxcbiAgICAgICAgICAgIHVzZXJfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy51c2VyX2lkLFxuICAgICAgICAgICAgcHJldmlld19zaG93ID0gX3Byb3BzJGF0dHJpYnV0ZXMucHJldmlld19zaG93LFxuICAgICAgICAgICAgcHJldmlld191c2VyX2lkID0gX3Byb3BzJGF0dHJpYnV0ZXMucHJldmlld191c2VyX2lkLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyA9IHByb3BzLnNldEF0dHJpYnV0ZXM7XG5cblxuICAgICAgICB2YXIgaW5zcGVjdG9yQ29udHJvbHMgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICBJbnNwZWN0b3JDb250cm9scyxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgUGFuZWxCb2R5LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF9fKCdTZXR0aW5ncycsICdsZWFybmRhc2gnKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnVXNlciBJRCcsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgaGVscDogX18oJ0VudGVyIHNwZWNpZmljIFVzZXIgSUQuIExlYXZlIGJsYW5rIGZvciBjdXJyZW50IFVzZXIuJywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdXNlcl9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHVzZXJfaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgdXNlcl9pZDogdXNlcl9pZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgIFBhbmVsQm9keSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfXygnUHJldmlldycsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW46IGZhbHNlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1Nob3cgUHJldmlldycsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZDogISFwcmV2aWV3X3Nob3csXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShwcmV2aWV3X3Nob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcHJldmlld19zaG93OiBwcmV2aWV3X3Nob3cgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdQcmV2aWV3IFVzZXIgSUQnLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIGhlbHA6IF9fKCdFbnRlciBhIFVzZXIgSUQgdG8gdGVzdCBwcmV2aWV3JywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcHJldmlld191c2VyX2lkIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHByZXZpZXdfdXNlcl9pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBwcmV2aWV3X3VzZXJfaWQ6IHByZXZpZXdfdXNlcl9pZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgZnVuY3Rpb24gZG9fc2VydmVyc2lkZV9yZW5kZXIoYXR0cmlidXRlcykge1xuICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMucHJldmlld19zaG93ID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlcnZlclNpZGVSZW5kZXIsIHtcbiAgICAgICAgICAgICAgICAgICAgYmxvY2s6ICdsZWFybmRhc2gvbGQtdXNlci1jb3Vyc2UtcG9pbnRzJyxcbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczogYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX18oJ1tsZF91c2VyX2NvdXJzZV9wb2ludHNdIHNob3J0Y29kZSBvdXRwdXQgc2hvd24gaGVyZScsICdsZWFybmRhc2gnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbaW5zcGVjdG9yQ29udHJvbHMsIGRvX3NlcnZlcnNpZGVfcmVuZGVyKHByb3BzLmF0dHJpYnV0ZXMpXTtcbiAgICB9LFxuXG4gICAgc2F2ZTogZnVuY3Rpb24gc2F2ZShwcm9wcykge1xuICAgICAgICAvLyBEZWxldGUgcHJldmlld191c2VyX2lkIGZyb20gcHJvcHMgdG8gcHJldmVudCBpdCBiZWluZyBzYXZlZC5cbiAgICAgICAgZGVsZXRlIHByb3BzLmF0dHJpYnV0ZXMucHJldmlld191c2VyX2lkO1xuICAgIH1cbn0pOyIsIi8qKlxuICogTGVhcm5EYXNoIEJsb2NrIGxkLWdyb3VwXG4gKlxuICogQHNpbmNlIDIuNS45XG4gKiBAcGFja2FnZSBMZWFybkRhc2hcbiAqL1xuXG4vKipcbiAqIExlYXJuRGFzaCBibG9jayBmdW5jdGlvbnNcbiAqL1xuaW1wb3J0IHsgbGRsbXNfZ2V0X2ludGVnZXJfdmFsdWUgfSBmcm9tICcuLi9sZGxtcy5qcyc7XG5cbi8qKlxuICogSW50ZXJuYWwgYmxvY2sgbGlicmFyaWVzXG4gKi9cbnZhciBfd3AkaTE4biA9IHdwLmkxOG4sXG4gICAgX18gPSBfd3AkaTE4bi5fXyxcbiAgICBfeCA9IF93cCRpMThuLl94LFxuICAgIHNwcmludGYgPSBfd3AkaTE4bi5zcHJpbnRmO1xudmFyIHJlZ2lzdGVyQmxvY2tUeXBlID0gd3AuYmxvY2tzLnJlZ2lzdGVyQmxvY2tUeXBlO1xudmFyIF93cCRlZGl0b3IgPSB3cC5lZGl0b3IsXG4gICAgSW5uZXJCbG9ja3MgPSBfd3AkZWRpdG9yLklubmVyQmxvY2tzLFxuICAgIEluc3BlY3RvckNvbnRyb2xzID0gX3dwJGVkaXRvci5JbnNwZWN0b3JDb250cm9scztcbnZhciBfd3AkY29tcG9uZW50cyA9IHdwLmNvbXBvbmVudHMsXG4gICAgUGFuZWxCb2R5ID0gX3dwJGNvbXBvbmVudHMuUGFuZWxCb2R5LFxuICAgIFRleHRDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVGV4dENvbnRyb2wsXG4gICAgVG9nZ2xlQ29udHJvbCA9IF93cCRjb21wb25lbnRzLlRvZ2dsZUNvbnRyb2w7XG5cblxucmVnaXN0ZXJCbG9ja1R5cGUoJ2xlYXJuZGFzaC9sZC1ncm91cCcsIHtcbiAgICB0aXRsZTogX18oJ0xlYXJuRGFzaCBHcm91cCcsICdsZWFybmRhc2gnKSxcbiAgICBkZXNjcmlwdGlvbjogX18oJ1RoaXMgYmxvY2sgc2hvd3MgdGhlIGNvbnRlbnQgaWYgdGhlIHVzZXIgaXMgZW5yb2xsZWQgaW50byB0aGUgR3JvdXAuJywgJ2xlYXJuZGFzaCcpLFxuICAgIGljb246ICdncm91cHMnLFxuICAgIGNhdGVnb3J5OiAnbGVhcm5kYXNoLWJsb2NrcycsXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgY3VzdG9tQ2xhc3NOYW1lOiBmYWxzZVxuICAgIH0sXG4gICAgYXR0cmlidXRlczoge1xuICAgICAgICBncm91cF9pZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZydcbiAgICAgICAgfSxcbiAgICAgICAgdXNlcl9pZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJ1xuICAgICAgICB9LFxuICAgICAgICBhdXRvcDoge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgICAgICB9XG4gICAgfSxcbiAgICBlZGl0OiBmdW5jdGlvbiBlZGl0KHByb3BzKSB7XG4gICAgICAgIHZhciBfcHJvcHMkYXR0cmlidXRlcyA9IHByb3BzLmF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBncm91cF9pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLmdyb3VwX2lkLFxuICAgICAgICAgICAgdXNlcl9pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLnVzZXJfaWQsXG4gICAgICAgICAgICBhdXRvcCA9IF9wcm9wcyRhdHRyaWJ1dGVzLmF1dG9wLFxuICAgICAgICAgICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyA9IHByb3BzLnNldEF0dHJpYnV0ZXM7XG5cblxuICAgICAgICB2YXIgaW5zcGVjdG9yQ29udHJvbHMgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICBJbnNwZWN0b3JDb250cm9scyxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgUGFuZWxCb2R5LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF9fKCdTZXR0aW5ncycsICdsZWFybmRhc2gnKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnR3JvdXAgSUQnLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIGhlbHA6IF9fKCdHcm91cCBJRCAocmVxdWlyZWQpJywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ3JvdXBfaWQgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShncm91cF9pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBncm91cF9pZDogZ3JvdXBfaWQgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdVc2VyIElEJywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICBoZWxwOiBfXygnRW50ZXIgc3BlY2lmaWMgVXNlciBJRC4gTGVhdmUgYmxhbmsgZm9yIGN1cnJlbnQgVXNlci4nLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1c2VyX2lkIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodXNlcl9pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyB1c2VyX2lkOiB1c2VyX2lkIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRvZ2dsZUNvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdBdXRvIFBhcmFncmFwaCcsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZDogISFhdXRvcCxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGF1dG9wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0QXR0cmlidXRlcyh7IGF1dG9wOiBhdXRvcCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdmFyIGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2UgPSAnJztcbiAgICAgICAgdmFyIHByZXZpZXdfZ3JvdXBfaWQgPSBsZGxtc19nZXRfaW50ZWdlcl92YWx1ZShncm91cF9pZCk7XG4gICAgICAgIGlmIChwcmV2aWV3X2dyb3VwX2lkID09IDApIHtcbiAgICAgICAgICAgIGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2UgPSBfXygnR3JvdXAgSUQgaXMgcmVxdWlyZWQuJywgJ2xlYXJuZGFzaCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2UubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZF9ibG9ja19lcnJvcl9tZXNzYWdlID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdzcGFuJyxcbiAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2xlYXJuZGFzaC1ibG9jay1lcnJvci1tZXNzYWdlJyB9LFxuICAgICAgICAgICAgICAgIGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2VcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgb3V0cHV0QmxvY2sgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUgfSxcbiAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2xlYXJuZGFzaC1ibG9jay1pbm5lcicgfSxcbiAgICAgICAgICAgICAgICBsZF9ibG9ja19lcnJvcl9tZXNzYWdlLFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChJbm5lckJsb2NrcywgbnVsbClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gW2luc3BlY3RvckNvbnRyb2xzLCBvdXRwdXRCbG9ja107XG4gICAgfSxcbiAgICBzYXZlOiBmdW5jdGlvbiBzYXZlKHByb3BzKSB7XG4gICAgICAgIHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoSW5uZXJCbG9ja3MuQ29udGVudCwgbnVsbCk7XG4gICAgfVxufSk7IiwiLyoqXG4gKiBMZWFybkRhc2ggQmxvY2sgbGQtcGF5bWVudC1idXR0b25zXG4gKlxuICogQHNpbmNlIDIuNS45XG4gKiBAcGFja2FnZSBMZWFybkRhc2hcbiAqL1xuXG4vKipcbiAqIExlYXJuRGFzaCBibG9jayBmdW5jdGlvbnNcbiAqL1xuaW1wb3J0IHsgbGRsbXNfZ2V0X3Bvc3RfZWRpdF9tZXRhLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsLCBsZGxtc19nZXRfaW50ZWdlcl92YWx1ZSB9IGZyb20gJy4uL2xkbG1zLmpzJztcblxuLyoqXG4gKiBJbnRlcm5hbCBibG9jayBsaWJyYXJpZXNcbiAqL1xudmFyIF93cCRpMThuID0gd3AuaTE4bixcbiAgICBfXyA9IF93cCRpMThuLl9fLFxuICAgIF94ID0gX3dwJGkxOG4uX3gsXG4gICAgc3ByaW50ZiA9IF93cCRpMThuLnNwcmludGY7XG52YXIgcmVnaXN0ZXJCbG9ja1R5cGUgPSB3cC5ibG9ja3MucmVnaXN0ZXJCbG9ja1R5cGU7XG52YXIgSW5zcGVjdG9yQ29udHJvbHMgPSB3cC5lZGl0b3IuSW5zcGVjdG9yQ29udHJvbHM7XG52YXIgX3dwJGNvbXBvbmVudHMgPSB3cC5jb21wb25lbnRzLFxuICAgIFNlcnZlclNpZGVSZW5kZXIgPSBfd3AkY29tcG9uZW50cy5TZXJ2ZXJTaWRlUmVuZGVyLFxuICAgIFBhbmVsQm9keSA9IF93cCRjb21wb25lbnRzLlBhbmVsQm9keSxcbiAgICBUb2dnbGVDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVG9nZ2xlQ29udHJvbCxcbiAgICBUZXh0Q29udHJvbCA9IF93cCRjb21wb25lbnRzLlRleHRDb250cm9sO1xuXG5cbnJlZ2lzdGVyQmxvY2tUeXBlKCdsZWFybmRhc2gvbGQtcGF5bWVudC1idXR0b25zJywge1xuICAgIHRpdGxlOiBfXygnTGVhcm5EYXNoIFBheW1lbnQgQnV0dG9ucycsICdsZWFybmRhc2gnKSxcbiAgICBkZXNjcmlwdGlvbjogc3ByaW50ZihfeCgnVGhpcyBibG9jayB0aGUgJXMgcGF5bWVudCBidXR0b25zJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcbiAgICBpY29uOiAnY2FydCcsXG4gICAgY2F0ZWdvcnk6ICdsZWFybmRhc2gtYmxvY2tzJyxcbiAgICBzdXBwb3J0czoge1xuICAgICAgICBjdXN0b21DbGFzc05hbWU6IGZhbHNlXG4gICAgfSxcbiAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgIGNvdXJzZV9pZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZydcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlld19zaG93OiB7XG4gICAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgICAgICBkZWZhdWx0OiAxXG4gICAgICAgIH0sXG4gICAgICAgIHByZXZpZXdfY291cnNlX2lkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGVkaXQ6IGZ1bmN0aW9uIGVkaXQocHJvcHMpIHtcbiAgICAgICAgdmFyIF9wcm9wcyRhdHRyaWJ1dGVzID0gcHJvcHMuYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGNvdXJzZV9pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLmNvdXJzZV9pZCxcbiAgICAgICAgICAgIHByZXZpZXdfc2hvdyA9IF9wcm9wcyRhdHRyaWJ1dGVzLnByZXZpZXdfc2hvdyxcbiAgICAgICAgICAgIHByZXZpZXdfY291cnNlX2lkID0gX3Byb3BzJGF0dHJpYnV0ZXMucHJldmlld19jb3Vyc2VfaWQsXG4gICAgICAgICAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzID0gcHJvcHMuc2V0QXR0cmlidXRlcztcblxuXG4gICAgICAgIHZhciBpbnNwZWN0b3JDb250cm9scyA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICBQYW5lbEJvZHksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogX18oJ1NldHRpbmdzJywgJ2xlYXJuZGFzaCcpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHNwcmludGYoX3goJyVzIElEJywgJ0NvdXJzZSBJRCcsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuICAgICAgICAgICAgICAgICAgICBoZWxwOiBzcHJpbnRmKF94KCdFbnRlciBzaW5nbGUgJTEkcyBJRC4gTGVhdmUgYmxhbmsgaWYgdXNlZCB3aXRoaW4gYSAlMiRzLicsICdwbGFjZWhvbGRlcnM6IGNvdXJzZSwgY291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY291cnNlX2lkIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoY291cnNlX2lkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0QXR0cmlidXRlcyh7IGNvdXJzZV9pZDogY291cnNlX2lkIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgUGFuZWxCb2R5LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF9fKCdQcmV2aWV3JywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsT3BlbjogZmFsc2VcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnU2hvdyBQcmV2aWV3JywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkOiAhIXByZXZpZXdfc2hvdyxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHByZXZpZXdfc2hvdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBwcmV2aWV3X3Nob3c6IHByZXZpZXdfc2hvdyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogc3ByaW50ZihfeCgnJXMgSUQnLCAncGxhY2Vob2xkZXI6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuICAgICAgICAgICAgICAgICAgICBoZWxwOiBzcHJpbnRmKF94KCdFbnRlciBhICVzIElEIHRvIHRlc3QgcHJldmlldycsICdwbGFjZWhvbGRlcjogQ291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwcmV2aWV3X2NvdXJzZV9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShwcmV2aWV3X2NvdXJzZV9pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBwcmV2aWV3X2NvdXJzZV9pZDogcHJldmlld19jb3Vyc2VfaWQgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIGZ1bmN0aW9uIGRvX3NlcnZlcnNpZGVfcmVuZGVyKGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLnByZXZpZXdfc2hvdyA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2UgPSAnJztcbiAgICAgICAgICAgICAgICB2YXIgX3ByZXZpZXdfY291cnNlX2lkID0gbGRsbXNfZ2V0X2ludGVnZXJfdmFsdWUoY291cnNlX2lkKTtcblxuICAgICAgICAgICAgICAgIGlmIChfcHJldmlld19jb3Vyc2VfaWQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgX3ByZXZpZXdfY291cnNlX2lkID0gbGRsbXNfZ2V0X3Bvc3RfZWRpdF9tZXRhKCdjb3Vyc2VfaWQnKTtcbiAgICAgICAgICAgICAgICAgICAgX3ByZXZpZXdfY291cnNlX2lkID0gbGRsbXNfZ2V0X2ludGVnZXJfdmFsdWUoX3ByZXZpZXdfY291cnNlX2lkKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoX3ByZXZpZXdfY291cnNlX2lkID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2UgPSBzcHJpbnRmKF94KCclMSRzIElEIGlzIHJlcXVpcmVkIHdoZW4gbm90IHVzZWQgd2l0aGluIGEgJTIkcy4nLCAncGxhY2Vob2xkZXJzOiBDb3Vyc2UsIENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChsZF9ibG9ja19lcnJvcl9tZXNzYWdlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBsZF9ibG9ja19lcnJvcl9tZXNzYWdlID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NwYW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdsZWFybmRhc2gtYmxvY2stZXJyb3ItbWVzc2FnZScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgb3V0cHV0QmxvY2sgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2xlYXJuZGFzaC1ibG9jay1pbm5lcicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZF9ibG9ja19lcnJvcl9tZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvdXRwdXRCbG9jaztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBXZSBhZGQgdGhlIG1ldGEgc28gdGhlIHNlcnZlciBrbm93bnMgd2hhdCBpcyBiZWluZyBlZGl0ZWQuXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMubWV0YSA9IGxkbG1zX2dldF9wb3N0X2VkaXRfbWV0YSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoU2VydmVyU2lkZVJlbmRlciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2s6ICdsZWFybmRhc2gvbGQtcGF5bWVudC1idXR0b25zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX18oJ1tsZWFybmRhc2hfcGF5bWVudF9idXR0b25zXSBzaG9ydGNvZGUgb3V0cHV0IHNob3duIGhlcmUnLCAnbGVhcm5kYXNoJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW2luc3BlY3RvckNvbnRyb2xzLCBkb19zZXJ2ZXJzaWRlX3JlbmRlcihwcm9wcy5hdHRyaWJ1dGVzKV07XG4gICAgfSxcblxuICAgIHNhdmU6IGZ1bmN0aW9uIHNhdmUocHJvcHMpIHtcbiAgICAgICAgLy8gRGVsZXRlIG1ldGEgZnJvbSBwcm9wcyB0byBwcmV2ZW50IGl0IGJlaW5nIHNhdmVkLlxuICAgICAgICBkZWxldGUgcHJvcHMuYXR0cmlidXRlcy5tZXRhO1xuICAgIH1cbn0pOyIsIi8qKlxuICogTGVhcm5EYXNoIEJsb2NrIGxkLWNvdXJzZS1jb250ZW50XG4gKlxuICogQHNpbmNlIDIuNS45XG4gKiBAcGFja2FnZSBMZWFybkRhc2hcbiAqL1xuXG4vKipcbiAqIExlYXJuRGFzaCBibG9jayBmdW5jdGlvbnNcbiAqL1xuaW1wb3J0IHsgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCwgbGRsbXNfZ2V0X3Bvc3RfZWRpdF9tZXRhLCBsZGxtc19nZXRfcGVyX3BhZ2UgfSBmcm9tICcuLi9sZGxtcy5qcyc7XG5cbi8qKlxuICogSW50ZXJuYWwgYmxvY2sgbGlicmFyaWVzXG4gKi9cbnZhciBfd3AkaTE4biA9IHdwLmkxOG4sXG4gICAgX18gPSBfd3AkaTE4bi5fXyxcbiAgICBfeCA9IF93cCRpMThuLl94LFxuICAgIHNwcmludGYgPSBfd3AkaTE4bi5zcHJpbnRmO1xudmFyIHJlZ2lzdGVyQmxvY2tUeXBlID0gd3AuYmxvY2tzLnJlZ2lzdGVyQmxvY2tUeXBlO1xudmFyIEluc3BlY3RvckNvbnRyb2xzID0gd3AuZWRpdG9yLkluc3BlY3RvckNvbnRyb2xzO1xudmFyIF93cCRjb21wb25lbnRzID0gd3AuY29tcG9uZW50cyxcbiAgICBTZXJ2ZXJTaWRlUmVuZGVyID0gX3dwJGNvbXBvbmVudHMuU2VydmVyU2lkZVJlbmRlcixcbiAgICBQYW5lbEJvZHkgPSBfd3AkY29tcG9uZW50cy5QYW5lbEJvZHksXG4gICAgVG9nZ2xlQ29udHJvbCA9IF93cCRjb21wb25lbnRzLlRvZ2dsZUNvbnRyb2wsXG4gICAgVGV4dENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5UZXh0Q29udHJvbDtcblxuXG5yZWdpc3RlckJsb2NrVHlwZSgnbGVhcm5kYXNoL2xkLWNvdXJzZS1jb250ZW50Jywge1xuXHR0aXRsZTogc3ByaW50ZihfeCgnTGVhcm5EYXNoICVzIENvbnRlbnQnLCAncGxhY2Vob2xkZXI6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuXHRkZXNjcmlwdGlvbjogc3ByaW50ZihfeCgnVGhpcyBibG9jayBkaXNwbGF5cyB0aGUgJTEkcyBDb250ZW50IHRhYmxlLicsICdwbGFjZWhvbGRlcnM6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuXHRpY29uOiAnZm9ybWF0LWFzaWRlJyxcblx0Y2F0ZWdvcnk6ICdsZWFybmRhc2gtYmxvY2tzJyxcblx0ZXhhbXBsZToge1xuXHRcdGF0dHJpYnV0ZXM6IHtcblx0XHRcdGV4YW1wbGVfc2hvdzogMVxuXHRcdH1cblx0fSxcblx0c3VwcG9ydHM6IHtcblx0XHRjdXN0b21DbGFzc05hbWU6IGZhbHNlXG5cdH0sXG5cdGF0dHJpYnV0ZXM6IHtcblx0XHRjb3Vyc2VfaWQ6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdHBlcl9wYWdlOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRwcmV2aWV3X3Nob3c6IHtcblx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdGRlZmF1bHQ6IDFcblx0XHR9LFxuXHRcdHByZXZpZXdfY291cnNlX2lkOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRleGFtcGxlX3Nob3c6IHtcblx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdGRlZmF1bHQ6IDBcblx0XHR9LFxuXHRcdG1ldGE6IHtcblx0XHRcdHR5cGU6ICdvYmplY3QnXG5cdFx0fVxuXHR9LFxuXHRlZGl0OiBmdW5jdGlvbiBlZGl0KHByb3BzKSB7XG5cdFx0dmFyIF9wcm9wcyRhdHRyaWJ1dGVzID0gcHJvcHMuYXR0cmlidXRlcyxcblx0XHQgICAgY291cnNlX2lkID0gX3Byb3BzJGF0dHJpYnV0ZXMuY291cnNlX2lkLFxuXHRcdCAgICBwZXJfcGFnZSA9IF9wcm9wcyRhdHRyaWJ1dGVzLnBlcl9wYWdlLFxuXHRcdCAgICBwcmV2aWV3X3Nob3cgPSBfcHJvcHMkYXR0cmlidXRlcy5wcmV2aWV3X3Nob3csXG5cdFx0ICAgIHByZXZpZXdfY291cnNlX2lkID0gX3Byb3BzJGF0dHJpYnV0ZXMucHJldmlld19jb3Vyc2VfaWQsXG5cdFx0ICAgIGV4YW1wbGVfc2hvdyA9IF9wcm9wcyRhdHRyaWJ1dGVzLmV4YW1wbGVfc2hvdyxcblx0XHQgICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuXHRcdCAgICBzZXRBdHRyaWJ1dGVzID0gcHJvcHMuc2V0QXR0cmlidXRlcztcblxuXG5cdFx0dmFyIGluc3BlY3RvckNvbnRyb2xzID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0SW5zcGVjdG9yQ29udHJvbHMsXG5cdFx0XHRudWxsLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0aXRsZTogX18oJ1NldHRpbmdzJywgJ2xlYXJuZGFzaCcpXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBzcHJpbnRmKF94KCclcyBJRCcsICdDb3Vyc2UgSUQnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcblx0XHRcdFx0XHRoZWxwOiBzcHJpbnRmKF94KCdFbnRlciBzaW5nbGUgJTEkcyBJRC4gTGVhdmUgYmxhbmsgaWYgdXNlZCB3aXRoaW4gYSAlMiRzLicsICdwbGFjZWhvbGRlcnM6IGNvdXJzZSwgY291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuXHRcdFx0XHRcdHZhbHVlOiBjb3Vyc2VfaWQgfHwgJycsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGNvdXJzZV9pZCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBjb3Vyc2VfaWQ6IGNvdXJzZV9pZCB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnJXMgcGVyIHBhZ2UnLCAncGxhY2Vob2xkZXI6IExlc3NvbnMnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2xlc3NvbnMnKSksXG5cdFx0XHRcdFx0aGVscDogc3ByaW50ZihfeCgnTGVhdmUgZW1wdHkgZm9yIGRlZmF1bHQgKCVkKSBvciAwIHRvIHNob3cgYWxsIGl0ZW1zLicsICdwbGFjZWhvbGRlcjogZGVmYXVsdCBwZXIgcGFnZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X3Blcl9wYWdlKCdwZXJfcGFnZScpKSxcblx0XHRcdFx0XHR2YWx1ZTogcGVyX3BhZ2UgfHwgJycsXG5cdFx0XHRcdFx0dHlwZTogJ251bWJlcicsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHBlcl9wYWdlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHBlcl9wYWdlOiBwZXJfcGFnZSB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHQpLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0aXRsZTogX18oJ1ByZXZpZXcnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0aW5pdGlhbE9wZW46IGZhbHNlXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdTaG93IFByZXZpZXcnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0Y2hlY2tlZDogISFwcmV2aWV3X3Nob3csXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHByZXZpZXdfc2hvdykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBwcmV2aWV3X3Nob3c6IHByZXZpZXdfc2hvdyB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnJXMgSUQnLCAncGxhY2Vob2xkZXI6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuXHRcdFx0XHRcdGhlbHA6IHNwcmludGYoX3goJ0VudGVyIGEgJXMgSUQgdG8gdGVzdCBwcmV2aWV3JywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcblx0XHRcdFx0XHR2YWx1ZTogcHJldmlld19jb3Vyc2VfaWQgfHwgJycsXG5cdFx0XHRcdFx0dHlwZTogJ251bWJlcicsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHByZXZpZXdfY291cnNlX2lkKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHByZXZpZXdfY291cnNlX2lkOiBwcmV2aWV3X2NvdXJzZV9pZCB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHQpXG5cdFx0KTtcblxuXHRcdGZ1bmN0aW9uIGRvX3NlcnZlcnNpZGVfcmVuZGVyKGF0dHJpYnV0ZXMpIHtcblx0XHRcdGlmIChhdHRyaWJ1dGVzLnByZXZpZXdfc2hvdyA9PSB0cnVlKSB7XG5cdFx0XHRcdC8vIFdlIGFkZCB0aGUgbWV0YSBzbyB0aGUgc2VydmVyIGtub3ducyB3aGF0IGlzIGJlaW5nIGVkaXRlZC5cblx0XHRcdFx0YXR0cmlidXRlcy5tZXRhID0gbGRsbXNfZ2V0X3Bvc3RfZWRpdF9tZXRhKCk7XG5cblx0XHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZXJ2ZXJTaWRlUmVuZGVyLCB7XG5cdFx0XHRcdFx0YmxvY2s6ICdsZWFybmRhc2gvbGQtY291cnNlLWNvbnRlbnQnLFxuXHRcdFx0XHRcdGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXNcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gX18oJ1tjb3Vyc2VfY29udGVudF0gc2hvcnRjb2RlIG91dHB1dCBzaG93biBoZXJlJywgJ2xlYXJuZGFzaCcpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBbaW5zcGVjdG9yQ29udHJvbHMsIGRvX3NlcnZlcnNpZGVfcmVuZGVyKHByb3BzLmF0dHJpYnV0ZXMpXTtcblx0fSxcblxuXHRzYXZlOiBmdW5jdGlvbiBzYXZlKHByb3BzKSB7XG5cdFx0Ly8gRGVsZXRlIG1ldGEgZnJvbSBwcm9wcyB0byBwcmV2ZW50IGl0IGJlaW5nIHNhdmVkLlxuXHRcdGRlbGV0ZSBwcm9wcy5hdHRyaWJ1dGVzLm1ldGE7XG5cdH1cbn0pOyIsIi8qKlxuICogTGVhcm5EYXNoIEJsb2NrIGxkLWNvdXJzZS1leHBpcmUtc3RhdHVzXG4gKlxuICogQHNpbmNlIDIuNS45XG4gKiBAcGFja2FnZSBMZWFybkRhc2hcbiAqL1xuXG4vKipcbiAqIExlYXJuRGFzaCBibG9jayBmdW5jdGlvbnNcbiAqL1xuaW1wb3J0IHsgbGRsbXNfZ2V0X3Bvc3RfZWRpdF9tZXRhLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsIH0gZnJvbSAnLi4vbGRsbXMuanMnO1xuXG4vKipcbiAqIEludGVybmFsIGJsb2NrIGxpYnJhcmllc1xuICovXG52YXIgX3dwJGkxOG4gPSB3cC5pMThuLFxuICAgIF9fID0gX3dwJGkxOG4uX18sXG4gICAgX3ggPSBfd3AkaTE4bi5feCxcbiAgICBzcHJpbnRmID0gX3dwJGkxOG4uc3ByaW50ZjtcbnZhciByZWdpc3RlckJsb2NrVHlwZSA9IHdwLmJsb2Nrcy5yZWdpc3RlckJsb2NrVHlwZTtcbnZhciBJbnNwZWN0b3JDb250cm9scyA9IHdwLmVkaXRvci5JbnNwZWN0b3JDb250cm9scztcbnZhciBfd3AkY29tcG9uZW50cyA9IHdwLmNvbXBvbmVudHMsXG4gICAgU2VydmVyU2lkZVJlbmRlciA9IF93cCRjb21wb25lbnRzLlNlcnZlclNpZGVSZW5kZXIsXG4gICAgUGFuZWxCb2R5ID0gX3dwJGNvbXBvbmVudHMuUGFuZWxCb2R5LFxuICAgIFRvZ2dsZUNvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5Ub2dnbGVDb250cm9sLFxuICAgIFRleHRDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVGV4dENvbnRyb2w7XG5cblxucmVnaXN0ZXJCbG9ja1R5cGUoJ2xlYXJuZGFzaC9sZC1jb3Vyc2UtZXhwaXJlLXN0YXR1cycsIHtcblx0dGl0bGU6IHNwcmludGYoX3goJ0xlYXJuRGFzaCAlcyBFeHBpcmUgU3RhdHVzJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcblx0ZGVzY3JpcHRpb246IHNwcmludGYoX3goJ1RoaXMgYmxvY2sgZGlzcGxheXMgdGhlIHVzZXIgJXMgYWNjZXNzIGV4cGlyZSBkYXRlLicsICdwbGFjZWhvbGRlcnM6IGNvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuXHRpY29uOiAnY2xvY2snLFxuXHRjYXRlZ29yeTogJ2xlYXJuZGFzaC1ibG9ja3MnLFxuXHRleGFtcGxlOiB7XG5cdFx0YXR0cmlidXRlczoge1xuXHRcdFx0ZXhhbXBsZV9zaG93OiAxXG5cdFx0fVxuXHR9LFxuXHRzdXBwb3J0czoge1xuXHRcdGN1c3RvbUNsYXNzTmFtZTogZmFsc2Vcblx0fSxcblx0YXR0cmlidXRlczoge1xuXHRcdGNvdXJzZV9pZDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0dXNlcl9pZDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0bGFiZWxfYmVmb3JlOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRsYWJlbF9hZnRlcjoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0YXV0b3A6IHtcblx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdGRlZmF1bHQ6IHRydWVcblx0XHR9LFxuXHRcdHByZXZpZXdfc2hvdzoge1xuXHRcdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdFx0ZGVmYXVsdDogMVxuXHRcdH0sXG5cdFx0cHJldmlld19jb3Vyc2VfaWQ6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdHByZXZpZXdfdXNlcl9pZDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0ZXhhbXBsZV9zaG93OiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiAwXG5cdFx0fSxcblx0XHRtZXRhOiB7XG5cdFx0XHR0eXBlOiAnb2JqZWN0J1xuXHRcdH1cblx0fSxcblx0ZWRpdDogZnVuY3Rpb24gZWRpdChwcm9wcykge1xuXHRcdHZhciBjb3Vyc2VfaWQgPSBwcm9wcy5hdHRyaWJ1dGVzLmNvdXJzZV9pZCxcblx0XHQgICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuXHRcdHZhciBfcHJvcHMkYXR0cmlidXRlcyA9IHByb3BzLmF0dHJpYnV0ZXMsXG5cdFx0ICAgIHVzZXJfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy51c2VyX2lkLFxuXHRcdCAgICBsYWJlbF9iZWZvcmUgPSBfcHJvcHMkYXR0cmlidXRlcy5sYWJlbF9iZWZvcmUsXG5cdFx0ICAgIGxhYmVsX2FmdGVyID0gX3Byb3BzJGF0dHJpYnV0ZXMubGFiZWxfYWZ0ZXIsXG5cdFx0ICAgIGF1dG9wID0gX3Byb3BzJGF0dHJpYnV0ZXMuYXV0b3AsXG5cdFx0ICAgIHByZXZpZXdfY291cnNlX2lkID0gX3Byb3BzJGF0dHJpYnV0ZXMucHJldmlld19jb3Vyc2VfaWQsXG5cdFx0ICAgIHByZXZpZXdfdXNlcl9pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLnByZXZpZXdfdXNlcl9pZCxcblx0XHQgICAgcHJldmlld19zaG93ID0gX3Byb3BzJGF0dHJpYnV0ZXMucHJldmlld19zaG93LFxuXHRcdCAgICBleGFtcGxlX3Nob3cgPSBfcHJvcHMkYXR0cmlidXRlcy5leGFtcGxlX3Nob3csXG5cdFx0ICAgIHNldEF0dHJpYnV0ZXMgPSBwcm9wcy5zZXRBdHRyaWJ1dGVzO1xuXG5cblx0XHR2YXIgaW5zcGVjdG9yQ29udHJvbHMgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRJbnNwZWN0b3JDb250cm9scyxcblx0XHRcdG51bGwsXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFBhbmVsQm9keSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRpdGxlOiBfXygnU2V0dGluZ3MnLCAnbGVhcm5kYXNoJylcblx0XHRcdFx0fSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJyVzIElEJywgJ0NvdXJzZSBJRCcsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuXHRcdFx0XHRcdGhlbHA6IHNwcmludGYoX3goJ0VudGVyIHNpbmdsZSAlMSRzIElELiBMZWF2ZSBibGFuayBpZiB1c2VkIHdpdGhpbiBhICUyJHMuJywgJ3BsYWNlaG9sZGVyczogY291cnNlLCBjb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG5cdFx0XHRcdFx0dmFsdWU6IGNvdXJzZV9pZCB8fCAnJyxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoY291cnNlX2lkKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGNvdXJzZV9pZDogY291cnNlX2lkIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnVXNlciBJRCcsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRoZWxwOiBfXygnRW50ZXIgc3BlY2lmaWMgVXNlciBJRC4gTGVhdmUgYmxhbmsgZm9yIGN1cnJlbnQgVXNlci4nLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0dmFsdWU6IHVzZXJfaWQgfHwgJycsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHVzZXJfaWQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgdXNlcl9pZDogdXNlcl9pZCB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ0xhYmVsIEJlZm9yZScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRoZWxwOiBfXygnVGhlIGxhYmVsIHByZWZpeCBzaG93biBiZWZvcmUgdGhlIGFjY2VzcyBleHBpcmVzJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdHZhbHVlOiBsYWJlbF9iZWZvcmUgfHwgJycsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGxhYmVsX2JlZm9yZSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBsYWJlbF9iZWZvcmU6IGxhYmVsX2JlZm9yZSB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ0xhYmVsIEFmdGVyJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdGhlbHA6IF9fKCdUaGUgbGFiZWwgcHJlZml4IHNob3duIGFmdGVyIGFjY2VzcyBoYXMgZXhwaXJlZCcsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogbGFiZWxfYWZ0ZXIgfHwgJycsXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGxhYmVsX2FmdGVyKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGxhYmVsX2FmdGVyOiBsYWJlbF9hZnRlciB9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnQXV0byBQYXJhZ3JhcGgnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0Y2hlY2tlZDogISFhdXRvcCxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoYXV0b3ApIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgYXV0b3A6IGF1dG9wIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdCksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFBhbmVsQm9keSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRpdGxlOiBfXygnUHJldmlldycsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRpbml0aWFsT3BlbjogZmFsc2Vcblx0XHRcdFx0fSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRvZ2dsZUNvbnRyb2wsIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ1Nob3cgUHJldmlldycsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRjaGVja2VkOiAhIXByZXZpZXdfc2hvdyxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocHJldmlld19zaG93KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHByZXZpZXdfc2hvdzogcHJldmlld19zaG93IH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBzcHJpbnRmKF94KCclcyBJRCcsICdwbGFjZWhvbGRlcjogQ291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG5cdFx0XHRcdFx0aGVscDogc3ByaW50ZihfeCgnRW50ZXIgYSAlcyBJRCB0byB0ZXN0IHByZXZpZXcnLCAncGxhY2Vob2xkZXI6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuXHRcdFx0XHRcdHZhbHVlOiBwcmV2aWV3X2NvdXJzZV9pZCB8fCAnJyxcblx0XHRcdFx0XHR0eXBlOiAnbnVtYmVyJyxcblx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocHJldmlld19jb3Vyc2VfaWQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcHJldmlld19jb3Vyc2VfaWQ6IHByZXZpZXdfY291cnNlX2lkIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnVXNlciBJRCcsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHRoZWxwOiBfXygnRW50ZXIgYSBVc2VyIElEIHRvIHRlc3QgcHJldmlldycsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogcHJldmlld191c2VyX2lkIHx8ICcnLFxuXHRcdFx0XHRcdHR5cGU6ICdudW1iZXInLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShwcmV2aWV3X3VzZXJfaWQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcHJldmlld191c2VyX2lkOiBwcmV2aWV3X3VzZXJfaWQgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0KVxuXHRcdCk7XG5cblx0XHRmdW5jdGlvbiBkb19zZXJ2ZXJzaWRlX3JlbmRlcihhdHRyaWJ1dGVzKSB7XG5cdFx0XHRpZiAoYXR0cmlidXRlcy5wcmV2aWV3X3Nob3cgPT0gdHJ1ZSkge1xuXHRcdFx0XHQvLyBXZSBhZGQgdGhlIG1ldGEgc28gdGhlIHNlcnZlciBrbm93bnMgd2hhdCBpcyBiZWluZyBlZGl0ZWQuXG5cdFx0XHRcdGF0dHJpYnV0ZXMubWV0YSA9IGxkbG1zX2dldF9wb3N0X2VkaXRfbWV0YSgpO1xuXG5cdFx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoU2VydmVyU2lkZVJlbmRlciwge1xuXHRcdFx0XHRcdGJsb2NrOiAnbGVhcm5kYXNoL2xkLWNvdXJzZS1leHBpcmUtc3RhdHVzJyxcblx0XHRcdFx0XHRhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIF9fKCdbbGRfY291cnNlX2V4cGlyZV9zdGF0dXNdIHNob3J0Y29kZSBvdXRwdXQgc2hvd24gaGVyZScsICdsZWFybmRhc2gnKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gW2luc3BlY3RvckNvbnRyb2xzLCBkb19zZXJ2ZXJzaWRlX3JlbmRlcihwcm9wcy5hdHRyaWJ1dGVzKV07XG5cdH0sXG5cblx0c2F2ZTogZnVuY3Rpb24gc2F2ZShwcm9wcykge1xuXHRcdC8vIERlbGV0ZSBtZXRhIGZyb20gcHJvcHMgdG8gcHJldmVudCBpdCBiZWluZyBzYXZlZC5cblx0XHRkZWxldGUgcHJvcHMuYXR0cmlidXRlcy5tZXRhO1xuXG5cdFx0Ly8gRGVsZXRlIHByZXZpZXdfdXNlcl9pZCBmcm9tIHByb3BzIHRvIHByZXZlbnQgaXQgYmVpbmcgc2F2ZWQuXG5cdFx0ZGVsZXRlIHByb3BzLmF0dHJpYnV0ZXMucHJldmlld191c2VyX2lkO1xuXHR9XG59KTsiLCIvKipcbiAqIExlYXJuRGFzaCBCbG9jayBsZC1jZXJ0aWZpY2F0ZVxuICpcbiAqIEBzaW5jZSAzLjJcbiAqIEBwYWNrYWdlIExlYXJuRGFzaFxuICovXG5cbi8qKlxuICogTGVhcm5EYXNoIGJsb2NrIGZ1bmN0aW9uc1xuICovXG5pbXBvcnQgeyBsZGxtc19nZXRfcG9zdF9lZGl0X21ldGEsIGxkbG1zX2dldF9jdXN0b21fbGFiZWwsIGxkbG1zX2dldF9pbnRlZ2VyX3ZhbHVlIH0gZnJvbSAnLi4vbGRsbXMuanMnO1xuXG4vKipcbiAqIEludGVybmFsIGJsb2NrIGxpYnJhcmllc1xuICovXG52YXIgX3dwJGkxOG4gPSB3cC5pMThuLFxuICAgIF9fID0gX3dwJGkxOG4uX18sXG4gICAgX3ggPSBfd3AkaTE4bi5feCxcbiAgICBzcHJpbnRmID0gX3dwJGkxOG4uc3ByaW50ZjtcbnZhciByZWdpc3RlckJsb2NrVHlwZSA9IHdwLmJsb2Nrcy5yZWdpc3RlckJsb2NrVHlwZTtcbnZhciBJbnNwZWN0b3JDb250cm9scyA9IHdwLmVkaXRvci5JbnNwZWN0b3JDb250cm9scztcbnZhciBfd3AkY29tcG9uZW50cyA9IHdwLmNvbXBvbmVudHMsXG4gICAgU2VydmVyU2lkZVJlbmRlciA9IF93cCRjb21wb25lbnRzLlNlcnZlclNpZGVSZW5kZXIsXG4gICAgUGFuZWxCb2R5ID0gX3dwJGNvbXBvbmVudHMuUGFuZWxCb2R5LFxuICAgIFRleHRDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVGV4dENvbnRyb2wsXG4gICAgVG9nZ2xlQ29udHJvbCA9IF93cCRjb21wb25lbnRzLlRvZ2dsZUNvbnRyb2w7XG5cblxucmVnaXN0ZXJCbG9ja1R5cGUoJ2xlYXJuZGFzaC9sZC1jZXJ0aWZpY2F0ZScsIHtcbiAgICB0aXRsZTogX18oJ0xlYXJuRGFzaCBDZXJ0aWZpY2F0ZScsICdsZWFybmRhc2gnKSxcbiAgICBkZXNjcmlwdGlvbjogX3goJ1RoaXMgc2hvcnRjb2RlIHNob3dzIGEgQ2VydGlmaWNhdGUgZG93bmxvYWQgbGluay4nLCAnbGVhcm5kYXNoJyksXG4gICAgaWNvbjogJ3dlbGNvbWUtbGVhcm4tbW9yZScsXG4gICAgY2F0ZWdvcnk6ICdsZWFybmRhc2gtYmxvY2tzJyxcbiAgICBzdXBwb3J0czoge1xuICAgICAgICBjdXN0b21DbGFzc05hbWU6IGZhbHNlXG4gICAgfSxcbiAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgIGNvdXJzZV9pZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJ1xuICAgICAgICB9LFxuICAgICAgICBxdWl6X2lkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnXG4gICAgICAgIH0sXG4gICAgICAgIHVzZXJfaWQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVmYXVsdDogJydcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWw6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVmYXVsdDogJydcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NfaHRtbDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJ1xuICAgICAgICB9LFxuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnXG4gICAgICAgIH0sXG4gICAgICAgIGNhbGxiYWNrOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnXG4gICAgICAgIH0sXG4gICAgICAgIHByZXZpZXdfc2hvdzoge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgZGVmYXVsdDogMVxuICAgICAgICB9LFxuICAgICAgICBwcmV2aWV3X2NvdXJzZV9pZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJ1xuICAgICAgICB9LFxuICAgICAgICBwcmV2aWV3X3F1aXpfaWQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVmYXVsdDogJydcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlld191c2VyX2lkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnXG4gICAgICAgIH0sXG4gICAgICAgIGV4YW1wbGVfc2hvdzoge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgZGVmYXVsdDogMFxuICAgICAgICB9XG4gICAgfSxcbiAgICBlZGl0OiBmdW5jdGlvbiBlZGl0KHByb3BzKSB7XG4gICAgICAgIHZhciBfcHJvcHMkYXR0cmlidXRlcyA9IHByb3BzLmF0dHJpYnV0ZXMsXG4gICAgICAgICAgICBjb3Vyc2VfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy5jb3Vyc2VfaWQsXG4gICAgICAgICAgICBxdWl6X2lkID0gX3Byb3BzJGF0dHJpYnV0ZXMucXVpel9pZCxcbiAgICAgICAgICAgIHVzZXJfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy51c2VyX2lkLFxuICAgICAgICAgICAgbGFiZWwgPSBfcHJvcHMkYXR0cmlidXRlcy5sYWJlbCxcbiAgICAgICAgICAgIGNsYXNzX2h0bWwgPSBfcHJvcHMkYXR0cmlidXRlcy5jbGFzc19odG1sLFxuICAgICAgICAgICAgY29udGV4dCA9IF9wcm9wcyRhdHRyaWJ1dGVzLmNvbnRleHQsXG4gICAgICAgICAgICBjYWxsYmFjayA9IF9wcm9wcyRhdHRyaWJ1dGVzLmNhbGxiYWNrLFxuICAgICAgICAgICAgcHJldmlld19zaG93ID0gX3Byb3BzJGF0dHJpYnV0ZXMucHJldmlld19zaG93LFxuICAgICAgICAgICAgcHJldmlld19jb3Vyc2VfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy5wcmV2aWV3X2NvdXJzZV9pZCxcbiAgICAgICAgICAgIHByZXZpZXdfcXVpel9pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLnByZXZpZXdfcXVpel9pZCxcbiAgICAgICAgICAgIHByZXZpZXdfdXNlcl9pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLnByZXZpZXdfdXNlcl9pZCxcbiAgICAgICAgICAgIGV4YW1wbGVfc2hvdyA9IF9wcm9wcyRhdHRyaWJ1dGVzLmV4YW1wbGVfc2hvdyxcbiAgICAgICAgICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMgPSBwcm9wcy5zZXRBdHRyaWJ1dGVzO1xuXG5cbiAgICAgICAgdmFyIGluc3BlY3RvckNvbnRyb2xzID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgIFBhbmVsQm9keSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfXygnU2V0dGluZ3MnLCAnbGVhcm5kYXNoJylcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogc3ByaW50ZihfeCgnJXMgSUQnLCAnQ291cnNlIElEJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgICAgICAgICAgICAgICAgIGhlbHA6IHNwcmludGYoX3goJ0VudGVyIHNpbmdsZSAlMSRzIElELiBMZWF2ZSBibGFuayBpZiB1c2VkIHdpdGhpbiBhICUyJHMuJywgJ3BsYWNlaG9sZGVyczogY291cnNlLCBjb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjb3Vyc2VfaWQgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShjb3Vyc2VfaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgY291cnNlX2lkOiBjb3Vyc2VfaWQgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHNwcmludGYoX3goJyVzIElEJywgJ1F1aXogSUQnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3F1aXonKSksXG4gICAgICAgICAgICAgICAgICAgIGhlbHA6IHNwcmludGYoX3goJ0VudGVyIHNpbmdsZSAlMSRzIElELiBMZWF2ZSBibGFuayBpZiB1c2VkIHdpdGhpbiBhICUyJHMuJywgJ3BsYWNlaG9sZGVyczogcXVpeiwgcXVpeicsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpeicpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdxdWl6JykpLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcXVpel9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHF1aXpfaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcXVpel9pZDogcXVpel9pZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1VzZXIgSUQnLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIGhlbHA6IF9fKCdFbnRlciBzcGVjaWZpYyBVc2VyIElELiBMZWF2ZSBibGFuayBmb3IgY3VycmVudCBVc2VyLicsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHVzZXJfaWQgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh1c2VyX2lkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0QXR0cmlidXRlcyh7IHVzZXJfaWQ6IHVzZXJfaWQgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdMYWJlbCcsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgaGVscDogX18oJ0xhYmVsIGZvciBsaW5rIHNob3duIHRvIHVzZXInLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBsYWJlbCB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0QXR0cmlidXRlcyh7IGxhYmVsOiBsYWJlbCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ0NsYXNzJywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICBoZWxwOiBfXygnSFRNTCBjbGFzcyBmb3IgbGluayBlbGVtZW50JywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY2xhc3NfaHRtbCB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGNsYXNzX2h0bWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgY2xhc3NfaHRtbDogY2xhc3NfaHRtbCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ0NvbnRleHQnLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIGhlbHA6IF9fKCdVc2VyIGRlZmluZWQgdmFsdWUgdG8gYmUgcGFzc2VkIGludG8gc2hvcnRjb2RlIGhhbmRsZXInLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjb250ZXh0IHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoY29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBjb250ZXh0OiBjb250ZXh0IH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnQ2FsbGJhY2snLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIGhlbHA6IF9fKCdDdXN0b20gY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgdXNlZCBpbnN0ZWFkIG9mIGRlZmF1bHQgb3V0cHV0JywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY2FsbGJhY2sgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBjYWxsYmFjazogY2FsbGJhY2sgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICBQYW5lbEJvZHksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogX18oJ1ByZXZpZXcnLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxPcGVuOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRvZ2dsZUNvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdTaG93IFByZXZpZXcnLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6ICEhcHJldmlld19zaG93LFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocHJldmlld19zaG93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0QXR0cmlidXRlcyh7IHByZXZpZXdfc2hvdzogcHJldmlld19zaG93IH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBzcHJpbnRmKF94KCclcyBJRCcsICdwbGFjZWhvbGRlcjogQ291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgICAgICAgICAgICAgICAgIGhlbHA6IHNwcmludGYoX3goJ0VudGVyIGEgJXMgSUQgdG8gdGVzdCBwcmV2aWV3JywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHByZXZpZXdfY291cnNlX2lkIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHByZXZpZXdfY291cnNlX2lkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0QXR0cmlidXRlcyh7IHByZXZpZXdfY291cnNlX2lkOiBwcmV2aWV3X2NvdXJzZV9pZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogc3ByaW50ZihfeCgnJXMgSUQnLCAncGxhY2Vob2xkZXI6IFF1aXonLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3F1aXonKSksXG4gICAgICAgICAgICAgICAgICAgIGhlbHA6IHNwcmludGYoX3goJ0VudGVyIGEgJXMgSUQgdG8gdGVzdCBwcmV2aWV3JywgJ3BsYWNlaG9sZGVyOiBRdWl6JywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdxdWl6JykpLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcHJldmlld19xdWl6X2lkIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHByZXZpZXdfcXVpel9pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBwcmV2aWV3X3F1aXpfaWQ6IHByZXZpZXdfcXVpel9pZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1VzZXIgSUQnLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIGhlbHA6IF9fKCdFbnRlciBzcGVjaWZpYyBVc2VyIElELiBMZWF2ZSBibGFuayBmb3IgY3VycmVudCBVc2VyLicsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHByZXZpZXdfdXNlcl9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHByZXZpZXdfdXNlcl9pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBwcmV2aWV3X3VzZXJfaWQ6IHByZXZpZXdfdXNlcl9pZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgLypcbiAgICAgICAgbGV0IGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2UgPSAnJztcbiAgICAgICAgbGV0IHNob3dfY291cnNlX2lkID0gbGRsbXNfZ2V0X2ludGVnZXJfdmFsdWUoY291cnNlX2lkKTtcbiAgICAgICAgbGV0IHNob3dfcXVpel9pZCA9IGxkbG1zX2dldF9pbnRlZ2VyX3ZhbHVlKHF1aXpfaWQpO1xuICAgICAgICAgbGV0IHBvc3RfdHlwZSA9IGxkbG1zX2dldF9wb3N0X2VkaXRfbWV0YSgncG9zdF90eXBlJyk7ICAgIFxuICAgICAgICAgaWYgKHNob3dfY291cnNlX2lkID09PSAwKSB7XG4gICAgICAgICAgICBpZiAocG9zdF90eXBlID09PSAnc2Z3ZC1jb3Vyc2VzJykge1xuICAgICAgICAgICAgICAgIHNob3dfY291cnNlX2lkID0gbGRsbXNfZ2V0X3Bvc3RfZWRpdF9tZXRhKCdwb3N0X2lkJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKChwb3N0X3R5cGUgPT09ICdzZndkLWxlc3NvbnMnKSB8fCAocG9zdF90eXBlID09PSAnc2Z3ZC10b3BpYycpIHx8IChwb3N0X3R5cGUgPT09ICdzZndkLXF1aXonKSkge1xuICAgICAgICAgICAgICAgIHNob3dfY291cnNlX2lkID0gbGRsbXNfZ2V0X3Bvc3RfZWRpdF9tZXRhKCdjb3Vyc2VfaWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNob3dfY291cnNlX2lkID0gbGRsbXNfZ2V0X2ludGVnZXJfdmFsdWUoc2hvd19jb3Vyc2VfaWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzaG93X3F1aXpfaWQgPT09IDApIHtcbiAgICAgICAgICAgIGlmIChsZGxtc19nZXRfcG9zdF9lZGl0X21ldGEoJ3Bvc3RfdHlwZScpID09PSAnc2Z3ZC1xdWl6Jykge1xuICAgICAgICAgICAgICAgIHNob3dfcXVpel9pZCA9IGxkbG1zX2dldF9wb3N0X2VkaXRfbWV0YSgncG9zdF9pZCcpO1xuICAgICAgICAgICAgICAgIHNob3dfcXVpel9pZCA9IGxkbG1zX2dldF9pbnRlZ2VyX3ZhbHVlKHNob3dfcXVpel9pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgIGlmICgoc2hvd19jb3Vyc2VfaWQgPT0gMCkgJiYgKHNob3dfcXVpel9pZCA9PSAwKSkge1xuICAgICAgICAgICAgbGRfYmxvY2tfZXJyb3JfbWVzc2FnZSA9IHNwcmludGYoX3goJyUxJHMgSUQgb3IgJTIkcyBJRCBpcyByZXF1aXJlZCB3aGVuIG5vdCB1c2VkIHdpdGhpbiBhICUyJHMuJywgJ3BsYWNlaG9sZGVyczogQ291cnNlLCBRdXosIENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3F1aXonKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpO1xuICAgICAgICB9XG4gICAgICAgICBpZiAobGRfYmxvY2tfZXJyb3JfbWVzc2FnZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2UgPSAoPHNwYW4gY2xhc3NOYW1lPVwibGVhcm5kYXNoLWJsb2NrLWVycm9yLW1lc3NhZ2VcIj57bGRfYmxvY2tfZXJyb3JfbWVzc2FnZX08L3NwYW4+KTtcbiAgICAgICAgfVxuICAgICAgICAgY29uc3Qgb3V0cHV0QmxvY2sgPSAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxlYXJuZGFzaC1ibG9jay1pbm5lclwiPlxuICAgICAgICAgICAgICAgICAgICB7bGRfYmxvY2tfZXJyb3JfbWVzc2FnZX1cbiAgICAgICAgICAgICAgICAgICAgPElubmVyQmxvY2tzIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICAgICAgKi9cblxuICAgICAgICBmdW5jdGlvbiBkb19zZXJ2ZXJzaWRlX3JlbmRlcihhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBpZiAoYXR0cmlidXRlcy5wcmV2aWV3X3Nob3cgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoU2VydmVyU2lkZVJlbmRlciwge1xuICAgICAgICAgICAgICAgICAgICBibG9jazogJ2xlYXJuZGFzaC9sZC1jZXJ0aWZpY2F0ZScsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fKCdbbGRfY2VydGlmaWNhdGVdIHNob3J0Y29kZSBvdXRwdXQgc2hvd24gaGVyZScsICdsZWFybmRhc2gnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbaW5zcGVjdG9yQ29udHJvbHMsIGRvX3NlcnZlcnNpZGVfcmVuZGVyKHByb3BzLmF0dHJpYnV0ZXMpXTtcbiAgICB9XG59KTsiLCIvKipcbiAqIExlYXJuRGFzaCBCbG9jayBsZC1xdWl6LWNvbXBsZXRlXG4gKlxuICogQHNpbmNlIDMuMlxuICogQHBhY2thZ2UgTGVhcm5EYXNoXG4gKi9cblxuLyoqXG4gKiBMZWFybkRhc2ggYmxvY2sgZnVuY3Rpb25zXG4gKi9cbmltcG9ydCB7IGxkbG1zX2dldF9wb3N0X2VkaXRfbWV0YSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCwgbGRsbXNfZ2V0X2ludGVnZXJfdmFsdWUgfSBmcm9tICcuLi9sZGxtcy5qcyc7XG5cbi8qKlxuICogSW50ZXJuYWwgYmxvY2sgbGlicmFyaWVzXG4gKi9cbnZhciBfd3AkaTE4biA9IHdwLmkxOG4sXG4gICAgX18gPSBfd3AkaTE4bi5fXyxcbiAgICBfeCA9IF93cCRpMThuLl94LFxuICAgIHNwcmludGYgPSBfd3AkaTE4bi5zcHJpbnRmO1xudmFyIHJlZ2lzdGVyQmxvY2tUeXBlID0gd3AuYmxvY2tzLnJlZ2lzdGVyQmxvY2tUeXBlO1xudmFyIF93cCRlZGl0b3IgPSB3cC5lZGl0b3IsXG4gICAgSW5uZXJCbG9ja3MgPSBfd3AkZWRpdG9yLklubmVyQmxvY2tzLFxuICAgIEluc3BlY3RvckNvbnRyb2xzID0gX3dwJGVkaXRvci5JbnNwZWN0b3JDb250cm9scztcbnZhciBfd3AkY29tcG9uZW50cyA9IHdwLmNvbXBvbmVudHMsXG4gICAgU2VydmVyU2lkZVJlbmRlciA9IF93cCRjb21wb25lbnRzLlNlcnZlclNpZGVSZW5kZXIsXG4gICAgUGFuZWxCb2R5ID0gX3dwJGNvbXBvbmVudHMuUGFuZWxCb2R5LFxuICAgIFRleHRDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVGV4dENvbnRyb2wsXG4gICAgVG9nZ2xlQ29udHJvbCA9IF93cCRjb21wb25lbnRzLlRvZ2dsZUNvbnRyb2w7XG5cblxucmVnaXN0ZXJCbG9ja1R5cGUoJ2xlYXJuZGFzaC9sZC1xdWl6LWNvbXBsZXRlJywge1xuICAgIHRpdGxlOiBzcHJpbnRmKF94KCdMZWFybkRhc2ggJXMgQ29tcGxldGUnLCAncGxhY2Vob2xkZXI6IFF1aXonLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3F1aXonKSksXG4gICAgZGVzY3JpcHRpb246IHNwcmludGYoX3goJ1RoaXMgYmxvY2sgc2hvd3MgdGhlIGNvbnRlbnQgaWYgdGhlIHVzZXIgaXMgaGFzIGNvbXBsZXRlZCB0aGUgJXMuJywgJ3BsYWNlaG9sZGVyczogcXVpeicsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpeicpKSxcbiAgICBpY29uOiAnc3Rhci1maWxsZWQnLFxuICAgIGNhdGVnb3J5OiAnbGVhcm5kYXNoLWJsb2NrcycsXG4gICAgc3VwcG9ydHM6IHtcbiAgICAgICAgY3VzdG9tQ2xhc3NOYW1lOiBmYWxzZVxuICAgIH0sXG4gICAgYXR0cmlidXRlczoge1xuICAgICAgICBjb3Vyc2VfaWQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVmYXVsdDogJydcbiAgICAgICAgfSxcbiAgICAgICAgcXVpel9pZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJ1xuICAgICAgICB9LFxuICAgICAgICB1c2VyX2lkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGVkaXQ6IGZ1bmN0aW9uIGVkaXQocHJvcHMpIHtcbiAgICAgICAgdmFyIF9wcm9wcyRhdHRyaWJ1dGVzID0gcHJvcHMuYXR0cmlidXRlcyxcbiAgICAgICAgICAgIGNvdXJzZV9pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLmNvdXJzZV9pZCxcbiAgICAgICAgICAgIHF1aXpfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy5xdWl6X2lkLFxuICAgICAgICAgICAgdXNlcl9pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLnVzZXJfaWQsXG4gICAgICAgICAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGVzID0gcHJvcHMuc2V0QXR0cmlidXRlcztcblxuXG4gICAgICAgIHZhciBpbnNwZWN0b3JDb250cm9scyA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xzLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICBQYW5lbEJvZHksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogX18oJ1NldHRpbmdzJywgJ2xlYXJuZGFzaCcpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHNwcmludGYoX3goJyVzIElEJywgJ1F1aXogSUQnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3F1aXonKSksXG4gICAgICAgICAgICAgICAgICAgIGhlbHA6IHNwcmludGYoX3goJ0VudGVyIHNpbmdsZSAlMSRzIElELiBMZWF2ZSBibGFuayBpZiB1c2VkIHdpdGhpbiBhICUyJHMuJywgJ3BsYWNlaG9sZGVyczogcXVpeiwgcXVpeicsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpeicpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdxdWl6JykpLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcXVpel9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHF1aXpfaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcXVpel9pZDogcXVpel9pZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogc3ByaW50ZihfeCgnJXMgSUQnLCAnQ291cnNlIElEJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgICAgICAgICAgICAgICAgIGhlbHA6IHNwcmludGYoX3goJ0VudGVyIHNpbmdsZSAlMSRzIElELiBMZWF2ZSBibGFuayBpZiB1c2VkIHdpdGhpbiBhICUyJHMuJywgJ3BsYWNlaG9sZGVyczogY291cnNlLCBjb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjb3Vyc2VfaWQgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShjb3Vyc2VfaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgY291cnNlX2lkOiBjb3Vyc2VfaWQgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdVc2VyIElEJywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICBoZWxwOiBfXygnRW50ZXIgc3BlY2lmaWMgVXNlciBJRC4gTGVhdmUgYmxhbmsgZm9yIGN1cnJlbnQgVXNlci4nLCAnbGVhcm5kYXNoJyksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1c2VyX2lkIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodXNlcl9pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoeyB1c2VyX2lkOiB1c2VyX2lkIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB2YXIgbGRfYmxvY2tfZXJyb3JfbWVzc2FnZSA9ICcnO1xuICAgICAgICB2YXIgcHJldmlld19xdWl6X2lkID0gbGRsbXNfZ2V0X2ludGVnZXJfdmFsdWUocXVpel9pZCk7XG4gICAgICAgIGlmIChwcmV2aWV3X3F1aXpfaWQgPT09IDApIHtcbiAgICAgICAgICAgIGlmICgnc2Z3ZC1xdWl6JyA9PT0gbGRsbXNfZ2V0X3Bvc3RfZWRpdF9tZXRhKCdwb3N0X3R5cGUnKSkge1xuICAgICAgICAgICAgICAgIHByZXZpZXdfcXVpel9pZCA9IGxkbG1zX2dldF9wb3N0X2VkaXRfbWV0YSgncG9zdF9pZCcpO1xuICAgICAgICAgICAgICAgIHByZXZpZXdfcXVpel9pZCA9IGxkbG1zX2dldF9pbnRlZ2VyX3ZhbHVlKHByZXZpZXdfcXVpel9pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJldmlld19xdWl6X2lkID09IDApIHtcbiAgICAgICAgICAgICAgICBsZF9ibG9ja19lcnJvcl9tZXNzYWdlID0gc3ByaW50ZihfeCgnJTEkcyBJRCBpcyByZXF1aXJlZCB3aGVuIG5vdCB1c2VkIHdpdGhpbiBhICUyJHMuJywgJ3BsYWNlaG9sZGVyczogUXVpeiwgUXVpeicsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpeicpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdxdWl6JykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2UubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZF9ibG9ja19lcnJvcl9tZXNzYWdlID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdzcGFuJyxcbiAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2xlYXJuZGFzaC1ibG9jay1lcnJvci1tZXNzYWdlJyB9LFxuICAgICAgICAgICAgICAgIGxkX2Jsb2NrX2Vycm9yX21lc3NhZ2VcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgb3V0cHV0QmxvY2sgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUgfSxcbiAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2xlYXJuZGFzaC1ibG9jay1pbm5lcicgfSxcbiAgICAgICAgICAgICAgICBsZF9ibG9ja19lcnJvcl9tZXNzYWdlLFxuICAgICAgICAgICAgICAgIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChJbm5lckJsb2NrcywgbnVsbClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gW2luc3BlY3RvckNvbnRyb2xzLCBvdXRwdXRCbG9ja107XG4gICAgfSxcbiAgICBzYXZlOiBmdW5jdGlvbiBzYXZlKHByb3BzKSB7XG4gICAgICAgIHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoSW5uZXJCbG9ja3MuQ29udGVudCwgbnVsbCk7XG4gICAgfVxufSk7IiwiLyoqXG4gKiBMZWFybkRhc2ggQmxvY2sgbGQtY291cnNlaW5mb1xuICpcbiAqIEBzaW5jZSAyLjUuOVxuICogQHBhY2thZ2UgTGVhcm5EYXNoXG4gKi9cblxuLyoqXG4gKiBMZWFybkRhc2ggYmxvY2sgZnVuY3Rpb25zXG4gKi9cbmltcG9ydCB7IGxkbG1zX2dldF9wb3N0X2VkaXRfbWV0YSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCB9IGZyb20gJy4uL2xkbG1zLmpzJztcblxuLyoqXG4gKiBJbnRlcm5hbCBibG9jayBsaWJyYXJpZXNcbiAqL1xudmFyIF93cCRpMThuID0gd3AuaTE4bixcbiAgICBfXyA9IF93cCRpMThuLl9fLFxuICAgIF94ID0gX3dwJGkxOG4uX3gsXG4gICAgc3ByaW50ZiA9IF93cCRpMThuLnNwcmludGY7XG52YXIgcmVnaXN0ZXJCbG9ja1R5cGUgPSB3cC5ibG9ja3MucmVnaXN0ZXJCbG9ja1R5cGU7XG52YXIgSW5zcGVjdG9yQ29udHJvbHMgPSB3cC5lZGl0b3IuSW5zcGVjdG9yQ29udHJvbHM7XG52YXIgX3dwJGNvbXBvbmVudHMgPSB3cC5jb21wb25lbnRzLFxuICAgIFNlcnZlclNpZGVSZW5kZXIgPSBfd3AkY29tcG9uZW50cy5TZXJ2ZXJTaWRlUmVuZGVyLFxuICAgIFBhbmVsQm9keSA9IF93cCRjb21wb25lbnRzLlBhbmVsQm9keSxcbiAgICBTZWxlY3RDb250cm9sID0gX3dwJGNvbXBvbmVudHMuU2VsZWN0Q29udHJvbCxcbiAgICBUb2dnbGVDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVG9nZ2xlQ29udHJvbCxcbiAgICBUZXh0Q29udHJvbCA9IF93cCRjb21wb25lbnRzLlRleHRDb250cm9sO1xuXG5cbnJlZ2lzdGVyQmxvY2tUeXBlKCdsZWFybmRhc2gvbGQtY291cnNlaW5mbycsIHtcblx0dGl0bGU6IHNwcmludGYoX3goJ0xlYXJuRGFzaCAlcyBJbmZvIFtjb3Vyc2VpbmZvXScsICdwbGFjZWhvbGRlcjogQ291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG5cdGRlc2NyaXB0aW9uOiBzcHJpbnRmKF94KCdUaGlzIGJsb2NrIGRpc3BsYXlzICVzIHJlbGF0ZWQgaW5mb3JtYXRpb24nLCAncGxhY2Vob2xkZXI6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuXHRpY29uOiAnYW5hbHl0aWNzJyxcblx0Y2F0ZWdvcnk6ICdsZWFybmRhc2gtYmxvY2tzJyxcblx0c3VwcG9ydHM6IHtcblx0XHRjdXN0b21DbGFzc05hbWU6IGZhbHNlXG5cdH0sXG5cdGF0dHJpYnV0ZXM6IHtcblx0XHRzaG93OiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJ1xuXHRcdH0sXG5cdFx0Y291cnNlX2lkOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHR1c2VyX2lkOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRmb3JtYXQ6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnXG5cdFx0fSxcblx0XHRzZWNvbmRzX2Zvcm1hdDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZydcblx0XHR9LFxuXHRcdGRlY2ltYWxzOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJ1xuXHRcdH0sXG5cdFx0cHJldmlld19zaG93OiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiAxXG5cdFx0fSxcblx0XHRwcmV2aWV3X2NvdXJzZV9pZDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0cHJldmlld191c2VyX2lkOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRtZXRhOiB7XG5cdFx0XHR0eXBlOiAnb2JqZWN0J1xuXHRcdH1cblx0fSxcblx0ZWRpdDogZnVuY3Rpb24gZWRpdChwcm9wcykge1xuXHRcdHZhciBfcHJvcHMkYXR0cmlidXRlcyA9IHByb3BzLmF0dHJpYnV0ZXMsXG5cdFx0ICAgIGNvdXJzZV9pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLmNvdXJzZV9pZCxcblx0XHQgICAgc2hvdyA9IF9wcm9wcyRhdHRyaWJ1dGVzLnNob3csXG5cdFx0ICAgIHVzZXJfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy51c2VyX2lkLFxuXHRcdCAgICBmb3JtYXQgPSBfcHJvcHMkYXR0cmlidXRlcy5mb3JtYXQsXG5cdFx0ICAgIHNlY29uZHNfZm9ybWF0ID0gX3Byb3BzJGF0dHJpYnV0ZXMuc2Vjb25kc19mb3JtYXQsXG5cdFx0ICAgIGRlY2ltYWxzID0gX3Byb3BzJGF0dHJpYnV0ZXMuZGVjaW1hbHMsXG5cdFx0ICAgIHByZXZpZXdfc2hvdyA9IF9wcm9wcyRhdHRyaWJ1dGVzLnByZXZpZXdfc2hvdyxcblx0XHQgICAgcHJldmlld191c2VyX2lkID0gX3Byb3BzJGF0dHJpYnV0ZXMucHJldmlld191c2VyX2lkLFxuXHRcdCAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG5cdFx0ICAgIHNldEF0dHJpYnV0ZXMgPSBwcm9wcy5zZXRBdHRyaWJ1dGVzO1xuXG5cblx0XHR2YXIgZmllbGRfc2hvdyA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRrZXk6ICdzaG93Jyxcblx0XHRcdHZhbHVlOiBzaG93LFxuXHRcdFx0bGFiZWw6IF9fKCdTaG93JywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0b3B0aW9uczogW3tcblx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJyVzIFRpdGxlJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcblx0XHRcdFx0dmFsdWU6ICdjb3Vyc2VfdGl0bGUnXG5cdFx0XHR9LCB7XG5cdFx0XHRcdGxhYmVsOiBzcHJpbnRmKF94KCclcyBVUkwnLCAncGxhY2Vob2xkZXI6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuXHRcdFx0XHR2YWx1ZTogJ2NvdXJzZV91cmwnXG5cdFx0XHR9LCB7XG5cdFx0XHRcdGxhYmVsOiBzcHJpbnRmKF94KCclcyBQb2ludHMnLCAncGxhY2Vob2xkZXI6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuXHRcdFx0XHR2YWx1ZTogJ2NvdXJzZV9wb2ludHMnXG5cdFx0XHR9LCB7XG5cdFx0XHRcdGxhYmVsOiBzcHJpbnRmKF94KCclcyBQcmljZScsICdwbGFjZWhvbGRlcjogQ291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG5cdFx0XHRcdHZhbHVlOiAnY291cnNlX3ByaWNlJ1xuXHRcdFx0fSwge1xuXHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnJXMgUHJpY2UgVHlwZScsICdwbGFjZWhvbGRlcjogQ291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG5cdFx0XHRcdHZhbHVlOiAnY291cnNlX3ByaWNlX3R5cGUnXG5cdFx0XHR9LCB7XG5cdFx0XHRcdGxhYmVsOiBzcHJpbnRmKF94KCdUb3RhbCBVc2VyICVzIFBvaW50cycsICdwbGFjZWhvbGRlcjogQ291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG5cdFx0XHRcdHZhbHVlOiAndXNlcl9jb3Vyc2VfcG9pbnRzJ1xuXHRcdFx0fSwge1xuXHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnVG90YWwgVXNlciAlcyBUaW1lJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcblx0XHRcdFx0dmFsdWU6ICd1c2VyX2NvdXJzZV90aW1lJ1xuXHRcdFx0fSwge1xuXHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnJXMgQ29tcGxldGVkIE9uIChkYXRlKScsICdwbGFjZWhvbGRlcjogQ291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG5cdFx0XHRcdHZhbHVlOiAnY29tcGxldGVkX29uJ1xuXHRcdFx0fSwge1xuXHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnJXMgRW5yb2xsZWQgT24gKGRhdGUpJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ2NvdXJzZScpKSxcblx0XHRcdFx0dmFsdWU6ICdlbnJvbGxlZF9vbidcblx0XHRcdH0sIHtcblx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJ0N1bXVsYXRpdmUgJXMgU2NvcmUnLCAncGxhY2Vob2xkZXI6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpenplcycpKSxcblx0XHRcdFx0dmFsdWU6ICdjdW11bGF0aXZlX3Njb3JlJ1xuXHRcdFx0fSwge1xuXHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnQ3VtdWxhdGl2ZSAlcyBQb2ludHMnLCAncGxhY2Vob2xkZXI6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpenplcycpKSxcblx0XHRcdFx0dmFsdWU6ICdjdW11bGF0aXZlX3BvaW50cydcblx0XHRcdH0sIHtcblx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJ1Bvc3NpYmxlIEN1bXVsYXRpdmUgJXMgVG90YWwgUG9pbnRzJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3F1aXp6ZXMnKSksXG5cdFx0XHRcdHZhbHVlOiAnY3VtdWxhdGl2ZV90b3RhbF9wb2ludHMnXG5cdFx0XHR9LCB7XG5cdFx0XHRcdGxhYmVsOiBzcHJpbnRmKF94KCdDdW11bGF0aXZlICVzIFBlcmNlbnRhZ2UnLCAncGxhY2Vob2xkZXI6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpenplcycpKSxcblx0XHRcdFx0dmFsdWU6ICdjdW11bGF0aXZlX3BlcmNlbnRhZ2UnXG5cdFx0XHR9LCB7XG5cdFx0XHRcdGxhYmVsOiBzcHJpbnRmKF94KCdDdW11bGF0aXZlICVzIFRpbWUgU3BlbnQnLCAncGxhY2Vob2xkZXI6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpenplcycpKSxcblx0XHRcdFx0dmFsdWU6ICdjdW11bGF0aXZlX3RpbWVzcGVudCdcblx0XHRcdH0sIHtcblx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJ0FnZ3JlZ2F0ZSAlcyBQZXJjZW50YWdlJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3F1aXp6ZXMnKSksXG5cdFx0XHRcdHZhbHVlOiAnYWdncmVnYXRlX3BlcmNlbnRhZ2UnXG5cdFx0XHR9LCB7XG5cdFx0XHRcdGxhYmVsOiBzcHJpbnRmKF94KCdBZ2dyZWdhdGUgJXMgU2NvcmUnLCAncGxhY2Vob2xkZXI6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpenplcycpKSxcblx0XHRcdFx0dmFsdWU6ICdhZ2dyZWdhdGVfc2NvcmUnXG5cdFx0XHR9LCB7XG5cdFx0XHRcdGxhYmVsOiBzcHJpbnRmKF94KCdBZ2dyZWdhdGUgJXMgUG9pbnRzJywgJ3BsYWNlaG9sZGVyOiBDb3Vyc2UnLCAnbGVhcm5kYXNoJyksIGxkbG1zX2dldF9jdXN0b21fbGFiZWwoJ3F1aXp6ZXMnKSksXG5cdFx0XHRcdHZhbHVlOiAnYWdncmVnYXRlX3BvaW50cydcblx0XHRcdH0sIHtcblx0XHRcdFx0bGFiZWw6IHNwcmludGYoX3goJ1Bvc3NpYmxlIEFnZ3JlZ2F0ZSAlcyBUb3RhbCBQb2ludHMnLCAncGxhY2Vob2xkZXI6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpenplcycpKSxcblx0XHRcdFx0dmFsdWU6ICdhZ2dyZWdhdGVfdG90YWxfcG9pbnRzJ1xuXHRcdFx0fSwge1xuXHRcdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnQWdncmVnYXRlICVzIFRpbWUgU3BlbnQnLCAncGxhY2Vob2xkZXI6IENvdXJzZScsICdsZWFybmRhc2gnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgncXVpenplcycpKSxcblx0XHRcdFx0dmFsdWU6ICdhZ2dyZWdhdGVfdGltZXNwZW50J1xuXHRcdFx0fV0sXG5cdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2Uoc2hvdykge1xuXHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHNob3c6IHNob3cgfSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR2YXIgZmllbGRfY291cnNlX2lkID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRsYWJlbDogc3ByaW50ZihfeCgnJXMgSUQnLCAnQ291cnNlIElEJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSksXG5cdFx0XHRoZWxwOiBzcHJpbnRmKF94KCdFbnRlciBzaW5nbGUgJTEkcyBJRC4gTGVhdmUgYmxhbmsgaWYgdXNlZCB3aXRoaW4gYSAlMiRzLicsICdwbGFjZWhvbGRlcnM6IGNvdXJzZSwgY291cnNlJywgJ2xlYXJuZGFzaCcpLCBsZGxtc19nZXRfY3VzdG9tX2xhYmVsKCdjb3Vyc2UnKSwgbGRsbXNfZ2V0X2N1c3RvbV9sYWJlbCgnY291cnNlJykpLFxuXHRcdFx0dmFsdWU6IGNvdXJzZV9pZCB8fCAnJyxcblx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShjb3Vyc2VfaWQpIHtcblx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBjb3Vyc2VfaWQ6IGNvdXJzZV9pZCB9KTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHR2YXIgZmllbGRfdXNlcl9pZCA9ICcnO1xuXG5cdFx0aWYgKHNob3cgIT0gJ2NvdXJzZV90aXRsZScgJiYgc2hvdyAhPSAnY291cnNlX3VybCcgJiYgc2hvdyAhPSAnY291cnNlX3VybCcgJiYgc2hvdyAhPSAnY291cnNlX3BvaW50cycgJiYgc2hvdyAhPSAnY291cnNlX3ByaWNlJyAmJiBzaG93ICE9ICdjb3Vyc2VfcHJpY2VfdHlwZScpIHtcblx0XHRcdGZpZWxkX3VzZXJfaWQgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0bGFiZWw6IF9fKCdVc2VyIElEJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRoZWxwOiBfXygnRW50ZXIgc3BlY2lmaWMgVXNlciBJRC4gTGVhdmUgYmxhbmsgZm9yIGN1cnJlbnQgVXNlci4nLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdHZhbHVlOiB1c2VyX2lkIHx8ICcnLFxuXHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodXNlcl9pZCkge1xuXHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgdXNlcl9pZDogdXNlcl9pZCB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0dmFyIGZpZWxkX2Zvcm1hdCA9ICcnO1xuXHRcdGlmIChzaG93ID09ICdjb21wbGV0ZWRfb24nIHx8IHNob3cgPT0gJ2Vucm9sbGVkX29uJykge1xuXHRcdFx0ZmllbGRfZm9ybWF0ID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnRm9ybWF0JywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRoZWxwOiBfXygnVGhpcyBjYW4gYmUgdXNlZCB0byBjaGFuZ2UgdGhlIGRhdGUgZm9ybWF0LiBEZWZhdWx0OiBcIkYgaiwgWSwgZzppIGEuJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHR2YWx1ZTogZm9ybWF0IHx8ICcnLFxuXHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoZm9ybWF0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBmb3JtYXQ6IGZvcm1hdCB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0dmFyIGZpZWxkX3NlY29uZHNfZm9ybWF0ID0gJyc7XG5cdFx0aWYgKHNob3cgPT0gJ3VzZXJfY291cnNlX3RpbWUnKSB7XG5cdFx0XHRmaWVsZF9zZWNvbmRzX2Zvcm1hdCA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdGtleTogJ3NlY29uZHNfZm9ybWF0Jyxcblx0XHRcdFx0dmFsdWU6IHNlY29uZHNfZm9ybWF0LFxuXHRcdFx0XHRsYWJlbDogX18oJ1NlY29uZHMgRm9ybWF0JywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRvcHRpb25zOiBbe1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnVGltZSAtIDIwbWluIDQ5c2VjJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdHZhbHVlOiAndGltZSdcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnU2Vjb25kcyAtIDE0MzYnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdzZWNvbmRzJ1xuXHRcdFx0XHR9XSxcblx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHNlY29uZHNfZm9ybWF0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBzZWNvbmRzX2Zvcm1hdDogc2Vjb25kc19mb3JtYXQgfSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHZhciBmaWVsZF9kZWNpbWFscyA9ICcnO1xuXHRcdGlmIChzaG93ID09ICdjb3Vyc2VfcG9pbnRzJyB8fCBzaG93ID09ICd1c2VyX2NvdXJzZV9wb2ludHMnKSB7XG5cdFx0XHRmaWVsZF9kZWNpbWFscyA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ0RlY2ltYWxzJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRoZWxwOiBfXygnTnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzIHRvIHNob3cuIERlZmF1bHQgaXMgMi4nLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdHZhbHVlOiBkZWNpbWFscyB8fCAnJyxcblx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGRlY2ltYWxzKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBkZWNpbWFsczogZGVjaW1hbHMgfSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHZhciBwYW5lbF9wcmV2aWV3ID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0e1xuXHRcdFx0XHR0aXRsZTogX18oJ1ByZXZpZXcnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdGluaXRpYWxPcGVuOiBmYWxzZVxuXHRcdFx0fSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnU2hvdyBQcmV2aWV3JywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRjaGVja2VkOiAhIXByZXZpZXdfc2hvdyxcblx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHByZXZpZXdfc2hvdykge1xuXHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcHJldmlld19zaG93OiBwcmV2aWV3X3Nob3cgfSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnVXNlciBJRCcsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0aGVscDogX18oJ0VudGVyIGEgVXNlciBJRCB0byB0ZXN0IHByZXZpZXcnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdHZhbHVlOiBwcmV2aWV3X3VzZXJfaWQgfHwgJycsXG5cdFx0XHRcdHR5cGU6ICdudW1iZXInLFxuXHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UocHJldmlld191c2VyX2lkKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBwcmV2aWV3X3VzZXJfaWQ6IHByZXZpZXdfdXNlcl9pZCB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHQpO1xuXG5cdFx0dmFyIGluc3BlY3RvckNvbnRyb2xzID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0SW5zcGVjdG9yQ29udHJvbHMsXG5cdFx0XHRudWxsLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0aXRsZTogX18oJ1NldHRpbmdzJywgJ2xlYXJuZGFzaCcpXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGZpZWxkX2NvdXJzZV9pZCxcblx0XHRcdFx0ZmllbGRfdXNlcl9pZCxcblx0XHRcdFx0ZmllbGRfc2hvdyxcblx0XHRcdFx0ZmllbGRfZm9ybWF0LFxuXHRcdFx0XHRmaWVsZF9zZWNvbmRzX2Zvcm1hdCxcblx0XHRcdFx0ZmllbGRfZGVjaW1hbHNcblx0XHRcdCksXG5cdFx0XHRwYW5lbF9wcmV2aWV3XG5cdFx0KTtcblxuXHRcdGZ1bmN0aW9uIGRvX3NlcnZlcnNpZGVfcmVuZGVyKGF0dHJpYnV0ZXMpIHtcblx0XHRcdGlmIChhdHRyaWJ1dGVzLnByZXZpZXdfc2hvdyA9PSB0cnVlKSB7XG5cdFx0XHRcdC8vIFdlIGFkZCB0aGUgbWV0YSBzbyB0aGUgc2VydmVyIGtub3ducyB3aGF0IGlzIGJlaW5nIGVkaXRlZC5cblx0XHRcdFx0YXR0cmlidXRlcy5tZXRhID0gbGRsbXNfZ2V0X3Bvc3RfZWRpdF9tZXRhKCk7XG5cblx0XHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZXJ2ZXJTaWRlUmVuZGVyLCB7XG5cdFx0XHRcdFx0YmxvY2s6ICdsZWFybmRhc2gvbGQtY291cnNlaW5mbycsXG5cdFx0XHRcdFx0YXR0cmlidXRlczogYXR0cmlidXRlc1xuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBfXygnW2NvdXJzZWluZm9dIHNob3J0Y29kZSBvdXRwdXQgc2hvd24gaGVyZScsICdsZWFybmRhc2gnKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gW2luc3BlY3RvckNvbnRyb2xzLCBkb19zZXJ2ZXJzaWRlX3JlbmRlcihwcm9wcy5hdHRyaWJ1dGVzKV07XG5cdH0sXG5cdHNhdmU6IGZ1bmN0aW9uIHNhdmUocHJvcHMpIHtcblx0XHQvLyBEZWxldGUgbWV0YSBmcm9tIHByb3BzIHRvIHByZXZlbnQgaXQgYmVpbmcgc2F2ZWQuXG5cdFx0ZGVsZXRlIHByb3BzLmF0dHJpYnV0ZXMubWV0YTtcblx0fVxufSk7IiwiLy9pbXBvcnQgJy4vaTE4bi5qcyc7XG5cbi8qKlxuICogSW1wb3J0IExlYXJuRGFzaCBibG9ja3NcbiAqL1xuaW1wb3J0ICcuL2xkLWxvZ2luJztcbmltcG9ydCAnLi9sZC1wcm9maWxlJztcbmltcG9ydCAnLi9sZC1jb3Vyc2UtbGlzdCc7XG5pbXBvcnQgJy4vbGQtbGVzc29uLWxpc3QnO1xuaW1wb3J0ICcuL2xkLXRvcGljLWxpc3QnO1xuaW1wb3J0ICcuL2xkLXF1aXotbGlzdCc7XG5pbXBvcnQgJy4vbGQtY291cnNlLXByb2dyZXNzJztcbmltcG9ydCAnLi9sZC12aXNpdG9yJztcbmltcG9ydCAnLi9sZC1zdHVkZW50JztcbmltcG9ydCAnLi9sZC1jb3Vyc2UtY29tcGxldGUnO1xuaW1wb3J0ICcuL2xkLWNvdXJzZS1pbnByb2dyZXNzJztcbmltcG9ydCAnLi9sZC1jb3Vyc2Utbm90c3RhcnRlZCc7XG5pbXBvcnQgJy4vbGQtY291cnNlLXJlc3VtZSc7XG5pbXBvcnQgJy4vbGQtY291cnNlLWluZm8nO1xuaW1wb3J0ICcuL2xkLXVzZXItY291cnNlLXBvaW50cyc7XG5pbXBvcnQgJy4vbGQtdXNlci1ncm91cHMnO1xuaW1wb3J0ICcuL2xkLWdyb3VwJztcbmltcG9ydCAnLi9sZC1wYXltZW50LWJ1dHRvbnMnO1xuaW1wb3J0ICcuL2xkLWNvdXJzZS1jb250ZW50JztcbmltcG9ydCAnLi9sZC1jb3Vyc2UtZXhwaXJlLXN0YXR1cyc7XG5pbXBvcnQgJy4vbGQtY2VydGlmaWNhdGUnO1xuaW1wb3J0ICcuL2xkLXF1aXotY29tcGxldGUnO1xuaW1wb3J0ICcuL2xkLWNvdXJzZWluZm8nO1xuaW1wb3J0ICcuL2xkLXVzZXJtZXRhJzsiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDelBBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDamNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzljQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM5Y0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25JQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZaQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDMUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNySkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25RQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3pSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///0\n")},,function(module,exports){eval("/**\n * LearnDash Block ld-usermeta\n *\n * @since 2.5.9\n * @package LearnDash\n */\n\n/**\n * Internal block libraries\n */\nvar _wp$i18n = wp.i18n,\n __ = _wp$i18n.__,\n _x = _wp$i18n._x,\n sprintf = _wp$i18n.sprintf;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar InspectorControls = wp.editor.InspectorControls;\nvar _wp$components = wp.components,\n ServerSideRender = _wp$components.ServerSideRender,\n Tooltip = _wp$components.Tooltip,\n PanelBody = _wp$components.PanelBody,\n PanelRow = _wp$components.PanelRow,\n RangeControl = _wp$components.RangeControl,\n FormToggle = _wp$components.FormToggle,\n SelectControl = _wp$components.SelectControl,\n ToggleControl = _wp$components.ToggleControl,\n TextControl = _wp$components.TextControl;\n\n\nregisterBlockType('learndash/ld-usermeta', {\n\ttitle: __('LearnDash User meta', 'learndash'),\n\tdescription: __('This block displays User meta field', 'learndash'),\n\ticon: 'id',\n\tcategory: 'learndash-blocks',\n\texample: {\n\t\tattributes: {\n\t\t\texample_show: 1\n\t\t}\n\t},\n\tsupports: {\n\t\tcustomClassName: false\n\t},\n\tattributes: {\n\t\tfield: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tuser_id: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tpreview_show: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: 1\n\t\t},\n\t\tpreview_user_id: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t}\n\n\t},\n\tedit: function edit(props) {\n\t\tvar _props$attributes = props.attributes,\n\t\t field = _props$attributes.field,\n\t\t user_id = _props$attributes.user_id,\n\t\t preview_show = _props$attributes.preview_show,\n\t\t preview_user_id = _props$attributes.preview_user_id,\n\t\t className = props.className,\n\t\t setAttributes = props.setAttributes;\n\n\n\t\tvar field_field = wp.element.createElement(SelectControl, {\n\t\t\tkey: 'field',\n\t\t\tlabel: __('Field', 'learndash'),\n\t\t\toptions: [{\n\t\t\t\tlabel: __('User Login', 'learndash'),\n\t\t\t\tvalue: 'user_login'\n\t\t\t}, {\n\t\t\t\tlabel: __('User Display Name', 'learndash'),\n\t\t\t\tvalue: 'display_name'\n\t\t\t}, {\n\t\t\t\tlabel: __('User Nicename', 'learndash'),\n\t\t\t\tvalue: 'user_nicename'\n\t\t\t}, {\n\t\t\t\tlabel: __('User First Name', 'learndash'),\n\t\t\t\tvalue: 'first_name'\n\t\t\t}, {\n\t\t\t\tlabel: __('User Last Name', 'learndash'),\n\t\t\t\tvalue: 'last_name'\n\t\t\t}, {\n\t\t\t\tlabel: __('User Nickname', 'learndash'),\n\t\t\t\tvalue: 'nickname'\n\t\t\t}, {\n\t\t\t\tlabel: __('User Email', 'learndash'),\n\t\t\t\tvalue: 'user_email'\n\t\t\t}, {\n\t\t\t\tlabel: __('User URL', 'learndash'),\n\t\t\t\tvalue: 'user_url'\n\t\t\t}, {\n\t\t\t\tlabel: __('User Description', 'learndash'),\n\t\t\t\tvalue: 'description'\n\t\t\t}],\n\t\t\tonChange: function onChange(field) {\n\t\t\t\treturn setAttributes({ field: field });\n\t\t\t}\n\t\t});\n\n\t\tvar field_user_id = wp.element.createElement(TextControl, {\n\t\t\tlabel: __('User ID', 'learndash'),\n\t\t\thelp: __('Enter specific User ID. Leave blank for current User.', 'learndash'),\n\t\t\tvalue: user_id || '',\n\t\t\tonChange: function onChange(user_id) {\n\t\t\t\treturn setAttributes({ user_id: user_id });\n\t\t\t}\n\t\t});\n\n\t\tvar panel_preview = wp.element.createElement(\n\t\t\tPanelBody,\n\t\t\t{\n\t\t\t\ttitle: __('Preview', 'learndash'),\n\t\t\t\tinitialOpen: false\n\t\t\t},\n\t\t\twp.element.createElement(ToggleControl, {\n\t\t\t\tlabel: __('Show Preview', 'learndash'),\n\t\t\t\tchecked: !!preview_show,\n\t\t\t\tonChange: function onChange(preview_show) {\n\t\t\t\t\treturn setAttributes({ preview_show: preview_show });\n\t\t\t\t}\n\t\t\t}),\n\t\t\twp.element.createElement(TextControl, {\n\t\t\t\tlabel: __('User ID', 'learndash'),\n\t\t\t\thelp: __('Enter a User ID to test preview', 'learndash'),\n\t\t\t\tvalue: preview_user_id || '',\n\t\t\t\ttype: 'number',\n\t\t\t\tonChange: function onChange(preview_user_id) {\n\t\t\t\t\treturn setAttributes({ preview_user_id: preview_user_id });\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\n\t\tvar inspectorControls = wp.element.createElement(\n\t\t\tInspectorControls,\n\t\t\tnull,\n\t\t\twp.element.createElement(\n\t\t\t\tPanelBody,\n\t\t\t\t{\n\t\t\t\t\ttitle: __('Settings', 'learndash')\n\t\t\t\t},\n\t\t\t\tfield_user_id,\n\t\t\t\tfield_field\n\t\t\t),\n\t\t\tpanel_preview\n\t\t);\n\n\t\tfunction do_serverside_render(attributes) {\n\t\t\tif (attributes.preview_show == true) {\n\t\t\t\treturn wp.element.createElement(ServerSideRender, {\n\t\t\t\t\tblock: 'learndash/ld-usermeta',\n\t\t\t\t\tattributes: attributes\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn __('[usermeta] shortcode output shown here', 'learndash');\n\t\t\t}\n\t\t}\n\n\t\treturn [inspectorControls, do_serverside_render(props.attributes)];\n\t},\n\n\tsave: function save(props) {\n\t\t// Delete preview_user_id from props to prevent it being saved.\n\t\tdelete props.attributes.preview_user_id;\n\t}\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Jsb2Nrcy9sZC11c2VybWV0YS9pbmRleC5qcz8wZDA1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTGVhcm5EYXNoIEJsb2NrIGxkLXVzZXJtZXRhXG4gKlxuICogQHNpbmNlIDIuNS45XG4gKiBAcGFja2FnZSBMZWFybkRhc2hcbiAqL1xuXG4vKipcbiAqIEludGVybmFsIGJsb2NrIGxpYnJhcmllc1xuICovXG52YXIgX3dwJGkxOG4gPSB3cC5pMThuLFxuICAgIF9fID0gX3dwJGkxOG4uX18sXG4gICAgX3ggPSBfd3AkaTE4bi5feCxcbiAgICBzcHJpbnRmID0gX3dwJGkxOG4uc3ByaW50ZjtcbnZhciByZWdpc3RlckJsb2NrVHlwZSA9IHdwLmJsb2Nrcy5yZWdpc3RlckJsb2NrVHlwZTtcbnZhciBJbnNwZWN0b3JDb250cm9scyA9IHdwLmVkaXRvci5JbnNwZWN0b3JDb250cm9scztcbnZhciBfd3AkY29tcG9uZW50cyA9IHdwLmNvbXBvbmVudHMsXG4gICAgU2VydmVyU2lkZVJlbmRlciA9IF93cCRjb21wb25lbnRzLlNlcnZlclNpZGVSZW5kZXIsXG4gICAgVG9vbHRpcCA9IF93cCRjb21wb25lbnRzLlRvb2x0aXAsXG4gICAgUGFuZWxCb2R5ID0gX3dwJGNvbXBvbmVudHMuUGFuZWxCb2R5LFxuICAgIFBhbmVsUm93ID0gX3dwJGNvbXBvbmVudHMuUGFuZWxSb3csXG4gICAgUmFuZ2VDb250cm9sID0gX3dwJGNvbXBvbmVudHMuUmFuZ2VDb250cm9sLFxuICAgIEZvcm1Ub2dnbGUgPSBfd3AkY29tcG9uZW50cy5Gb3JtVG9nZ2xlLFxuICAgIFNlbGVjdENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5TZWxlY3RDb250cm9sLFxuICAgIFRvZ2dsZUNvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5Ub2dnbGVDb250cm9sLFxuICAgIFRleHRDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVGV4dENvbnRyb2w7XG5cblxucmVnaXN0ZXJCbG9ja1R5cGUoJ2xlYXJuZGFzaC9sZC11c2VybWV0YScsIHtcblx0dGl0bGU6IF9fKCdMZWFybkRhc2ggVXNlciBtZXRhJywgJ2xlYXJuZGFzaCcpLFxuXHRkZXNjcmlwdGlvbjogX18oJ1RoaXMgYmxvY2sgZGlzcGxheXMgVXNlciBtZXRhIGZpZWxkJywgJ2xlYXJuZGFzaCcpLFxuXHRpY29uOiAnaWQnLFxuXHRjYXRlZ29yeTogJ2xlYXJuZGFzaC1ibG9ja3MnLFxuXHRleGFtcGxlOiB7XG5cdFx0YXR0cmlidXRlczoge1xuXHRcdFx0ZXhhbXBsZV9zaG93OiAxXG5cdFx0fVxuXHR9LFxuXHRzdXBwb3J0czoge1xuXHRcdGN1c3RvbUNsYXNzTmFtZTogZmFsc2Vcblx0fSxcblx0YXR0cmlidXRlczoge1xuXHRcdGZpZWxkOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJ1xuXHRcdH0sXG5cdFx0dXNlcl9pZDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0cHJldmlld19zaG93OiB7XG5cdFx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0XHRkZWZhdWx0OiAxXG5cdFx0fSxcblx0XHRwcmV2aWV3X3VzZXJfaWQ6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9XG5cblx0fSxcblx0ZWRpdDogZnVuY3Rpb24gZWRpdChwcm9wcykge1xuXHRcdHZhciBfcHJvcHMkYXR0cmlidXRlcyA9IHByb3BzLmF0dHJpYnV0ZXMsXG5cdFx0ICAgIGZpZWxkID0gX3Byb3BzJGF0dHJpYnV0ZXMuZmllbGQsXG5cdFx0ICAgIHVzZXJfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy51c2VyX2lkLFxuXHRcdCAgICBwcmV2aWV3X3Nob3cgPSBfcHJvcHMkYXR0cmlidXRlcy5wcmV2aWV3X3Nob3csXG5cdFx0ICAgIHByZXZpZXdfdXNlcl9pZCA9IF9wcm9wcyRhdHRyaWJ1dGVzLnByZXZpZXdfdXNlcl9pZCxcblx0XHQgICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuXHRcdCAgICBzZXRBdHRyaWJ1dGVzID0gcHJvcHMuc2V0QXR0cmlidXRlcztcblxuXG5cdFx0dmFyIGZpZWxkX2ZpZWxkID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcblx0XHRcdGtleTogJ2ZpZWxkJyxcblx0XHRcdGxhYmVsOiBfXygnRmllbGQnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRvcHRpb25zOiBbe1xuXHRcdFx0XHRsYWJlbDogX18oJ1VzZXIgTG9naW4nLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdHZhbHVlOiAndXNlcl9sb2dpbidcblx0XHRcdH0sIHtcblx0XHRcdFx0bGFiZWw6IF9fKCdVc2VyIERpc3BsYXkgTmFtZScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0dmFsdWU6ICdkaXNwbGF5X25hbWUnXG5cdFx0XHR9LCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnVXNlciBOaWNlbmFtZScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0dmFsdWU6ICd1c2VyX25pY2VuYW1lJ1xuXHRcdFx0fSwge1xuXHRcdFx0XHRsYWJlbDogX18oJ1VzZXIgRmlyc3QgTmFtZScsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0dmFsdWU6ICdmaXJzdF9uYW1lJ1xuXHRcdFx0fSwge1xuXHRcdFx0XHRsYWJlbDogX18oJ1VzZXIgTGFzdCBOYW1lJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHR2YWx1ZTogJ2xhc3RfbmFtZSdcblx0XHRcdH0sIHtcblx0XHRcdFx0bGFiZWw6IF9fKCdVc2VyIE5pY2tuYW1lJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHR2YWx1ZTogJ25pY2tuYW1lJ1xuXHRcdFx0fSwge1xuXHRcdFx0XHRsYWJlbDogX18oJ1VzZXIgRW1haWwnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdHZhbHVlOiAndXNlcl9lbWFpbCdcblx0XHRcdH0sIHtcblx0XHRcdFx0bGFiZWw6IF9fKCdVc2VyIFVSTCcsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0dmFsdWU6ICd1c2VyX3VybCdcblx0XHRcdH0sIHtcblx0XHRcdFx0bGFiZWw6IF9fKCdVc2VyIERlc2NyaXB0aW9uJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHR2YWx1ZTogJ2Rlc2NyaXB0aW9uJ1xuXHRcdFx0fV0sXG5cdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoZmllbGQpIHtcblx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBmaWVsZDogZmllbGQgfSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR2YXIgZmllbGRfdXNlcl9pZCA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0bGFiZWw6IF9fKCdVc2VyIElEJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0aGVscDogX18oJ0VudGVyIHNwZWNpZmljIFVzZXIgSUQuIExlYXZlIGJsYW5rIGZvciBjdXJyZW50IFVzZXIuJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0dmFsdWU6IHVzZXJfaWQgfHwgJycsXG5cdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodXNlcl9pZCkge1xuXHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHVzZXJfaWQ6IHVzZXJfaWQgfSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR2YXIgcGFuZWxfcHJldmlldyA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFBhbmVsQm9keSxcblx0XHRcdHtcblx0XHRcdFx0dGl0bGU6IF9fKCdQcmV2aWV3JywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRpbml0aWFsT3BlbjogZmFsc2Vcblx0XHRcdH0sXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ1Nob3cgUHJldmlldycsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0Y2hlY2tlZDogISFwcmV2aWV3X3Nob3csXG5cdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShwcmV2aWV3X3Nob3cpIHtcblx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHByZXZpZXdfc2hvdzogcHJldmlld19zaG93IH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ1VzZXIgSUQnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdGhlbHA6IF9fKCdFbnRlciBhIFVzZXIgSUQgdG8gdGVzdCBwcmV2aWV3JywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHR2YWx1ZTogcHJldmlld191c2VyX2lkIHx8ICcnLFxuXHRcdFx0XHR0eXBlOiAnbnVtYmVyJyxcblx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHByZXZpZXdfdXNlcl9pZCkge1xuXHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcHJldmlld191c2VyX2lkOiBwcmV2aWV3X3VzZXJfaWQgfSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdHZhciBpbnNwZWN0b3JDb250cm9scyA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdEluc3BlY3RvckNvbnRyb2xzLFxuXHRcdFx0bnVsbCxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGl0bGU6IF9fKCdTZXR0aW5ncycsICdsZWFybmRhc2gnKVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRmaWVsZF91c2VyX2lkLFxuXHRcdFx0XHRmaWVsZF9maWVsZFxuXHRcdFx0KSxcblx0XHRcdHBhbmVsX3ByZXZpZXdcblx0XHQpO1xuXG5cdFx0ZnVuY3Rpb24gZG9fc2VydmVyc2lkZV9yZW5kZXIoYXR0cmlidXRlcykge1xuXHRcdFx0aWYgKGF0dHJpYnV0ZXMucHJldmlld19zaG93ID09IHRydWUpIHtcblx0XHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZXJ2ZXJTaWRlUmVuZGVyLCB7XG5cdFx0XHRcdFx0YmxvY2s6ICdsZWFybmRhc2gvbGQtdXNlcm1ldGEnLFxuXHRcdFx0XHRcdGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXNcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gX18oJ1t1c2VybWV0YV0gc2hvcnRjb2RlIG91dHB1dCBzaG93biBoZXJlJywgJ2xlYXJuZGFzaCcpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBbaW5zcGVjdG9yQ29udHJvbHMsIGRvX3NlcnZlcnNpZGVfcmVuZGVyKHByb3BzLmF0dHJpYnV0ZXMpXTtcblx0fSxcblxuXHRzYXZlOiBmdW5jdGlvbiBzYXZlKHByb3BzKSB7XG5cdFx0Ly8gRGVsZXRlIHByZXZpZXdfdXNlcl9pZCBmcm9tIHByb3BzIHRvIHByZXZlbnQgaXQgYmVpbmcgc2F2ZWQuXG5cdFx0ZGVsZXRlIHByb3BzLmF0dHJpYnV0ZXMucHJldmlld191c2VyX2lkO1xuXHR9XG59KTsiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2\n")},function(module,exports){eval("/**\n * LearnDash Block ld-user-groups\n *\n * @since 2.5.9\n * @package LearnDash\n */\n\n/**\n * Internal block libraries\n */\nvar _wp$i18n = wp.i18n,\n __ = _wp$i18n.__,\n _x = _wp$i18n._x,\n sprintf = _wp$i18n.sprintf;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar InspectorControls = wp.editor.InspectorControls;\nvar _wp$components = wp.components,\n ServerSideRender = _wp$components.ServerSideRender,\n Tooltip = _wp$components.Tooltip,\n PanelBody = _wp$components.PanelBody,\n PanelRow = _wp$components.PanelRow,\n RangeControl = _wp$components.RangeControl,\n FormToggle = _wp$components.FormToggle,\n SelectControl = _wp$components.SelectControl,\n ToggleControl = _wp$components.ToggleControl,\n TextControl = _wp$components.TextControl;\n\n\nregisterBlockType('learndash/ld-user-groups', {\n title: __('LearnDash User Groups', 'learndash'),\n description: __('This block displays the list of groups users are assigned to as users or leaders.', 'learndash'),\n icon: 'groups',\n category: 'learndash-blocks',\n example: {\n attributes: {\n example_show: 1\n }\n },\n supports: {\n customClassName: false\n },\n attributes: {\n user_id: {\n type: 'string',\n default: ''\n },\n preview_show: {\n type: 'boolean',\n default: 1\n },\n preview_user_id: {\n type: 'string'\n\n }\n },\n edit: function edit(props) {\n var _props$attributes = props.attributes,\n user_id = _props$attributes.user_id,\n preview_user_id = _props$attributes.preview_user_id,\n preview_show = _props$attributes.preview_show,\n setAttributes = props.setAttributes;\n\n\n var inspectorControls = wp.element.createElement(\n InspectorControls,\n null,\n wp.element.createElement(\n PanelBody,\n {\n title: __('Settings', 'learndash')\n },\n wp.element.createElement(TextControl, {\n label: __('User ID', 'learndash'),\n help: __('Enter specific User ID. Leave blank for current User.', 'learndash'),\n value: user_id || '',\n onChange: function onChange(user_id) {\n return setAttributes({ user_id: user_id });\n }\n })\n ),\n wp.element.createElement(\n PanelBody,\n {\n title: __('Preview', 'learndash'),\n initialOpen: false\n },\n wp.element.createElement(ToggleControl, {\n label: __('Show Preview', 'learndash'),\n checked: !!preview_show,\n onChange: function onChange(preview_show) {\n return setAttributes({ preview_show: preview_show });\n }\n }),\n wp.element.createElement(TextControl, {\n label: __('User ID', 'learndash'),\n help: __('Enter a User ID to test preview', 'learndash'),\n value: preview_user_id || '',\n type: 'number',\n onChange: function onChange(preview_user_id) {\n return setAttributes({ preview_user_id: preview_user_id });\n }\n })\n )\n );\n\n function do_serverside_render(attributes) {\n if (attributes.preview_show == true) {\n return wp.element.createElement(ServerSideRender, {\n block: 'learndash/ld-user-groups',\n attributes: attributes\n });\n } else {\n return __('[user_groups] output shown here', 'learndash');\n }\n }\n\n return [inspectorControls, do_serverside_render(props.attributes)];\n },\n\n save: function save(props) {\n // Delete preview_user_id from props to prevent it being saved.\n delete props.attributes.preview_user_id;\n\n // Delete preview_user_id from props to prevent it being saved.\n delete props.attributes.preview_user_id;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Jsb2Nrcy9sZC11c2VyLWdyb3Vwcy9pbmRleC5qcz82NmIyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTGVhcm5EYXNoIEJsb2NrIGxkLXVzZXItZ3JvdXBzXG4gKlxuICogQHNpbmNlIDIuNS45XG4gKiBAcGFja2FnZSBMZWFybkRhc2hcbiAqL1xuXG4vKipcbiAqIEludGVybmFsIGJsb2NrIGxpYnJhcmllc1xuICovXG52YXIgX3dwJGkxOG4gPSB3cC5pMThuLFxuICAgIF9fID0gX3dwJGkxOG4uX18sXG4gICAgX3ggPSBfd3AkaTE4bi5feCxcbiAgICBzcHJpbnRmID0gX3dwJGkxOG4uc3ByaW50ZjtcbnZhciByZWdpc3RlckJsb2NrVHlwZSA9IHdwLmJsb2Nrcy5yZWdpc3RlckJsb2NrVHlwZTtcbnZhciBJbnNwZWN0b3JDb250cm9scyA9IHdwLmVkaXRvci5JbnNwZWN0b3JDb250cm9scztcbnZhciBfd3AkY29tcG9uZW50cyA9IHdwLmNvbXBvbmVudHMsXG4gICAgU2VydmVyU2lkZVJlbmRlciA9IF93cCRjb21wb25lbnRzLlNlcnZlclNpZGVSZW5kZXIsXG4gICAgVG9vbHRpcCA9IF93cCRjb21wb25lbnRzLlRvb2x0aXAsXG4gICAgUGFuZWxCb2R5ID0gX3dwJGNvbXBvbmVudHMuUGFuZWxCb2R5LFxuICAgIFBhbmVsUm93ID0gX3dwJGNvbXBvbmVudHMuUGFuZWxSb3csXG4gICAgUmFuZ2VDb250cm9sID0gX3dwJGNvbXBvbmVudHMuUmFuZ2VDb250cm9sLFxuICAgIEZvcm1Ub2dnbGUgPSBfd3AkY29tcG9uZW50cy5Gb3JtVG9nZ2xlLFxuICAgIFNlbGVjdENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5TZWxlY3RDb250cm9sLFxuICAgIFRvZ2dsZUNvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5Ub2dnbGVDb250cm9sLFxuICAgIFRleHRDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVGV4dENvbnRyb2w7XG5cblxucmVnaXN0ZXJCbG9ja1R5cGUoJ2xlYXJuZGFzaC9sZC11c2VyLWdyb3VwcycsIHtcbiAgICB0aXRsZTogX18oJ0xlYXJuRGFzaCBVc2VyIEdyb3VwcycsICdsZWFybmRhc2gnKSxcbiAgICBkZXNjcmlwdGlvbjogX18oJ1RoaXMgYmxvY2sgZGlzcGxheXMgdGhlIGxpc3Qgb2YgZ3JvdXBzIHVzZXJzIGFyZSBhc3NpZ25lZCB0byBhcyB1c2VycyBvciBsZWFkZXJzLicsICdsZWFybmRhc2gnKSxcbiAgICBpY29uOiAnZ3JvdXBzJyxcbiAgICBjYXRlZ29yeTogJ2xlYXJuZGFzaC1ibG9ja3MnLFxuICAgIGV4YW1wbGU6IHtcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgZXhhbXBsZV9zaG93OiAxXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHN1cHBvcnRzOiB7XG4gICAgICAgIGN1c3RvbUNsYXNzTmFtZTogZmFsc2VcbiAgICB9LFxuICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgdXNlcl9pZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZWZhdWx0OiAnJ1xuICAgICAgICB9LFxuICAgICAgICBwcmV2aWV3X3Nob3c6IHtcbiAgICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6IDFcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlld191c2VyX2lkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJ1xuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGVkaXQ6IGZ1bmN0aW9uIGVkaXQocHJvcHMpIHtcbiAgICAgICAgdmFyIF9wcm9wcyRhdHRyaWJ1dGVzID0gcHJvcHMuYXR0cmlidXRlcyxcbiAgICAgICAgICAgIHVzZXJfaWQgPSBfcHJvcHMkYXR0cmlidXRlcy51c2VyX2lkLFxuICAgICAgICAgICAgcHJldmlld191c2VyX2lkID0gX3Byb3BzJGF0dHJpYnV0ZXMucHJldmlld191c2VyX2lkLFxuICAgICAgICAgICAgcHJldmlld19zaG93ID0gX3Byb3BzJGF0dHJpYnV0ZXMucHJldmlld19zaG93LFxuICAgICAgICAgICAgc2V0QXR0cmlidXRlcyA9IHByb3BzLnNldEF0dHJpYnV0ZXM7XG5cblxuICAgICAgICB2YXIgaW5zcGVjdG9yQ29udHJvbHMgPSB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICBJbnNwZWN0b3JDb250cm9scyxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgUGFuZWxCb2R5LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF9fKCdTZXR0aW5ncycsICdsZWFybmRhc2gnKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBfXygnVXNlciBJRCcsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgaGVscDogX18oJ0VudGVyIHNwZWNpZmljIFVzZXIgSUQuIExlYXZlIGJsYW5rIGZvciBjdXJyZW50IFVzZXIuJywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdXNlcl9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHVzZXJfaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgdXNlcl9pZDogdXNlcl9pZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgIFBhbmVsQm9keSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfXygnUHJldmlldycsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbE9wZW46IGZhbHNlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogX18oJ1Nob3cgUHJldmlldycsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZDogISFwcmV2aWV3X3Nob3csXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShwcmV2aWV3X3Nob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcHJldmlld19zaG93OiBwcmV2aWV3X3Nob3cgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IF9fKCdVc2VyIElEJywgJ2xlYXJuZGFzaCcpLFxuICAgICAgICAgICAgICAgICAgICBoZWxwOiBfXygnRW50ZXIgYSBVc2VyIElEIHRvIHRlc3QgcHJldmlldycsICdsZWFybmRhc2gnKSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHByZXZpZXdfdXNlcl9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShwcmV2aWV3X3VzZXJfaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgcHJldmlld191c2VyX2lkOiBwcmV2aWV3X3VzZXJfaWQgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIGZ1bmN0aW9uIGRvX3NlcnZlcnNpZGVfcmVuZGVyKGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzLnByZXZpZXdfc2hvdyA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZXJ2ZXJTaWRlUmVuZGVyLCB7XG4gICAgICAgICAgICAgICAgICAgIGJsb2NrOiAnbGVhcm5kYXNoL2xkLXVzZXItZ3JvdXBzJyxcbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczogYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX18oJ1t1c2VyX2dyb3Vwc10gb3V0cHV0IHNob3duIGhlcmUnLCAnbGVhcm5kYXNoJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW2luc3BlY3RvckNvbnRyb2xzLCBkb19zZXJ2ZXJzaWRlX3JlbmRlcihwcm9wcy5hdHRyaWJ1dGVzKV07XG4gICAgfSxcblxuICAgIHNhdmU6IGZ1bmN0aW9uIHNhdmUocHJvcHMpIHtcbiAgICAgICAgLy8gRGVsZXRlIHByZXZpZXdfdXNlcl9pZCBmcm9tIHByb3BzIHRvIHByZXZlbnQgaXQgYmVpbmcgc2F2ZWQuXG4gICAgICAgIGRlbGV0ZSBwcm9wcy5hdHRyaWJ1dGVzLnByZXZpZXdfdXNlcl9pZDtcblxuICAgICAgICAvLyBEZWxldGUgcHJldmlld191c2VyX2lkIGZyb20gcHJvcHMgdG8gcHJldmVudCBpdCBiZWluZyBzYXZlZC5cbiAgICAgICAgZGVsZXRlIHByb3BzLmF0dHJpYnV0ZXMucHJldmlld191c2VyX2lkO1xuICAgIH1cbn0pOyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///3\n")},function(module,exports){eval("/**\n * LearnDash Block ld-login\n *\n * @since 2.5.9\n * @package LearnDash\n */\n\n/**\n * LearnDash block functions\n */\n//import {\n//\tldlms_get_custom_label,\n//\tldlms_get_per_page,\n//} from '../ldlms.js';\n\n/**\n * Internal block libraries\n */\nvar _wp$i18n = wp.i18n,\n __ = _wp$i18n.__,\n _x = _wp$i18n._x,\n sprintf = _wp$i18n.sprintf;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar InspectorControls = wp.editor.InspectorControls;\nvar _wp$components = wp.components,\n ServerSideRender = _wp$components.ServerSideRender,\n PanelBody = _wp$components.PanelBody,\n SelectControl = _wp$components.SelectControl,\n ToggleControl = _wp$components.ToggleControl,\n TextControl = _wp$components.TextControl;\n\n\nregisterBlockType('learndash/ld-login', {\n\ttitle: _x('LearnDash Login', 'learndash'),\n\tdescription: __('This shortcode adds the login button on any page', 'learndash'),\n\ticon: 'admin-network',\n\tcategory: 'learndash-blocks',\n\texample: {\n\t\tattributes: {\n\t\t\texample_show: 1\n\t\t}\n\t},\n\tsupports: {\n\t\tcustomClassName: false\n\t},\n\tattributes: {\n\t\tlogin_url: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tlogin_label: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tlogin_placement: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tlogin_button: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\n\t\tlogout_url: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tlogout_label: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tlogout_placement: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'right'\n\t\t},\n\t\tlogout_button: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\tpreview_show: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true\n\t\t},\n\t\tpreview_action: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t},\n\t\texample_show: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: 0\n\t\t}\n\t},\n\tedit: function edit(props) {\n\t\tvar _props$attributes = props.attributes,\n\t\t login_url = _props$attributes.login_url,\n\t\t login_label = _props$attributes.login_label,\n\t\t login_placement = _props$attributes.login_placement,\n\t\t login_button = _props$attributes.login_button,\n\t\t logout_url = _props$attributes.logout_url,\n\t\t logout_label = _props$attributes.logout_label,\n\t\t logout_placement = _props$attributes.logout_placement,\n\t\t logout_button = _props$attributes.logout_button,\n\t\t preview_show = _props$attributes.preview_show,\n\t\t preview_action = _props$attributes.preview_action,\n\t\t example_show = _props$attributes.example_show,\n\t\t setAttributes = props.setAttributes;\n\n\n\t\tvar panelbody_login = wp.element.createElement(\n\t\t\tPanelBody,\n\t\t\t{\n\t\t\t\ttitle: __('Login Settings', 'learndash')\n\t\t\t},\n\t\t\twp.element.createElement(TextControl, {\n\t\t\t\tlabel: __('Login URL', 'learndash'),\n\t\t\t\thelp: __('Override default login URL', 'learndash'),\n\t\t\t\tvalue: login_url || '',\n\t\t\t\tonChange: function onChange(login_url) {\n\t\t\t\t\treturn setAttributes({ login_url: login_url });\n\t\t\t\t}\n\t\t\t}),\n\t\t\twp.element.createElement(TextControl, {\n\t\t\t\tlabel: __('Login Label', 'learndash'),\n\t\t\t\thelp: __('Override default label \"Login\"', 'learndash'),\n\t\t\t\tvalue: login_label || '',\n\t\t\t\tonChange: function onChange(login_label) {\n\t\t\t\t\treturn setAttributes({ login_label: login_label });\n\t\t\t\t}\n\t\t\t}),\n\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\tkey: 'login_placement',\n\t\t\t\tlabel: __('Login Icon Placement', 'learndash'),\n\t\t\t\tvalue: login_placement,\n\t\t\t\toptions: [{\n\t\t\t\t\tlabel: __('Left - To left of label', 'learndash'),\n\t\t\t\t\tvalue: ''\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Right - To right of label', 'learndash'),\n\t\t\t\t\tvalue: 'right'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('None - No icon', 'learndash'),\n\t\t\t\t\tvalue: 'none'\n\t\t\t\t}],\n\t\t\t\tonChange: function onChange(login_placement) {\n\t\t\t\t\treturn setAttributes({ login_placement: login_placement });\n\t\t\t\t}\n\t\t\t}),\n\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\tkey: 'login_button',\n\t\t\t\tlabel: __('Login Displayed as', 'learndash'),\n\t\t\t\thelp: __('Display as Button or link', 'learndash'),\n\t\t\t\tvalue: login_button,\n\t\t\t\toptions: [{\n\t\t\t\t\tlabel: __('Button', 'learndash'),\n\t\t\t\t\tvalue: ''\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Link', 'learndash'),\n\t\t\t\t\tvalue: 'link'\n\t\t\t\t}],\n\t\t\t\tonChange: function onChange(login_button) {\n\t\t\t\t\treturn setAttributes({ login_button: login_button });\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\n\t\tvar panelbody_logout = wp.element.createElement(\n\t\t\tPanelBody,\n\t\t\t{\n\t\t\t\ttitle: __('Logout Settings', 'learndash')\n\t\t\t},\n\t\t\twp.element.createElement(TextControl, {\n\t\t\t\tlabel: __('Logout URL', 'learndash'),\n\t\t\t\thelp: __('Override default logout URL', 'learndash'),\n\t\t\t\tvalue: logout_url || '',\n\t\t\t\tonChange: function onChange(logout_url) {\n\t\t\t\t\treturn setAttributes({ logout_url: logout_url });\n\t\t\t\t}\n\t\t\t}),\n\t\t\twp.element.createElement(TextControl, {\n\t\t\t\tlabel: __('Logout Label', 'learndash'),\n\t\t\t\thelp: __('Override default label \"Logout\"', 'learndash'),\n\t\t\t\tvalue: logout_label || '',\n\t\t\t\tonChange: function onChange(logout_label) {\n\t\t\t\t\treturn setAttributes({ logout_label: logout_label });\n\t\t\t\t}\n\t\t\t}),\n\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\tkey: 'logout_placement',\n\t\t\t\tlabel: __('Logout Icon Placement', 'learndash'),\n\t\t\t\tvalue: logout_placement,\n\t\t\t\toptions: [{\n\t\t\t\t\tlabel: __('Left - To left of label', 'learndash'),\n\t\t\t\t\tvalue: 'left'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Right - To right of label', 'learndash'),\n\t\t\t\t\tvalue: 'right'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('None - No icon', 'learndash'),\n\t\t\t\t\tvalue: 'none'\n\t\t\t\t}],\n\t\t\t\tonChange: function onChange(logout_placement) {\n\t\t\t\t\treturn setAttributes({ logout_placement: logout_placement });\n\t\t\t\t}\n\t\t\t}),\n\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\tkey: 'logout_button',\n\t\t\t\tlabel: __('Logout Displayed as', 'learndash'),\n\t\t\t\thelp: __('Display as Button or link', 'learndash'),\n\t\t\t\tvalue: logout_button,\n\t\t\t\toptions: [{\n\t\t\t\t\tlabel: __('Button', 'learndash'),\n\t\t\t\t\tvalue: ''\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Link', 'learndash'),\n\t\t\t\t\tvalue: 'link'\n\t\t\t\t}],\n\t\t\t\tonChange: function onChange(logout_button) {\n\t\t\t\t\treturn setAttributes({ logout_button: logout_button });\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\n\t\tvar panel_preview = wp.element.createElement(\n\t\t\tPanelBody,\n\t\t\t{\n\t\t\t\ttitle: __('Preview', 'learndash'),\n\t\t\t\tinitialOpen: false\n\t\t\t},\n\t\t\twp.element.createElement(ToggleControl, {\n\t\t\t\tlabel: __('Show Preview', 'learndash'),\n\t\t\t\tchecked: !!preview_show,\n\t\t\t\tonChange: function onChange(preview_show) {\n\t\t\t\t\treturn setAttributes({ preview_show: preview_show });\n\t\t\t\t}\n\t\t\t}),\n\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\tkey: 'preview_action',\n\t\t\t\tlabel: __('Preview Action', 'learndash'),\n\t\t\t\tvalue: preview_action,\n\t\t\t\toptions: [{\n\t\t\t\t\tlabel: __('Login', 'learndash'),\n\t\t\t\t\tvalue: 'login'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Logout', 'learndash'),\n\t\t\t\t\tvalue: 'logout'\n\t\t\t\t}],\n\t\t\t\tonChange: function onChange(preview_action) {\n\t\t\t\t\treturn setAttributes({ preview_action: preview_action });\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\n\t\tvar inspectorControls = wp.element.createElement(\n\t\t\tInspectorControls,\n\t\t\tnull,\n\t\t\tpanelbody_login,\n\t\t\tpanelbody_logout,\n\t\t\tpanel_preview\n\t\t);\n\n\t\tfunction do_serverside_render(attributes) {\n\t\t\tif (attributes.preview_show == true) {\n\t\t\t\treturn wp.element.createElement(ServerSideRender, {\n\t\t\t\t\tblock: 'learndash/ld-login',\n\t\t\t\t\tattributes: attributes\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn __('[learndash_login] shortcode output shown here', 'learndash');\n\t\t\t}\n\t\t}\n\n\t\treturn [inspectorControls, do_serverside_render(props.attributes)];\n\t},\n\n\tsave: function save(props) {\n\t\t// Delete meta from props to prevent it being saved.\n\t\tdelete props.attributes.meta;\n\n\t\t// Delete preview_user_id from props to prevent it being saved.\n\t\tdelete props.attributes.preview_user_id;\n\t}\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Jsb2Nrcy9sZC1sb2dpbi9pbmRleC5qcz8yOWY1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTGVhcm5EYXNoIEJsb2NrIGxkLWxvZ2luXG4gKlxuICogQHNpbmNlIDIuNS45XG4gKiBAcGFja2FnZSBMZWFybkRhc2hcbiAqL1xuXG4vKipcbiAqIExlYXJuRGFzaCBibG9jayBmdW5jdGlvbnNcbiAqL1xuLy9pbXBvcnQge1xuLy9cdGxkbG1zX2dldF9jdXN0b21fbGFiZWwsXG4vL1x0bGRsbXNfZ2V0X3Blcl9wYWdlLFxuLy99IGZyb20gJy4uL2xkbG1zLmpzJztcblxuLyoqXG4gKiBJbnRlcm5hbCBibG9jayBsaWJyYXJpZXNcbiAqL1xudmFyIF93cCRpMThuID0gd3AuaTE4bixcbiAgICBfXyA9IF93cCRpMThuLl9fLFxuICAgIF94ID0gX3dwJGkxOG4uX3gsXG4gICAgc3ByaW50ZiA9IF93cCRpMThuLnNwcmludGY7XG52YXIgcmVnaXN0ZXJCbG9ja1R5cGUgPSB3cC5ibG9ja3MucmVnaXN0ZXJCbG9ja1R5cGU7XG52YXIgSW5zcGVjdG9yQ29udHJvbHMgPSB3cC5lZGl0b3IuSW5zcGVjdG9yQ29udHJvbHM7XG52YXIgX3dwJGNvbXBvbmVudHMgPSB3cC5jb21wb25lbnRzLFxuICAgIFNlcnZlclNpZGVSZW5kZXIgPSBfd3AkY29tcG9uZW50cy5TZXJ2ZXJTaWRlUmVuZGVyLFxuICAgIFBhbmVsQm9keSA9IF93cCRjb21wb25lbnRzLlBhbmVsQm9keSxcbiAgICBTZWxlY3RDb250cm9sID0gX3dwJGNvbXBvbmVudHMuU2VsZWN0Q29udHJvbCxcbiAgICBUb2dnbGVDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVG9nZ2xlQ29udHJvbCxcbiAgICBUZXh0Q29udHJvbCA9IF93cCRjb21wb25lbnRzLlRleHRDb250cm9sO1xuXG5cbnJlZ2lzdGVyQmxvY2tUeXBlKCdsZWFybmRhc2gvbGQtbG9naW4nLCB7XG5cdHRpdGxlOiBfeCgnTGVhcm5EYXNoIExvZ2luJywgJ2xlYXJuZGFzaCcpLFxuXHRkZXNjcmlwdGlvbjogX18oJ1RoaXMgc2hvcnRjb2RlIGFkZHMgdGhlIGxvZ2luIGJ1dHRvbiBvbiBhbnkgcGFnZScsICdsZWFybmRhc2gnKSxcblx0aWNvbjogJ2FkbWluLW5ldHdvcmsnLFxuXHRjYXRlZ29yeTogJ2xlYXJuZGFzaC1ibG9ja3MnLFxuXHRleGFtcGxlOiB7XG5cdFx0YXR0cmlidXRlczoge1xuXHRcdFx0ZXhhbXBsZV9zaG93OiAxXG5cdFx0fVxuXHR9LFxuXHRzdXBwb3J0czoge1xuXHRcdGN1c3RvbUNsYXNzTmFtZTogZmFsc2Vcblx0fSxcblx0YXR0cmlidXRlczoge1xuXHRcdGxvZ2luX3VybDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0bG9naW5fbGFiZWw6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdGxvZ2luX3BsYWNlbWVudDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0bG9naW5fYnV0dG9uOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblxuXHRcdGxvZ291dF91cmw6IHtcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdFx0ZGVmYXVsdDogJydcblx0XHR9LFxuXHRcdGxvZ291dF9sYWJlbDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAnJ1xuXHRcdH0sXG5cdFx0bG9nb3V0X3BsYWNlbWVudDoge1xuXHRcdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0XHRkZWZhdWx0OiAncmlnaHQnXG5cdFx0fSxcblx0XHRsb2dvdXRfYnV0dG9uOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRwcmV2aWV3X3Nob3c6IHtcblx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdGRlZmF1bHQ6IHRydWVcblx0XHR9LFxuXHRcdHByZXZpZXdfYWN0aW9uOiB7XG5cdFx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRcdGRlZmF1bHQ6ICcnXG5cdFx0fSxcblx0XHRleGFtcGxlX3Nob3c6IHtcblx0XHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRcdGRlZmF1bHQ6IDBcblx0XHR9XG5cdH0sXG5cdGVkaXQ6IGZ1bmN0aW9uIGVkaXQocHJvcHMpIHtcblx0XHR2YXIgX3Byb3BzJGF0dHJpYnV0ZXMgPSBwcm9wcy5hdHRyaWJ1dGVzLFxuXHRcdCAgICBsb2dpbl91cmwgPSBfcHJvcHMkYXR0cmlidXRlcy5sb2dpbl91cmwsXG5cdFx0ICAgIGxvZ2luX2xhYmVsID0gX3Byb3BzJGF0dHJpYnV0ZXMubG9naW5fbGFiZWwsXG5cdFx0ICAgIGxvZ2luX3BsYWNlbWVudCA9IF9wcm9wcyRhdHRyaWJ1dGVzLmxvZ2luX3BsYWNlbWVudCxcblx0XHQgICAgbG9naW5fYnV0dG9uID0gX3Byb3BzJGF0dHJpYnV0ZXMubG9naW5fYnV0dG9uLFxuXHRcdCAgICBsb2dvdXRfdXJsID0gX3Byb3BzJGF0dHJpYnV0ZXMubG9nb3V0X3VybCxcblx0XHQgICAgbG9nb3V0X2xhYmVsID0gX3Byb3BzJGF0dHJpYnV0ZXMubG9nb3V0X2xhYmVsLFxuXHRcdCAgICBsb2dvdXRfcGxhY2VtZW50ID0gX3Byb3BzJGF0dHJpYnV0ZXMubG9nb3V0X3BsYWNlbWVudCxcblx0XHQgICAgbG9nb3V0X2J1dHRvbiA9IF9wcm9wcyRhdHRyaWJ1dGVzLmxvZ291dF9idXR0b24sXG5cdFx0ICAgIHByZXZpZXdfc2hvdyA9IF9wcm9wcyRhdHRyaWJ1dGVzLnByZXZpZXdfc2hvdyxcblx0XHQgICAgcHJldmlld19hY3Rpb24gPSBfcHJvcHMkYXR0cmlidXRlcy5wcmV2aWV3X2FjdGlvbixcblx0XHQgICAgZXhhbXBsZV9zaG93ID0gX3Byb3BzJGF0dHJpYnV0ZXMuZXhhbXBsZV9zaG93LFxuXHRcdCAgICBzZXRBdHRyaWJ1dGVzID0gcHJvcHMuc2V0QXR0cmlidXRlcztcblxuXG5cdFx0dmFyIHBhbmVsYm9keV9sb2dpbiA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFBhbmVsQm9keSxcblx0XHRcdHtcblx0XHRcdFx0dGl0bGU6IF9fKCdMb2dpbiBTZXR0aW5ncycsICdsZWFybmRhc2gnKVxuXHRcdFx0fSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ0xvZ2luIFVSTCcsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0aGVscDogX18oJ092ZXJyaWRlIGRlZmF1bHQgbG9naW4gVVJMJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHR2YWx1ZTogbG9naW5fdXJsIHx8ICcnLFxuXHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UobG9naW5fdXJsKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBsb2dpbl91cmw6IGxvZ2luX3VybCB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0bGFiZWw6IF9fKCdMb2dpbiBMYWJlbCcsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0aGVscDogX18oJ092ZXJyaWRlIGRlZmF1bHQgbGFiZWwgXCJMb2dpblwiJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHR2YWx1ZTogbG9naW5fbGFiZWwgfHwgJycsXG5cdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShsb2dpbl9sYWJlbCkge1xuXHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgbG9naW5fbGFiZWw6IGxvZ2luX2xhYmVsIH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdGtleTogJ2xvZ2luX3BsYWNlbWVudCcsXG5cdFx0XHRcdGxhYmVsOiBfXygnTG9naW4gSWNvbiBQbGFjZW1lbnQnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdHZhbHVlOiBsb2dpbl9wbGFjZW1lbnQsXG5cdFx0XHRcdG9wdGlvbnM6IFt7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdMZWZ0IC0gVG8gbGVmdCBvZiBsYWJlbCcsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogJydcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnUmlnaHQgLSBUbyByaWdodCBvZiBsYWJlbCcsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3JpZ2h0J1xuXHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdOb25lIC0gTm8gaWNvbicsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ25vbmUnXG5cdFx0XHRcdH1dLFxuXHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UobG9naW5fcGxhY2VtZW50KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBsb2dpbl9wbGFjZW1lbnQ6IGxvZ2luX3BsYWNlbWVudCB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoU2VsZWN0Q29udHJvbCwge1xuXHRcdFx0XHRrZXk6ICdsb2dpbl9idXR0b24nLFxuXHRcdFx0XHRsYWJlbDogX18oJ0xvZ2luIERpc3BsYXllZCBhcycsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0aGVscDogX18oJ0Rpc3BsYXkgYXMgQnV0dG9uIG9yIGxpbmsnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdHZhbHVlOiBsb2dpbl9idXR0b24sXG5cdFx0XHRcdG9wdGlvbnM6IFt7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdCdXR0b24nLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0dmFsdWU6ICcnXG5cdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ0xpbmsnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdsaW5rJ1xuXHRcdFx0XHR9XSxcblx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGxvZ2luX2J1dHRvbikge1xuXHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgbG9naW5fYnV0dG9uOiBsb2dpbl9idXR0b24gfSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdHZhciBwYW5lbGJvZHlfbG9nb3V0ID0gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0e1xuXHRcdFx0XHR0aXRsZTogX18oJ0xvZ291dCBTZXR0aW5ncycsICdsZWFybmRhc2gnKVxuXHRcdFx0fSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ0xvZ291dCBVUkwnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdGhlbHA6IF9fKCdPdmVycmlkZSBkZWZhdWx0IGxvZ291dCBVUkwnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdHZhbHVlOiBsb2dvdXRfdXJsIHx8ICcnLFxuXHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UobG9nb3V0X3VybCkge1xuXHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgbG9nb3V0X3VybDogbG9nb3V0X3VybCB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0bGFiZWw6IF9fKCdMb2dvdXQgTGFiZWwnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdGhlbHA6IF9fKCdPdmVycmlkZSBkZWZhdWx0IGxhYmVsIFwiTG9nb3V0XCInLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdHZhbHVlOiBsb2dvdXRfbGFiZWwgfHwgJycsXG5cdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShsb2dvdXRfbGFiZWwpIHtcblx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGxvZ291dF9sYWJlbDogbG9nb3V0X2xhYmVsIH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdGtleTogJ2xvZ291dF9wbGFjZW1lbnQnLFxuXHRcdFx0XHRsYWJlbDogX18oJ0xvZ291dCBJY29uIFBsYWNlbWVudCcsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0dmFsdWU6IGxvZ291dF9wbGFjZW1lbnQsXG5cdFx0XHRcdG9wdGlvbnM6IFt7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdMZWZ0IC0gVG8gbGVmdCBvZiBsYWJlbCcsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2xlZnQnXG5cdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ1JpZ2h0IC0gVG8gcmlnaHQgb2YgbGFiZWwnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdyaWdodCdcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnTm9uZSAtIE5vIGljb24nLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdub25lJ1xuXHRcdFx0XHR9XSxcblx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKGxvZ291dF9wbGFjZW1lbnQpIHtcblx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGxvZ291dF9wbGFjZW1lbnQ6IGxvZ291dF9wbGFjZW1lbnQgfSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcblx0XHRcdFx0a2V5OiAnbG9nb3V0X2J1dHRvbicsXG5cdFx0XHRcdGxhYmVsOiBfXygnTG9nb3V0IERpc3BsYXllZCBhcycsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0aGVscDogX18oJ0Rpc3BsYXkgYXMgQnV0dG9uIG9yIGxpbmsnLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdHZhbHVlOiBsb2dvdXRfYnV0dG9uLFxuXHRcdFx0XHRvcHRpb25zOiBbe1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnQnV0dG9uJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdHZhbHVlOiAnJ1xuXHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdMaW5rJywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbGluaydcblx0XHRcdFx0fV0sXG5cdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShsb2dvdXRfYnV0dG9uKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBsb2dvdXRfYnV0dG9uOiBsb2dvdXRfYnV0dG9uIH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdCk7XG5cblx0XHR2YXIgcGFuZWxfcHJldmlldyA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFBhbmVsQm9keSxcblx0XHRcdHtcblx0XHRcdFx0dGl0bGU6IF9fKCdQcmV2aWV3JywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRpbml0aWFsT3BlbjogZmFsc2Vcblx0XHRcdH0sXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ1Nob3cgUHJldmlldycsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0Y2hlY2tlZDogISFwcmV2aWV3X3Nob3csXG5cdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShwcmV2aWV3X3Nob3cpIHtcblx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IHByZXZpZXdfc2hvdzogcHJldmlld19zaG93IH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdGtleTogJ3ByZXZpZXdfYWN0aW9uJyxcblx0XHRcdFx0bGFiZWw6IF9fKCdQcmV2aWV3IEFjdGlvbicsICdsZWFybmRhc2gnKSxcblx0XHRcdFx0dmFsdWU6IHByZXZpZXdfYWN0aW9uLFxuXHRcdFx0XHRvcHRpb25zOiBbe1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnTG9naW4nLCAnbGVhcm5kYXNoJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdsb2dpbidcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnTG9nb3V0JywgJ2xlYXJuZGFzaCcpLFxuXHRcdFx0XHRcdHZhbHVlOiAnbG9nb3V0J1xuXHRcdFx0XHR9XSxcblx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHByZXZpZXdfYWN0aW9uKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBwcmV2aWV3X2FjdGlvbjogcHJldmlld19hY3Rpb24gfSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdHZhciBpbnNwZWN0b3JDb250cm9scyA9IHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdEluc3BlY3RvckNvbnRyb2xzLFxuXHRcdFx0bnVsbCxcblx0XHRcdHBhbmVsYm9keV9sb2dpbixcblx0XHRcdHBhbmVsYm9keV9sb2dvdXQsXG5cdFx0XHRwYW5lbF9wcmV2aWV3XG5cdFx0KTtcblxuXHRcdGZ1bmN0aW9uIGRvX3NlcnZlcnNpZGVfcmVuZGVyKGF0dHJpYnV0ZXMpIHtcblx0XHRcdGlmIChhdHRyaWJ1dGVzLnByZXZpZXdfc2hvdyA9PSB0cnVlKSB7XG5cdFx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoU2VydmVyU2lkZVJlbmRlciwge1xuXHRcdFx0XHRcdGJsb2NrOiAnbGVhcm5kYXNoL2xkLWxvZ2luJyxcblx0XHRcdFx0XHRhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIF9fKCdbbGVhcm5kYXNoX2xvZ2luXSBzaG9ydGNvZGUgb3V0cHV0IHNob3duIGhlcmUnLCAnbGVhcm5kYXNoJyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIFtpbnNwZWN0b3JDb250cm9scywgZG9fc2VydmVyc2lkZV9yZW5kZXIocHJvcHMuYXR0cmlidXRlcyldO1xuXHR9LFxuXG5cdHNhdmU6IGZ1bmN0aW9uIHNhdmUocHJvcHMpIHtcblx0XHQvLyBEZWxldGUgbWV0YSBmcm9tIHByb3BzIHRvIHByZXZlbnQgaXQgYmVpbmcgc2F2ZWQuXG5cdFx0ZGVsZXRlIHByb3BzLmF0dHJpYnV0ZXMubWV0YTtcblxuXHRcdC8vIERlbGV0ZSBwcmV2aWV3X3VzZXJfaWQgZnJvbSBwcm9wcyB0byBwcmV2ZW50IGl0IGJlaW5nIHNhdmVkLlxuXHRcdGRlbGV0ZSBwcm9wcy5hdHRyaWJ1dGVzLnByZXZpZXdfdXNlcl9pZDtcblx0fVxufSk7Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///4\n")}]);PKc\Vׯ/includes/gutenberg/assets/js/frontend.blocks.jsnuW+A!function(e){var n={};function o(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.m=e,o.c=n,o.d=function(e,n,r){o.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},o.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},o.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(n,"a",n),n},o.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},o.p="",o(o.s=1)}([,function(module,exports){eval("// Nothing to see here for now.//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Jsb2Nrcy9mcm9udGVuZC5qcz9iNGNkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIE5vdGhpbmcgdG8gc2VlIGhlcmUgZm9yIG5vdy4iXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1\n")}]);PKc\qa2includes/gutenberg/assets/css/blocks.style-rtl.cssnuW+A.wp-block-jsforwpblocks-dynamic li { list-style-position: inside; } .wp-block-jsforwpblocks-dynamic .spinner { float: none; margin: 6px 0 10px 2px; } PKc\/.includes/gutenberg/assets/css/blocks.style.cssnuW+A.wp-block-jsforwpblocks-dynamic li { list-style-position: inside; } .wp-block-jsforwpblocks-dynamic .spinner { float: none; margin: 6px 2px 10px 0; } PKc\^ /includes/gutenberg/assets/css/blocks.editor.cssnuW+A .edit-post-visual-editor .editor-block-list__block.is-selected[data-type="learndash/ld-course-complete"] .learndash-block-inner .editor-block-list__layout, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-course-complete"] .learndash-block-inner .editor-block-list__layout:focus-within, .edit-post-visual-editor .editor-block-list__block.is-selected[data-type="learndash/ld-visitor"] .learndash-block-inner .editor-block-list__layout, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-visitor"] .learndash-block-inner .editor-block-list__layout:focus-within, .edit-post-visual-editor .editor-block-list__block.is-selected[data-type="learndash/ld-student"] .learndash-block-inner .editor-block-list__layout, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-student"] .learndash-block-inner .editor-block-list__layout:focus-within, .edit-post-visual-editor .editor-block-list__block.is-selected[data-type="learndash/ld-course-inprogress"] .learndash-block-inner .editor-block-list__layout, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-course-inprogress"] .learndash-block-inner .editor-block-list__layout:focus-within, .edit-post-visual-editor .editor-block-list__block.is-selected[data-type="learndash/ld-course-notstarted"] .learndash-block-inner .editor-block-list__layout, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-course-notstarted"] .learndash-block-inner .editor-block-list__layout:focus-within, .edit-post-visual-editor .editor-block-list__block.is-selected[data-type="learndash/ld-group"] .learndash-block-inner .editor-block-list__layout, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-group"] .learndash-block-inner .editor-block-list__layout:focus-within { padding-right: 5px; border-right: 5px solid rgb(226, 228, 231); } .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-course-complete"] .learndash-block-inner .editor-block-list__layout:hover, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-visitor"] .learndash-block-inner .editor-block-list__layout:hover, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-student"] .learndash-block-inner .editor-block-list__layout:hover, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-course-inprogress"] .learndash-block-inner .editor-block-list__layout:hover, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-course-notstarted"] .learndash-block-inner .editor-block-list__layout:hover, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-group"] .learndash-block-inner .editor-block-list__layout:hover { padding-right: 5px; border-right: 5px solid #007cba; } /* .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-course-complete"] .learndash-block-inner, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-visitor"] .learndash-block-inner, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-student"] .learndash-block-inner, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-course-inprogress"] .learndash-block-inner, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-course-notstarted"] .learndash-block-inner, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-group"] .learndash-block-inner { padding-top: 5px; padding-bottom: 1px; } */ .edit-post-visual-editor div[data-type="learndash/ld-profile"] .editor-block-list__block-edit, .edit-post-visual-editor div[data-type="learndash/ld-course-list"] .editor-block-list__block-edit, .edit-post-visual-editor div[data-type="learndash/ld-lesson-list"] .editor-block-list__block-edit, .edit-post-visual-editor div[data-type="learndash/ld-topic-list"] .editor-block-list__block-edit, .edit-post-visual-editor div[data-type="learndash/ld-quiz-list"] .editor-block-list__block-edit { padding-top: 25px; } .edit-post-visual-editor div[data-type="learndash/ld-course-expire-status"] .editor-block-list__block-edit { min-height: 25px; } /* Specific styles for the course list block output within the Gutenberg editor */ .edit-post-visual-editor div[data-type="learndash/ld-course-list"] .ld-course-list-items h2.ld-entry-title { margin-top: 0; margin-bottom: 0; clear: both; width: 100%; } .edit-post-visual-editor .learndash-block-error-message { display: block; color: red; }PKc\2)3includes/gutenberg/assets/css/blocks.editor-rtl.cssnuW+A .edit-post-visual-editor .editor-block-list__block.is-selected[data-type="learndash/ld-course-complete"] .learndash-block-inner .editor-block-list__layout, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-course-complete"] .learndash-block-inner .editor-block-list__layout:focus-within, .edit-post-visual-editor .editor-block-list__block.is-selected[data-type="learndash/ld-visitor"] .learndash-block-inner .editor-block-list__layout, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-visitor"] .learndash-block-inner .editor-block-list__layout:focus-within, .edit-post-visual-editor .editor-block-list__block.is-selected[data-type="learndash/ld-student"] .learndash-block-inner .editor-block-list__layout, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-student"] .learndash-block-inner .editor-block-list__layout:focus-within, .edit-post-visual-editor .editor-block-list__block.is-selected[data-type="learndash/ld-course-inprogress"] .learndash-block-inner .editor-block-list__layout, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-course-inprogress"] .learndash-block-inner .editor-block-list__layout:focus-within, .edit-post-visual-editor .editor-block-list__block.is-selected[data-type="learndash/ld-course-notstarted"] .learndash-block-inner .editor-block-list__layout, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-course-notstarted"] .learndash-block-inner .editor-block-list__layout:focus-within, .edit-post-visual-editor .editor-block-list__block.is-selected[data-type="learndash/ld-group"] .learndash-block-inner .editor-block-list__layout, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-group"] .learndash-block-inner .editor-block-list__layout:focus-within { padding-left: 5px; border-left: 5px solid rgb(226, 228, 231); } .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-course-complete"] .learndash-block-inner .editor-block-list__layout:hover, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-visitor"] .learndash-block-inner .editor-block-list__layout:hover, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-student"] .learndash-block-inner .editor-block-list__layout:hover, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-course-inprogress"] .learndash-block-inner .editor-block-list__layout:hover, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-course-notstarted"] .learndash-block-inner .editor-block-list__layout:hover, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-group"] .learndash-block-inner .editor-block-list__layout:hover { padding-left: 5px; border-left: 5px solid #007cba; } /* .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-course-complete"] .learndash-block-inner, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-visitor"] .learndash-block-inner, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-student"] .learndash-block-inner, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-course-inprogress"] .learndash-block-inner, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-course-notstarted"] .learndash-block-inner, .edit-post-visual-editor .editor-block-list__block[data-type="learndash/ld-group"] .learndash-block-inner { padding-top: 5px; padding-bottom: 1px; } */ .edit-post-visual-editor div[data-type="learndash/ld-profile"] .editor-block-list__block-edit, .edit-post-visual-editor div[data-type="learndash/ld-course-list"] .editor-block-list__block-edit, .edit-post-visual-editor div[data-type="learndash/ld-lesson-list"] .editor-block-list__block-edit, .edit-post-visual-editor div[data-type="learndash/ld-topic-list"] .editor-block-list__block-edit, .edit-post-visual-editor div[data-type="learndash/ld-quiz-list"] .editor-block-list__block-edit { padding-top: 25px; } .edit-post-visual-editor div[data-type="learndash/ld-course-expire-status"] .editor-block-list__block-edit { min-height: 25px; } /* Specific styles for the course list block output within the Gutenberg editor */ .edit-post-visual-editor div[data-type="learndash/ld-course-list"] .ld-course-list-items h2.ld-entry-title { margin-top: 0; margin-bottom: 0; clear: both; width: 100%; } .edit-post-visual-editor .learndash-block-error-message { display: block; color: red; }PKc\1(l**)includes/gutenberg/assets/editor.build.jsnuW+A!function(e){var t={};function n(r){if(t[r])return t[r].exports;var l=t[r]={i:r,l:!1,exports:{}};return e[r].call(l.exports,l,l.exports,n),l.l=!0,l.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=6)}([function(e,t,n){var r; /*! Copyright (c) 2016 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ /*! Copyright (c) 2016 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ !function(){"use strict";var n={}.hasOwnProperty;function l(){for(var e=[],t=0;t { const { attributes: { course_id, user_id, autop }, className, setAttributes } = props; const inspectorControls = ( setAttributes({ course_id })} /> setAttributes({ user_id })} /> setAttributes({ autop })} /> ); let ld_block_error_message = ''; let preview_course_id = ldlms_get_integer_value(course_id); if (preview_course_id === 0) { preview_course_id = ldlms_get_post_edit_meta('course_id'); preview_course_id = ldlms_get_integer_value(preview_course_id); if (preview_course_id == 0) { ld_block_error_message = sprintf(_x('%1$s ID is required when not used within a %2$s.', 'placeholders: Course, Course', 'learndash'), ldlms_get_custom_label('course'), ldlms_get_custom_label('course')); } } if (ld_block_error_message.length) { ld_block_error_message = ({ld_block_error_message}); } const outputBlock = (
      {ld_block_error_message}
      ); return [ inspectorControls, outputBlock ]; }, save: props => { return ( ); } }, ); PKc\.includes/gutenberg/blocks/ld-student/index.phpnuW+Ashortcode_slug = 'student'; $this->block_slug = 'ld-student'; $this->self_closing = false; $this->block_attributes = array( 'course_id' => array( 'type' => 'string', ), 'user_id' => array( 'type' => 'string', ), 'autop' => array( 'type' => 'boolean', ), ); $this->init(); } } } new LearnDash_Gutenberg_Block_Student(); PKc\zpb3includes/gutenberg/blocks/ld-quiz-complete/index.jsnuW+A/** * LearnDash Block ld-quiz-complete * * @since 3.2 * @package LearnDash */ /** * LearnDash block functions */ import { ldlms_get_post_edit_meta, ldlms_get_custom_label, ldlms_get_integer_value } from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InnerBlocks, InspectorControls, } = wp.editor; const { ServerSideRender, PanelBody, TextControl, ToggleControl } = wp.components; registerBlockType( 'learndash/ld-quiz-complete', { title: sprintf(_x('LearnDash %s Complete', 'placeholder: Quiz', 'learndash'), ldlms_get_custom_label('quiz')), description: sprintf(_x('This block shows the content if the user is has completed the %s.', 'placeholders: quiz', 'learndash'), ldlms_get_custom_label('quiz')), icon: 'star-filled', category: 'learndash-blocks', supports: { customClassName: false, }, attributes: { course_id: { type: 'string', default: '', }, quiz_id: { type: 'string', default: '', }, user_id: { type: 'string', default: '', }, }, edit: props => { const { attributes: { course_id, quiz_id, user_id }, className, setAttributes } = props; const inspectorControls = ( setAttributes({ quiz_id })} /> setAttributes({ course_id })} /> setAttributes({ user_id })} /> ); let ld_block_error_message = ''; let preview_quiz_id = ldlms_get_integer_value(quiz_id); if (preview_quiz_id === 0) { if ( 'sfwd-quiz' === ldlms_get_post_edit_meta('post_type') ) { preview_quiz_id = ldlms_get_post_edit_meta('post_id'); preview_quiz_id = ldlms_get_integer_value(preview_quiz_id); } if (preview_quiz_id == 0) { ld_block_error_message = sprintf(_x('%1$s ID is required when not used within a %2$s.', 'placeholders: Quiz, Quiz', 'learndash'), ldlms_get_custom_label('quiz'), ldlms_get_custom_label('quiz')); } } if (ld_block_error_message.length) { ld_block_error_message = ({ld_block_error_message}); } const outputBlock = (
      {ld_block_error_message}
      ); return [ inspectorControls, outputBlock ]; }, save: props => { return ( ); } }, ); PKc\h>4includes/gutenberg/blocks/ld-quiz-complete/index.phpnuW+Ashortcode_slug = 'ld_quiz_complete'; $this->block_slug = 'ld-quiz-complete'; $this->self_closing = false; $this->block_attributes = array( 'course_id' => array( 'type' => 'string', ), 'quiz_id' => array( 'type' => 'string', ), 'user_id' => array( 'type' => 'string', ), 'preview_show' => array( 'type' => 'boolean', ), 'preview_course_id' => array( 'type' => 'string', ), 'preview_quiz_id' => array( 'type' => 'string', ), 'preview_user_id' => array( 'type' => 'string', ), 'example_show' => array( 'type' => 'boolean', ), ); $this->init(); } /** * Render Block * * This function is called per the register_block_type() function above. This function will output * the block rendered content. In the case of this function the rendered output will be for the * [ld_profile] shortcode. * * @since 3.2 * * @param array $attributes Shortcode attrbutes. * @return none The output is echoed. */ public function render_block_xxx( $attributes = array() ) { if ( is_user_logged_in() ) { if ( ( isset( $attributes['example_show'] ) ) && ( ! empty( $attributes['example_show'] ) ) ) { $attributes['preview_quiz_id'] = $this->get_example_post_id( learndash_get_post_type_slug( 'quiz' ) ); $attributes['preview_user_id'] = $this->get_example_user_id(); $attributes['preview_show'] = true; unset( $attributes['example_show'] ); } if ( ( isset( $attributes['preview_show'] ) ) && ( ! empty( $attributes['preview_show'] ) ) ) { unset( $attributes['preview_show'] ); if ( ( isset( $attributes['preview_quiz_id'] ) ) && ( ! empty( $attributes['preview_quiz_id'] ) ) ) { $attributes['quiz_id'] = absint( $attributes['preview_quiz_id'] ); unset( $attributes['preview_quiz_id'] ); } if ( ( isset( $attributes['preview_course_id'] ) ) && ( ! empty( $attributes['preview_course_id'] ) ) ) { $attributes['course_id'] = absint( $attributes['preview_course_id'] ); unset( $attributes['preview_course_id'] ); } if ( ( isset( $attributes['preview_user_id'] ) ) && ( ! empty( $attributes['preview_user_id'] ) ) ) { $attributes['user_id'] = absint( $attributes['preview_user_id'] ); unset( $attributes['preview_user_id'] ); } } if ( ( ! isset( $attributes['quiz_id'] ) ) || ( empty( $attributes['quiz_id'] ) ) ) { return $this->render_block_wrap( '' . sprintf( // translators: placeholder: Quiz, Quiz. _x( '%1$s ID is required when not used within a %2$s.', 'placeholder: Quiz, Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ), LearnDash_Custom_Label::get_label( 'quiz' ) ) . '' ); } $shortcode_params_str = ''; foreach ( $attributes as $key => $val ) { if ( ( empty( $key ) ) || ( empty( $val ) ) || ( is_null( $val ) ) ) { continue; } if ( ( 'user_id' === $key ) && ( '' !== $val ) ) { if ( learndash_is_admin_user( get_current_user_id() ) ) { // If admin user they can preview any user_id. } else if ( learndash_is_group_leader_user( get_current_user_id() ) ) { // If group leader user we ensure the preview user_id is within their group(s). if ( ! learndash_is_group_leader_of_user( get_current_user_id(), $val ) ) { continue; } } else { // If neither admin or group leader then we don't see the user_id for the shortcode. continue; } $key = str_replace( 'preview_', '', $key ); $val = intval( $val ); } if ( ! empty( $shortcode_params_str ) ) { $shortcode_params_str .= ' '; } $shortcode_params_str .= $key . '="' . esc_attr( $val ) . '"'; } $shortcode_params_str = '[' . $this->shortcode_slug . ' ' . $shortcode_params_str . ']'; $shortcode_out = do_shortcode( $shortcode_params_str ); return $this->render_block_wrap( $shortcode_out ); } wp_die(); } /** * Called from the LD function learndash_convert_block_markers_shortcode() when parsing the block content. * * @since 3.2 * * @param array $attributes The array of attributes parse from the block content. * @param string $shortcode_slug This will match the related LD shortcode ld_profile, ld_course_list, etc. * @param string $block_slug This is the block token being processed. Normally same as the shortcode but underscore replaced with dash. * @param string $content This is the orignal full content being parsed. * * @return array $attributes. */ public function learndash_block_markers_shortcode_atts_filter( $attributes = array(), $shortcode_slug = '', $block_slug = '', $content = '' ) { if ( $shortcode_slug === $this->shortcode_slug ) { //Nothing to see here. } return $attributes; } // End of functions. } } new LearnDash_Gutenberg_Block_Quiz_Complete(); PKc\sډ"includes/gutenberg/blocks/ldlms.jsnuW+A/** * LearnDash Block Functions * * This is a collection of common functions used within the LeanDash blocks * * @since 2.5.9 * @package LearnDash */ /** * Will retrive meta information about the post being edited. For now * this is only loaded on post edit screen for Gutenberg. So no checks * are made to ensure that a post is being edited. * @param string token Token to return from meta array. If not provided will array is returned. */ export function ldlms_get_post_edit_meta( token ) { if ( ( typeof token !== 'undefined') && (token != '') ) { if (typeof ldlms_settings['meta']['post'][token] !== 'undefined') { return ldlms_settings['meta']['post'][token]; } } else { if (typeof ldlms_settings['meta']['post'] !== 'undefined') { return ldlms_settings['meta']['post']; } } } /** * Will retrive meta information about the post being edited. For now * this is only loaded on post edit screen for Gutenberg. So no checks * are made to ensure that a post is being edited. * @param string token Token to return from meta array. If not provided will array is returned. */ export function ldlms_get_setting(token, default_value) { if ( ( typeof token !== 'undefined' ) && ( token != '' ) && ( typeof ldlms_settings['settings'][token] !== 'undefined' ) ) { var token_value = ldlms_settings['settings'][token]; return ldlms_settings['settings'][token]; } return default_value; } /** * Returns the label for custom label element * @param string token Will represent the custom label field to retreive Course, Courses, Lesson, Quiz. */ export function ldlms_get_custom_label( token ) { if ((typeof ldlms_settings['meta']['post'] !== 'undefined') && (token != '')) { if (typeof ldlms_settings['settings']['custom_labels'][token] !== 'undefined') { token = ldlms_settings['settings']['custom_labels'][token]; } } return token; } /** * Returns the lowercase label for custom label element * @param string token Will represent the custom label field to retreive Course, Courses, Lesson, Quiz. */ export function ldlms_get_custom_label_lower(token) { if ((typeof ldlms_settings['meta']['post'] !== 'undefined') && (token != '')) { if (typeof ldlms_settings['settings']['custom_labels'][token + '_lower'] !== 'undefined') { token = ldlms_settings['settings']['custom_labels'][token + '_lower']; } } return token; } /** * Returns the slug for custom label element * @param string token Will represent the custom label field to retreive Course, Courses, Lesson, Quiz. */ export function ldlms_get_custom_label_slug(token) { if (token != '') { if (typeof ldlms_settings['settings']['custom_labels'][token + '_slug'] !== 'undefined') { token = ldlms_settings['settings']['custom_labels'][token + '_slug']; } } return token; } /** * Will retrive meta information about the post being edited. For now * this is only loaded on post edit screen for Gutenberg. So no checks * are made to ensure that a post is being edited. * @param string token Token to return from meta array. If not provided will array is returned. */ export function ldlms_get_per_page(token) { if ((typeof token !== 'undefined') && (token != '')) { if (typeof ldlms_settings['settings']['per_page'][token] !== 'undefined') { return ldlms_settings['settings']['per_page'][token]; } } else if (typeof ldlms_settings['meta']['posts_per_page'] !== 'undefined') { return ldlms_settings['meta']['posts_per_page']; } } /** * Returns integet value for variable. * * @param mixed var_value Variable to determin integer from. * * @return integer value of zero. */ export function ldlms_get_integer_value( var_value ) { if ( typeof var_value === 'undefined' ) { var_value = 0; } var_value = parseInt(var_value); if (isNaN(var_value)) { var_value = 0; } return var_value; }PKc\Ɯ}1}11includes/gutenberg/blocks/ld-lesson-list/index.jsnuW+A/** * LearnDash Block ld-lesson-list * * @since 2.5.9 * @package LearnDash */ /** * LearnDash block functions */ import { ldlms_get_custom_label, ldlms_get_per_page, } from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InspectorControls, } = wp.editor; const { ServerSideRender, PanelBody, RangeControl, SelectControl, ToggleControl, TextControl } = wp.components; registerBlockType( 'learndash/ld-lesson-list', { title: sprintf(_x('LearnDash %s List', 'placeholder: Lesson', 'learndash'), ldlms_get_custom_label('lesson')), description: sprintf(_x('This block shows a list of %s.', 'placeholders: lessons', 'learndash'), ldlms_get_custom_label('lessons')), icon: 'list-view', category: 'learndash-blocks', example: { attributes: { example_show: 1, }, }, supports: { customClassName: false, }, attributes: { orderby: { type: 'string', default: 'ID' }, order: { type: 'string', default: 'DESC' }, per_page: { type: 'string', default: '', }, course_id: { type: 'string', default: '' }, show_content: { type: 'boolean', default: true }, show_thumbnail: { type: 'boolean', default: true }, lesson_category_name: { type: 'string', default: '' }, lesson_cat: { type: 'string', default: '' }, lesson_categoryselector: { type: 'boolean', default: false }, lesson_tag: { type: 'string', default: '' }, lesson_tag_id: { type: 'string', default: '' }, category_name: { type: 'string', default: '' }, cat: { type: 'string', default: '' }, categoryselector: { type: 'boolean', default: false }, tag: { type: 'string', default: '' }, tag_id: { type: 'string', default: '' }, course_grid: { type: 'boolean', }, col: { type: 'string', default: (ldlms_settings['plugins']['learndash-course-grid']['enabled']['col_default'] || 3), }, preview_show: { type: 'boolean', default: true }, example_show: { type: 'boolean', default: 0 }, }, edit: function (props) { const { attributes: { orderby, order, per_page, course_id, show_content, show_thumbnail, lesson_category_name, lesson_cat, lesson_categoryselector, lesson_tag, lesson_tag_id, category_name, cat, categoryselector, tag, tag_id, course_grid, col, preview_show, example_show }, setAttributes } = props; let field_show_content = ''; let field_show_thumbnail = ''; let panel_lesson_grid_section = ''; let course_grid_default = true; if (ldlms_settings['plugins']['learndash-course-grid']['enabled'] === true) { if ((typeof course_grid !== 'undefined') && ((course_grid == true) || (course_grid == false))) { course_grid_default = course_grid; } let lesson_grid_section_open = false; if (course_grid_default == true) { lesson_grid_section_open = true; } panel_lesson_grid_section = ( setAttributes({ course_grid })} /> setAttributes({ col })} /> ); } field_show_content = ( setAttributes({ show_content })} /> ); field_show_thumbnail = ( setAttributes({ show_thumbnail })} /> ); const panelbody_header = ( setAttributes({ course_id })} /> setAttributes({ orderby })} /> setAttributes({ order })} /> setAttributes({ per_page })} /> {field_show_content} {field_show_thumbnail} ); let panel_lesson_category_section = ''; if (ldlms_settings['settings']['lessons_taxonomies']['ld_lesson_category'] === 'yes') { let panel_lesson_category_section_open = false; if ((lesson_category_name != '') || (lesson_cat != '')) { panel_lesson_category_section_open = true; } panel_lesson_category_section = ( setAttributes({ lesson_category_name })} /> setAttributes({ lesson_cat })} /> setAttributes({ lesson_categoryselector })} /> ); } let panel_lesson_tag_section = ''; if (ldlms_settings['settings']['lessons_taxonomies']['ld_lesson_tag'] === 'yes') { let panel_lesson_tag_section_open = false; if ((lesson_tag != '') || (lesson_tag_id != '')) { panel_lesson_tag_section_open = true; } panel_lesson_tag_section = ( setAttributes({ lesson_tag })} /> setAttributes({ lesson_tag_id })} /> ); } let panel_wp_category_section = ''; if (ldlms_settings['settings']['lessons_taxonomies']['wp_post_category'] === 'yes') { let panel_wp_category_section_open = false; if ((category_name != '') || (cat != '')) { panel_wp_category_section_open = true; } panel_wp_category_section = ( setAttributes({ category_name })} /> setAttributes({ cat })} /> setAttributes({ categoryselector })} /> ); } let panel_wp_tag_section = ''; if (ldlms_settings['settings']['lessons_taxonomies']['wp_post_tag'] === 'yes') { let panel_wp_tag_section_open = false; if ((tag != '') || (tag_id != '')) { panel_wp_tag_section_open = true; } panel_wp_tag_section = ( setAttributes({ tag })} /> setAttributes({ tag_id })} /> ); } const panel_preview = ( setAttributes({ preview_show })} /> ); const inspectorControls = ( {panelbody_header} {panel_lesson_grid_section} {panel_lesson_category_section} {panel_lesson_tag_section} {panel_wp_category_section} {panel_wp_tag_section} {panel_preview} ); function do_serverside_render(attributes) { if (attributes.preview_show == true) { return } else { return __('[ld_lesson_list] shortcode output shown here', 'learndash'); } } return [ inspectorControls, do_serverside_render(props.attributes) ]; }, save: props => { } }, ); PKc\t[2~~2includes/gutenberg/blocks/ld-lesson-list/index.phpnuW+Ashortcode_slug = 'ld_lesson_list'; $this->block_slug = 'ld-lesson-list'; $this->block_attributes = array( 'orderby' => array( 'type' => 'string', ), 'order' => array( 'type' => 'string', ), 'per_page' => array( 'type' => 'string', ), 'course_id' => array( 'type' => 'string', ), 'show_content' => array( 'type' => 'boolean', ), 'show_thumbnail' => array( 'type' => 'boolean', ), 'lesson_category_name' => array( 'type' => 'string', ), 'lesson_cat' => array( 'type' => 'string', ), 'lesson_categoryselector' => array( 'type' => 'boolean', ), 'lesson_tag' => array( 'type' => 'string', ), 'lesson_tag_id' => array( 'type' => 'string', ), 'category_name' => array( 'type' => 'string', ), 'cat' => array( 'type' => 'string', ), 'categoryselector' => array( 'type' => 'boolean', ), 'tag' => array( 'type' => 'string', ), 'tag_id' => array( 'type' => 'string', ), 'preview_show' => array( 'type' => 'boolean', ), 'course_grid' => array( 'type' => 'boolean', ), 'col' => array( 'type' => 'string', ), 'example_show' => array( 'type' => 'boolean', ), ); $this->self_closing = true; $this->init(); } /** * Render Block * * This function is called per the register_block_type() function above. This function will output * the block rendered content. In the case of this function the rendered output will be for the * [ld_profile] shortcode. * * @since 2.5.9 * * @param array $attributes Shortcode attrbutes. * @return none The output is echoed. */ public function render_block( $attributes = array() ) { if ( is_user_logged_in() ) { $attributes = apply_filters( 'learndash_block_markers_shortcode_atts', $attributes, $this->shortcode_slug, $this->block_slug, '' ); $shortcode_params_str = $this->prepare_course_list_atts_to_param( $attributes ); $shortcode_params_str = '[' . $this->shortcode_slug . ' ' . $shortcode_params_str . ']'; $shortcode_out = do_shortcode( $shortcode_params_str ); // This is mainly to protect against emty returns with the Gutenberg ServerSideRender function. return $this->render_block_wrap( $shortcode_out ); } wp_die(); } /** * Called from the LD function learndash_convert_block_markers_shortcode() when parsing the block content. * * @since 2.5.9 * * @param array $attributes The array of attributes parse from the block content. * @param string $shortcode_slug This will match the related LD shortcode ld_profile, ld_course_list, etc. * @param string $block_slug This is the block token being processed. Normally same as the shortcode but underscore replaced with dash. * @param string $content This is the orignal full content being parsed. * * @return array $attributes. */ public function learndash_block_markers_shortcode_atts_filter( $attributes = array(), $shortcode_slug = '', $block_slug = '', $content = '' ) { if ( $shortcode_slug === $this->shortcode_slug ) { if ( isset( $attributes['preview_show'] ) ) { unset( $attributes['preview_show'] ); } if ( isset( $attributes['preview_user_id'] ) ) { unset( $attributes['preview_user_id'] ); } if ( isset( $attributes['per_page'] ) ) { if ( ! isset( $attributes['num'] ) ) { $attributes['num'] = $attributes['per_page']; unset( $attributes['per_page'] ); } } if ( ( ! isset( $attributes['course_grid'] ) ) || ( true === $attributes['course_grid'] ) ) { $attributes['course_grid'] = 'true'; } if ( ( isset( $attributes['lesson_categoryselector'] ) ) && ( true === $attributes['lesson_categoryselector'] ) ) { $attributes['lesson_categoryselector'] = 'true'; } if ( ( isset( $attributes['categoryselector'] ) ) && ( true === $attributes['categoryselector'] ) ) { $attributes['categoryselector'] = 'true'; } /** * Not the best place to make this call this but we need to load the * Course Grid resources. */ if ( 'true' === $attributes['course_grid'] ) { learndash_enqueue_course_grid_scripts(); } } return $attributes; } // End of functions. } } new LearnDash_Gutenberg_Block_Lesson_List(); PKc\N0includes/gutenberg/blocks/ld-quiz-list/index.phpnuW+Ashortcode_slug = 'ld_quiz_list'; $this->block_slug = 'ld-quiz-list'; $this->block_attributes = array( 'orderby' => array( 'type' => 'string', ), 'order' => array( 'type' => 'string', ), 'per_page' => array( 'type' => 'string', ), 'course_id' => array( 'type' => 'string', ), 'lesson_id' => array( 'type' => 'string', ), 'show_content' => array( 'type' => 'boolean', ), 'show_thumbnail' => array( 'type' => 'boolean', ), 'quiz_category_name' => array( 'type' => 'string', ), 'quiz_cat' => array( 'type' => 'string', ), 'quiz_categoryselector' => array( 'type' => 'boolean', ), 'quiz_tag' => array( 'type' => 'string', ), 'quiz_tag_id' => array( 'type' => 'string', ), 'category_name' => array( 'type' => 'string', ), 'cat' => array( 'type' => 'string', ), 'categoryselector' => array( 'type' => 'boolean', ), 'tag' => array( 'type' => 'string', ), 'tag_id' => array( 'type' => 'string', ), 'preview_show' => array( 'type' => 'boolean', ), 'course_grid' => array( 'type' => 'boolean', ), 'col' => array( 'type' => 'string', ), 'example_show' => array( 'type' => 'boolean', ), ); $this->self_closing = true; $this->init(); } /** * Render Block * * This function is called per the register_block_type() function above. This function will output * the block rendered content. In the case of this function the rendered output will be for the * [ld_profile] shortcode. * * @since 2.5.9 * * @param array $attributes Shortcode attrbutes. * @return none The output is echoed. */ public function render_block( $attributes = array() ) { if ( is_user_logged_in() ) { $attributes = apply_filters( 'learndash_block_markers_shortcode_atts', $attributes, $this->shortcode_slug, $this->block_slug, '' ); $shortcode_params_str = $this->prepare_course_list_atts_to_param( $attributes ); $shortcode_params_str = '[' . $this->shortcode_slug . ' ' . $shortcode_params_str . ']'; $shortcode_out = do_shortcode( $shortcode_params_str ); // This is mainly to protect against emty returns with the Gutenberg ServerSideRender function. return $this->render_block_wrap( $shortcode_out ); } wp_die(); } /** * Called from the LD function learndash_convert_block_markers_shortcode() when parsing the block content. * * @since 2.5.9 * * @param array $attributes The array of attributes parse from the block content. * @param string $shortcode_slug This will match the related LD shortcode ld_profile, ld_course_list, etc. * @param string $block_slug This is the block token being processed. Normally same as the shortcode but underscore replaced with dash. * @param string $content This is the orignal full content being parsed. * * @return array $attributes. */ public function learndash_block_markers_shortcode_atts_filter( $attributes = array(), $shortcode_slug = '', $block_slug = '', $content = '' ) { if ( $shortcode_slug === $this->shortcode_slug ) { if ( isset( $attributes['preview_show'] ) ) { unset( $attributes['preview_show'] ); } if ( isset( $attributes['preview_user_id'] ) ) { unset( $attributes['preview_user_id'] ); } if ( isset( $attributes['per_page'] ) ) { if ( ! isset( $attributes['num'] ) ) { $attributes['num'] = $attributes['per_page']; unset( $attributes['per_page'] ); } } if ( ( ! isset( $attributes['course_grid'] ) ) || ( true === $attributes['course_grid'] ) ) { $attributes['course_grid'] = 'true'; } if ( ( isset( $attributes['quiz_categoryselector'] ) ) && ( true === $attributes['quiz_categoryselector'] ) ) { $attributes['quiz_categoryselector'] = 'true'; } if ( ( isset( $attributes['categoryselector'] ) ) && ( true === $attributes['categoryselector'] ) ) { $attributes['categoryselector'] = 'true'; } /** * Not the best place to make this call this but we need to load the * Course Grid resources. */ if ( 'true' === $attributes['course_grid'] ) { learndash_enqueue_course_grid_scripts(); } } return $attributes; } // End of functions. } } new LearnDash_Gutenberg_Block_Quiz_List(); PKc\G22/includes/gutenberg/blocks/ld-quiz-list/index.jsnuW+A/** * LearnDash Block ld-quiz-list * * @since 2.5.9 * @package LearnDash */ /** * LearnDash block functions */ import { ldlms_get_custom_label, ldlms_get_per_page, } from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InspectorControls, } = wp.editor; const { ServerSideRender, PanelBody, RangeControl, SelectControl, ToggleControl, TextControl } = wp.components; registerBlockType( 'learndash/ld-quiz-list', { title: sprintf(_x('LearnDash %s List', 'placeholder: Quiz', 'learndash'), ldlms_get_custom_label('quiz')), description: sprintf(_x('This block shows a list of %s.', 'placeholders: quizzes', 'learndash'), ldlms_get_custom_label('quizzes')), icon: 'list-view', category: 'learndash-blocks', example: { attributes: { example_show: 1, }, }, supports: { customClassName: false, }, attributes: { orderby: { type: 'string', default: 'ID' }, order: { type: 'string', default: 'DESC' }, per_page: { type: 'string', default: '', }, course_id: { type: 'string', default: '' }, lesson_id: { type: 'string', default: '' }, show_content: { type: 'boolean', default: true }, show_thumbnail: { type: 'boolean', default: true }, quiz_category_name: { type: 'string', default: '' }, quiz_cat: { type: 'string', default: '' }, quiz_categoryselector: { type: 'boolean', default: false }, quiz_tag: { type: 'string', default: '' }, quiz_tag_id: { type: 'string', default: '' }, category_name: { type: 'string', default: '' }, cat: { type: 'string', default: '' }, categoryselector: { type: 'boolean', default: false }, tag: { type: 'string', default: '' }, tag_id: { type: 'string', default: '' }, course_grid: { type: 'boolean', }, col: { type: 'string', default: (ldlms_settings['plugins']['learndash-course-grid']['enabled']['col_default'] || 3), }, preview_show: { type: 'boolean', default: true }, example_show: { type: 'boolean', default: 0 }, }, edit: function (props) { const { attributes: { orderby, order, per_page, course_id, lesson_id, show_content, show_thumbnail, quiz_category_name, quiz_cat, quiz_categoryselector, quiz_tag, quiz_tag_id, category_name, cat, categoryselector, tag, tag_id, course_grid, col, preview_show, example_show }, setAttributes } = props; let field_show_content = ''; let field_show_thumbnail = ''; let panel_quiz_grid_section = ''; let course_grid_default = true; if (ldlms_settings['plugins']['learndash-course-grid']['enabled'] === true) { if ((typeof course_grid !== 'undefined') && ((course_grid == true) || (course_grid == false))) { course_grid_default = course_grid; } let quiz_grid_section_open = false; if (course_grid_default == true) { quiz_grid_section_open = true; } panel_quiz_grid_section = ( setAttributes({ course_grid })} /> setAttributes({ col })} /> ); } field_show_content = ( setAttributes({ show_content })} /> ); field_show_thumbnail = ( setAttributes({ show_thumbnail })} /> ); const panelbody_header = ( setAttributes({ course_id })} /> setAttributes({ lesson_id })} /> setAttributes({ orderby })} /> setAttributes({ order })} /> setAttributes({ per_page })} /> {field_show_content} {field_show_thumbnail} ); let panel_quiz_category_section = ''; if (ldlms_settings['settings']['quizzes_taxonomies']['ld_quiz_category'] === 'yes') { let panel_quiz_category_section_open = false; if ((quiz_category_name != '') || (quiz_cat != '')) { panel_quiz_category_section_open = true; } panel_quiz_category_section = ( setAttributes({ quiz_category_name })} /> setAttributes({ quiz_cat })} /> setAttributes({ quiz_categoryselector })} /> ); } let panel_quiz_tag_section = ''; if (ldlms_settings['settings']['quizzes_taxonomies']['ld_quiz_tag'] === 'yes') { let panel_quiz_tag_section_open = false; if ((quiz_tag != '') || (quiz_tag_id != '')) { panel_quiz_tag_section_open = true; } panel_quiz_tag_section = ( setAttributes({ quiz_tag })} /> setAttributes({ quiz_tag_id })} /> ); } let panel_wp_category_section = ''; if (ldlms_settings['settings']['quizzes_taxonomies']['wp_post_category'] === 'yes') { let panel_wp_category_section_open = false; if ((category_name != '') || (cat != '')) { panel_wp_category_section_open = true; } panel_wp_category_section = ( setAttributes({ category_name })} /> setAttributes({ cat })} /> setAttributes({ categoryselector })} /> ); } let panel_wp_tag_section = ''; if (ldlms_settings['settings']['quizzes_taxonomies']['wp_post_tag'] === 'yes') { let panel_wp_tag_section_open = false; if ((tag != '') || (tag_id != '')) { panel_wp_tag_section_open = true; } panel_wp_tag_section = ( setAttributes({ tag })} /> setAttributes({ tag_id })} /> ); } const panel_preview = ( setAttributes({ preview_show })} /> ); const inspectorControls = ( {panelbody_header} {panel_quiz_grid_section} {panel_quiz_category_section} {panel_quiz_tag_section} {panel_wp_category_section} {panel_wp_tag_section} {panel_preview} ); function do_serverside_render(attributes) { if (attributes.preview_show == true) { return } else { return __('[ld_quiz_list] shortcode output shown here', 'learndash'); } } return [ inspectorControls, do_serverside_render(props.attributes) ]; }, save: props => { } }, ); PKc\B/includes/gutenberg/blocks/ld-usermeta/index.phpnuW+Ashortcode_slug = 'usermeta'; $this->block_slug = 'ld-usermeta'; $this->block_attributes = array( 'field' => array( 'type' => 'string', ), 'user_id' => array( 'type' => 'string', ), 'preview_show' => array( 'type' => 'boolean', ), 'preview_user_id' => array( 'type' => 'string', ), ); $this->self_closing = true; $this->init(); } /** * Render Block * * This function is called per the register_block_type() function above. This function will output * the block rendered content. In the case of this function the rendered output will be for the * [ld_profile] shortcode. * * @since 2.5.9 * * @param array $attributes Shortcode attrbutes. * @return none The output is echoed. */ public function render_block( $attributes = array() ) { if ( is_user_logged_in() ) { $shortcode_params_str = ''; foreach ( $attributes as $key => $val ) { if ( ( empty( $key ) ) || ( is_null( $val ) ) ) { continue; } if ( 'preview_show' === $key ) { continue; } else if ( 'preview_user_id' === $key ) { if ( empty( $val ) ) { continue; } if ( ( isset( $attributes['preview_show'] ) ) && ( true === $attributes['preview_show'] ) ) { if ( ( ! isset( $attributes['user_id'] ) ) && ( 'preview_user_id' === $key ) && ( '' !== $val ) ) { if ( learndash_is_admin_user( get_current_user_id() ) ) { // If admin user they can preview any user_id. } else if ( learndash_is_group_leader_user( get_current_user_id() ) ) { // If group leader user we ensure the preview user_id is within their group(s). if ( ! learndash_is_group_leader_of_user( get_current_user_id(), $val ) ) { continue; } } else { // If neither admin or group leader then we don't see the user_id for the shortcode. continue; } $key = str_replace( 'preview_', '', $key ); $val = intval( $val ); } } } else if ( empty( $val ) ) { continue; } $shortcode_params_str .= ' ' . $key . '="' . esc_attr( $val ) . '"'; } $shortcode_params_str = '[' . $this->shortcode_slug . $shortcode_params_str . ']'; $shortcode_out = do_shortcode( $shortcode_params_str ); return $this->render_block_wrap( $shortcode_out ); } wp_die(); } /** * Called from the LD function learndash_convert_block_markers_shortcode() when parsing the block content. * * @since 2.5.9 * * @param array $attributes The array of attributes parse from the block content. * @param string $shortcode_slug This will match the related LD shortcode ld_profile, ld_course_list, etc. * @param string $block_slug This is the block token being processed. Normally same as the shortcode but underscore replaced with dash. * @param string $content This is the orignal full content being parsed. * * @return array $attributes. */ public function learndash_block_markers_shortcode_atts_filter( $attributes = array(), $shortcode_slug = '', $block_slug = '', $content = '' ) { if ( $shortcode_slug === $this->shortcode_slug ) { if ( isset( $attributes['preview_show'] ) ) { unset( $attributes['preview_show'] ); } if ( isset( $attributes['preview_user_id'] ) ) { unset( $attributes['preview_user_id'] ); } } return $attributes; } // End of functions. } } new LearnDash_Gutenberg_Block_Usermeta(); PKc\Iʛ;yy.includes/gutenberg/blocks/ld-usermeta/index.jsnuW+A/** * LearnDash Block ld-usermeta * * @since 2.5.9 * @package LearnDash */ /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InspectorControls, } = wp.editor; const { ServerSideRender, Tooltip, PanelBody, PanelRow, RangeControl, FormToggle, SelectControl, ToggleControl, TextControl } = wp.components; registerBlockType( 'learndash/ld-usermeta', { title: __('LearnDash User meta', 'learndash'), description: __('This block displays User meta field', 'learndash'), icon: 'id', category: 'learndash-blocks', example: { attributes: { example_show: 1, }, }, supports: { customClassName: false, }, attributes: { field: { type: 'string', }, user_id: { type: 'string', default: '', }, preview_show: { type: 'boolean', default: 1 }, preview_user_id: { type: 'string', default: '', }, }, edit: props => { const { attributes: { field, user_id, preview_show, preview_user_id }, className, setAttributes } = props; const field_field = ( setAttributes({ field })} /> ); const field_user_id = ( setAttributes({ user_id })} /> ); const panel_preview = ( setAttributes({ preview_show })} /> setAttributes({ preview_user_id })} /> ); const inspectorControls = ( {field_user_id} {field_field} {panel_preview} ); function do_serverside_render(attributes) { if (attributes.preview_show == true) { return } else { return __('[usermeta] shortcode output shown here', 'learndash'); } } return [ inspectorControls, do_serverside_render(props.attributes) ]; }, save: props => { // Delete preview_user_id from props to prevent it being saved. delete (props.attributes.preview_user_id); } }, ); PKc\=Py y 9includes/gutenberg/blocks/ld-user-course-points/index.phpnuW+Ashortcode_slug = 'ld_user_course_points'; $this->block_slug = 'ld-user-course-points'; $this->block_attributes = array( 'user_id' => array( 'type' => 'string', ), 'preview_show' => array( 'type' => 'boolean', ), 'preview_user_id' => array( 'type' => 'string', ), ); $this->self_closing = true; $this->init(); } /** * Render Block * * This function is called per the register_block_type() function above. This function will output * the block rendered content. In the case of this function the rendered output will be for the * [ld_profile] shortcode. * * @since 2.5.9 * * @param array $attributes Shortcode attrbutes. * @return none The output is echoed. */ public function render_block( $attributes = array() ) { if ( is_user_logged_in() ) { $shortcode_params_str = ''; foreach ( $attributes as $key => $val ) { if ( ( empty( $key ) ) || ( is_null( $val ) ) ) { continue; } if ( substr( $key, 0, strlen( 'preview_' ) ) == 'preview_' ) { continue; } if ( ! empty( $shortcode_params_str ) ) { $shortcode_params_str .= ' '; } $shortcode_params_str .= $key . '="' . esc_attr( $val ) . '"'; } $shortcode_params_str = '[' . $this->shortcode_slug . ' ' . $shortcode_params_str . ']'; $shortcode_out = do_shortcode( $shortcode_params_str ); return $this->render_block_wrap( $shortcode_out ); } wp_die(); } /** * Called from the LD function learndash_convert_block_markers_shortcode() when parsing the block content. * * @since 2.5.9 * * @param array $attributes The array of attributes parse from the block content. * @param string $shortcode_slug This will match the related LD shortcode ld_profile, ld_course_list, etc. * @param string $block_slug This is the block token being processed. Normally same as the shortcode but underscore replaced with dash. * @param string $content This is the orignal full content being parsed. * * @return array $attributes. */ public function learndash_block_markers_shortcode_atts_filter( $attributes = array(), $shortcode_slug = '', $block_slug = '', $content = '' ) { if ( $shortcode_slug === $this->shortcode_slug ) { if ( isset( $attributes['preview_show'] ) ) { unset( $attributes['preview_show'] ); } if ( isset( $attributes['preview_user_id'] ) ) { unset( $attributes['preview_user_id'] ); } } return $attributes; } // End of functions. } } new LearnDash_Gutenberg_Block_User_Course_Points(); PKc\I8includes/gutenberg/blocks/ld-user-course-points/index.jsnuW+A/** * LearnDash Block ld-user-course-points * * @since 2.5.9 * @package LearnDash */ /** * LearnDash block functions */ import { ldlms_get_custom_label, } from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InspectorControls, } = wp.editor; const { ServerSideRender, PanelBody, ToggleControl, TextControl } = wp.components; registerBlockType( 'learndash/ld-user-course-points', { title: sprintf(_x('LearnDash User %s Points', 'LearnDash User Course Points', 'learndash'), ldlms_get_custom_label('course') ), description: sprintf(_x('This block shows the earned %s points for the user.', 'placeholders: course', 'learndash'), ldlms_get_custom_label('course') ), icon: 'chart-area', category: 'learndash-blocks', example: { attributes: { example_show: 1, }, }, supports: { customClassName: false, }, attributes: { user_id: { type: 'string', default: '', }, preview_show: { type: 'boolean', default: 1 }, preview_user_id: { type: 'string', }, }, edit: props => { const { attributes: { user_id, preview_show, preview_user_id }, setAttributes } = props; const inspectorControls = ( setAttributes({ user_id })} /> setAttributes({ preview_show })} /> setAttributes({ preview_user_id })} /> ); function do_serverside_render(attributes) { if (attributes.preview_show == true) { return } else { return __('[ld_user_course_points] shortcode output shown here', 'learndash'); } } return [ inspectorControls, do_serverside_render(props.attributes) ]; }, save: props => { // Delete preview_user_id from props to prevent it being saved. delete (props.attributes.preview_user_id); } }, ); PKc\2!includes/gutenberg/blocks/i18n.jsnuW+A/** * LearnDash i18n Functions * * This is a collection of common functions used within the LeanDash blocks * * @since 2.5.9 * @package LearnDash */ /** * Removed in LD 3.0 because we are not loading directlty into wp.i18n * via the PHP function learndash_load_inline_script_locale_data */ /* if (typeof ldlms_settings['locale'] !== 'undefined') { wp.i18n.setLocaleData( ldlms_settings['locale'], 'learndash'); } else { wp.i18n.setLocaleData({ '': {} }, 'learndash'); } */ PKc\n-includes/gutenberg/blocks/ld-profile/index.jsnuW+A/** * LearnDash Block ld-profile * * @since 2.5.9 * @package LearnDash */ /** * LearnDash block functions */ import { ldlms_get_custom_label, ldlms_get_per_page, } from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InspectorControls, } = wp.editor; const { ServerSideRender, PanelBody, SelectControl, ToggleControl, TextControl } = wp.components; registerBlockType( 'learndash/ld-profile', { title: __( 'LearnDash Profile', 'learndash' ), description: sprintf(_x("Displays user's enrolled %1$s, %2$s progress, %3$s scores, and achieved certificates.", 'placeholder: courses, course, quiz', 'learndash'), ldlms_get_custom_label('courses'), ldlms_get_custom_label('course'), ldlms_get_custom_label('quiz') ), icon: 'id-alt', category: 'learndash-blocks', example: { attributes: { example_show: 1, }, }, supports: { customClassName: false, }, attributes: { per_page: { type: 'string', default: '', }, orderby: { type: 'string', default: 'ID' }, order: { type: 'string', default: 'DESC' }, course_points_user: { type: 'boolean', default: 1 }, expand_all: { type: 'boolean', default: 0 }, profile_link: { type: 'boolean', default: 1 }, show_header: { type: 'boolean', default: 1 }, show_search: { type: 'boolean', default: 1 }, show_quizzes: { type: 'boolean', default: 1 }, preview_show: { type: 'boolean', default: 1 }, preview_user_id: { type: 'string', default: '', }, example_show: { type: 'boolean', default: 0 }, }, edit: function( props ) { const { attributes: { per_page, orderby, order, course_points_user, expand_all, profile_link, show_header, show_search, show_quizzes, preview_user_id, preview_show, example_show }, setAttributes } = props; const inspectorControls = ( setAttributes({ per_page })} /> setAttributes( { orderby } ) } /> setAttributes( { order } ) } /> setAttributes({ show_search })} help={__('LD30 template only', 'learndash')} /> setAttributes({ show_header })} /> setAttributes( { course_points_user } ) } /> setAttributes( { profile_link } ) } /> setAttributes( { show_quizzes } ) } /> setAttributes({ expand_all })} /> setAttributes( { preview_show } ) } /> setAttributes( { preview_user_id } ) } /> ); function do_serverside_render( attributes ) { if ( attributes.preview_show == true ) { return } else { return __( '[ld_profile] shortcode output shown here', 'learndash' ); } } return [ inspectorControls, do_serverside_render( props.attributes ) ]; }, save: props => { // Delete preview_user_id from props to prevent it being saved. delete (props.attributes.preview_user_id); } }, ); PKc\ <<.includes/gutenberg/blocks/ld-profile/index.phpnuW+Ashortcode_slug = 'ld_profile'; $this->block_slug = 'ld-profile'; $this->block_attributes = array( 'user_id' => array( 'type' => 'integer', ), 'per_page' => array( 'type' => 'string', ), 'order' => array( 'type' => 'string', ), 'orderby' => array( 'type' => 'string', ), 'show_search' => array( 'type' => 'boolean', ), 'show_header' => array( 'type' => 'boolean', ), 'course_points_user' => array( 'type' => 'boolean', ), 'expand_all' => array( 'type' => 'boolean', ), 'profile_link' => array( 'type' => 'boolean', ), 'show_quizzes' => array( 'type' => 'boolean', ), 'preview_show' => array( 'type' => 'boolean', ), 'preview_user_id' => array( 'type' => 'string', ), 'example_show' => array( 'type' => 'boolean', ), ); $this->self_closing = true; $this->init(); } /** * Render Block * * This function is called per the register_block_type() function above. This function will output * the block rendered content. In the case of this function the rendered output will be for the * [ld_profile] shortcode. * * @since 2.5.9 * * @param array $attributes Shortcode attrbutes. * @return none The output is echoed. */ public function render_block( $attributes = array() ) { if ( is_user_logged_in() ) { if ( ( isset( $attributes['example_show'] ) ) && ( ! empty( $attributes['example_show'] ) ) ) { $attributes['preview_user_id'] = $this->get_example_user_id(); $attributes['preview_show'] = 1; unset( $attributes['example_show'] ); } $shortcode_params_str = ''; foreach ( $attributes as $key => $val ) { if ( ( empty( $key ) ) || ( is_null( $val ) ) ) { continue; } if ( substr( $key, 0, strlen( 'preview_' ) ) == 'preview_' ) { if ( ( ! isset( $attributes['user_id'] ) ) && ( 'preview_user_id' === $key ) && ( '' !== $val ) ) { if ( learndash_is_admin_user( get_current_user_id() ) ) { // If admin user they can preview any user_id. } else if ( learndash_is_group_leader_user( get_current_user_id() ) ) { // If group leader user we ensure the preview user_id is within their group(s). if ( ! learndash_is_group_leader_of_user( get_current_user_id(), $val ) ) { continue; } } else { // If neither admin or group leader then we don't see the user_id for the shortcode. continue; } $key = str_replace( 'preview_', '', $key ); $val = intval( $val ); } } if ( ! empty( $shortcode_params_str ) ) { $shortcode_params_str .= ' '; } $shortcode_params_str .= $key . '="' . esc_attr( $val ) . '"'; } $shortcode_params_str = '[' . $this->shortcode_slug . ' ' . $shortcode_params_str . ']'; $shortcode_out = do_shortcode( $shortcode_params_str ); return $this->render_block_wrap( $shortcode_out ); } wp_die(); } /** * Called from the LD function learndash_convert_block_markers_shortcode() when parsing the block content. * * @since 2.5.9 * * @param array $attributes The array of attributes parse from the block content. * @param string $shortcode_slug This will match the related LD shortcode ld_profile, ld_course_list, etc. * @param string $block_slug This is the block token being processed. Normally same as the shortcode but underscore replaced with dash. * @param string $content This is the orignal full content being parsed. * * @return array $attributes. */ public function learndash_block_markers_shortcode_atts_filter( $attributes = array(), $shortcode_slug = '', $block_slug = '', $content = '' ) { if ( $shortcode_slug === $this->shortcode_slug ) { if ( isset( $attributes['preview_show'] ) ) { unset( $attributes['preview_show'] ); } if ( isset( $attributes['preview_user_id'] ) ) { unset( $attributes['preview_user_id'] ); } if ( isset( $attributes['course_points_user'] ) ) { if ( false == $attributes['course_points_user'] ) { $attributes['course_points_user'] = 'no'; } } if ( isset( $attributes['profile_link'] ) ) { if ( false == $attributes['profile_link'] ) { $attributes['profile_link'] = 'no'; } } if ( isset( $attributes['show_quizzes'] ) ) { if ( false == $attributes['show_quizzes'] ) { $attributes['show_quizzes'] = 'no'; } } if ( isset( $attributes['show_search'] ) ) { if ( false == $attributes['show_search'] ) { $attributes['show_search'] = 'no'; } else if ( true == $attributes['show_search'] ) { $attributes['show_quizzes'] = 'yes'; } } } return $attributes; } // End of functions. } } new LearnDash_Gutenberg_Block_Profile(); PKc\ƛ],includes/gutenberg/blocks/ld-group/index.phpnuW+Ashortcode_slug = 'ld_group'; $this->block_slug = 'ld-group'; $this->self_closing = false; $this->block_attributes = array( 'group_id' => array( 'type' => 'string', ), 'user_id' => array( 'type' => 'string', ), 'autop' => array( 'type' => 'boolean', ), ); $this->init(); } } } new LearnDash_Gutenberg_Block_Group(); PKc\aؾ" " +includes/gutenberg/blocks/ld-group/index.jsnuW+A/** * LearnDash Block ld-group * * @since 2.5.9 * @package LearnDash */ /** * LearnDash block functions */ import { ldlms_get_integer_value } from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InnerBlocks, InspectorControls, } = wp.editor; const { PanelBody, TextControl, ToggleControl } = wp.components; registerBlockType( 'learndash/ld-group', { title: __( 'LearnDash Group', 'learndash' ), description: __( 'This block shows the content if the user is enrolled into the Group.', 'learndash'), icon: 'groups', category: 'learndash-blocks', supports: { customClassName: false, }, attributes: { group_id: { type: 'string', }, user_id: { type: 'string', default: '', }, autop: { type: 'boolean', default: true }, }, edit: props => { const { attributes: { group_id, user_id, autop }, className, setAttributes } = props; const inspectorControls = ( setAttributes({ group_id })} /> setAttributes({ user_id })} /> setAttributes({ autop })} /> ); let ld_block_error_message = ''; let preview_group_id = ldlms_get_integer_value(group_id); if (preview_group_id == 0) { ld_block_error_message = __('Group ID is required.', 'learndash'); } if (ld_block_error_message.length) { ld_block_error_message = ({ld_block_error_message}); } const outputBlock = (
      {ld_block_error_message}
      ); return [ inspectorControls, outputBlock ]; }, save: props => { return ( ); } }, ); PKc\dd.includes/gutenberg/blocks/ld-visitor/index.phpnuW+Ashortcode_slug = 'visitor'; $this->block_slug = 'ld-visitor'; $this->self_closing = false; $this->block_attributes = array( 'course_id' => array( 'type' => 'string', ), 'autop' => array( 'type' => 'boolean', ), ); $this->init(); } } } new LearnDash_Gutenberg_Block_Visitor();PKc\?)22-includes/gutenberg/blocks/ld-visitor/index.jsnuW+A /** * LearnDash Block ld-visitor * * @since 2.5.9 * @package LearnDash */ /** * LearnDash block functions */ import { ldlms_get_post_edit_meta, ldlms_get_custom_label, ldlms_get_integer_value } from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InnerBlocks, InspectorControls, } = wp.editor; const { PanelBody, TextControl, ToggleControl } = wp.components; registerBlockType( 'learndash/ld-visitor', { title: __( 'LearnDash Visitor', 'learndash' ), description: sprintf(_x('This block shows the content if the user is not enrolled into the %s.', 'placeholders: course', 'learndash'), ldlms_get_custom_label('course') ), icon: 'visibility', supports: { customClassName: false, }, category: 'learndash-blocks', attributes: { course_id: { type: 'string', default: '', }, autop: { type: 'boolean', default: true }, }, edit: props => { const { attributes: { course_id, autop }, className, setAttributes } = props; const inspectorControls = ( setAttributes({ course_id })} /> setAttributes({ autop })} /> ); let ld_block_error_message = ''; let preview_course_id = ldlms_get_integer_value(course_id); if (preview_course_id === 0) { preview_course_id = ldlms_get_post_edit_meta('course_id'); preview_course_id = ldlms_get_integer_value(preview_course_id); if (preview_course_id == 0) { ld_block_error_message = sprintf(_x('%1$s ID is required when not used within a %2$s.', 'placeholders: Course, Course', 'learndash'), ldlms_get_custom_label('course'), ldlms_get_custom_label('course')); } } if (ld_block_error_message.length) { ld_block_error_message = ({ld_block_error_message}); } const outputBlock = (
      {ld_block_error_message}
      ); return [ inspectorControls, outputBlock ]; }, save: props => { return ( ); } }, ); PKc\bH))1includes/gutenberg/blocks/ld-course-info/index.jsnuW+A/** * LearnDash Block ld-course-info * * @since 2.5.9 * @package LearnDash */ /** * LearnDash block functions */ import { ldlms_get_custom_label, ldlms_get_per_page, } from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InspectorControls, } = wp.editor; const { ServerSideRender, PanelBody, RangeControl, SelectControl, ToggleControl, TextControl } = wp.components; registerBlockType( 'learndash/ld-course-info', { title: sprintf(_x('LearnDash %s Info [ld_course_info]', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('course')), description: sprintf(_x('This block shows the %s and progress for the user.', 'placeholders: courses', 'learndash'), ldlms_get_custom_label('course') ), icon: 'analytics', category: 'learndash-blocks', example: { attributes: { example_show: 1, }, }, supports: { customClassName: false, }, attributes: { user_id: { type: 'string', default: 0, }, registered_show: { type: 'boolean', default: true }, registered_show_thumbnail: { type: 'boolean', default: true }, registered_num: { type: 'string', default: '', }, registered_orderby: { type: 'string', default: 'ID' }, registered_order: { type: 'string', default: 'ASC' }, progress_show: { type: 'boolean', default: true }, progress_num: { type: 'string', default: '', }, progress_orderby: { type: 'string', default: 'ID' }, progress_order: { type: 'string', default: 'ASC' }, quiz_show: { type: 'boolean', default: true }, quiz_num: { type: 'string', default: '', }, quiz_orderby: { type: 'string', default: 'taken' }, quiz_order: { type: 'string', default: 'DESC' }, preview_show: { type: 'boolean', default: true }, preview_user_id: { type: 'string', default: '', }, example_show: { type: 'boolean', default: 0 }, meta: { type: 'object', } }, edit: function( props ) { const { attributes: { user_id, registered_show, registered_show_thumbnail, registered_num, registered_orderby, registered_order, progress_show, progress_num, progress_orderby, progress_order, quiz_show, quiz_num, quiz_orderby, quiz_order, preview_user_id, preview_show }, setAttributes } = props; const panelbody_header = ( setAttributes({ user_id })} /> setAttributes({ registered_show })} /> setAttributes({ progress_show })} /> setAttributes({ quiz_show })} /> ); var panelbody_registered = (''); if ( registered_show === true ) { panelbody_registered = ( setAttributes({ registered_show_thumbnail })} /> setAttributes({ registered_num })} /> setAttributes({ registered_orderby })} /> setAttributes({ registered_order })} /> ) } var panelbody_progress = (''); if (progress_show === true) { panelbody_progress = ( setAttributes({ progress_num })} /> setAttributes({ progress_orderby })} /> setAttributes({ progress_order })} /> ); } var panelbody_quiz = (''); if ( quiz_show === true ) { panelbody_quiz = ( setAttributes({ quiz_num })} /> setAttributes({ quiz_orderby })} /> setAttributes({ quiz_order })} /> ); } const inspectorControls = ( { panelbody_header } { panelbody_registered } { panelbody_progress } { panelbody_quiz } setAttributes( { preview_show } ) } /> setAttributes( { preview_user_id } ) } /> ); function do_serverside_render( attributes ) { if ( attributes.preview_show == true ) { return } else { return __( '[ld_course_info] shortcode output shown here', 'learndash' ); } } return [ inspectorControls, do_serverside_render( props.attributes ) ]; }, save: props => { // Delete meta from props to prevent it being saved. delete (props.attributes.meta); // Delete preview_user_id from props to prevent it being saved. delete (props.attributes.preview_user_id); } }, ); PKc\lI"2includes/gutenberg/blocks/ld-course-info/index.phpnuW+Ashortcode_slug = 'ld_course_info'; $this->block_slug = 'ld-course-info'; $this->block_attributes = array( 'user_id' => array( 'type' => 'string', ), 'registered_show' => array( 'type' => 'boolean', ), 'registered_show_thumbnail' => array( 'type' => 'boolean', ), 'registered_num' => array( 'type' => 'string', ), 'registered_order' => array( 'type' => 'string', ), 'registered_orderby' => array( 'type' => 'string', ), 'progress_show' => array( 'type' => 'boolean', ), 'progress_num' => array( 'type' => 'string', ), 'progress_order' => array( 'type' => 'string', ), 'progress_orderby' => array( 'type' => 'string', ), 'quiz_show' => array( 'type' => 'boolean', ), 'quiz_num' => array( 'type' => 'string', ), 'quiz_order' => array( 'type' => 'string', ), 'quiz_orderby' => array( 'type' => 'string', ), 'preview_show' => array( 'type' => 'boolean', ), 'preview_user_id' => array( 'type' => 'string', ), 'example_show' => array( 'type' => 'boolean', ), ); $this->self_closing = true; $this->init(); } /** * Render Block * * This function is called per the register_block_type() function above. This function will output * the block rendered content. In the case of this function the rendered output will be for the * [ld_profile] shortcode. * * @since 2.5.9 * * @param array $attributes Shortcode attrbutes. * @return none The output is echoed. */ public function render_block( $attributes = array() ) { $attributes_meta = array(); if ( isset( $attributes['meta'] ) ) { $attributes_meta = $attributes['meta']; unset( $attributes['meta'] ); } if ( is_user_logged_in() ) { if ( ( isset( $attributes['example_show'] ) ) && ( ! empty( $attributes['example_show'] ) ) ) { $attributes['preview_user_id'] = $this->get_example_user_id(); $attributes['preview_show'] = 1; unset( $attributes['example_show'] ); } $shortcode_params_str = ''; $types = array(); if ( isset( $attributes['registered_show'] ) ) { if ( true === $attributes['registered_show'] ) { $types[] = 'registered'; } unset( $attributes['registered_show'] ); } if ( isset( $attributes['progress_show'] ) ) { if ( true === $attributes['progress_show'] ) { $types[] = 'course'; } unset( $attributes['progress_show'] ); } if ( isset( $attributes['quiz_show'] ) ) { if ( true === $attributes['quiz_show'] ) { $types[] = 'quiz'; } unset( $attributes['quiz_show'] ); } if ( ! empty( $types ) ) { if ( ! empty( $shortcode_params_str ) ) { $shortcode_params_str .= ' '; } $shortcode_params_str .= 'type="' . implode( ',', $types ) . '"'; foreach( $attributes as $key => $val ) { if ( ( empty( $key ) ) || ( is_null( $val ) ) ) { continue; } if ( substr( $key, 0, strlen( 'preview_' ) ) == 'preview_' ) { if ( ( ! isset( $attributes['user_id'] ) ) && ( 'preview_user_id' === $key ) && ( '' !== $val ) ) { if ( learndash_is_admin_user( get_current_user_id() ) ) { // If admin user they can preview any user_id. } else if ( learndash_is_group_leader_user( get_current_user_id() ) ) { // If group leader user we ensure the preview user_id is within their group(s). if ( ! learndash_is_group_leader_of_user( get_current_user_id(), $val ) ) { continue; } } else { // If neither admin or group leader then we don't see the user_id for the shortcode. continue; } $key = str_replace( 'preview_', '', $key ); $val = intval( $val ); } } if ( ! empty( $shortcode_params_str ) ) { $shortcode_params_str .= ' '; } $shortcode_params_str .= $key . '="' . esc_attr( $val ) . '"'; } $shortcode_params_str = '[' . $this->shortcode_slug . ' ' . $shortcode_params_str . ']'; $shortcode_out = do_shortcode( $shortcode_params_str ); // This is mainly to protect against emty returns with the Gutenberg ServerSideRender function. return $this->render_block_wrap( $shortcode_out ); } else { return $this->render_block_wrap( '' . __( "Please enable one or more 'Show' options within the Block Settings.", 'learndash' ) . '' ); } } wp_die(); } /** * Called from the LD function learndash_convert_block_markers_shortcode() when parsing the block content. * * @since 2.5.9 * * @param array $attributes The array of attributes parse from the block content. * @param string $shortcode_slug This will match the related LD shortcode ld_profile, ld_course_list, etc. * @param string $block_slug This is the block token being processed. Normally same as the shortcode but underscore replaced with dash. * @param string $content This is the orignal full content being parsed. * * @return array $attributes. */ public function learndash_block_markers_shortcode_atts_filter( $attributes = array(), $shortcode_slug = '', $block_slug = '', $content = '' ) { if ( $shortcode_slug === $this->shortcode_slug ) { if ( isset( $attributes['preview_show'] ) ) { unset( $attributes['preview_show'] ); } if ( isset( $attributes['preview_user_id'] ) ) { unset( $attributes['preview_user_id'] ); } if ( ! isset( $attributes['type'] ) ) { $types_array = array( 'registered', 'course', 'quiz' ); if ( isset( $attributes['registered_show'] ) ) { if ( false === $attributes['registered_show'] ) { $types_array = array_diff( $types_array, array( 'registered' ) ); } unset( $attributes['registered_show'] ); } if ( isset( $attributes['progress_show'] ) ) { if ( false === $attributes['progress_show'] ) { $types_array = array_diff( $types_array, array( 'course' ) ); } unset( $attributes['progress_show'] ); } if ( isset( $attributes['quiz_show'] ) ) { if ( false === $attributes['quiz_show'] ) { $types_array = array_diff( $types_array, array( 'quiz' ) ); } unset( $attributes['quiz_show'] ); } if ( ! empty( $types_array ) ) { $attributes['type'] = implode( ',', $types_array ); } } } return $attributes; } // End of functions. } } new LearnDash_Gutenberg_Block_Course_Info(); PKc\@B2includes/gutenberg/blocks/ld-user-groups/index.phpnuW+Ashortcode_slug = 'user_groups'; $this->block_slug = 'ld-user-groups'; $this->block_attributes = array( 'user_id' => array( 'type' => 'string', ), 'per_page' => array( 'type' => 'integer', ), 'order' => array( 'type' => 'string', ), 'orderby' => array( 'type' => 'string', ), 'preview_show' => array( 'type' => 'boolean', ), 'preview_user_id' => array( 'type' => 'string', ), ); $this->self_closing = true; $this->init(); } /** * Render Block * * This function is called per the register_block_type() function above. This function will output * the block rendered content. In the case of this function the rendered output will be for the * [ld_profile] shortcode. * * @since 2.5.9 * * @param array $attributes Shortcode attrbutes. * @return none The output is echoed. */ public function render_block( $attributes = array() ) { if ( is_user_logged_in() ) { $shortcode_params_str = ''; foreach ( $attributes as $key => $val ) { if ( ( empty( $key ) ) || ( is_null( $val ) ) ) { continue; } if ( substr( $key, 0, strlen( 'preview_' ) ) == 'preview_' ) { if ( ( ! isset( $attributes['user_id'] ) ) && ( 'preview_user_id' === $key ) && ( '' !== $val ) ) { if ( learndash_is_admin_user( get_current_user_id() ) ) { // If admin user they can preview any user_id. } else if ( learndash_is_group_leader_user( get_current_user_id() ) ) { // If group leader user we ensure the preview user_id is within their group(s). if ( ! learndash_is_group_leader_of_user( get_current_user_id(), $val ) ) { continue; } } else { // If neither admin or group leader then we don't see the user_id for the shortcode. continue; } $key = str_replace( 'preview_', '', $key ); $val = intval( $val ); } } if ( ! empty( $shortcode_params_str ) ) { $shortcode_params_str .= ' '; } $shortcode_params_str .= $key . '="' . esc_attr( $val ) . '"'; } $shortcode_params_str = '[' . $this->shortcode_slug . ' ' . $shortcode_params_str . ']'; $shortcode_out = do_shortcode( $shortcode_params_str ); return $this->render_block_wrap( $shortcode_out ); } wp_die(); } /** * Called from the LD function learndash_convert_block_markers_shortcode() when parsing the block content. * * @since 2.5.9 * * @param array $attributes The array of attributes parse from the block content. * @param string $shortcode_slug This will match the related LD shortcode ld_profile, ld_course_list, etc. * @param string $block_slug This is the block token being processed. Normally same as the shortcode but underscore replaced with dash. * @param string $content This is the orignal full content being parsed. * * @return array $attributes. */ public function learndash_block_markers_shortcode_atts_filter( $attributes = array(), $shortcode_slug = '', $block_slug = '', $content = '' ) { if ( $shortcode_slug === $this->shortcode_slug ) { if ( isset( $attributes['preview_show'] ) ) { unset( $attributes['preview_show'] ); } if ( isset( $attributes['preview_user_id'] ) ) { unset( $attributes['preview_user_id'] ); } } return $attributes; } // End of functions. } } new LearnDash_Gutenberg_Block_User_Groups(); PKc\1includes/gutenberg/blocks/ld-user-groups/index.jsnuW+A/** * LearnDash Block ld-user-groups * * @since 2.5.9 * @package LearnDash */ /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InspectorControls, } = wp.editor; const { ServerSideRender, Tooltip, PanelBody, PanelRow, RangeControl, FormToggle, SelectControl, ToggleControl, TextControl } = wp.components; registerBlockType( 'learndash/ld-user-groups', { title: __( 'LearnDash User Groups', 'learndash' ), description: __( 'This block displays the list of groups users are assigned to as users or leaders.', 'learndash' ), icon: 'groups', category: 'learndash-blocks', example: { attributes: { example_show: 1, }, }, supports: { customClassName: false, }, attributes: { user_id: { type: 'string', default: '' }, preview_show: { type: 'boolean', default: 1 }, preview_user_id: { type: 'string', } }, edit: function (props) { const { attributes: { user_id, preview_user_id, preview_show }, setAttributes } = props; const inspectorControls = ( setAttributes( { user_id } ) } /> setAttributes({ preview_show })} /> setAttributes({ preview_user_id })} /> ); function do_serverside_render(attributes) { if (attributes.preview_show == true) { return } else { return __('[user_groups] output shown here', 'learndash'); } } return [ inspectorControls, do_serverside_render(props.attributes) ]; }, save: props => { // Delete preview_user_id from props to prevent it being saved. delete (props.attributes.preview_user_id); // Delete preview_user_id from props to prevent it being saved. delete (props.attributes.preview_user_id); } }, ); PKc\M,,5includes/gutenberg/blocks/ld-course-progress/index.jsnuW+A/** * LearnDash Block ld-course-progress * * @since 2.5.9 * @package LearnDash */ /** * LearnDash block functions */ import { ldlms_get_post_edit_meta, ldlms_get_custom_label, } from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InnerBlocks, InspectorControls, } = wp.editor; const { ServerSideRender, PanelBody, ToggleControl, TextControl } = wp.components; const el = wp.element.createElement; const iconEl = el('svg', { width: 300, height: 300, viewBox: '0 0 50 10' }, el('path', { d: "M47.1,0h-44c-1.7,0-3,1.3-3,3v4c0,1.7,1.3,3,3,3h44c1.7,0,3-1.3,3-3V3C50.1,1.3,48.7,0,47.1,0z M48.1,7c0,0.6-0.4,1-1,1h-12 V2h12c0.6,0,1,0.4,1,1V7z" } ) ); registerBlockType( 'learndash/ld-course-progress', { title: sprintf(_x('LearnDash %s Progress', 'LearnDash Course Progress', 'learndash'), ldlms_get_custom_label('course') ), description: sprintf(_x('This block displays users progress bar for the %1$s.', 'placeholders: course', 'learndash'), ldlms_get_custom_label('course') ), icon: iconEl, category: 'learndash-blocks', example: { attributes: { example_show: 1, }, }, supports: { customClassName: false, }, attributes: { course_id: { type: 'string', default: '' }, user_id: { type: 'string', default: '' }, preview_show: { type: 'boolean', default: 1 }, preview_user_id: { type: 'string', }, preview_course_id: { type: 'string', }, example_show: { type: 'boolean', default: 0 }, }, edit: props => { let { attributes: { course_id }, className } = props; const { attributes: { user_id, preview_show, preview_user_id, preview_course_id, example_show }, setAttributes } = props; const inspectorControls = ( setAttributes({ course_id })} /> setAttributes({ user_id })} /> setAttributes({ preview_show })} /> setAttributes({ preview_course_id })} /> setAttributes({ preview_user_id })} /> ); function do_serverside_render(attributes) { if ( attributes.preview_show == true ) { // We add the meta so the server knowns what is being edited. attributes.meta = ldlms_get_post_edit_meta(); return } else { return __('[learndash_course_progress] shortcode output shown here', 'learndash'); } } return [ inspectorControls, do_serverside_render(props.attributes) ]; }, save: props => { // Delete meta from props to prevent it being saved. delete (props.attributes.meta); } }, ); PKc\i 6includes/gutenberg/blocks/ld-course-progress/index.phpnuW+Ashortcode_slug = 'learndash_course_progress'; $this->block_slug = 'ld-course-progress'; $this->block_attributes = array( 'course_id' => array( 'type' => 'string', ), 'user_id' => array( 'type' => 'string', ), 'preview_show' => array( 'type' => 'boolean', ), 'preview_user_id' => array( 'type' => 'string', ), 'preview_course_id' => array( 'type' => 'string', ), 'example_show' => array( 'type' => 'boolean', ), 'meta' => array( 'type' => 'object', ), ); $this->self_closing = true; $this->init(); } /** * Render Block * * This function is called per the register_block_type() function above. This function will output * the block rendered content. In the case of this function the rendered output will be for the * [ld_profile] shortcode. * * @since 2.5.9 * * @param array $attributes Shortcode attrbutes. * @return none The output is echoed. */ public function render_block( $attributes = array() ) { $attributes_meta = array(); if ( isset( $attributes['meta'] ) ) { $attributes_meta = $attributes['meta']; unset( $attributes['meta'] ); } if ( is_user_logged_in() ) { error_log('attributes
      '. print_r($attributes, true) .'
      '); if ( ( isset( $attributes['example_show'] ) ) && ( ! empty( $attributes['example_show'] ) ) ) { $attributes['preview_course_id'] = $this->get_example_post_id( learndash_get_post_type_slug( 'course' ) ); $attributes['preview_show'] = 1; unset( $attributes['example_show'] ); } if ( ( isset( $attributes['preview_show'] ) ) && ( ! empty( $attributes['preview_show'] ) ) ) { if ( ( isset( $attributes['preview_course_id'] ) ) && ( ! empty( $attributes['preview_course_id'] ) ) ) { $attributes['course_id'] = absint( $attributes['preview_course_id'] ); } } if ( ( ! isset( $attributes['course_id'] ) ) || ( empty( $attributes['course_id'] ) ) ) { if ( ( ! isset( $attributes_meta['course_id'] ) ) || ( empty( $attributes_meta['course_id'] ) ) ) { return $this->render_block_wrap( '' . sprintf( // translators: placeholder: Course, Course. _x( '%1$s ID is required when not used within a %2$s.', 'placeholder: Course, Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ), LearnDash_Custom_Label::get_label( 'course' ) ) . '' ); } else { $attributes['course_id'] = (int) $attributes_meta['course_id']; } } else { $course_post = get_post( absint( $attributes['course_id'] ) ); if ( ( ! is_a( $course_post, 'WP_Post' ) ) || ( 'sfwd-courses' !== $course_post->post_type ) ) { return $this->render_block_wrap( '' . sprintf( // translators: placeholder: Course. _x( 'Invalid %1$s ID.', 'placeholder: Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ) . '' ); } } $shortcode_params_str = ''; foreach ( $attributes as $key => $val ) { if ( ( empty( $key ) ) || ( is_null( $val ) ) ) { continue; } if ( substr( $key, 0, strlen( 'preview_' ) ) == 'preview_' ) { if ( ( ! isset( $attributes['user_id'] ) ) && ( 'preview_user_id' === $key ) && ( '' !== $val ) ) { if ( learndash_is_admin_user( get_current_user_id() ) ) { // If admin user they can preview any user_id. } else if ( learndash_is_group_leader_user( get_current_user_id() ) ) { // If group leader user we ensure the preview user_id is within their group(s). if ( ! learndash_is_group_leader_of_user( get_current_user_id(), $val ) ) { continue; } } else { // If neither admin or group leader then we don't see the user_id for the shortcode. continue; } $key = str_replace( 'preview_', '', $key ); $val = intval( $val ); } } if ( ! empty( $shortcode_params_str ) ) { $shortcode_params_str .= ' '; } $shortcode_params_str .= $key . '="' . esc_attr( $val ) . '"'; } $shortcode_params_str = '[' . $this->shortcode_slug . ' ' . $shortcode_params_str . ']'; $shortcode_out = do_shortcode( $shortcode_params_str ); return $this->render_block_wrap( $shortcode_out ); } wp_die(); } /** * Called from the LD function learndash_convert_block_markers_shortcode() when parsing the block content. * * @since 2.5.9 * * @param array $attributes The array of attributes parse from the block content. * @param string $shortcode_slug This will match the related LD shortcode ld_profile, ld_course_list, etc. * @param string $block_slug This is the block token being processed. Normally same as the shortcode but underscore replaced with dash. * @param string $content This is the orignal full content being parsed. * * @return array $attributes. */ public function learndash_block_markers_shortcode_atts_filter( $attributes = array(), $shortcode_slug = '', $block_slug = '', $content = '' ) { if ( $shortcode_slug === $this->shortcode_slug ) { if ( isset( $attributes['preview_show'] ) ) { unset( $attributes['preview_show'] ); } if ( isset( $attributes['preview_user_id'] ) ) { unset( $attributes['preview_user_id'] ); } } return $attributes; } // End of functions. } } new LearnDash_Gutenberg_Block_Course_Progress(); PKc\:pp5includes/gutenberg/blocks/ld-payment-buttons/index.jsnuW+A/** * LearnDash Block ld-payment-buttons * * @since 2.5.9 * @package LearnDash */ /** * LearnDash block functions */ import { ldlms_get_post_edit_meta, ldlms_get_custom_label, ldlms_get_integer_value, } from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InspectorControls, } = wp.editor; const { ServerSideRender, PanelBody, ToggleControl, TextControl } = wp.components; registerBlockType( 'learndash/ld-payment-buttons', { title: __( 'LearnDash Payment Buttons', 'learndash' ), description: sprintf(_x('This block the %s payment buttons', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('course') ), icon: 'cart', category: 'learndash-blocks', supports: { customClassName: false, }, attributes: { course_id: { type: 'string', }, preview_show: { type: 'boolean', default: 1 }, preview_course_id: { type: 'string', default: '', }, meta: { type: 'object', } }, edit: props => { const { attributes: { course_id, preview_show, preview_course_id }, className, setAttributes } = props; const inspectorControls = ( setAttributes( { course_id } ) } /> setAttributes({ preview_show })} /> setAttributes({ preview_course_id })} /> ); function do_serverside_render(attributes) { if (attributes.preview_show == true) { let ld_block_error_message = ''; let preview_course_id = ldlms_get_integer_value(course_id); if (preview_course_id === 0) { preview_course_id = ldlms_get_post_edit_meta('course_id'); preview_course_id = ldlms_get_integer_value(preview_course_id); if (preview_course_id == 0) { ld_block_error_message = sprintf(_x('%1$s ID is required when not used within a %2$s.', 'placeholders: Course, Course', 'learndash'), ldlms_get_custom_label('course'), ldlms_get_custom_label('course')); } } if (ld_block_error_message.length) { ld_block_error_message = ({ld_block_error_message}); const outputBlock = (
      {ld_block_error_message}
      ); return outputBlock; } else { // We add the meta so the server knowns what is being edited. attributes.meta = ldlms_get_post_edit_meta(); return } } else { return __('[learndash_payment_buttons] shortcode output shown here', 'learndash'); } } return [ inspectorControls, do_serverside_render(props.attributes) ]; }, save: props => { // Delete meta from props to prevent it being saved. delete (props.attributes.meta); } }, ); PKc\`b6includes/gutenberg/blocks/ld-payment-buttons/index.phpnuW+Ashortcode_slug = 'learndash_payment_buttons'; $this->block_slug = 'ld-payment-buttons'; $this->block_attributes = array( 'course_id' => array( 'type' => 'string', ), 'preview_show' => array( 'type' => 'boolean', ), 'preview_course_id' => array( 'type' => 'string', ), 'meta' => array( 'type' => 'object', ), ); $this->self_closing = true; $this->init(); } /** * Render Block * * This function is called per the register_block_type() function above. This function will output * the block rendered content. In the case of this function the rendered output will be for the * [ld_profile] shortcode. * * @since 2.5.9 * * @param array $attributes Shortcode attrbutes. * @return none The output is echoed. */ public function render_block( $attributes = array() ) { /** Here we don't render the button via the shortcode. We can't due to the CSS/JS needed to be loaded * like for Stripe. So we just show a button and let it go at that. */ $attributes_meta = array(); if ( isset( $attributes['meta'] ) ) { $attributes_meta = $attributes['meta']; unset( $attributes['meta'] ); } if ( ( isset( $attributes['preview_show'] ) ) && ( ! empty( $attributes['preview_show'] ) ) ) { if ( ( isset( $attributes['preview_course_id'] ) ) && ( ! empty( $attributes['preview_course_id'] ) ) ) { $attributes['course_id'] = absint( $attributes['preview_course_id'] ); unset( $attributes['preview_course_id'] ); } } if ( ( ! isset( $attributes['course_id'] ) ) || ( empty( $attributes['course_id'] ) ) ) { if ( ( ! isset( $attributes_meta['course_id'] ) ) || ( empty( $attributes_meta['course_id'] ) ) ) { return $this->render_block_wrap( '' . sprintf( // translators: placeholder: Course, Course. _x( '%1$s ID is required when not used within a %2$s.', 'placeholder: Course, Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ), LearnDash_Custom_Label::get_label( 'course' ) ) . '' ); } else { $attributes['course_id'] = (int) $attributes_meta['course_id']; } } $course_post = get_post( (int) $attributes['course_id'] ); if ( ( ! is_a( $course_post, 'WP_Post' ) ) || ( 'sfwd-courses' !== $course_post->post_type ) ) { return $this->render_block_wrap( '' . sprintf( // translators: placeholder: Course. _x( 'Invalid %1$s ID.', 'placeholder: Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ) . '' ); } $course_price_type = learndash_get_setting( $course_post, 'course_price_type' ); if ( ( ! empty( $course_price_type ) ) && ( in_array( $course_price_type, array( 'free', 'paynow', 'subscribe' ) ) ) ) { $button_text = LearnDash_Custom_Label::get_label( 'button_take_this_course' ); $shortcode_out = '' . $button_text . ''; return $this->render_block_wrap( $shortcode_out ); } else { return $this->render_block_wrap( '' . sprintf( // translators: placeholder: Course. esc_html_x( '%s Price Type must be Free, PayNow or Subscribe.', 'placeholder: Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ) . '' ); } wp_die(); } /** * Called from the LD function learndash_convert_block_markers_shortcode() when parsing the block content. * * @since 2.5.9 * * @param array $attributes The array of attributes parse from the block content. * @param string $shortcode_slug This will match the related LD shortcode ld_profile, ld_course_list, etc. * @param string $block_slug This is the block token being processed. Normally same as the shortcode but underscore replaced with dash. * @param string $content This is the orignal full content being parsed. * * @return array $attributes. */ public function learndash_block_markers_shortcode_atts_filter( $attributes = array(), $shortcode_slug = '', $block_slug = '', $content = '' ) { if ( $shortcode_slug === $this->shortcode_slug ) { if ( isset( $attributes['preview_show'] ) ) { unset( $attributes['preview_show'] ); } if ( isset( $attributes['preview_user_id'] ) ) { unset( $attributes['preview_user_id'] ); } } return $attributes; } // End of functions. } } new LearnDash_Gutenberg_Payment_Buttons(); PKc\C""0includes/gutenberg/blocks/ld-courseinfo/index.jsnuW+A/** * LearnDash Block ld-courseinfo * * @since 2.5.9 * @package LearnDash */ /** * LearnDash block functions */ import { ldlms_get_post_edit_meta, ldlms_get_custom_label, } from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InspectorControls, } = wp.editor; const { ServerSideRender, PanelBody, SelectControl, ToggleControl, TextControl } = wp.components; registerBlockType( 'learndash/ld-courseinfo', { title: sprintf( _x( 'LearnDash %s Info [courseinfo]', 'placeholder: Course', 'learndash' ), ldlms_get_custom_label( 'course' ) ), description: sprintf(_x('This block displays %s related information', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('course') ), icon: 'analytics', category: 'learndash-blocks', supports: { customClassName: false, }, attributes: { show: { type: 'string', }, course_id: { type: 'string', default: '', }, user_id: { type: 'string', default: '', }, format: { type: 'string', }, seconds_format: { type: 'string', }, decimals: { type: 'string', }, preview_show: { type: 'boolean', default: 1 }, preview_course_id: { type: 'string', default: '', }, preview_user_id: { type: 'string', default: '', }, meta: { type: 'object', } }, edit: props => { const { attributes: { course_id, show, user_id, format, seconds_format, decimals, preview_show, preview_user_id }, className, setAttributes } = props; const field_show = ( setAttributes({ show })} /> ); const field_course_id = ( setAttributes({ course_id })} /> ); let field_user_id = ''; if ((show != 'course_title') && (show != 'course_url') && (show != 'course_url') && (show != 'course_points') && (show != 'course_price') && (show != 'course_price_type') ) { field_user_id = ( setAttributes({ user_id })} /> ); } let field_format = ''; if ( (show == 'completed_on') || (show == 'enrolled_on') ) { field_format = ( setAttributes({ format })} /> ); } let field_seconds_format = ''; if (show == 'user_course_time') { field_seconds_format = ( setAttributes({ seconds_format })} /> ); } let field_decimals = ''; if ( (show == 'course_points') || (show == 'user_course_points') ) { field_decimals = ( setAttributes({ decimals })} /> ); } const panel_preview = ( setAttributes({ preview_show })} /> setAttributes({ preview_user_id })} /> ); const inspectorControls = ( { field_course_id } { field_user_id } { field_show } { field_format } {field_seconds_format} { field_decimals } { panel_preview } ); function do_serverside_render(attributes) { if (attributes.preview_show == true) { // We add the meta so the server knowns what is being edited. attributes.meta = ldlms_get_post_edit_meta(); return } else { return __('[courseinfo] shortcode output shown here', 'learndash'); } } return [ inspectorControls, do_serverside_render(props.attributes) ]; }, save: function (props) { // Delete meta from props to prevent it being saved. delete(props.attributes.meta); } }, ); PKc\d<£1includes/gutenberg/blocks/ld-courseinfo/index.phpnuW+Ashortcode_slug = 'courseinfo'; $this->block_slug = 'ld-courseinfo'; $this->block_attributes = array( 'show' => array( 'type' => 'string', ), 'course_id' => array( 'type' => 'string', ), 'user_id' => array( 'type' => 'string', ), 'format' => array( 'type' => 'string', ), 'seconds_format' => array( 'type' => 'string', ), 'decimals' => array( 'type' => 'string', ), 'preview_show' => array( 'type' => 'boolean', ), 'preview_course_id' => array( 'type' => 'string', ), 'preview_user_id' => array( 'type' => 'string', ), 'meta' => array( 'type' => 'object', ), ); $this->self_closing = true; $this->init(); } /** * Render Block * * This function is called per the register_block_type() function above. This function will output * the block rendered content. In the case of this function the rendered output will be for the * [ld_profile] shortcode. * * @since 2.5.9 * * @param array $attributes Shortcode attrbutes. * @return none The output is echoed. */ public function render_block( $attributes = array() ) { $attributes_meta = array(); if ( isset( $attributes['meta'] ) ) { $attributes_meta = $attributes['meta']; unset( $attributes['meta'] ); } if ( is_user_logged_in() ) { if ( ( ! isset( $attributes['course_id'] ) ) || ( empty( $attributes['course_id'] ) ) ) { if ( ( ! isset( $attributes_meta['course_id'] ) ) || ( empty( $attributes_meta['course_id'] ) ) ) { return $this->render_block_wrap( '' . sprintf( // translators: placeholder: Course, Course. _x( '%1$s ID is required when not used within a %2$s.', 'placeholder: Course, Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ), LearnDash_Custom_Label::get_label( 'course' ) ) . '' ); } else { $attributes['course_id'] = (int) $attributes_meta['course_id']; } } else { $course_post = get_post( (int) $attributes['course_id'] ); if ( ( ! is_a( $course_post, 'WP_Post' ) ) || ( 'sfwd-courses' !== $course_post->post_type ) ) { return $this->render_block_wrap( '' . sprintf( // translators: placeholder: Course. _x( 'Invalid %1$s ID.', 'placeholder: Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ) . '' ); } } $shortcode_params_str = ''; foreach ( $attributes as $key => $val ) { if ( ( empty( $key ) ) || ( is_null( $val ) ) ) { continue; } if ( 'preview_show' === $key ) { continue; } else if ( 'preview_user_id' === $key ) { if ( ( ! isset( $attributes['user_id'] ) ) && ( 'preview_user_id' === $key ) && ( '' !== $val ) ) { if ( learndash_is_admin_user( get_current_user_id() ) ) { // If admin user they can preview any user_id. } else if ( learndash_is_group_leader_user( get_current_user_id() ) ) { // If group leader user we ensure the preview user_id is within their group(s). if ( ! learndash_is_group_leader_of_user( get_current_user_id(), $val ) ) { continue; } } else { // If neither admin or group leader then we don't see the user_id for the shortcode. continue; } $key = str_replace( 'preview_', '', $key ); $val = intval( $val ); } } else if ( empty( $val ) ) { continue; } $shortcode_params_str .= ' ' . $key . '="' . esc_attr( $val ) . '"'; } $shortcode_params_str = '[' . $this->shortcode_slug . $shortcode_params_str . ']'; $shortcode_out = do_shortcode( $shortcode_params_str ); return $this->render_block_wrap( $shortcode_out ); } wp_die(); } /** * Called from the LD function learndash_convert_block_markers_shortcode() when parsing the block content. * * @since 2.5.9 * * @param array $attributes The array of attributes parse from the block content. * @param string $shortcode_slug This will match the related LD shortcode ld_profile, ld_course_list, etc. * @param string $block_slug This is the block token being processed. Normally same as the shortcode but underscore replaced with dash. * @param string $content This is the orignal full content being parsed. * * @return array $attributes. */ public function learndash_block_markers_shortcode_atts_filter( $attributes = array(), $shortcode_slug = '', $block_slug = '', $content = '' ) { if ( $shortcode_slug === $this->shortcode_slug ) { if ( isset( $attributes['preview_show'] ) ) { unset( $attributes['preview_show'] ); } if ( isset( $attributes['preview_user_id'] ) ) { unset( $attributes['preview_user_id'] ); } } return $attributes; } // End of functions. } } new LearnDash_Gutenberg_Block_Courseinfo(); PKc\B+;includes/gutenberg/blocks/ld-course-expire-status/index.phpnuW+Ashortcode_slug = 'ld_course_expire_status'; $this->block_slug = 'ld-course-expire-status'; $this->block_attributes = array( 'course_id' => array( 'type' => 'string', ), 'user_id' => array( 'type' => 'string', ), 'label_before' => array( 'type' => 'string', ), 'label_after' => array( 'type' => 'string', ), 'autop' => array( 'type' => 'boolean', ), 'preview_show' => array( 'type' => 'boolean', ), 'preview_course_id' => array( 'type' => 'string', ), 'preview_user_id' => array( 'type' => 'string', ), 'example_show' => array( 'type' => 'boolean', ), 'meta' => array( 'type' => 'object', ), ); $this->self_closing = true; $this->init(); } /** * Initialize the hooks. */ /* public function init() { if ( function_exists( 'register_block_type' ) ) { parent::init(); add_action( 'init', array( $this, 'register_blocks' ) ); add_filter( 'learndash_block_markers_shortcode_atts', array( $this, 'learndash_block_markers_shortcode_atts_filter' ), 30, 4 ); } } */ /** * Render Block * * This function is called per the register_block_type() function above. This function will output * the block rendered content. In the case of this function the rendered output will be for the * [ld_profile] shortcode. * * @since 2.5.9 * * @param array $attributes Shortcode attrbutes. * @return none The output is echoed. */ public function render_block( $attributes = array() ) { $attributes_meta = array(); if ( isset( $attributes['meta'] ) ) { $attributes_meta = $attributes['meta']; unset( $attributes['meta'] ); } if ( is_user_logged_in() ) { if ( ( isset( $attributes['example_show'] ) ) && ( ! empty( $attributes['example_show'] ) ) ) { $attributes['preview_course_id'] = $this->get_example_post_id( learndash_get_post_type_slug( 'course' ) ); $attributes['preview_user_id'] = $this->get_example_user_id(); $attributes['preview_show'] = 1; unset( $attributes['example_show'] ); } if ( ( isset( $attributes['preview_show'] ) ) && ( ! empty( $attributes['preview_show'] ) ) ) { if ( ( isset( $attributes['preview_course_id'] ) ) && ( ! empty( $attributes['preview_course_id'] ) ) ) { $attributes['course_id'] = absint( $attributes['preview_course_id'] ); unset( $attributes['preview_course_id'] ); } if ( ( isset( $attributes['preview_user_id'] ) ) && ( ! empty( $attributes['preview_user_id'] ) ) ) { $attributes['user_id'] = absint( $attributes['preview_user_id'] ); unset( $attributes['preview_user_id'] ); } } if ( ( ! isset( $attributes['course_id'] ) ) || ( empty( $attributes['course_id'] ) ) ) { if ( ( ! isset( $attributes_meta['course_id'] ) ) || ( empty( $attributes_meta['course_id'] ) ) ) { return $this->render_block_wrap( '' . sprintf( // translators: placeholder: Course, Course. _x( '%1$s ID is required when not used within a %2$s.', 'placeholder: Course, Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ), LearnDash_Custom_Label::get_label( 'course' ) ) . '' ); } else { $attributes['course_id'] = (int) $attributes_meta['course_id']; } } else { $course_post = get_post( (int) $attributes['course_id'] ); if ( ( ! is_a( $course_post, 'WP_Post' ) ) || ( 'sfwd-courses' !== $course_post->post_type ) ) { return $this->render_block_wrap( '' . sprintf( // translators: placeholder: Course. _x( 'Invalid %1$s ID.', 'placeholder: Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ) . '' ); } } $shortcode_params_str = ''; foreach ( $attributes as $key => $val ) { if ( ( empty( $key ) ) || ( is_null( $val ) ) ) { continue; } if ( 'preview_show' === $key ) { continue; } else if ( 'preview_user_id' === $key ) { if ( ( ! isset( $attributes['user_id'] ) ) && ( 'preview_user_id' === $key ) && ( '' !== $val ) ) { if ( learndash_is_admin_user( get_current_user_id() ) ) { // If admin user they can preview any user_id. } else if ( learndash_is_group_leader_user( get_current_user_id() ) ) { // If group leader user we ensure the preview user_id is within their group(s). if ( ! learndash_is_group_leader_of_user( get_current_user_id(), $val ) ) { continue; } } else { // If neither admin or group leader then we don't see the user_id for the shortcode. continue; } $key = str_replace( 'preview_', '', $key ); $val = intval( $val ); } } else if ( empty( $val ) ) { continue; } $shortcode_params_str .= ' ' . $key . '="' . esc_attr( $val ) . '"'; } $shortcode_params_str = '[' . $this->shortcode_slug . $shortcode_params_str . ']'; $shortcode_out = do_shortcode( $shortcode_params_str ); return $this->render_block_wrap( $shortcode_out ); } } /** * Called from the LD function learndash_convert_block_markers_shortcode() when parsing the block content. * * @since 2.5.9 * * @param array $attributes The array of attributes parse from the block content. * @param string $shortcode_slug This will match the related LD shortcode ld_profile, ld_course_list, etc. * @param string $block_slug This is the block token being processed. Normally same as the shortcode but underscore replaced with dash. * @param string $content This is the orignal full content being parsed. * * @return array $attributes. */ public function learndash_block_markers_shortcode_atts_filter( $attributes = array(), $shortcode_slug = '', $block_slug = '', $content = '' ) { if ( $shortcode_slug === $this->shortcode_slug ) { if ( isset( $attributes['preview_show'] ) ) { unset( $attributes['preview_show'] ); } if ( isset( $attributes['preview_user_id'] ) ) { unset( $attributes['preview_user_id'] ); } } return $attributes; } // End of functions. } } new LearnDash_Gutenberg_Block_Course_Expire_Status(); PKc\e{:includes/gutenberg/blocks/ld-course-expire-status/index.jsnuW+A/** * LearnDash Block ld-course-expire-status * * @since 2.5.9 * @package LearnDash */ /** * LearnDash block functions */ import { ldlms_get_post_edit_meta, ldlms_get_custom_label, } from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InspectorControls, } = wp.editor; const { ServerSideRender, PanelBody, ToggleControl, TextControl } = wp.components; registerBlockType( 'learndash/ld-course-expire-status', { title: sprintf(_x('LearnDash %s Expire Status', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('course') ), description: sprintf(_x('This block displays the user %s access expire date.', 'placeholders: course', 'learndash'), ldlms_get_custom_label('course') ), icon: 'clock', category: 'learndash-blocks', example: { attributes: { example_show: 1, }, }, supports: { customClassName: false, }, attributes: { course_id: { type: 'string', default: '' }, user_id: { type: 'string', default: '' }, label_before: { type: 'string', default: '', }, label_after: { type: 'string', default: '', }, autop: { type: 'boolean', default: true }, preview_show: { type: 'boolean', default: 1 }, preview_course_id: { type: 'string', default: '', }, preview_user_id: { type: 'string', default: '', }, example_show: { type: 'boolean', default: 0 }, meta: { type: 'object', } }, edit: function( props ) { let { attributes: { course_id }, className } = props; const { attributes: { user_id, label_before, label_after, autop, preview_course_id, preview_user_id, preview_show, example_show }, setAttributes } = props; const inspectorControls = ( setAttributes({ course_id })} /> setAttributes({ user_id })} /> setAttributes({ label_before })} /> setAttributes({ label_after })} /> setAttributes({ autop })} /> setAttributes( { preview_show } ) } /> setAttributes({ preview_course_id })} /> setAttributes( { preview_user_id } ) } /> ); function do_serverside_render( attributes ) { if ( attributes.preview_show == true ) { // We add the meta so the server knowns what is being edited. attributes.meta = ldlms_get_post_edit_meta(); return } else { return __( '[ld_course_expire_status] shortcode output shown here', 'learndash' ); } } return [ inspectorControls, do_serverside_render( props.attributes ) ]; }, save: props => { // Delete meta from props to prevent it being saved. delete (props.attributes.meta); // Delete preview_user_id from props to prevent it being saved. delete (props.attributes.preview_user_id); } }, ); PKc\u&u&1includes/gutenberg/blocks/ld-certificate/index.jsnuW+A/** * LearnDash Block ld-certificate * * @since 3.2 * @package LearnDash */ /** * LearnDash block functions */ import { ldlms_get_post_edit_meta, ldlms_get_custom_label, ldlms_get_integer_value } from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InspectorControls, } = wp.editor; const { ServerSideRender, PanelBody, TextControl, ToggleControl } = wp.components; registerBlockType( 'learndash/ld-certificate', { title: __( 'LearnDash Certificate', 'learndash' ), description: _x('This shortcode shows a Certificate download link.', 'learndash'), icon: 'welcome-learn-more', category: 'learndash-blocks', supports: { customClassName: false, }, attributes: { course_id: { type: 'string', default: '', }, quiz_id: { type: 'string', default: '', }, user_id: { type: 'string', default: '', }, label: { type: 'string', default: '', }, class_html: { type: 'string', default: '', }, context: { type: 'string', default: '', }, callback: { type: 'string', default: '', }, preview_show: { type: 'boolean', default: 1 }, preview_course_id: { type: 'string', default: '', }, preview_quiz_id: { type: 'string', default: '', }, preview_user_id: { type: 'string', default: '', }, example_show: { type: 'boolean', default: 0 }, }, edit: props => { const { attributes: { course_id, quiz_id, user_id, label, class_html, context, callback, preview_show, preview_course_id, preview_quiz_id, preview_user_id, example_show }, className, setAttributes } = props; const inspectorControls = ( setAttributes({ course_id })} /> setAttributes({ quiz_id })} /> setAttributes({ user_id })} /> setAttributes({ label })} /> setAttributes({ class_html })} /> setAttributes({ context })} /> setAttributes({ callback })} /> setAttributes({ preview_show })} /> setAttributes({ preview_course_id })} /> setAttributes({ preview_quiz_id })} /> setAttributes({ preview_user_id })} /> ); /* let ld_block_error_message = ''; let show_course_id = ldlms_get_integer_value(course_id); let show_quiz_id = ldlms_get_integer_value(quiz_id); let post_type = ldlms_get_post_edit_meta('post_type'); if (show_course_id === 0) { if (post_type === 'sfwd-courses') { show_course_id = ldlms_get_post_edit_meta('post_id'); } else if ((post_type === 'sfwd-lessons') || (post_type === 'sfwd-topic') || (post_type === 'sfwd-quiz')) { show_course_id = ldlms_get_post_edit_meta('course_id'); } show_course_id = ldlms_get_integer_value(show_course_id); } if (show_quiz_id === 0) { if (ldlms_get_post_edit_meta('post_type') === 'sfwd-quiz') { show_quiz_id = ldlms_get_post_edit_meta('post_id'); show_quiz_id = ldlms_get_integer_value(show_quiz_id); } } if ((show_course_id == 0) && (show_quiz_id == 0)) { ld_block_error_message = sprintf(_x('%1$s ID or %2$s ID is required when not used within a %2$s.', 'placeholders: Course, Quz, Course', 'learndash'), ldlms_get_custom_label('course'), ldlms_get_custom_label('quiz'), ldlms_get_custom_label('course')); } if (ld_block_error_message.length) { ld_block_error_message = ({ld_block_error_message}); } const outputBlock = (
      {ld_block_error_message}
      ); */ function do_serverside_render(attributes) { if (attributes.preview_show == true) { return } else { return __('[ld_certificate] shortcode output shown here', 'learndash'); } } return [ inspectorControls, do_serverside_render(props.attributes) ]; }, }, ); PKc\..2includes/gutenberg/blocks/ld-certificate/index.phpnuW+Ashortcode_slug = 'ld_certificate'; $this->block_slug = 'ld-certificate'; $this->self_closing = false; $this->block_attributes = array( 'course_id' => array( 'type' => 'string', ), 'quiz_id' => array( 'type' => 'string', ), 'user_id' => array( 'type' => 'string', ), 'label' => array( 'type' => 'string', ), 'class_html' => array( 'type' => 'string', ), 'context' => array( 'type' => 'string', ), 'callback' => array( 'type' => 'string', ), 'preview_show' => array( 'type' => 'boolean', ), 'preview_course_id' => array( 'type' => 'string', ), 'preview_quiz_id' => array( 'type' => 'string', ), 'preview_user_id' => array( 'type' => 'string', ), 'example_show' => array( 'type' => 'boolean', ), ); $this->init(); } /** * Render Block * * This function is called per the register_block_type() function above. This function will output * the block rendered content. In the case of this function the rendered output will be for the * [ld_profile] shortcode. * * @since 3.2 * * @param array $attributes Shortcode attrbutes. * @return none The output is echoed. */ public function render_block( $attributes = array() ) { if ( is_user_logged_in() ) { if ( ( isset( $attributes['example_show'] ) ) && ( ! empty( $attributes['example_show'] ) ) ) { $attributes['preview_course_id'] = $this->get_example_post_id( learndash_get_post_type_slug( 'course' ) ); $attributes['preview_user_id'] = $this->get_example_user_id(); $attributes['preview_show'] = true; unset( $attributes['example_show'] ); } if ( ( isset( $attributes['preview_show'] ) ) && ( ! empty( $attributes['preview_show'] ) ) ) { unset( $attributes['preview_show'] ); if ( ( isset( $attributes['preview_course_id'] ) ) && ( ! empty( $attributes['preview_course_id'] ) ) ) { $attributes['course_id'] = absint( $attributes['preview_course_id'] ); unset( $attributes['preview_course_id'] ); } if ( ( isset( $attributes['preview_quiz_id'] ) ) && ( ! empty( $attributes['preview_quiz_id'] ) ) ) { $attributes['quiz_id'] = absint( $attributes['preview_quiz_id'] ); unset( $attributes['preview_quiz_id'] ); } if ( ( isset( $attributes['preview_user_id'] ) ) && ( ! empty( $attributes['preview_user_id'] ) ) ) { $attributes['user_id'] = absint( $attributes['preview_user_id'] ); unset( $attributes['preview_user_id'] ); } } if ( ( ( ! isset( $attributes['course_id'] ) ) || ( empty( $attributes['course_id'] ) ) ) && ( ( ! isset( $attributes['quiz_id'] ) ) || ( empty( $attributes['quiz_id'] ) ) ) ) { return $this->render_block_wrap( '' . sprintf( // translators: placeholder: Course, Quiz, Course. _x( '%1$s ID or %2$s ID is required when not used within a %3$s.', 'placeholder: Course, Quiz, Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ), LearnDash_Custom_Label::get_label( 'quiz' ), LearnDash_Custom_Label::get_label( 'course' ) ) . '' ); } if ( isset( $attributes['class_html'] ) ) { $attributes['class'] = esc_attr( $attributes['class_html'] ); unset( $attributes['class_html'] ); } $shortcode_params_str = ''; foreach ( $attributes as $key => $val ) { if ( ( empty( $key ) ) || ( empty( $val ) ) || ( is_null( $val ) ) ) { continue; } if ( ( 'user_id' === $key ) && ( '' !== $val ) ) { if ( learndash_is_admin_user( get_current_user_id() ) ) { // If admin user they can preview any user_id. } else if ( learndash_is_group_leader_user( get_current_user_id() ) ) { // If group leader user we ensure the preview user_id is within their group(s). if ( ! learndash_is_group_leader_of_user( get_current_user_id(), $val ) ) { continue; } } else { // If neither admin or group leader then we don't see the user_id for the shortcode. continue; } $key = str_replace( 'preview_', '', $key ); $val = intval( $val ); } if ( ! empty( $shortcode_params_str ) ) { $shortcode_params_str .= ' '; } $shortcode_params_str .= $key . '="' . esc_attr( $val ) . '"'; } $shortcode_params_str = '[' . $this->shortcode_slug . ' ' . $shortcode_params_str . ']'; $shortcode_out = do_shortcode( $shortcode_params_str ); return $this->render_block_wrap( $shortcode_out ); } wp_die(); } /** * Called from the LD function learndash_convert_block_markers_shortcode() when parsing the block content. * * @since 3.2 * * @param array $attributes The array of attributes parse from the block content. * @param string $shortcode_slug This will match the related LD shortcode ld_profile, ld_course_list, etc. * @param string $block_slug This is the block token being processed. Normally same as the shortcode but underscore replaced with dash. * @param string $content This is the orignal full content being parsed. * * @return array $attributes. */ public function learndash_block_markers_shortcode_atts_filter( $attributes = array(), $shortcode_slug = '', $block_slug = '', $content = '' ) { if ( $shortcode_slug === $this->shortcode_slug ) { if ( isset( $attributes['preview_show'] ) ) { unset( $attributes['preview_show'] ); } if ( isset( $attributes['preview_course_id'] ) ) { unset( $attributes['preview_course_id'] ); } if ( isset( $attributes['preview_quiz_id'] ) ) { unset( $attributes['preview_quiz_id'] ); } if ( isset( $attributes['preview_user_id'] ) ) { unset( $attributes['preview_user_id'] ); } if ( isset( $attributes['class_html'] ) ) { $attributes['class'] = esc_attr( $attributes['class_html'] ); unset( $attributes['class_html'] ); } } return $attributes; } // End of functions. } } new LearnDash_Gutenberg_Block_Certificate(); PKc\/+includes/gutenberg/blocks/ld-login/index.jsnuW+A/** * LearnDash Block ld-login * * @since 2.5.9 * @package LearnDash */ /** * LearnDash block functions */ //import { // ldlms_get_custom_label, // ldlms_get_per_page, //} from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InspectorControls, } = wp.editor; const { ServerSideRender, PanelBody, SelectControl, ToggleControl, TextControl } = wp.components; registerBlockType( 'learndash/ld-login', { title: _x('LearnDash Login', 'learndash'), description: __('This shortcode adds the login button on any page', 'learndash'), icon: 'admin-network', category: 'learndash-blocks', example: { attributes: { example_show: 1, }, }, supports: { customClassName: false, }, attributes: { login_url: { type: 'string', default: '', }, login_label: { type: 'string', default: '', }, login_placement: { type: 'string', default: '', }, login_button: { type: 'string', default: '', }, logout_url: { type: 'string', default: '', }, logout_label: { type: 'string', default: '', }, logout_placement: { type: 'string', default: 'right', }, logout_button: { type: 'string', default: '', }, preview_show: { type: 'boolean', default: true }, preview_action: { type: 'string', default: '' }, example_show: { type: 'boolean', default: 0 }, }, edit: function( props ) { const { attributes: { login_url, login_label, login_placement, login_button, logout_url, logout_label, logout_placement, logout_button, preview_show, preview_action, example_show }, setAttributes } = props; const panelbody_login = ( setAttributes({ login_url })} /> setAttributes({ login_label })} /> setAttributes({ login_placement })} /> setAttributes({ login_button })} /> ); const panelbody_logout = ( setAttributes({ logout_url })} /> setAttributes({ logout_label })} /> setAttributes({ logout_placement })} /> setAttributes({ logout_button })} /> ); const panel_preview = ( setAttributes({ preview_show })} /> setAttributes({ preview_action })} /> ); const inspectorControls = ( { panelbody_login } { panelbody_logout } { panel_preview } ); function do_serverside_render( attributes ) { if ( attributes.preview_show == true ) { return } else { return __( '[learndash_login] shortcode output shown here', 'learndash' ); } } return [ inspectorControls, do_serverside_render( props.attributes ) ]; }, save: props => { // Delete meta from props to prevent it being saved. delete (props.attributes.meta); // Delete preview_user_id from props to prevent it being saved. delete (props.attributes.preview_user_id); } }, ); PKc\eR,includes/gutenberg/blocks/ld-login/index.phpnuW+Ashortcode_slug = 'learndash_login'; $this->block_slug = 'ld-login'; $this->block_attributes = array( 'login_url' => array( 'type' => 'string', ), 'login_label' => array( 'type' => 'string', ), 'login_placement' => array( 'type' => 'string', ), 'login_button' => array( 'type' => 'string', ), 'logout_url' => array( 'type' => 'string', ), 'logout_label' => array( 'type' => 'string', ), 'logout_placement' => array( 'type' => 'string', ), 'logout_button' => array( 'type' => 'string', ), 'preview_show' => array( 'type' => 'boolean', ), 'preview_action' => array( 'type' => 'string', ), 'example_show' => array( 'type' => 'boolean', ), ); $this->self_closing = true; $this->init(); } /** * Render Block * * This function is called per the register_block_type() function above. This function will output * the block rendered content. In the case of this function the rendered output will be for the * [ld_profile] shortcode. * * @since 2.5.9 * * @param array $attributes Shortcode attrbutes. * @return none The output is echoed. */ public function render_block( $attributes = array() ) { if ( is_user_logged_in() ) { $shortcode_params_str = ''; foreach ( $attributes as $key => $val ) { if ( ( empty( $key ) ) || ( is_null( $val ) ) ) { continue; } if ( 'preview_show' === $key ) { continue; } else if ( 'preview_show' === $key ) { if ( empty( $val ) ) { continue; } if ( ( isset( $attributes['preview_show'] ) ) && ( true === $attributes['preview_show'] ) ) { $key = str_replace( 'preview_', '', $key ); $val = intval( $val ); } } else if ( empty( $val ) ) { continue; } $shortcode_params_str .= ' ' . $key . '="' . esc_attr( $val ) . '"'; } $shortcode_params_str = '[' . $this->shortcode_slug . $shortcode_params_str . ']'; $shortcode_out = do_shortcode( $shortcode_params_str ); return $this->render_block_wrap( $shortcode_out ); } wp_die(); } /** * Called from the LD function learndash_convert_block_markers_shortcode() when parsing the block content. * * @since 2.5.9 * * @param array $attributes The array of attributes parse from the block content. * @param string $shortcode_slug This will match the related LD shortcode ld_profile, ld_course_list, etc. * @param string $block_slug This is the block token being processed. Normally same as the shortcode but underscore replaced with dash. * @param string $content This is the orignal full content being parsed. * * @return array $attributes. */ public function learndash_block_markers_shortcode_atts_filter( $attributes = array(), $shortcode_slug = '', $block_slug = '', $content = '' ) { if ( $shortcode_slug === $this->shortcode_slug ) { if ( isset( $attributes['preview_show'] ) ) { unset( $attributes['preview_show'] ); } if ( isset( $attributes['preview_user_id'] ) ) { unset( $attributes['preview_user_id'] ); } if ( ! isset( $attributes['type'] ) ) { $types_array = array( 'registered', 'course', 'quiz' ); if ( isset( $attributes['registered_show'] ) ) { if ( false === $attributes['registered_show'] ) { $types_array = array_diff( $types_array, array( 'registered' ) ); } unset( $attributes['registered_show'] ); } if ( isset( $attributes['progress_show'] ) ) { if ( false === $attributes['progress_show'] ) { $types_array = array_diff( $types_array, array( 'course' ) ); } unset( $attributes['progress_show'] ); } if ( isset( $attributes['quiz_show'] ) ) { if ( false === $attributes['quiz_show'] ) { $types_array = array_diff( $types_array, array( 'quiz' ) ); } unset( $attributes['quiz_show'] ); } if ( ! empty( $types_array ) ) { $attributes['type'] = implode( ',', $types_array ); } } } return $attributes; } // End of functions. } } new LearnDash_Gutenberg_Block_LearnDash_Login(); PKc\~BB3includes/gutenberg/blocks/ld-course-resume/index.jsnuW+A/** * LearnDash Block ld-certificate * * @since 3.2 * @package LearnDash */ /** * LearnDash block functions */ import { ldlms_get_post_edit_meta, ldlms_get_custom_label, ldlms_get_integer_value } from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InspectorControls, } = wp.editor; const { ServerSideRender, PanelBody, TextControl, SelectControl, ToggleControl } = wp.components; registerBlockType( 'learndash/ld-course-resume', { title: sprintf(_x('%s Resume', 'Course', 'learndash'), ldlms_get_custom_label('course') ), description: sprintf(_x('Return to %s link/button.', 'Course', 'learndash'), ldlms_get_custom_label('course' ) ), icon: 'welcome-learn-more', category: 'learndash-blocks', supports: { customClassName: false, }, attributes: { course_id: { type: 'string', default: '', }, user_id: { type: 'string', default: '', }, label: { type: 'string', default: '', }, html_class: { type: 'string', default: '', }, button: { type: 'string', default: '', }, preview_show: { type: 'boolean', default: 1 }, preview_course_id: { type: 'string', default: '', }, preview_user_id: { type: 'string', default: '', }, example_show: { type: 'boolean', default: 0 }, }, edit: props => { const { attributes: { course_id, user_id, label, html_class, button, preview_show, preview_course_id, preview_user_id, example_show }, className, setAttributes } = props; const inspectorControls = ( setAttributes({ course_id })} /> setAttributes({ user_id })} /> setAttributes({ button })} /> setAttributes({ label })} /> setAttributes({ html_class })} /> setAttributes({ preview_show })} /> setAttributes({ preview_course_id })} /> setAttributes({ preview_user_id })} /> ); function do_serverside_render(attributes) { if (attributes.preview_show == true) { return } else { return __('[ld_course_resume] shortcode output shown here', 'learndash'); } } return [ inspectorControls, do_serverside_render(props.attributes) ]; }, }, ); PKc\e4includes/gutenberg/blocks/ld-course-resume/index.phpnuW+Ashortcode_slug = 'ld_course_resume'; $this->block_slug = 'ld-course-resume'; $this->self_closing = false; $this->block_attributes = array( 'course_id' => array( 'type' => 'string', ), 'user_id' => array( 'type' => 'string', ), 'label' => array( 'type' => 'string', ), 'html_class' => array( 'type' => 'string', ), 'button' => array( 'type' => 'string', ), 'preview_show' => array( 'type' => 'boolean', ), 'preview_course_id' => array( 'type' => 'string', ), 'preview_user_id' => array( 'type' => 'string', ), 'example_show' => array( 'type' => 'boolean', ), ); $this->init(); } /** * Render Block * * This function is called per the register_block_type() function above. This function will output * the block rendered content. In the case of this function the rendered output will be for the * [ld_profile] shortcode. * * @since 3.2 * * @param array $attributes Shortcode attrbutes. * @return none The output is echoed. */ public function render_block( $attributes = array() ) { if ( is_user_logged_in() ) { if ( ( isset( $attributes['example_show'] ) ) && ( ! empty( $attributes['example_show'] ) ) ) { $attributes['preview_course_id'] = $this->get_example_post_id( learndash_get_post_type_slug( 'course' ) ); $attributes['preview_user_id'] = $this->get_example_user_id(); $attributes['preview_show'] = true; unset( $attributes['example_show'] ); } if ( ( isset( $attributes['preview_show'] ) ) && ( ! empty( $attributes['preview_show'] ) ) ) { unset( $attributes['preview_show'] ); if ( ( isset( $attributes['preview_course_id'] ) ) && ( ! empty( $attributes['preview_course_id'] ) ) ) { $attributes['course_id'] = absint( $attributes['preview_course_id'] ); unset( $attributes['preview_course_id'] ); } if ( ( isset( $attributes['preview_quiz_id'] ) ) && ( ! empty( $attributes['preview_quiz_id'] ) ) ) { $attributes['quiz_id'] = absint( $attributes['preview_quiz_id'] ); unset( $attributes['preview_quiz_id'] ); } if ( ( isset( $attributes['preview_user_id'] ) ) && ( ! empty( $attributes['preview_user_id'] ) ) ) { $attributes['user_id'] = absint( $attributes['preview_user_id'] ); unset( $attributes['preview_user_id'] ); } } if ( ( ( ! isset( $attributes['course_id'] ) ) || ( empty( $attributes['course_id'] ) ) ) ) { if ( learndash_get_post_type_slug( 'course' ) === get_post_type() ) { $attributes['course_id'] = get_the_ID();; } else { return $this->render_block_wrap( '' . sprintf( // translators: placeholder: Course, Course. _x( '%1$s ID is required when not used within a %2$s.', 'placeholder: Course, QCourse', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ), LearnDash_Custom_Label::get_label( 'course' ) ) . '' ); } } $shortcode_params_str = ''; foreach ( $attributes as $key => $val ) { if ( ( empty( $key ) ) || ( empty( $val ) ) || ( is_null( $val ) ) ) { continue; } if ( ( 'user_id' === $key ) && ( '' !== $val ) ) { if ( learndash_is_admin_user( get_current_user_id() ) ) { // If admin user they can preview any user_id. } else if ( learndash_is_group_leader_user( get_current_user_id() ) ) { // If group leader user we ensure the preview user_id is within their group(s). if ( ! learndash_is_group_leader_of_user( get_current_user_id(), $val ) ) { continue; } } else { // If neither admin or group leader then we don't see the user_id for the shortcode. continue; } $key = str_replace( 'preview_', '', $key ); $val = intval( $val ); } if ( ! empty( $shortcode_params_str ) ) { $shortcode_params_str .= ' '; } $shortcode_params_str .= $key . '="' . esc_attr( $val ) . '"'; } $shortcode_params_str = '[' . $this->shortcode_slug . ' ' . $shortcode_params_str . ']'; $shortcode_out = do_shortcode( $shortcode_params_str ); return $this->render_block_wrap( $shortcode_out ); } wp_die(); } /** * Called from the LD function learndash_convert_block_markers_shortcode() when parsing the block content. * * @since 3.2 * * @param array $attributes The array of attributes parse from the block content. * @param string $shortcode_slug This will match the related LD shortcode ld_profile, ld_course_list, etc. * @param string $block_slug This is the block token being processed. Normally same as the shortcode but underscore replaced with dash. * @param string $content This is the orignal full content being parsed. * * @return array $attributes. */ public function learndash_block_markers_shortcode_atts_filter( $attributes = array(), $shortcode_slug = '', $block_slug = '', $content = '' ) { if ( $shortcode_slug === $this->shortcode_slug ) { if ( isset( $attributes['preview_show'] ) ) { unset( $attributes['preview_show'] ); } if ( isset( $attributes['preview_course_id'] ) ) { unset( $attributes['preview_course_id'] ); } if ( isset( $attributes['preview_user_id'] ) ) { unset( $attributes['preview_user_id'] ); } } return $attributes; } // End of functions. } } new LearnDash_Gutenberg_Block_Course_Resume(); PKc\8x664includes/gutenberg/blocks/ld-course-content/index.jsnuW+A/** * LearnDash Block ld-course-content * * @since 2.5.9 * @package LearnDash */ /** * LearnDash block functions */ import { ldlms_get_custom_label, ldlms_get_post_edit_meta, ldlms_get_per_page, } from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InspectorControls, } = wp.editor; const { ServerSideRender, PanelBody, ToggleControl, TextControl } = wp.components; registerBlockType( 'learndash/ld-course-content', { title: sprintf(_x('LearnDash %s Content', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('course')), description: sprintf(_x('This block displays the %1$s Content table.', 'placeholders: Course', 'learndash'), ldlms_get_custom_label('course') ), icon: 'format-aside', category: 'learndash-blocks', example: { attributes: { example_show: 1, }, }, supports: { customClassName: false, }, attributes: { course_id: { type: 'string', default: '', }, per_page: { type: 'string', default: '', }, preview_show: { type: 'boolean', default: 1 }, preview_course_id: { type: 'string', default: '', }, example_show: { type: 'boolean', default: 0 }, meta: { type: 'object', } }, edit: props => { const { attributes: { course_id, per_page, preview_show, preview_course_id, example_show }, className, setAttributes } = props; const inspectorControls = ( setAttributes( { course_id } ) } /> setAttributes( { per_page } ) } /> setAttributes({ preview_show })} /> setAttributes({ preview_course_id })} /> ); function do_serverside_render( attributes ) { if ( attributes.preview_show == true ) { // We add the meta so the server knowns what is being edited. attributes.meta = ldlms_get_post_edit_meta(); return } else { return __('[course_content] shortcode output shown here', 'learndash'); } } return [ inspectorControls, do_serverside_render(props.attributes) ]; }, save: props => { // Delete meta from props to prevent it being saved. delete (props.attributes.meta); }, }, ); PKc\}5includes/gutenberg/blocks/ld-course-content/index.phpnuW+Ashortcode_slug = 'course_content'; $this->block_slug = 'ld-course-content'; $this->block_attributes = array( 'course_id' => array( 'type' => 'string', ), 'per_page' => array( 'type' => 'string', ), 'preview_show' => array( 'type' => 'boolean', ), 'preview_course_id' => array( 'type' => 'string', ), 'example_show' => array( 'type' => 'boolean', ), 'meta' => array( 'type' => 'object', ), ); $this->self_closing = true; $this->init(); } /** * Render Block * * This function is called per the register_block_type() function above. This function will output * the block rendered content. In the case of this function the rendered output will be for the * [ld_profile] shortcode. * * @since 2.5.9 * * @param array $attributes Shortcode attrbutes. * @return none The output is echoed. */ public function render_block( $attributes = array() ) { $attributes_meta = array(); if ( isset( $attributes['meta'] ) ) { $attributes_meta = $attributes['meta']; unset( $attributes['meta'] ); } if ( is_user_logged_in() ) { if ( ( isset( $attributes['example_show'] ) ) && ( ! empty( $attributes['example_show'] ) ) ) { $attributes['preview_course_id'] = $this->get_example_post_id( learndash_get_post_type_slug( 'course' ) ); $attributes['preview_show'] = 1; unset( $attributes['example_show'] ); } if ( ( isset( $attributes['preview_show'] ) ) && ( ! empty( $attributes['preview_show'] ) ) ) { if ( ( isset( $attributes['preview_course_id'] ) ) && ( ! empty( $attributes['preview_course_id'] ) ) ) { $attributes['course_id'] = absint( $attributes['preview_course_id'] ); } } if ( ( ! isset( $attributes['course_id'] ) ) || ( empty( $attributes['course_id'] ) ) ) { if ( ( ! isset( $attributes_meta['course_id'] ) ) || ( empty( $attributes_meta['course_id'] ) ) ) { return $this->render_block_wrap( '' . sprintf( // translators: placeholder: Course, Course. _x( '%1$s ID is required when not used within a %2$s.', 'placeholder: Course, Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ), LearnDash_Custom_Label::get_label( 'course' ) ) . '' ); } else { $attributes['course_id'] = (int) $attributes_meta['course_id']; } } else { $course_post = get_post( (int) $attributes['course_id'] ); if ( ( ! is_a( $course_post, 'WP_Post' ) ) || ( 'sfwd-courses' !== $course_post->post_type ) ) { return $this->render_block_wrap( '' . sprintf( // translators: placeholder: Course. _x( 'Invalid %1$s ID.', 'placeholder: Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ) . '' ); } } $shortcode_params_str = ''; foreach ( $attributes as $key => $val ) { if ( ( empty( $key ) ) || ( is_null( $val ) ) ) { continue; } if ( 'per_page' === $key ) { $key = 'num'; } if ( ! empty( $shortcode_params_str ) ) { $shortcode_params_str .= ' '; } $shortcode_params_str .= $key . '="' . esc_attr( $val ) . '"'; } $shortcode_params_str = '[' . $this->shortcode_slug . ' ' . $shortcode_params_str . ']'; $shortcode_out = do_shortcode( $shortcode_params_str ); return $this->render_block_wrap( $shortcode_out ); } wp_die(); } /** * Called from the LD function learndash_convert_block_markers_shortcode() when parsing the block content. * * @since 2.5.9 * * @param array $attributes The array of attributes parse from the block content. * @param string $shortcode_slug This will match the related LD shortcode ld_profile, ld_course_list, etc. * @param string $block_slug This is the block token being processed. Normally same as the shortcode but underscore replaced with dash. * @param string $content This is the orignal full content being parsed. * * @return array $attributes. */ public function learndash_block_markers_shortcode_atts_filter( $attributes = array(), $shortcode_slug = '', $block_slug = '', $content = '' ) { if ( $shortcode_slug === $this->shortcode_slug ) { if ( isset( $attributes['preview_show'] ) ) { unset( $attributes['preview_show'] ); } if ( isset( $attributes['preview_user_id'] ) ) { unset( $attributes['preview_user_id'] ); } if ( isset( $attributes['per_page'] ) ) { if ( ! isset( $attributes['num'] ) ) { $attributes['num'] = $attributes['per_page']; } } } return $attributes; } // End of functions. } } new LearnDash_Gutenberg_Block_Course_Content(); PKc\`>% 3 30includes/gutenberg/blocks/ld-topic-list/index.jsnuW+A/** * LearnDash Block ld-topic-list * * @since 2.5.9 * @package LearnDash */ /** * LearnDash block functions */ import { ldlms_get_custom_label, ldlms_get_per_page, } from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InspectorControls, } = wp.editor; const { ServerSideRender, PanelBody, RangeControl, SelectControl, ToggleControl, TextControl } = wp.components; registerBlockType( 'learndash/ld-topic-list', { title: sprintf(_x('LearnDash %s List', 'placeholder: Topic', 'learndash'), ldlms_get_custom_label('topic')), description: sprintf(_x('This block shows a list of %s.', 'placeholders: topics', 'learndash'), ldlms_get_custom_label('topics')), icon: 'list-view', category: 'learndash-blocks', example: { attributes: { example_show: 1, }, }, supports: { customClassName: false, }, attributes: { orderby: { type: 'string', default: 'ID' }, order: { type: 'string', default: 'DESC' }, per_page: { type: 'string', default: '', }, course_id: { type: 'string', default: '' }, lesson_id: { type: 'string', default: '' }, show_content: { type: 'boolean', default: true }, show_thumbnail: { type: 'boolean', default: true }, topic_category_name: { type: 'string', default: '' }, topic_cat: { type: 'string', default: '' }, topic_categoryselector: { type: 'boolean', default: false }, topic_tag: { type: 'string', default: '' }, topic_tag_id: { type: 'string', default: '' }, category_name: { type: 'string', default: '' }, cat: { type: 'string', default: '' }, categoryselector: { type: 'boolean', default: false }, tag: { type: 'string', default: '' }, tag_id: { type: 'string', default: '' }, course_grid: { type: 'boolean', }, col: { type: 'string', default: (ldlms_settings['plugins']['learndash-course-grid']['enabled']['col_default'] || 3), }, preview_show: { type: 'boolean', default: true }, example_show: { type: 'boolean', default: 0 }, }, edit: function (props) { const { attributes: { orderby, order, per_page, course_id, lesson_id, show_content, show_thumbnail, topic_category_name, topic_cat, topic_categoryselector, topic_tag, topic_tag_id, category_name, cat, categoryselector, tag, tag_id, course_grid, col, preview_show, example_show }, setAttributes } = props; let field_show_content = ''; let field_show_thumbnail = ''; let panel_topic_grid_section = ''; let course_grid_default = true; if (ldlms_settings['plugins']['learndash-course-grid']['enabled'] === true) { if ((typeof course_grid !== 'undefined') && ((course_grid == true) || (course_grid == false))) { course_grid_default = course_grid; } let topic_grid_section_open = false; if (course_grid_default == true) { topic_grid_section_open = true; } panel_topic_grid_section = ( setAttributes({ course_grid })} /> setAttributes({ col })} /> ); } field_show_content = ( setAttributes({ show_content })} /> ); field_show_thumbnail = ( setAttributes({ show_thumbnail })} /> ); const panelbody_header = ( setAttributes({ course_id })} /> setAttributes({ lesson_id })} /> setAttributes({ orderby })} /> setAttributes({ order })} /> setAttributes({ per_page })} /> {field_show_content} {field_show_thumbnail} ); let panel_topic_category_section = ''; if (ldlms_settings['settings']['topics_taxonomies']['ld_topic_category'] === 'yes') { let panel_topic_category_section_open = false; if ((topic_category_name != '') || (topic_cat != '')) { panel_topic_category_section_open = true; } panel_topic_category_section = ( setAttributes({ topic_category_name })} /> setAttributes({ topic_cat })} /> setAttributes({ topic_categoryselector })} /> ); } let panel_topic_tag_section = ''; if (ldlms_settings['settings']['topics_taxonomies']['ld_topic_tag'] === 'yes') { let panel_topic_tag_section_open = false; if ((topic_tag != '') || (topic_tag_id != '')) { panel_topic_tag_section_open = true; } panel_topic_tag_section = ( setAttributes({ topic_tag })} /> setAttributes({ topic_tag_id })} /> ); } let panel_wp_category_section = ''; if (ldlms_settings['settings']['topics_taxonomies']['wp_post_category'] === 'yes') { let panel_wp_category_section_open = false; if ((category_name != '') || (cat != '')) { panel_wp_category_section_open = true; } panel_wp_category_section = ( setAttributes({ category_name })} /> setAttributes({ cat })} /> setAttributes({ categoryselector })} /> ); } let panel_wp_tag_section = ''; if (ldlms_settings['settings']['topics_taxonomies']['wp_post_tag'] === 'yes') { let panel_wp_tag_section_open = false; if ((tag != '') || (tag_id != '')) { panel_wp_tag_section_open = true; } panel_wp_tag_section = ( setAttributes({ tag })} /> setAttributes({ tag_id })} /> ); } const panel_preview = ( setAttributes({ preview_show })} /> ); const inspectorControls = ( {panelbody_header} {panel_topic_grid_section} {panel_topic_category_section} {panel_topic_tag_section} {panel_wp_category_section} {panel_wp_tag_section} {panel_preview} ); function do_serverside_render(attributes) { if (attributes.preview_show == true) { return } else { return __('[ld_topic_list] shortcode output shown here', 'learndash'); } } return [ inspectorControls, do_serverside_render(props.attributes) ]; }, save: props => { } }, ); PKc\է1includes/gutenberg/blocks/ld-topic-list/index.phpnuW+Ashortcode_slug = 'ld_topic_list'; $this->block_slug = 'ld-topic-list'; $this->block_attributes = array( 'orderby' => array( 'type' => 'string', ), 'order' => array( 'type' => 'string', ), 'per_page' => array( 'type' => 'string', ), 'course_id' => array( 'type' => 'string', ), 'lesson_id' => array( 'type' => 'string', ), 'show_content' => array( 'type' => 'boolean', ), 'show_thumbnail' => array( 'type' => 'boolean', ), 'topic_category_name' => array( 'type' => 'string', ), 'topic_cat' => array( 'type' => 'string', ), 'topic_categoryselector' => array( 'type' => 'boolean', ), 'topic_tag' => array( 'type' => 'string', ), 'topic_tag_id' => array( 'type' => 'string', ), 'category_name' => array( 'type' => 'string', ), 'cat' => array( 'type' => 'string', ), 'categoryselector' => array( 'type' => 'boolean', ), 'tag' => array( 'type' => 'string', ), 'tag_id' => array( 'type' => 'string', ), 'preview_show' => array( 'type' => 'boolean', ), 'course_grid' => array( 'type' => 'boolean', ), 'col' => array( 'type' => 'string', ), 'example_show' => array( 'type' => 'boolean', ), ); $this->self_closing = true; $this->init(); } /** * Render Block * * This function is called per the register_block_type() function above. This function will output * the block rendered content. In the case of this function the rendered output will be for the * [ld_profile] shortcode. * * @since 2.5.9 * * @param array $attributes Shortcode attrbutes. * @return none The output is echoed. */ public function render_block( $attributes = array() ) { if ( is_user_logged_in() ) { $attributes = apply_filters( 'learndash_block_markers_shortcode_atts', $attributes, $this->shortcode_slug, $this->block_slug, '' ); $shortcode_params_str = $this->prepare_course_list_atts_to_param( $attributes ); $shortcode_params_str = '[' . $this->shortcode_slug . ' ' . $shortcode_params_str . ']'; $shortcode_out = do_shortcode( $shortcode_params_str ); // This is mainly to protect against emty returns with the Gutenberg ServerSideRender function. return $this->render_block_wrap( $shortcode_out ); } wp_die(); } /** * Called from the LD function learndash_convert_block_markers_shortcode() when parsing the block content. * * @since 2.5.9 * * @param array $attributes The array of attributes parse from the block content. * @param string $shortcode_slug This will match the related LD shortcode ld_profile, ld_course_list, etc. * @param string $block_slug This is the block token being processed. Normally same as the shortcode but underscore replaced with dash. * @param string $content This is the orignal full content being parsed. * * @return array $attributes. */ public function learndash_block_markers_shortcode_atts_filter( $attributes = array(), $shortcode_slug = '', $block_slug = '', $content = '' ) { if ( $shortcode_slug === $this->shortcode_slug ) { if ( isset( $attributes['preview_show'] ) ) { unset( $attributes['preview_show'] ); } if ( isset( $attributes['preview_user_id'] ) ) { unset( $attributes['preview_user_id'] ); } if ( isset( $attributes['per_page'] ) ) { if ( ! isset( $attributes['num'] ) ) { $attributes['num'] = $attributes['per_page']; unset( $attributes['per_page'] ); } } if ( ( ! isset( $attributes['topic_categoryselector'] ) ) || ( true === $attributes['topic_categoryselector'] ) ) { $attributes['topic_categoryselector'] = 'true'; } if ( ( isset( $attributes['categoryselector'] ) ) && ( true === $attributes['categoryselector'] ) ) { $attributes['categoryselector'] = 'true'; } if ( ( ! isset( $attributes['course_grid'] ) ) || ( true === $attributes['course_grid'] ) ) { $attributes['course_grid'] = 'true'; } /** * Not the best place to make this call this but we need to load the * Course Grid resources. */ if ( 'true' === $attributes['course_grid'] ) { learndash_enqueue_course_grid_scripts(); } } return $attributes; } // End of functions. } } new LearnDash_Gutenberg_Block_Topic_List(); PKc\7includes/gutenberg/blocks/ld-course-notstarted/index.jsnuW+A/** * LearnDash Block ld-course-notstarted * * @since 2.5.9 * @package LearnDash */ /** * LearnDash block functions */ import { ldlms_get_post_edit_meta, ldlms_get_custom_label, ldlms_get_integer_value } from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InnerBlocks, InspectorControls, } = wp.editor; const { PanelBody, TextControl, ToggleControl } = wp.components; registerBlockType( 'learndash/ld-course-notstarted', { title: sprintf(_x('LearnDash %s Not Started', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('course') ), description: sprintf(_x('This block shows the content if the user is enrolled into the %s but not yet started.', 'placeholders: course', 'learndash'), ldlms_get_custom_label('course') ), icon: 'star-empty', category: 'learndash-blocks', supports: { customClassName: false, }, attributes: { course_id: { type: 'string', default: '', }, user_id: { type: 'string', default: '', }, autop: { type: 'boolean', default: true }, }, edit: props => { const { attributes: { course_id, user_id, autop }, className, setAttributes } = props; const inspectorControls = ( setAttributes({ course_id })} /> setAttributes({ user_id })} /> setAttributes({ autop })} /> ); let ld_block_error_message = ''; let preview_course_id = ldlms_get_integer_value(course_id); if (preview_course_id === 0) { preview_course_id = ldlms_get_post_edit_meta('course_id'); preview_course_id = ldlms_get_integer_value(preview_course_id); if (preview_course_id == 0) { ld_block_error_message = sprintf(_x('%1$s ID is required when not used within a %2$s.', 'placeholders: Course, Course', 'learndash'), ldlms_get_custom_label('course'), ldlms_get_custom_label('course')); } } if (ld_block_error_message.length) { ld_block_error_message = ({ld_block_error_message}); } const outputBlock = (
      {ld_block_error_message}
      ); return [ inspectorControls, outputBlock ]; }, save: props => { return ( ); } }, ); PKc\r/D8includes/gutenberg/blocks/ld-course-notstarted/index.phpnuW+Ashortcode_slug = 'course_notstarted'; $this->block_slug = 'ld-course-notstarted'; $this->self_closing = false; $this->block_attributes = array( 'course_id' => array( 'type' => 'string', ), 'user_id' => array( 'type' => 'string', ), 'autop' => array( 'type' => 'boolean', ), ); $this->init(); } } } new LearnDash_Gutenberg_Block_Course_Not_Started(); PKc\gX5includes/gutenberg/blocks/ld-course-complete/index.jsnuW+A/** * LearnDash Block ld-course-complete * * @since 2.5.9 * @package LearnDash */ /** * LearnDash block functions */ import { ldlms_get_post_edit_meta, ldlms_get_custom_label, ldlms_get_integer_value } from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InnerBlocks, InspectorControls, } = wp.editor; const { PanelBody, TextControl, ToggleControl } = wp.components; registerBlockType( 'learndash/ld-course-complete', { title: sprintf(_x('LearnDash %s Complete', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('course') ), description: sprintf(_x('This block shows the content if the user is enrolled into the %s and it is completed.', 'placeholders: course', 'learndash'), ldlms_get_custom_label('course') ), icon: 'star-filled', category: 'learndash-blocks', supports: { customClassName: false, }, attributes: { course_id: { type: 'string', default: '', }, user_id: { type: 'string', default: '', }, autop: { type: 'boolean', default: true }, }, edit: props => { const { attributes: { course_id, user_id, autop }, className, setAttributes } = props; const inspectorControls = ( setAttributes( { course_id } ) } /> setAttributes( { user_id } ) } /> setAttributes({ autop })} /> ); let ld_block_error_message = ''; let preview_course_id = ldlms_get_integer_value( course_id ); if (preview_course_id === 0) { preview_course_id = ldlms_get_post_edit_meta('course_id'); preview_course_id = ldlms_get_integer_value( preview_course_id ); if (preview_course_id == 0) { ld_block_error_message = sprintf(_x('%1$s ID is required when not used within a %2$s.', 'placeholders: Course, Course', 'learndash'), ldlms_get_custom_label('course'), ldlms_get_custom_label('course') ); } } if (ld_block_error_message.length) { ld_block_error_message = ({ld_block_error_message}); } const outputBlock = (
      {ld_block_error_message}
      ); return [ inspectorControls, outputBlock ]; }, save: props => { return ( ); } }, ); PKc\i$6includes/gutenberg/blocks/ld-course-complete/index.phpnuW+Ashortcode_slug = 'course_complete'; $this->block_slug = 'ld-course-complete'; $this->block_attributes = array( 'course_id' => array( 'type' => 'string', ), 'user_id' => array( 'type' => 'string', ), 'autop' => array( 'type' => 'boolean', ), ); $this->self_closing = false; $this->init(); } } } new LearnDash_Gutenberg_Block_Course_Complete(); PKc\`;L8L81includes/gutenberg/blocks/ld-course-list/index.jsnuW+A/** * LearnDash Block ld-course-list * * @since 2.5.9 * @package LearnDash */ /** * LearnDash block functions */ import { ldlms_get_custom_label, ldlms_get_per_page, } from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InspectorControls, } = wp.editor; const { ServerSideRender, PanelBody, RangeControl, SelectControl, ToggleControl, TextControl } = wp.components; registerBlockType( 'learndash/ld-course-list', { title: sprintf(_x('LearnDash %s List', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('course')), description: sprintf(_x('This block shows a list of %s.', 'placeholders: courses', 'learndash'), ldlms_get_custom_label('courses') ), icon: 'list-view', category: 'learndash-blocks', example: { attributes: { example_show: 1, }, }, supports: { customClassName: false, }, attributes: { orderby: { type: 'string', default: 'ID' }, order: { type: 'string', default: 'DESC' }, per_page: { type: 'string', default: '', }, mycourses: { type: 'string', default: '' }, status: { type: 'array', default: ['not_started', 'in_progress', 'completed'], }, show_content: { type: 'boolean', default: true }, show_thumbnail: { type: 'boolean', default: true }, course_category_name: { type: 'string', default: '' }, course_cat: { type: 'string', default: '' }, course_categoryselector: { type: 'boolean', default: false }, course_tag: { type: 'string', default: '' }, course_tag_id: { type: 'string', default: '' }, category_name: { type: 'string', default: '' }, cat: { type: 'string', default: '' }, categoryselector: { type: 'boolean', default: false }, tag: { type: 'string', default: '' }, tag_id: { type: 'string', default: '' }, course_grid: { type: 'boolean', }, progress_bar: { type: 'boolean', default: false }, col: { type: 'string', default: (ldlms_settings['plugins']['learndash-course-grid']['enabled']['col_default'] || 3), }, preview_show: { type: 'boolean', default: true }, example_show: { type: 'boolean', default: 0 }, }, edit: function( props ) { const { attributes: { orderby, order, per_page, mycourses, status, show_content, show_thumbnail, course_category_name, course_cat, course_categoryselector, course_tag, course_tag_id, category_name, cat, categoryselector, tag, tag_id, course_grid, progress_bar, col, preview_user_id, preview_show, example_show }, setAttributes } = props; let field_show_content = ''; let field_show_thumbnail = ''; let panel_course_grid_section = ''; let course_grid_default = true; if (ldlms_settings['plugins']['learndash-course-grid']['enabled'] === true) { if ((typeof course_grid !== 'undefined') && ((course_grid == true) || (course_grid == false)) ) { course_grid_default = course_grid; } let course_grid_section_open = false; if ( course_grid_default == true ) { course_grid_section_open = true; } panel_course_grid_section = ( setAttributes({ course_grid })} /> setAttributes({ progress_bar })} /> setAttributes({ col })} /> ); } //if (course_grid !== true) { field_show_content = ( setAttributes({ show_content })} /> ); field_show_thumbnail = ( setAttributes({ show_thumbnail })} /> ); //} const panelbody_header = ( setAttributes({ orderby })} /> setAttributes({ order })} /> setAttributes({ per_page })} /> setAttributes({ mycourses })} /> {'enrolled' === mycourses && ( setAttributes({ status })} /> )} {field_show_content} {field_show_thumbnail} ); let panel_course_category_section = ''; if ( ldlms_settings['settings']['courses_taxonomies']['ld_course_category'] === 'yes' ) { let panel_course_category_section_open = false; if ((course_category_name != '') || (course_cat != '')) { panel_course_category_section_open = true; } panel_course_category_section = ( setAttributes({ course_category_name })} /> setAttributes({ course_cat })} /> setAttributes({ course_categoryselector })} /> ); } let panel_course_tag_section = ''; if (ldlms_settings['settings']['courses_taxonomies']['ld_course_tag'] === 'yes') { let panel_course_tag_section_open = false; if ((course_tag != '') || (course_tag_id != '')) { panel_course_tag_section_open = true; } panel_course_tag_section = ( setAttributes({ course_tag })} /> setAttributes({ course_tag_id })} /> ); } let panel_wp_category_section = ''; if (ldlms_settings['settings']['courses_taxonomies']['wp_post_category'] === 'yes') { let panel_wp_category_section_open = false; if ((category_name != '') || (cat != '')) { panel_wp_category_section_open = true; } panel_wp_category_section = ( setAttributes({ category_name })} /> setAttributes({ cat })} /> setAttributes({ categoryselector })} /> ); } let panel_wp_tag_section = ''; if (ldlms_settings['settings']['courses_taxonomies']['wp_post_tag'] === 'yes') { let panel_wp_tag_section_open = false; if ((tag != '') || (tag_id != '')) { panel_wp_tag_section_open = true; } panel_wp_tag_section = ( setAttributes({ tag })} /> setAttributes({ tag_id })} /> ); } const panel_preview = ( setAttributes({ preview_show })} /> setAttributes({ preview_user_id })} /> ); const inspectorControls = ( { panelbody_header } { panel_course_grid_section} { panel_course_category_section } { panel_course_tag_section } { panel_wp_category_section } { panel_wp_tag_section } { panel_preview } ); function do_serverside_render( attributes ) { if ( attributes.preview_show == true ) { return } else { return __( '[ld_course_list] shortcode output shown here', 'learndash' ); } } return [ inspectorControls, do_serverside_render( props.attributes ) ]; }, save: props => { } }, ); PKc\1dX##2includes/gutenberg/blocks/ld-course-list/index.phpnuW+Ashortcode_slug = 'ld_course_list'; $this->block_slug = 'ld-course-list'; $this->block_attributes = array( 'orderby' => array( 'type' => 'string', ), 'order' => array( 'type' => 'string', ), 'per_page' => array( 'type' => 'string', ), 'mycourses' => array( 'type' => 'string', ), 'status' => array( 'type' => 'array', 'items' => array( 'type' => 'string', ), ), 'show_content' => array( 'type' => 'boolean', ), 'show_thumbnail' => array( 'type' => 'boolean', ), 'course_category_name' => array( 'type' => 'string', ), 'course_cat' => array( 'type' => 'string', ), 'course_categoryselector' => array( 'type' => 'boolean', ), 'course_tag' => array( 'type' => 'string', ), 'course_tag_id' => array( 'type' => 'string', ), 'category_name' => array( 'type' => 'string', ), 'cat' => array( 'type' => 'string', ), 'categoryselector' => array( 'type' => 'boolean', ), 'tag' => array( 'type' => 'string', ), 'tag_id' => array( 'type' => 'string', ), 'preview_show' => array( 'type' => 'boolean', ), 'preview_user_id' => array( 'type' => 'string', ), 'course_grid' => array( 'type' => 'boolean', ), 'progress_bar' => array( 'type' => 'boolean', ), 'col' => array( 'type' => 'string', ), 'example_show' => array( 'type' => 'boolean', ), ); $this->self_closing = true; $this->init(); } /** * Render Block * * This function is called per the register_block_type() function above. This function will output * the block rendered content. In the case of this function the rendered output will be for the * [ld_profile] shortcode. * * @since 2.5.9 * * @param array $attributes Shortcode attrbutes. * @return none The output is echoed. */ public function render_block( $attributes = array() ) { if ( is_user_logged_in() ) { $attributes = apply_filters( 'learndash_block_markers_shortcode_atts', $attributes, $this->shortcode_slug, $this->block_slug, '' ); $shortcode_params_str = $this->prepare_course_list_atts_to_param( $attributes ); $shortcode_params_str = '[' . $this->shortcode_slug . ' ' . $shortcode_params_str . ']'; $shortcode_out = do_shortcode( $shortcode_params_str ); // This is mainly to protect against emty returns with the Gutenberg ServerSideRender function. return $this->render_block_wrap( $shortcode_out ); } wp_die(); } /** * Called from the LD function learndash_convert_block_markers_shortcode() when parsing the block content. * * @since 2.5.9 * * @param array $attributes The array of attributes parse from the block content. * @param string $shortcode_slug This will match the related LD shortcode ld_profile, ld_course_list, etc. * @param string $block_slug This is the block token being processed. Normally same as the shortcode but underscore replaced with dash. * @param string $content This is the orignal full content being parsed. * * @return array $attributes. */ public function learndash_block_markers_shortcode_atts_filter( $attributes = array(), $shortcode_slug = '', $block_slug = '', $content = '' ) { if ( $shortcode_slug === $this->shortcode_slug ) { if ( isset( $attributes['preview_show'] ) ) { unset( $attributes['preview_show'] ); } if ( isset( $attributes['preview_user_id'] ) ) { unset( $attributes['preview_user_id'] ); } if ( isset( $attributes['per_page'] ) ) { if ( ! isset( $attributes['num'] ) ) { $attributes['num'] = $attributes['per_page']; unset( $attributes['per_page'] ); } } if ( ( ! isset( $attributes['course_grid'] ) ) || ( true === $attributes['course_grid'] ) ) { $attributes['course_grid'] = 'true'; } if ( ( isset( $attributes['course_categoryselector'] ) ) && ( true === $attributes['course_categoryselector'] ) ) { $attributes['course_categoryselector'] = 'true'; } if ( ( isset( $attributes['categoryselector'] ) ) && ( true === $attributes['categoryselector'] ) ) { $attributes['categoryselector'] = 'true'; } /** * Not the best place to make this call this but we need to load the * Course Grid resources. */ if ( 'true' === $attributes['course_grid'] ) { learndash_enqueue_course_grid_scripts(); } if ( ( isset( $attributes['progress_bar'] ) ) && ( true === $attributes['progress_bar'] ) ) { $attributes['progress_bar'] = 'true'; } } return $attributes; } // End of functions. } } new LearnDash_Gutenberg_Block_Course_List(); PKc\@yU"includes/gutenberg/blocks/index.jsnuW+A//import './i18n.js'; /** * Import LearnDash blocks */ import './ld-login'; import './ld-profile'; import './ld-course-list'; import './ld-lesson-list'; import './ld-topic-list'; import './ld-quiz-list'; import './ld-course-progress'; import './ld-visitor'; import './ld-student'; import './ld-course-complete'; import './ld-course-inprogress'; import './ld-course-notstarted'; import './ld-course-resume'; import './ld-course-info'; import './ld-user-course-points'; import './ld-user-groups'; import './ld-group'; import './ld-payment-buttons'; import './ld-course-content'; import './ld-course-expire-status'; import './ld-certificate'; import './ld-quiz-complete'; import './ld-courseinfo'; import './ld-usermeta'; PKc\L!!%includes/gutenberg/blocks/frontend.jsnuW+A// Nothing to see here for now. PKc\agk8includes/gutenberg/blocks/ld-course-inprogress/index.phpnuW+Ashortcode_slug = 'course_inprogress'; $this->block_slug = 'ld-course-inprogress'; $this->self_closing = false; $this->block_attributes = array( 'course_id' => array( 'type' => 'string', ), 'user_id' => array( 'type' => 'string', ), 'autop' => array( 'type' => 'boolean', ), ); $this->init(); } } } new LearnDash_Gutenberg_Block_Course_In_Progress(); PKc\PEyy7includes/gutenberg/blocks/ld-course-inprogress/index.jsnuW+A/** * LearnDash Block ld-course-inprogress * * @since 2.5.9 * @package LearnDash */ /** * LearnDash block functions */ import { ldlms_get_post_edit_meta, ldlms_get_custom_label, ldlms_get_integer_value } from '../ldlms.js'; /** * Internal block libraries */ const { __, _x, sprintf } = wp.i18n; const { registerBlockType, } = wp.blocks; const { InnerBlocks, InspectorControls, } = wp.editor; const { PanelBody, TextControl, ToggleControl } = wp.components; registerBlockType( 'learndash/ld-course-inprogress', { title: sprintf(_x('LearnDash %s In Progress', 'placeholder: Course', 'learndash'), ldlms_get_custom_label('course') ), description: sprintf(_x('This block shows the content if the user is enrolled into the %s but not yet completed.', 'placeholder: course', 'learndash'), ldlms_get_custom_label('course') ), icon: 'star-half', category: 'learndash-blocks', supports: { customClassName: false, }, attributes: { course_id: { type: 'string', default: '', }, user_id: { type: 'string', default: '', }, autop: { type: 'boolean', default: true }, }, edit: props => { const { attributes: { course_id, user_id, autop }, className, setAttributes } = props; const inspectorControls = ( setAttributes({ course_id })} /> setAttributes({ user_id })} /> setAttributes({ autop })} /> ); let ld_block_error_message = ''; let preview_course_id = ldlms_get_integer_value(course_id); if (preview_course_id === 0) { preview_course_id = ldlms_get_post_edit_meta('course_id'); preview_course_id = ldlms_get_integer_value(preview_course_id); if (preview_course_id == 0) { ld_block_error_message = sprintf(_x('%1$s ID is required when not used within a %2$s.', 'placeholders: Course, Course', 'learndash'), ldlms_get_custom_label('course'), ldlms_get_custom_label('course')); } } if (ld_block_error_message.length) { ld_block_error_message = ({ld_block_error_message}); } const outputBlock = (
      {ld_block_error_message}
      ); return [ inspectorControls, outputBlock ]; }, save: props => { return ( ); } }, ); PKc\_&&*includes/gutenberg/lib/enqueue-scripts.phpnuW+A array(), ); //$ldlms_settings['settings']['custom_labels'] = get_option( 'learndash_settings_custom_labels' ); $ldlms_settings['settings']['custom_labels'] = LearnDash_Settings_Section_Custom_Labels::get_section_settings_all(); if ( ( is_array( $ldlms_settings['settings']['custom_labels'] ) ) && ( ! empty( $ldlms_settings['settings']['custom_labels'] ) ) ) { foreach ( $ldlms_settings['settings']['custom_labels'] as $key => $val ) { if ( empty( $val ) ) { $ldlms_settings['settings']['custom_labels'][ $key ] = LearnDash_Custom_Label::get_label( $key ); if ( substr( $key, 0, strlen( 'button') ) != 'button' ) { $ldlms_settings['settings']['custom_labels'][ $key . '_lower' ] = learndash_get_custom_label_lower( $key ); $ldlms_settings['settings']['custom_labels'][ $key . '_slug' ] = learndash_get_custom_label_slug( $key ); } } } } //$ldlms_settings['settings']['per_page'] = get_option( 'learndash_settings_per_page' ); $ldlms_settings['settings']['per_page'] = LearnDash_Settings_Section_General_Per_Page::get_section_settings_all(); //$ldlms_settings['settings']['courses_taxonomies'] = get_option( 'learndash_settings_courses_taxonomies' ); $ldlms_settings['settings']['courses_taxonomies'] = LearnDash_Settings_Courses_Taxonomies::get_section_settings_all(); //$ldlms_settings['settings']['lessons_taxonomies'] = get_option( 'learndash_settings_lessons_taxonomies' ); $ldlms_settings['settings']['lessons_taxonomies'] = LearnDash_Settings_Lessons_Taxonomies::get_section_settings_all(); //$ldlms_settings['settings']['topics_taxonomies'] = get_option( 'learndash_settings_topics_taxonomies' ); $ldlms_settings['settings']['topics_taxonomies'] = LearnDash_Settings_Topics_Taxonomies::get_section_settings_all(); //$ldlms_settings['settings']['quizzes_taxonomies'] = get_option( 'learndash_settings_quizzes_taxonomies' ); /* $ldlms_settings['settings']['quizzes_taxonomies'] = array(); $object_taxonomies = get_object_taxonomies( 'sfwd-quiz' ); if ( ( !empty( $object_taxonomies ) ) && ( is_array( $object_taxonomies ) ) ) { if ( in_array( 'category', $object_taxonomies ) ) { $ldlms_settings['settings']['quizzes_taxonomies']['wp_post_category'] = 'yes'; } if ( in_array( 'post_tag', $object_taxonomies ) ) { $ldlms_settings['settings']['quizzes_taxonomies']['wp_post_tag'] = 'yes'; } } */ $ldlms_settings['settings']['quizzes_taxonomies'] = LearnDash_Settings_Quizzes_Taxonomies::get_section_settings_all(); $ldlms_settings['plugins']['learndash-course-grid'] = array(); $ldlms_settings['plugins']['learndash-course-grid']['enabled'] = learndash_enqueue_course_grid_scripts(); $ldlms_settings['plugins']['learndash-course-grid']['col_default'] = 3; $ldlms_settings['plugins']['learndash-course-grid']['col_max'] = 12; if ( true === $ldlms_settings['plugins']['learndash-course-grid']['enabled'] ) { if ( defined( 'LEARNDASH_COURSE_GRID_COLUMNS' ) ) { $col_default = intval( LEARNDASH_COURSE_GRID_COLUMNS ); if ( ( ! empty( $col_default ) ) && ( $col_default > 0 ) ) { $ldlms_settings['plugins']['learndash-course-grid']['col_default'] = $col_default; } } if ( defined( 'LEARNDASH_COURSE_GRID_MAX_COLUMNS' ) ) { $col_max = intval( LEARNDASH_COURSE_GRID_MAX_COLUMNS ); if ( ( ! empty( $col_max ) ) && ( $col_max > 0 ) ) { $ldlms_settings['plugins']['learndash-course-grid']['col_max'] = $col_max; } } } $ldlms_settings['meta'] = array(); $ldlms_settings['meta']['posts_per_page'] = get_option( 'posts_per_page' ); if ( is_admin() ) { $current_screen = get_current_screen(); if ( 'post' === $current_screen->base ) { global $post, $post_type, $editing; $ldlms_settings['meta']['post'] = array(); $ldlms_settings['meta']['post']['post_id'] = $post->ID; $ldlms_settings['meta']['post']['post_type'] = $post_type; $ldlms_settings['meta']['post']['editing'] = $editing; $ldlms_settings['meta']['post']['course_id'] = 0; if ( ! empty( $post_type ) ) { $course_post_types = array( 'sfwd-courses', 'sfwd-lessons', 'sfwd-topic', 'sfwd-quiz' ); $course_id = 0; if ( 'sfwd-courses' === $post_type ) { $course_id = $post->ID; } else if ( in_array( $post_type, $course_post_types ) ) { $course_id = learndash_get_course_id(); } $ldlms_settings['meta']['post']['course_id'] = $course_id; } } } // Load the MO file translations into wp.i18n script hook. learndash_load_inline_script_locale_data(); //error_log('ldlms_settings
      '. print_r($ldlms_settings, true) .'
      '); wp_localize_script( 'ldlms-blocks-js', 'ldlms_settings', $ldlms_settings ); // Enqueue optional editor only styles. wp_enqueue_style( 'ldlms-blocks-editor-css', plugins_url( $editorStylePath, __FILE__ ), [], //filemtime( plugin_dir_path( __FILE__ ) . $editorStylePath ) LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'ldlms-blocks-editor-css', 'rtl', 'replace' ); // Call our function to load CSS/JS used by the shortcodes. learndash_load_resources(); $filepath = SFWD_LMS::get_template( 'learndash_pager.css', null, null, true ); if ( ! empty( $filepath ) ) { wp_enqueue_style( 'learndash_pager_css', learndash_template_url_from_path( $filepath ), array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'learndash_pager_css', 'rtl', 'replace' ); $learndash_assets_loaded['styles']['learndash_pager_css'] = __FUNCTION__; } $filepath = SFWD_LMS::get_template( 'learndash_pager.js', null, null, true ); if ( !empty( $filepath ) ) { wp_enqueue_script( 'learndash_pager_js', learndash_template_url_from_path( $filepath ), array( 'jquery' ), LEARNDASH_SCRIPT_VERSION_TOKEN, true ); $learndash_assets_loaded['scripts']['learndash_pager_js'] = __FUNCTION__; } } // Hook scripts function into block editor hook. add_action( 'enqueue_block_editor_assets', 'learndash_editor_scripts' ); /** * Enqueue front end and editor JavaScript and CSS */ function learndash_scripts() { // Make paths variables so we don't write em twice ;) $blockPath = '../assets/js/frontend.blocks.js'; $stylePath = '../assets/css/blocks.style.css'; if ( ! is_admin() ) { // Enqueue the bundled block JS file. wp_enqueue_script( 'ldlms-blocks-frontend', plugins_url( $blockPath, __FILE__ ), [], //filemtime( plugin_dir_path(__FILE__) . $blockPath ) LEARNDASH_SCRIPT_VERSION_TOKEN ); } // Enqueue frontend and editor block styles wp_enqueue_style( 'learndash-blocks', plugins_url($stylePath, __FILE__), [], //filemtime(plugin_dir_path(__FILE__) . $stylePath ) LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'learndash-blocks', 'rtl', 'replace' ); } // Hook scripts function into block editor hook. add_action( 'enqueue_block_assets', 'learndash_scripts' ); /** * Custom function to enqueue needed CSS/JS for Course Grid. * * @since 2.5.9 * * @return boolean true is resources loaded. false is not loaded. */ function learndash_enqueue_course_grid_scripts() { // Check if Course Grid add-on is installed. if ( ( defined( 'LEARNDASH_COURSE_GRID_FILE' ) ) && ( file_exists( LEARNDASH_COURSE_GRID_FILE ) ) ) { // Newer versions of Coure Grid have a function to load resources. if ( function_exists( 'learndash_course_grid_load_resources' ) ) { learndash_course_grid_load_resources(); } else { // Handle older versions of Course Grid. 1.4.1 and lower. wp_enqueue_style( 'learndash_course_grid_css', plugins_url( 'style.css', LEARNDASH_COURSE_GRID_FILE ) ); wp_style_add_data( 'learndash_course_grid_css', 'rtl', 'replace' ); wp_enqueue_script( 'learndash_course_grid_js', plugins_url( 'script.js', LEARNDASH_COURSE_GRID_FILE ), array( 'jquery' ) ); wp_enqueue_style( 'ld-cga-bootstrap', plugins_url( 'bootstrap.min.css', LEARNDASH_COURSE_GRID_FILE ) ); wp_style_add_data( 'ld-cga-bootstrap', 'rtl', 'replace' ); } return true; } return false; } /** * Register custom block category. * * @since 2.6.0 * @param array $block_categories Array of current block categories. * @param object $post WP_Post instance of post being edited. * @return array $block_categories. */ function learndash_block_categories( $block_categories = array(), $post = false ) { $ld_block_cat_found = false; foreach( $block_categories as $block_cat ) { if ( ( isset( $block_cat['slug'] ) ) && ( $block_cat['slug'] == 'learndash-blocks' ) ) { $ld_block_cat_found = true; } } if ( false === $ld_block_cat_found ) { if ( ( $post ) && ( is_a( $post, 'WP_Post' ) ) ) { if ( in_array( $post->post_type, LDLMS_Post_Types::get_post_types() ) ) { $block_categories = array_merge( array( array( 'slug' => 'learndash-blocks', 'title' => esc_html__( 'LearnDash LMS Blocks', 'learndash' ), 'icon' => false, ), ), $block_categories ); } else { $block_categories[] = array( 'slug' => 'learndash-blocks', 'title' => esc_html__( 'LearnDash LMS Blocks', 'learndash' ), 'icon' => false, ); } } } // Always return $default_block_categories. return $block_categories; } add_filter( 'block_categories', 'learndash_block_categories', 30, 2 ); PKc\~ Cincludes/gutenberg/lib/class-ld-rest-gutenberg-posts-controller.phpnuW+Aget_item_schema(); $get_item_args = array( 'context' => $this->get_context_param( array( 'default' => 'view' ) ), ); if ( isset( $schema['properties']['password'] ) ) { $get_item_args['password'] = array( 'description' => __( 'The password for the post if it is password protected.', 'learndash' ), 'type' => 'string', ); } register_rest_route( $namespace, '/' . $this->post_type . '/(?P[\d]+)', array( 'args' => array( 'id' => array( 'description' => __( 'Unique identifier for the object.', 'learndash' ), 'type' => 'integer', ), ), array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_item' ), 'permission_callback' => array( $this, 'get_item_permissions_check' ), 'args' => $get_item_args, ), array( 'methods' => WP_REST_Server::EDITABLE, 'callback' => array( $this, 'update_item' ), 'permission_callback' => array( $this, 'update_item_permissions_check' ), 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), ), array( 'methods' => WP_REST_Server::DELETABLE, 'callback' => array( $this, 'delete_item' ), 'permission_callback' => array( $this, 'delete_item_permissions_check' ), 'args' => array( 'force' => array( 'type' => 'boolean', 'default' => false, 'description' => __( 'Whether to bypass trash and force deletion.', 'learndash' ), ), ), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); } // End of functions } } PKc\Oi99:includes/gutenberg/lib/class-learndash-gutenberg-block.phpnuW+Ablock_base . '/' . $this->block_slug, array( 'render_callback' => array( $this, 'render_block' ), 'attributes' => $this->block_attributes, ) ); } /** * Hook into 'the_content' WP filter and parse out our block. We want to convert eh Gutenber Block notation to a normal LD shortcode. * Called at high priority BEFORE do_shortcode() and do_blocks(). * * @since 2.5.9 * * @param string $content The post content containg all the inline HTML and blocks. * @return string $content. */ public function the_content_filter( $content = '' ) { if ( ( is_admin() ) && ( ( isset( $_REQUEST['post'] ) ) && ( ! empty( $_REQUEST['post'] ) ) ) && ( ( isset( $_REQUEST['action'] ) ) && ( 'edit' === $_REQUEST['action'] ) ) ) { return $content; } if ( ! empty( $content ) ) { $content = $this->convert_block_markers_to_shortcode( $content, $this->block_slug, $this->shortcode_slug, $this->self_closing ); } return $content; } /** * Render Block * * This function is called per the register_block_type() function above. This function will output * the block rendered content. This is called from within the admin edit post type page via an * AJAX-type call to the server. * * Each sub-subclassed instance should provide its own version of this function. * * @since 2.5.9 * * @param array $attributes Shortcode attrbutes. * @return void The output is echoed. */ public function render_block( $attributes = array() ) { return; wp_die(); } /** * Add wrapper content around content to be returned to server. * * @since 2.5.9 * * @param string $content Content text to be wrapper. * @param boolean $with_inner Flag to control inclusion of inner block div element. * * @return string wrapped content. */ public function render_block_wrap( $content = '', $with_inner = true ) { $return_content = ''; $return_content .= ''; if ( true === $with_inner ) { $return_content .= '
      '; } $return_content .= $content; if ( true === $with_inner ) { $return_content .= '
      '; } $return_content .= ''; return $return_content; } /** * Utility function to parse the WP Block content looking for specific token patterns. * * @since 2.6 * * @param string $content Full page/post content to be searched. * @param string $block_slug This is the block token pattern to search for. Ex: ld-user-meta, ld-visitor, ld-profile. * @param string $shortcode_slug This is the actual shortcode token to be used. * @param boolean $self_closing true if not an innerblock. * @return string $content */ public function convert_block_markers_to_shortcode( $content = '', $block_slug = '', $shortcode_slug = '', $self_closing = false ) { if ( ( ! empty( $content ) ) && ( ! empty( $block_slug ) ) && ( ! empty( $shortcode_slug ) ) ) { $pattern_atts_array = array(); if ( true === $self_closing ) { preg_match_all( '##is', $content, $ar ); if ( ( isset( $ar[0] ) ) && ( is_array( $ar[0] ) ) && ( ! empty( $ar[0] ) ) ) { if ( ( isset( $ar[1] ) ) && ( is_array( $ar[1] ) ) && ( ! empty( $ar[1] ) ) ) { foreach ( $ar[1] as $pattern_key => $pattern_atts_json ) { $replacement_text = '[' . $shortcode_slug; if ( ! empty( $pattern_atts_json ) ) { $pattern_atts_array = (array) json_decode( $pattern_atts_json ); $pattern_atts_array = apply_filters( 'learndash_block_markers_shortcode_atts', $pattern_atts_array, $shortcode_slug, $block_slug, $content ); if ( ( is_array( $pattern_atts_array ) ) && ( ! empty( $pattern_atts_array ) ) ) { $shortcode_atts = ''; foreach ( $pattern_atts_array as $attr_key => $attr_value ) { if ( 'meta' === $attr_key ) { continue; } if ( '' !== $attr_value ) { if ( ! empty( $shortcode_atts ) ) { $shortcode_atts .= ' '; } if ( is_array( $attr_value ) ) { $attr_value = implode( ',', $attr_value ); } $shortcode_atts .= $attr_key . '="' . $attr_value . '"'; } } if ( ! empty( $shortcode_atts ) ) { $replacement_text .= ' ' . $shortcode_atts; } } } // If we have built a replacement text then replace it in the main $content. if ( ! empty( $replacement_text ) ) { $replacement_text .= ']'; $content = str_replace( $ar[0][ $pattern_key ], $replacement_text, $content ); $content = apply_filters( 'learndash_convert_block_markers_to_shortcode_content', $content, $pattern_atts_array, $shortcode_slug, $block_slug ); } } } } } else { /** * A non-self closing WP block will look like the following for the ld-student. The * patter will have an outer wrapper of the block whihc will be converted into a shortcode * wrapper like [ld_student][/ld_student] * * * *

      This is the inner content.

      * * */ preg_match_all( '#(.*?)#is', $content, $ar ); if ( ( isset( $ar[0] ) ) && ( is_array( $ar[0] ) ) && ( ! empty( $ar[0] ) ) ) { if ( ( isset( $ar[1] ) ) && ( is_array( $ar[1] ) ) && ( ! empty( $ar[1] ) ) ) { foreach ( $ar[1] as $pattern_key => $pattern_atts_json ) { $pattern_atts_json = trim( $pattern_atts_json ); // Ensure the inner content is not empty. if ( ( isset( $ar[2][ $pattern_key ] ) ) && ( ! empty( $ar[2][ $pattern_key ] ) ) ) { $replacement_text = '[' . $shortcode_slug; if ( ! empty( $pattern_atts_json ) ) { $pattern_atts_array = (array) json_decode( $pattern_atts_json ); $pattern_atts_array = apply_filters( 'learndash_block_markers_shortcode_atts', $pattern_atts_array, $shortcode_slug, $block_slug, $content ); $shortcode_atts = ''; if ( ( is_array( $pattern_atts_array ) ) && ( ! empty( $pattern_atts_array ) ) ) { foreach ( $pattern_atts_array as $attr_key => $attr_value ) { if ( 'meta' === $attr_key ) { continue; } if ( '' !== $attr_value ) { if ( ! empty( $shortcode_atts ) ) { $shortcode_atts .= ' '; } if ( is_array( $attr_value ) ) { $attr_value = implode( ',', $attr_value ); } $shortcode_atts .= $attr_key . '="' . $attr_value . '"'; } } } if ( ! empty( $shortcode_atts ) ) { $replacement_text .= ' ' . $shortcode_atts; } } $replacement_text .= ']' . $ar[2][ $pattern_key ] . '[/' . $shortcode_slug . ']'; // If we have built a replacement text then replace it in the main $content. if ( ! empty( $replacement_text ) ) { $content = str_replace( $ar[0][ $pattern_key ], $replacement_text, $content ); $content = apply_filters( 'learndash_convert_block_markers_to_shortcode_content', $content, $pattern_atts_array, $shortcode_slug, $block_slug ); } } } } } } } return $content; } /** * Called from the LD function learndash_convert_block_markers_shortcode() when parsing the block content. * Each sub-subclassed instance should provide its own version of this function. * * @since 2.5.9 * * @param array $attributes The array of attributes parse from the block content. * @param string $shortcode_slug This will match the related LD shortcode ld_profile, ld_course_list, etc. * @param string $block_slug This is the block token being processed. Normally same as the shortcode but underscore replaced with dash. * @param string $content This is the orignal full content being parsed. * * @return array $attributes. */ public function learndash_block_markers_shortcode_atts_filter( $attributes = array(), $shortcode_slug = '', $block_slug = '', $content = '' ) { return $attributes; } /** * Called from the LD function convert_block_markers_to_shortcode() when parsing the block content. * This function allows hooking into the converted content. * * @since 2.6.4 * * @param string $content This is the orignal full content being parsed. * @param array $attributes The array of attributes parse from the block content. * @param string $shortcode_slug This will match the related LD shortcode ld_profile, ld_course_list, etc. * @param string $block_slug This is the block token being processed. Normally same as the shortcode but underscore replaced with dash. * * @return string $content. */ public function convert_block_markers_to_shortcode_content_filter( $content = '', $attributes = array(), $shortcode_slug = '', $block_slug = '' ) { return $content; } /** * Common function used by the ld_course_list, ld_lesson_list, ld_topic_list, * and ld_quiz_list called from the render_block short/block processing function. * Converts the array of atrributes to a normalized shortcode parameter string. * * @since 2.6.4 * @param array $attributes Array of block attributes. * @return string. */ protected function prepare_course_list_atts_to_param( $attributes = array() ) { $shortcode_params_str = ''; foreach ( $attributes as $key => $val ) { if ( ( empty( $key ) ) || ( is_null( $val ) ) ) { continue; } if ( 'preview_show' === $key ) { continue; } elseif ( 'preview_user_id' === $key ) { if ( ( ! isset( $attributes['user_id'] ) ) && ( 'preview_user_id' === $key ) && ( '' !== $val ) ) { if ( learndash_is_admin_user( get_current_user_id() ) ) { // If admin user they can preview any user_id. } elseif ( learndash_is_group_leader_user( get_current_user_id() ) ) { // If group leader user we ensure the preview user_id is within their group(s). if ( ! learndash_is_group_leader_of_user( get_current_user_id(), $val ) ) { continue; } } else { // If neither admin or group leader then we don't see the user_id for the shortcode. continue; } $key = str_replace( 'preview_', '', $key ); $val = absint( $val ); } } elseif ( 'per_page' === $key ) { if ( '' === $val ) { continue; } $key = 'num'; $val = (int) $val; } elseif ( ( 'show_content' === $key ) || ( 'show_thumbnail' === $key ) || ( 'course_grid' === $key ) || ( 'progress_bar' === $key ) ) { if ( ( 1 === $val ) || ( true === $val ) || ( 'true' === $val ) ) { $val = 'true'; } else { $val = 'false'; } } elseif ( 'col' === $key ) { if ( defined( 'LEARNDASH_COURSE_GRID_FILE' ) ) { $val = absint( $val ); if ( $val < 1 ) { $val = 3; } } else { continue; } } elseif ( 'lesson_id' === $key ) { if ( '' === $val ) { continue; } } elseif ( 'status' === $key ) { if ( empty( $val ) ) { continue; } $val_str = implode( ',', $val ); $val = $val_str; } elseif ( empty( $val ) ) { continue; } if ( ! empty( $shortcode_params_str ) ) { $shortcode_params_str .= ' '; } $shortcode_params_str .= $key . '="' . esc_attr( $val ) . '"'; } return $shortcode_params_str; } /** * Get example user ID. This is used as part of WP 5.3 Gutenberg Block Example / Preview. * * @since 3.1 * @return integer $user_id User ID. */ function get_example_user_id() { $user_id = 0; $user_id = apply_filters( 'learndash_gutenberg_block_example_id', $user_id, 'user_id', 'user', $this->block_slug ); $user_id = absint( $user_id ); if ( ! empty( $user_id ) ) { $user = get_user_by( 'ID', $user_id ); if ( ( ! $user ) || ( ! is_a( $user, 'WP_User' ) ) ) { $user_id = 0; } } if ( empty( $user_id ) ) { if ( is_user_logged_in() ) { $user_id = get_current_user_id(); } } return $user_id; } /** * Get example post ID. This is used as part of WP 5.3 Gutenberg Block Example / Preview. * * @since 3.1 * @param string $post_type Post Type Slug to retreive. * @return integer $post_id Post ID. */ function get_example_post_id( $post_type = '' ) { $post_id = 0; $post_id = apply_filters( 'learndash_gutenberg_block_example_id', $post_id, 'post_id', $post_type, $this->block_slug ); $post_id = absint( $post_id ); if ( ! empty( $post_id ) ) { $_post = get_post( $post_id ); if ( ( ! $_post ) || ( ! is_a( $_post, 'WP_Post' ) ) ) { $course_id = 0; } } if ( empty( $post_id ) ) { $post_id = learndash_get_single_post( $post_type ); } return $post_id; } // End of functions. } } PKc\~~includes/ld-users.phpnuW+Aget_col( $wpdb->prepare( 'SELECT statistic_ref_id FROM ' . LDLMS_DB::get_table_name( 'quiz_statistic_ref' ) . ' WHERE user_id = %d ', $user->ID ) ); if ( ! empty( $ref_ids[0] ) ) { $wpdb->delete( LDLMS_DB::get_table_name( 'quiz_statistic_ref' ), array( 'user_id' => $user->ID ) ); $wpdb->query( 'DELETE FROM ' . LDLMS_DB::get_table_name( 'quiz_statistic' ) . ' WHERE statistic_ref_id IN (' . implode( ',', $ref_ids ) . ')' ); } $wpdb->delete( $wpdb->usermeta, array( 'meta_key' => '_sfwd-quizzes', 'user_id' => $user->ID, ) ); $wpdb->delete( $wpdb->usermeta, array( 'meta_key' => '_sfwd-course_progress', 'user_id' => $user->ID, ) ); $wpdb->query( 'DELETE FROM ' . $wpdb->usermeta . " WHERE meta_key LIKE 'completed_%' AND user_id = " . $user->ID ); $wpdb->query( 'DELETE FROM ' . $wpdb->usermeta . " WHERE meta_key LIKE 'course_%_access_from' AND user_id = " . $user->ID ); $wpdb->query( 'DELETE FROM ' . $wpdb->usermeta . " WHERE meta_key LIKE 'course_completed_%' AND user_id = " . $user->ID ); $wpdb->query( 'DELETE FROM ' . $wpdb->usermeta . " WHERE meta_key LIKE 'learndash_course_expired_%' AND user_id = " . $user->ID ); // Added in v2.3.1 to remove the quiz locks for user. $wpdb->query( 'DELETE FROM ' . LDLMS_DB::get_table_name( 'quiz_lock' ) . ' WHERE user_id = ' . $user->ID ); learndash_report_clear_user_activity_by_types( $user_id ); $wpdb->delete( LDLMS_DB::get_table_name( 'quiz_lock' ), array( 'user_id' => $user->ID ) ); $wpdb->delete( LDLMS_DB::get_table_name( 'quiz_toplist' ), array( 'user_id' => $user->ID ) ); // Move user uploaded Assignements to Trash. $user_assignements_query_args = array( 'post_type' => 'sfwd-assignment', 'post_status' => 'publish', 'nopaging' => true, 'author' => $user->ID, ); $user_assignements_query = new WP_Query( $user_assignements_query_args ); if ( $user_assignements_query->have_posts() ) { foreach ( $user_assignements_query->posts as $assignment_post ) { wp_trash_post( $assignment_post->ID ); } } wp_reset_postdata(); // Move user uploaded Essay to Trash. $user_essays_query_args = array( 'post_type' => 'sfwd-essays', 'nopaging' => true, 'author' => $user->ID, ); $user_essays_query = new WP_Query( $user_essays_query_args ); if ( $user_essays_query->have_posts() ) { foreach ( $user_essays_query->posts as $essay_post ) { wp_trash_post( $essay_post->ID ); } } wp_reset_postdata(); do_action( 'learndash_delete_user_data', $user_id ); } } add_action( 'delete_user', 'learndash_delete_user_data' ); /** * Get all Courses enrolled by User * * @since 2.2.1 * * @param int $user_id User ID. * @param array $course_query_args Array of WP_Query type arguments. * @param bool $bypass_transient To bypass transient or not. */ function learndash_user_get_enrolled_courses( $user_id = 0, $course_query_args = array(), $bypass_transient = false ) { $course_ids = array(); if ( empty( $user_id ) ) { return $course_ids; } $bypass_transient = true; $transient_key = 'learndash_user_courses_' . $user_id; if ( ! $bypass_transient ) { $course_ids_transient = LDLMS_Transients::get( $transient_key ); } else { $course_ids_transient = false; } if ( false === $course_ids_transient ) { $course_autoenroll_admin = LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_General_Admin_User', 'courses_autoenroll_admin_users' ); if ( 'yes' === $course_autoenroll_admin ) { $course_autoenroll_admin = true; } else { $course_autoenroll_admin = false; } if ( ( learndash_is_admin_user( $user_id ) ) && ( apply_filters( 'learndash_override_course_auto_enroll', $course_autoenroll_admin, $user_id ) ) ) { $defaults = array( 'post_type' => 'sfwd-courses', 'fields' => 'ids', 'nopaging' => true, ); $course_query_args = wp_parse_args( $course_query_args, $defaults ); $course_query = new WP_Query( $course_query_args ); if ( ( isset( $course_query->posts ) ) && ( ! empty( $course_query->posts ) ) ) { $course_ids = $course_query->posts; } } else { $course_ids_open = learndash_get_open_courses(); if ( ! empty( $course_ids_open ) ) { $course_ids = array_merge( $course_ids, $course_ids_open ); } $course_ids_paynow = learndash_get_paynow_courses(); if ( ! empty( $course_ids_paynow ) ) { $course_ids = array_merge( $course_ids, $course_ids_paynow ); } if ( true === learndash_use_legacy_course_access_list() ) { $course_ids_access = learndash_get_user_course_access_list( $user_id ); if ( ! empty( $course_ids_access ) ) { $course_ids = array_merge( $course_ids, $course_ids_access ); } } $course_ids_meta = learndash_get_user_courses_from_meta( $user_id ); if ( ! empty( $course_ids_meta ) ) { $course_ids = array_merge( $course_ids, $course_ids_meta ); } $course_ids_groups = learndash_get_user_groups_courses_ids( $user_id ); if ( ! empty( $course_ids_groups ) ) { $course_ids = array_merge( $course_ids, $course_ids_groups ); } if ( ! empty( $course_ids ) ) { $course_ids = array_unique( $course_ids ); $defaults = array( 'post_type' => 'sfwd-courses', 'fields' => 'ids', 'nopaging' => true, ); $course_query_args = wp_parse_args( $course_query_args, $defaults ); $course_query_args['post__in'] = $course_ids; $course_query = new WP_Query( $course_query_args ); if ( property_exists( $course_query, 'posts' ) ) { $course_ids = $course_query->posts; } } } LDLMS_Transients::set( $transient_key, $course_ids, MINUTE_IN_SECONDS ); } else { $course_ids = $course_ids_transient; } return $course_ids; } /** * Set Courses enrolled by User * * @since 2.2.1 * * @param int $user_id user id. * @param array $user_courses_new An array of new course ids. */ function learndash_user_set_enrolled_courses( $user_id = 0, $user_courses_new = array() ) { if ( ! empty( $user_id ) ) { $user_courses_old = learndash_user_get_enrolled_courses( $user_id, true ); if ( ( empty( $user_courses_old ) ) && ( ! is_array( $user_courses_old ) ) ) { $user_courses_old = array(); } $user_courses_intersect = array_intersect( $user_courses_new, $user_courses_old ); $user_courses_add = array_diff( $user_courses_new, $user_courses_intersect ); if ( ! empty( $user_courses_add ) ) { foreach ( $user_courses_add as $course_id ) { ld_update_course_access( $user_id, $course_id ); } } $user_courses_remove = array_diff( $user_courses_old, $user_courses_intersect ); if ( ! empty( $user_courses_remove ) ) { foreach ( $user_courses_remove as $course_id ) { ld_update_course_access( $user_id, $course_id, true ); } } // Finally clear our cache for other services. $transient_key = 'learndash_user_courses_' . $user_id; delete_transient( $transient_key ); } } /** * Get all courses for the user via the user meta 'course_XXX_access_from' * * @since 2.2.1 * * @param int $user_id user id. */ function learndash_get_user_courses_from_meta( $user_id = 0 ) { global $wpdb; $user_course_ids = array(); $user_id = intval( $user_id ); if ( ! empty( $user_id ) ) { $sql_str = $wpdb->prepare( "SELECT REPLACE( REPLACE(meta_key, 'course_', ''), '_access_from', '' ) FROM " . $wpdb->usermeta . ' as usermeta WHERE user_id=%d AND meta_key LIKE %s ', $user_id, 'course_%_access_from' ); $user_course_ids = $wpdb->get_col( $sql_str ); if ( ! empty( $user_course_ids ) ) { $user_course_ids = array_map( 'intval', $user_course_ids ); } } return $user_course_ids; } /** * Check if we show user course complete * * @param int $user_id User ID. * @return bool true or false */ function learndash_show_user_course_complete( $user_id = 0 ) { $show_options = false; if ( ! empty( $user_id ) ) { global $pagenow; if ( ( ( 'profile.php' == $pagenow ) || ( 'user-edit.php' == $pagenow ) ) && ( current_user_can( 'edit_users' ) ) ) { $show_options = true; } elseif ( 'admin.php' == $pagenow ) { if ( ( isset( $_GET['page'] ) ) && ( 'group_admin_page' == $_GET['page'] ) ) { if ( ( learndash_is_admin_user() ) || ( learndash_is_group_leader_user() ) ) { $show_options = true; } } } } // See example snippet of this filter https://bitbucket.org/snippets/learndash/bMA7r . return apply_filters( 'learndash_show_user_course_complete_options', $show_options, $user_id ); } /** * Save User Courses Complete date * * @since 2.3 * * @param int $user_id User ID. */ function learndash_save_user_course_complete( $user_id = 0 ) { // Hate this cross-logic. But here it is. // If we are clearing out the user's LD data then we abort this function. Now use going through the update. if ( ( isset( $_POST['learndash_delete_user_data'] ) ) && ( ! empty( $_POST['learndash_delete_user_data'] ) ) ) { return; } if ( empty( $user_id ) ) { return; } if ( learndash_is_group_leader_user( get_current_user_id() ) ) { if ( ! learndash_is_group_leader_of_user( get_current_user_id(), $user_id ) ) { return; } } else if ( ! current_user_can( 'edit_users' ) ) { return; } if ( ( isset( $_POST['user_progress'] ) ) && ( isset( $_POST['user_progress'][ $user_id ] ) ) && ( ! empty( $_POST['user_progress'][ $user_id ] ) ) ) { if ( ( isset( $_POST[ 'user_progress-' . $user_id . '-nonce' ] ) ) && ( ! empty( $_POST[ 'user_progress-' . $user_id . '-nonce' ] ) ) ) { if ( wp_verify_nonce( $_POST[ 'user_progress-' . $user_id . '-nonce' ], 'user_progress-' . $user_id ) ) { $user_progress = (array) json_decode( stripslashes( $_POST['user_progress'][ $user_id ] ) ); $user_progress = json_decode( json_encode( $user_progress ), true ); $processed_course_ids = array(); if ( ( isset( $user_progress['course'] ) ) && ( ! empty( $user_progress['course'] ) ) ) { $usermeta = get_user_meta( $user_id, '_sfwd-course_progress', true ); $course_progress = empty( $usermeta ) ? array() : $usermeta; $_COURSE_CHANGED = false; // Simple flag to let us know we changed the quiz data so we can save it back to user meta. foreach ( $user_progress['course'] as $course_id => $course_data_new ) { $processed_course_ids[ intval( $course_id ) ] = intval( $course_id ); if ( isset( $course_progress[ $course_id ] ) ) { $course_data_old = $course_progress[ $course_id ]; } else { $course_data_old = array(); } $course_data_new = learndash_course_item_to_activity_sync( $user_id, $course_id, $course_data_new, $course_data_old ); $course_progress[ $course_id ] = $course_data_new; $_COURSE_CHANGED = true; } if ( $_COURSE_CHANGED === true ) { update_user_meta( $user_id, '_sfwd-course_progress', $course_progress ); } } if ( ( isset( $user_progress['quiz'] ) ) && ( ! empty( $user_progress['quiz'] ) ) ) { $usermeta = get_user_meta( $user_id, '_sfwd-quizzes', true ); $quizz_progress = empty( $usermeta ) ? array() : $usermeta; $_QUIZ_CHANGED = false; // Simple flag to let us know we changed the quiz data so we can save it back to user meta. foreach ( $user_progress['quiz'] as $course_id => $course_quiz_set ) { foreach ( $course_quiz_set as $quiz_id => $quiz_new_status ) { $quiz_meta = get_post_meta( $quiz_id, '_sfwd-quiz', true ); if ( ! empty( $quiz_meta ) ) { $quiz_old_status = ! learndash_is_quiz_notcomplete( $user_id, array( $quiz_id => 1 ), false, $course_id ); // For Quiz if the admin marks a qiz complete we don't attempt to update an existing attempt for the user quiz. // Instead we add a new entry. LD doesn't care as it will take the complete one for calculations where needed. if ( $quiz_new_status == true ) { if ( $quiz_old_status != true ) { // If the admin is marking the quiz complete AND the quiz is NOT already complete... // Then we add the minimal quiz data to the user profile. $quizdata = array( 'quiz' => $quiz_id, 'score' => 0, 'count' => 0, 'pass' => true, 'rank' => '-', 'time' => time(), 'pro_quizid' => $quiz_meta['sfwd-quiz_quiz_pro'], 'course' => $course_id, 'points' => 0, 'total_points' => 0, 'percentage' => 0, 'timespent' => 0, 'has_graded' => false, 'statistic_ref_id' => 0, 'm_edit_by' => get_current_user_id(), // Manual Edit By ID. 'm_edit_time' => time(), // Manual Edit timestamp. ); $quizz_progress[] = $quizdata; if ( $quizdata['pass'] == true ) { $quizdata_pass = true; } else { $quizdata_pass = false; } // Then we add the quiz entry to the activity database. learndash_update_user_activity( array( 'course_id' => $course_id, 'user_id' => $user_id, 'post_id' => $quiz_id, 'activity_type' => 'quiz', 'activity_action' => 'insert', 'activity_status' => $quizdata_pass, 'activity_started' => $quizdata['time'], 'activity_completed' => $quizdata['time'], 'activity_meta' => $quizdata, ) ); $_QUIZ_CHANGED = true; do_action( 'learndash_quiz_completed', $quizdata, get_user_by( 'ID', $user_id ) ); } } elseif ( $quiz_new_status !== true ) { // If we are unsetting a quiz ( changing from complete to incomplete). We need to do some complicated things... if ( $quiz_old_status === true ) { if ( ! empty( $quizz_progress ) ) { foreach ( $quizz_progress as $quiz_idx => $quiz_item ) { if ( ( $quiz_item['quiz'] == $quiz_id ) && ( $quiz_item['pass'] == true ) ) { $quizz_progress[ $quiz_idx ]['pass'] = false; // We need to update the activity database records for this quiz_id $activity_query_args = array( 'post_ids' => $quiz_id, 'user_ids' => $user_id, 'activity_type' => 'quiz', ); $quiz_activity = learndash_reports_get_activity( $activity_query_args ); if ( ( isset( $quiz_activity['results'] ) ) && ( ! empty( $quiz_activity['results'] ) ) ) { foreach ( $quiz_activity['results'] as $result ) { if ( ( isset( $result->activity_meta['pass'] ) ) && ( $result->activity_meta['pass'] == true ) ) { // If the activity meta 'pass' element is set to true we want to update it to false. learndash_update_user_activity_meta( $result->activity_id, 'pass', false ); // Also we need to update the 'activity_status' for this record learndash_update_user_activity( array( 'activity_id' => $result->activity_id, 'course_id' => $course_id, 'user_id' => $user_id, 'post_id' => $quiz_id, 'activity_type' => 'quiz', 'activity_action' => 'update', 'activity_status' => false, // 'activity_started' => $result->activity_started, ) ); } } } $_QUIZ_CHANGED = true; } /** * Remove the quiz lock. * * @since 2.3.1 */ if ( ( isset( $quiz_item['pro_quizid'] ) ) && ( ! empty( $quiz_item['pro_quizid'] ) ) ) { learndash_remove_user_quiz_locks( $user_id, $quiz_item['quiz'] ); } } } } } // $course_id = learndash_get_course_id( $quiz_id ); // if ( !empty( $course_id ) ) { $processed_course_ids[ intval( $course_id ) ] = intval( $course_id ); // } } } } if ( $_QUIZ_CHANGED == true ) { update_user_meta( $user_id, '_sfwd-quizzes', $quizz_progress ); } } if ( ! empty( $processed_course_ids ) ) { foreach ( array_unique( $processed_course_ids ) as $course_id ) { learndash_process_mark_complete( $user_id, $course_id ); } } } } } } /** * We need to compare the new course item progress array to the existing one. Also update the new activity db table * * @since 2.3 * * @param int $user_id The user ID related to this course entry * @param int $course_id The course ID related to this user course entry * @param array $course_data_new The new course data item * @param array $course_data_old The old course data item * @return null */ function learndash_course_item_to_activity_sync( $user_id = 0, $course_id = 0, $course_data_new = array(), $course_data_old = array() ) { if ( ( empty( $user_id ) ) || ( empty( $course_id ) ) || ( empty( $course_data_new ) ) ) { return; } // If we don't have the old course data we can get it. if ( empty( $course_data_old ) ) { $user_course_progress = get_user_meta( $user_id, '_sfwd-course_progress', true ); if ( isset( $user_course_progress[ $course_id ] ) ) { $course_data_old = $user_course_progress[ $course_id ]; } else { $course_data_old = array(); } } // First we loop over the new Course data lessons. We add any items not in the old array to the activity table if ( ( isset( $course_data_new['lessons'] ) ) && ( ! empty( $course_data_new['lessons'] ) ) ) { foreach ( $course_data_new['lessons'] as $lesson_id => $lesson_complete ) { if ( ! isset( $course_data_old['lessons'][ $lesson_id ] ) ) { $lesson_args = array( 'course_id' => $course_id, 'user_id' => $user_id, 'post_id' => $lesson_id, 'activity_type' => 'lesson', ); $lesson_activity = learndash_get_user_activity( $lesson_args ); if ( ! $lesson_activity ) { if ( $lesson_complete == true ) { $lesson_args['activity_started'] = time(); $lesson_args['activity_completed'] = time(); } else { $lesson_args['activity_started'] = 0; $lesson_args['activity_completed'] = 0; } } else { if ( $lesson_complete == true ) { if ( empty( $lesson_activity->activity_started ) ) { $lesson_args['activity_started'] = time(); } if ( empty( $lesson_activity->activity_completed ) ) { $lesson_args['activity_completed'] = time(); } } else { $lesson_args['activity_started'] = 0; $lesson_args['activity_completed'] = 0; } } if ( $lesson_complete == true ) { $lesson_args['activity_status'] = true; } else { $lesson_args['activity_status'] = false; } learndash_update_user_activity( $lesson_args ); } } } // Next we loop over the lesson topics. We add any new items not in the old array to the activity table. if ( ( isset( $course_data_new['topics'] ) ) && ( ! empty( $course_data_new['topics'] ) ) ) { foreach ( $course_data_new['topics'] as $lesson_id => $lesson_topics ) { if ( ! empty( $lesson_topics ) ) { foreach ( $lesson_topics as $topic_id => $topic_complete ) { if ( ! isset( $course_data_old['topics'][ $lesson_id ][ $topic_id ] ) ) { $topic_args = array( 'course_id' => $course_id, 'user_id' => $user_id, 'post_id' => $topic_id, 'activity_type' => 'topic', ); $topic_activity = learndash_get_user_activity( $topic_args ); if ( ! $topic_activity ) { if ( $topic_complete == true ) { $topic_args['activity_started'] = time(); $topic_args['activity_completed'] = time(); } else { $topic_args['activity_started'] = 0; $topic_args['activity_completed'] = 0; } } else { if ( $topic_complete == true ) { if ( empty( $topic_activity->activity_started ) ) { $topic_args['activity_started'] = time(); } if ( empty( $topic_activity->activity_completed ) ) { $topic_args['activity_completed'] = time(); } } else { $topic_args['activity_started'] = 0; $topic_args['activity_completed'] = 0; } } if ( $topic_complete == true ) { $topic_args['activity_status'] = true; } else { $topic_args['activity_status'] = false; } learndash_update_user_activity( $topic_args ); } } } } } // Then we loop over the old course lessons. Here if the lesson is NOT in the new course lessons we need to change the 'activity_status' to false. if ( ( isset( $course_data_old['lessons'] ) ) && ( ! empty( $course_data_old['lessons'] ) ) ) { foreach ( $course_data_old['lessons'] as $lesson_id => $lesson_complete ) { if ( ! isset( $course_data_new['lessons'][ $lesson_id ] ) ) { learndash_update_user_activity( array( 'course_id' => $course_id, 'user_id' => $user_id, 'post_id' => $lesson_id, 'activity_type' => 'lesson', 'activity_status' => false, 'activity_started' => 0, 'activity_completed' => 0, 'activity_updated' => 0, ) ); } } } // Then we loop over the old course topics. Here if the lesson is NOT in the new course topics we need to change the 'activity_status' to false. if ( ( isset( $course_data_old['topics'] ) ) && ( ! empty( $course_data_old['topics'] ) ) ) { foreach ( $course_data_old['topics'] as $lesson_id => $lesson_topics ) { if ( ! empty( $lesson_topics ) ) { foreach ( $lesson_topics as $topic_id => $topic_complete ) { if ( ! isset( $course_data_new['topics'][ $lesson_id ][ $topic_id ] ) ) { learndash_update_user_activity( array( 'course_id' => $course_id, 'user_id' => $user_id, 'post_id' => $topic_id, 'activity_type' => 'topic', 'activity_status' => false, 'activity_started' => 0, 'activity_completed' => 0, 'activity_updated' => 0, ) ); } } } } } // Finally we recalculate the course completed steps from the new course data. $completed_steps = learndash_course_get_completed_steps( $user_id, $course_id, $course_data_new ); if ( ( ! isset( $course_data_new['completed'] ) ) || ( $completed_steps != $course_data_new['completed'] ) ) { $course_args = array( 'course_id' => $course_id, 'user_id' => $user_id, 'post_id' => $course_id, 'activity_type' => 'course', ); if ( empty( $completed_steps ) ) { $course_args['activity_status'] = false; $course_args['activity_started'] = 0; $course_args['activity_completed'] = 0; $course_args['activity_updated'] = 0; } else { $course_activity = learndash_get_user_activity( $course_args ); if ( $course_activity ) { if ( intval( $course_activity->activity_started ) ) { $course_args['activity_started'] = intval( $course_activity->activity_started ); } else { $course_args['activity_started'] = time(); } } } $course_args['activity_meta'] = array( 'steps_completed' => $completed_steps, ); learndash_update_user_activity( $course_args ); } // Then return the new course data to the caller. return $course_data_new; } /** * Get all Courses where the User ID in the course meta 'access_list' field. * * @since 2.3 * * @param int $user_id User ID. * @return array an array of course_ids. */ function learndash_get_user_course_access_list( $user_id = 0 ) { global $wpdb; $user_course_ids = array(); $user_id = intval( $user_id ); if ( ! empty( $user_id ) ) { if ( true === learndash_use_legacy_course_access_list() ) { $data_settings_courses = learndash_data_upgrades_setting( 'course-access-lists' ); if ( version_compare( $data_settings_courses['version'], LEARNDASH_SETTINGS_TRIGGER_UPGRADE_VERSION, '>=') ) { $is_like = " postmeta.meta_value = '". $user_id ."' OR postmeta.meta_value REGEXP '^". $user_id .",' OR postmeta.meta_value REGEXP ',". $user_id .",' OR postmeta.meta_value REGEXP ',". $user_id ."$'"; $sql_str = "SELECT post_id FROM ". $wpdb->prefix ."postmeta as postmeta INNER JOIN ". $wpdb->prefix ."posts as posts ON posts.ID = postmeta.post_id WHERE posts.post_status='publish' AND posts.post_type='sfwd-courses' AND postmeta.meta_key='course_access_list' AND (". $is_like .")"; } else { // OR the access list is not empty. $not_like = " postmeta.meta_value NOT REGEXP '\"sfwd-courses_course_access_list\";s:0:\"\";' "; // OR the user ID is found in the access list. Note this pattern is four options // 1. The user ID is the only entry. // 1a. The single entry could be an int // 1b. Ot the single entry could be an string // 2. The user ID is at the front of the list as in "sfwd-courses_course_access_list";*:"X,*"; // 3. The user ID is in middle "sfwd-courses_course_access_list";*:"*,X,*"; // 4. The user ID is at the end "sfwd-courses_course_access_list";*:"*,X";. $is_like = " postmeta.meta_value REGEXP 's:31:\"sfwd-courses_course_access_list\";i:" . $user_id . ";s:34:\"sfwd-courses_course_lesson_orderby\"' OR postmeta.meta_value REGEXP 's:31:\"sfwd-courses_course_access_list\";i:" . $user_id . ";s:40:\"sfwd-courses_course_prerequisite_compare\"' OR postmeta.meta_value REGEXP 's:31:\"sfwd-courses_course_access_list\";i:" . $user_id . ";s:35:\"sfwd-courses_course_lesson_per_page\"' OR postmeta.meta_value REGEXP 's:31:\"sfwd-courses_course_access_list\";s:(.*):\"" . $user_id . "\";s:34:\"sfwd-courses_course_lesson_orderby\"' OR postmeta.meta_value REGEXP 's:31:\"sfwd-courses_course_access_list\";s:(.*):\"" . $user_id . "\";s:40:\"sfwd-courses_course_prerequisite_compare\"' OR postmeta.meta_value REGEXP 's:31:\"sfwd-courses_course_access_list\";s:(.*):\"" . $user_id . "\";s:35:\"sfwd-courses_course_lesson_per_page\"' OR postmeta.meta_value REGEXP 's:31:\"sfwd-courses_course_access_list\";s:(.*):\"" . $user_id . ",(.*)\";s:34:\"sfwd-courses_course_lesson_orderby\"' OR postmeta.meta_value REGEXP 's:31:\"sfwd-courses_course_access_list\";s:(.*):\"" . $user_id . ",(.*)\";s:40:\"sfwd-courses_course_prerequisite_compare\"' OR postmeta.meta_value REGEXP 's:31:\"sfwd-courses_course_access_list\";s:(.*):\"" . $user_id . ",(.*)\";s:35:\"sfwd-courses_course_lesson_per_page\"' OR postmeta.meta_value REGEXP 's:31:\"sfwd-courses_course_access_list\";s:(.*):\"(.*)," . $user_id . ",(.*)\";s:34:\"sfwd-courses_course_lesson_orderby\"' OR postmeta.meta_value REGEXP 's:31:\"sfwd-courses_course_access_list\";s:(.*):\"(.*)," . $user_id . ",(.*)\";s:40:\"sfwd-courses_course_prerequisite_compare\"' OR postmeta.meta_value REGEXP 's:31:\"sfwd-courses_course_access_list\";s:(.*):\"(.*)," . $user_id . ",(.*)\";s:35:\"sfwd-courses_course_lesson_per_page\"' OR postmeta.meta_value REGEXP 's:31:\"sfwd-courses_course_access_list\";s:(.*):\"(.*)," . $user_id . "\";s:34:\"sfwd-courses_course_lesson_orderby\"' OR postmeta.meta_value REGEXP 's:31:\"sfwd-courses_course_access_list\";s:(.*):\"(.*)," . $user_id . "\";s:40:\"sfwd-courses_course_prerequisite_compare\"' OR postmeta.meta_value REGEXP 's:31:\"sfwd-courses_course_access_list\";s:(.*):\"(.*)," . $user_id . "\";s:35:\"sfwd-courses_course_lesson_per_page\"' "; $sql_str = 'SELECT post_id FROM ' . $wpdb->postmeta . ' as postmeta INNER JOIN ' . $wpdb->posts . " as posts ON posts.ID = postmeta.post_id WHERE posts.post_status='publish' AND posts.post_type='sfwd-courses' AND postmeta.meta_key='_sfwd-courses' AND ( " . $not_like . ' AND (' . $is_like . '))'; } $user_course_ids = $wpdb->get_col( $sql_str ); } else { $user_course_ids = learndash_user_get_enrolled_courses( $user_id ); } } return $user_course_ids; } /** * Get all Courses within all the Groups the user has access. * * @since 2.3 * * @param int $user_id User ID. * @return array an array of course_ids. */ function learndash_get_user_groups_courses_ids( $user_id = 0 ) { $user_group_course_ids = array(); if ( empty( $user_id ) ) { return $user_group_course_ids; } // Next we grap all the groups the user is a member of. $users_group_ids = learndash_get_users_group_ids( $user_id ); if ( ! empty( $users_group_ids ) ) { // $user_group_course_ids = learndash_get_groups_courses_ids( $user_id, $users_group_ids ); foreach ( $users_group_ids as $group_id ) { $group_course_ids = learndash_group_enrolled_courses( $group_id ); if ( ! empty( $group_course_ids ) ) { $user_group_course_ids = array_merge( $user_group_course_ids, $group_course_ids ); } } } /** * Filter for user group courses. * * @since 3.2.1 * * @param array $user_group_course_ids Array of found user group courses. * @param integer $user_id User ID. * @return array; */ return apply_filters( 'learndash_get_user_groups_courses_ids', $user_group_course_ids, $user_id ); } /** * Record the last login time for the user. * * @since 2.3 * * @param string $user_login login name. * @param object $user Object WP_User with user details. */ function learndash_wp_login( $user_login = '', $user = '' ) { if ( ! empty( $user_login ) ) { if ( ! ( $user instanceof WP_User ) ) { $user = get_user_by( 'login', $user_login ); } if ( $user instanceof WP_User ) { update_user_meta( $user->ID, 'learndash-last-login', time() ); } } } add_action( 'wp_login', 'learndash_wp_login', 99, 1 ); /** * Remove Quiz lock for specific User and Quiz * * @since 2.3.1 * @param int $user_id the User ID. * @param int $quiz_id the Quiz ID (post ID). */ function learndash_remove_user_quiz_locks( $user_id = 0, $quiz_id = 0 ) { global $wpdb; if ( ( ! empty( $user_id ) ) && ( ! empty( $quiz_id ) ) ) { $pro_quiz_id = get_post_meta( $quiz_id, 'quiz_pro_id', true ); if ( ! empty( $pro_quiz_id ) ) { $sql_str = $wpdb->prepare( 'DELETE FROM ' . LDLMS_DB::get_table_name( 'quiz_lock' ) . ' WHERE quiz_id = %d AND user_id = %s', $pro_quiz_id, $user_id ); $wpdb->query( $sql_str ); } } } /** * Given a User ID will retreive and return the calculated course points plus * the optional 'course_points' user meta. * * The course points calculation is based on all completed courses by the user. From * these completed courses we get any with assigned course points into a total * * Then we et the optional 'course_points' user meta value if present. This is a value the * admin can set to help increase the students point total. * * The calculate courses points plus user meta course points are added together and returned. * * @since 2.4.0 * * @param int $user_id user id. * * @return bool 0 or greater course points. */ function learndash_get_user_course_points( $user_id = 0 ) { global $wpdb; if ( empty( $user_id ) ) { if ( ! is_user_logged_in() ) { return false; } $user_id = get_current_user_id(); } $user_id = intval( $user_id ); if ( ! empty( $user_id ) ) { $sql_str = $wpdb->prepare( 'SELECT DISTINCT postmeta.post_id as post_id, postmeta.meta_value as points FROM ' . $wpdb->postmeta . " as postmeta WHERE postmeta.post_id IN ( SELECT DISTINCT REPLACE(user_meta.meta_key, 'course_completed_', '') as course_id FROM " . $wpdb->usermeta . " as user_meta WHERE user_meta.meta_key LIKE %s AND user_meta.user_id = %d and user_meta.meta_value != '' ) AND postmeta.meta_key=%s AND postmeta.meta_value != ''", 'course_completed_%', $user_id, 'course_points' ); $course_points_results = $wpdb->get_results( $sql_str ); $course_points_sum = 0; if ( ! empty( $course_points_results ) ) { foreach ( $course_points_results as $course_points ) { $course_points_sum += learndash_format_course_points( $course_points->points ); } } $user_course_points = get_user_meta( $user_id, 'course_points', true ); $user_course_points = learndash_format_course_points( $user_course_points ); return learndash_format_course_points( $course_points_sum + $user_course_points ); } } function learndash_get_quiz_statistics_ref_for_quiz_attempt( $user_id = 0, $quiz_attempt = array() ) { global $wpdb; if ( empty( $user_id ) ) { return 0; } if ( ( ! isset( $quiz_attempt['pro_quizid'] ) ) || ( empty( $quiz_attempt['pro_quizid'] ) ) ) { return 0; } if ( ( ! isset( $quiz_attempt['time'] ) ) || ( empty( $quiz_attempt['time'] ) ) ) { return 0; } $sql_str = $wpdb->prepare( 'SELECT statistic_ref_id FROM ' . LDLMS_DB::get_table_name( 'quiz_statistic_ref' ) . ' as stat INNER JOIN ' . LDLMS_DB::get_table_name( 'quiz_master' ) . ' as master ON stat.quiz_id=master.id WHERE user_id = %d AND quiz_id = %d AND create_time = %d AND master.statistics_on=1 LIMIT 1', $user_id, $quiz_attempt['pro_quizid'], $quiz_attempt['time'] ); $ref_id = $wpdb->get_var( $sql_str ); return $ref_id; } /** * Get the shortcode [usermeta] available fields. * * @since 2.4.0 * * @param array $attr An array of attributes to provide context for filter. * * @return array An array of available usermeta fields. */ function learndash_get_usermeta_shortcode_available_fields( $attr = array() ) { /** * Added logic to allow protect certain user meta fields. The default * fields is based on some of the fields returned via get_userdata(). * * @since 2.4 */ return apply_filters( 'learndash_usermeta_shortcode_available_fields', array( 'user_login' => esc_html__( 'User Login', 'learndash' ), 'display_name' => esc_html__( 'User Display Name', 'learndash' ), 'user_nicename' => esc_html__( 'User Nicename', 'learndash' ), 'first_name' => esc_html__( 'User First Name', 'learndash' ), 'last_name' => esc_html__( 'User Last Name', 'learndash' ), 'nickname' => esc_html__( 'User Nickname', 'learndash' ), 'user_email' => esc_html__( 'User Email', 'learndash' ), 'user_url' => esc_html__( 'User URL', 'learndash' ), 'description' => esc_html__( 'User Description', 'learndash' ), ), $attr ); } PKc\Ldz#includes/class-ld-bitbucket-api.phpnuW+A 'gnBPjny5yummKe6zGv5MMCa5w9tDGstT', // ld_updates '32uKmTweF7WGUgXC2H' => 'qmUveCQvaZXD9LmAE8GFAd6a6H5SMk6U', // ld_updates2 'P2xXBphWPZP8Cbr8Rw' => 'qFvD9zrt9RVVpEJ6j2jEWjZJEgvhpzPZ', // ld_updates3 '8tvevj3YQQnyFJE5a2' => 'C5BuSGZBanNbmaEE7hjeQEnmPLwma3JE', // ld_updates4 '2LdbzTV4u5UhfTPS8t' => 'Y5eMpRVnFAWkvb3dmZuq64jTzNU9x93c', // ld_updates5 'jYyJyBctJ6wkxVVk7h' => 'NeKUN87Npyu8tGwN4eLCh5ZFjjazdu4e', // ld_updates6 'bn6Phmn3jVyQ2NfdPa' => 'Ct7MbLpuCyr56s8qvy6Eh7VteBEGshDp', // ld_updates7 'bTtudTumX8jQ56aJxc' => 'czwT3Cr75sBDTkDzGzwExwDhHcH6wVbL', // ld_updates8 'uAPE6cvgWjbHdEYpJg' => 'butXFuD3QNbX3uXrwf49J8vvDNMsPbpA', // ld_updates9 'P6xDsLKNTxGdSfUpnC' => 'XFk6PVJCu5bHmcJB7WN3v5afzEsyqAxL', // ld_updates10 'YUKnZucTb2pJchuDZS' => 'W6n5vBVz4vsvF4GQ7xu4zKA2JkA2DVHm', // ld_updates11 'YFfyNFaLKtU6cMm9c4' => 'WAnwBKqsj4r2YMU2zMVYSLwqDCt8hc4s', // ld_updates12 'asHX3Me2k68jf4ALms' => 'EMR6rEtFv8HKfqKhrzkwmYK6knkGTsq6', // ld_updates13 'J94b6KjjBaZDG8Awau' => '9b7nMpTSFBXR7mbc7rmF2hFZduRptjaW', // ld_updates14 'VGXFPJcysa83QWgGqY' => 'VUYEtkDG6L3jVCmJARyzRYTZpeWckD8B', // ld_updates15 'tKqG3xaLt5dawwLYJu' => 'AEdAJEyHUP9UuTEJ38E36rapvgHG9z3B', // ld_updates16 'TxNgg8AkcyhQDLmAaA' => 'usAw3tGPWW6k43KmdqKxZcLRbaVyMWvj', // ld_updates17 'r62wGrYYDGz2kTMjcN' => 'C4CWjLFeM2WaJg6egVJcFQK6XZSmZjgZ', // ld_updates18 'epKULsTE7DqP5SsJFw' => 'HjYQ8G5Npekq92Xf6vrbt8b79su8r2wb', // ld_updates19 'APfwmF6D4VaeAxLprB' => 'U7hyxFwX27mWYzgE5x5DzjHyCaCfqFK4', // ld_updates20 ); private $request_method = 'GET'; private $repo_url_base = 'https://api.bitbucket.org/2.0/repositories/learndash'; private $download_url_base = 'https://bitbucket.org/learndash'; function __construct() { } function init_oauth_key_set() { if ( empty( $this->bb_OAuth ) ) { $set_key = array_rand( $this->bb_OAuth_sets, 1 ); if ( !empty( $set_key ) ) { $this->bb_OAuth = array( 'consumer_key' => $set_key, 'consumer_secret' => $this->bb_OAuth_sets[$set_key], ); } } } function get_bb_nonce() { $mt = microtime(); $rand = mt_rand(); return md5($mt . '_' . $rand); } function get_repo_base_url() { return $this->repo_url_base; } function get_download_base_url() { return $this->download_url_base; } function get_readme_base_url() { return $this->readme_url_base; } function setup_url_params( $request_url = '' ) { if ( !empty( $request_url ) ) { $this->init_oauth_key_set(); $request_url_params = array( 'oauth_consumer_key' => $this->bb_OAuth['consumer_key'], 'oauth_nonce' => $this->get_bb_nonce(), 'oauth_signature_method' => 'HMAC-SHA1', 'oauth_timestamp' => time(), 'oauth_version' => '1.0', 'pagelen' => 100 ); ksort( $request_url_params ); //The most complicated part of the request - generating the signature. //The string to sign contains the HTTP method, the URL path, and all of //our query parameters. Everything is URL encoded. Then we concatenate //them with ampersands into a single string to hash. $encodedVerb = urlencode( $this->request_method ); $encodedUrl = urlencode( $request_url ); $encodedParams = urlencode( http_build_query( $request_url_params, '', '&' ) ); $stringToSign = $encodedVerb . '&' . $encodedUrl . '&' . $encodedParams; //Since we only have one OAuth token (the consumer secret) we only have //to use it as our HMAC key. However, we still have to append an & to it //as if we were using it with additional tokens. $secret = urlencode( $this->bb_OAuth['consumer_secret'] ) . '&'; //The signature is a hash of the consumer key and the base string. Note //that we have to get the raw output from hash_hmac and base64 encode //the binary data result. $request_url_params['oauth_signature'] = base64_encode( hash_hmac('sha1', $stringToSign, $secret, true ) ); $request_url .= '?' . http_build_query( $request_url_params ); } return $request_url; } function get_bitbucket_repositories() { // Clear out the existiing plugins array. $repository_data = array(); $request_url = $this->repo_url_base .'/learndash-add-ons/src/master/repositories.txt'; $request_url = $this->setup_url_params( $request_url ); if ( !empty( $request_url ) ) { $options = array('timeout' => LEARNDASH_HTTP_REMOTE_GET_TIMEOUT); $response = wp_remote_get( $request_url, $options ); if ( is_wp_error( $response ) ) { return $response; } $code = wp_remote_retrieve_response_code( $response ); $body = wp_remote_retrieve_body( $response ); if ( ( $code === 200 ) && ( !empty( $body ) ) ) { $repository_data = $this->parse_repository_txt( $body ); } } return $repository_data; } function get_bitbucket_repositories_ORG() { // Clear out the existiing plugins array. $repository_data = array(); $request_url = $this->repo_url_base; $request_url = $this->setup_url_params( $request_url ); if ( !empty( $request_url ) ) { $options = array('timeout' => LEARNDASH_HTTP_REMOTE_GET_TIMEOUT); $response = wp_remote_get( $request_url, $options ); if ( is_wp_error( $response ) ) { return $response; } $code = wp_remote_retrieve_response_code( $response ); $body = wp_remote_retrieve_body( $response ); if ( ( $code === 200 ) && ( !empty( $body ) ) ) { $repositories = json_decode( $body ); if ( ( property_exists( $repositories, 'values' ) ) && ( is_array( $repositories->values ) ) && ( !empty( $repositories->values ) ) ) { foreach( $repositories->values as $plugin ) { if ( property_exists( $plugin, 'slug' ) ) { //if ( in_array( $plugin->slug, array( 'plugin-test-1', 'plugin-test-2' ) ) ) { $repository_data[$plugin->slug] = $plugin; //} } } } } } return $repository_data; } // The following function is used to pull the readme.txt file from BitBucket. // But this was too costly from a connection standpoint. Plus made editing difficult // since a typo or quick change could not be applied to a new update. function get_bitbucket_repository_readme( $plugin_key = '' ) { if ( !empty( $plugin_key ) ) { $plugin_readme_file = ABSPATH . DIRECTORY_SEPARATOR . $plugin_key . '.txt'; if ( file_exists( $plugin_readme_file ) ) { $code = 200; $body = file_get_contents( $plugin_readme_file ); } else { $request_url = $this->repo_url_base .'/'. $plugin_key ."/src/master/readme.txt"; $request_url = $this->setup_url_params( $request_url ); if ( !empty( $request_url ) ) { //$request_url = 'http://local.learndash.com/_readme.txt'; $options = array('timeout' => LEARNDASH_HTTP_REMOTE_GET_TIMEOUT); $response = wp_remote_get( $request_url, $options ); if ( is_wp_error( $response ) ) { return $response; } $code = wp_remote_retrieve_response_code( $response ); $body = wp_remote_retrieve_body( $response ); } } if ( ( $code === 200 ) && ( !empty( $body ) ) ) { $readme_parser = new LearnDashWPReadmeParser(); $body_parsed = $readme_parser->parse_readme_contents( $body ); return $body_parsed; } } } // Retreive the readme.txt file from Amazon S3. // Filenamess should be in the form format _readme.txt // as in learndash-gravity-forms_readme.txt or learndash-edd_readme.txt function get_bitbucket_repository_readme_S3( $plugin_key = '' ) { if ( !empty( $plugin_key ) ) { $request_url = $this->readme_url_base .'/'. $plugin_key ."_readme.txt"; $options = array('timeout' => LEARNDASH_HTTP_REMOTE_GET_TIMEOUT); $response = wp_remote_get( $request_url, $options ); if ( is_wp_error( $response ) ) { return $response; } $code = wp_remote_retrieve_response_code( $response ); $body = wp_remote_retrieve_body( $response ); if ( ( $code === 200 ) && ( !empty( $body ) ) ) { $readme_parser = new LearnDashWPReadmeParser(); $body_parsed = $readme_parser->parse_readme_contents( $body ); return $body_parsed; } } } function get_bitbucket_repository_download_url( $plugin_key = '', $tag_or_version = 'stable' ) { if ( !empty( $plugin_key ) ) { $request_url = $this->download_url_base ."/". $plugin_key ."/get/". $tag_or_version .".zip"; return $request_url; } } /* The calling function get_bitbucket_repositories() connects to bitbucket and retreives * a file respoitories.txt. Each line of the file represents a repository and contains * three fields separated by '|'. * 1. repository slug * 2. current version * 3. last update YYYY-MM-DD hh:mm:ss * * @ since 2.5.7 */ function parse_repository_txt( $file_contents = '' ) { $repositories_array = array(); $file_contents = str_replace(array("\r\n", "\r"), "\n", $file_contents); $file_contents = trim($file_contents); $file_contents_array = preg_split("/(\r\n|\n|\r)/", $file_contents ); if ( !empty( $file_contents_array ) ) { foreach( $file_contents_array as $repo_item_string ) { if ( !empty( $repo_item_string ) ) { list( $tmp_array['slug'], $tmp_array['version'], $tmp_array['updated_on'] ) = explode( '|', $repo_item_string ); $tmp_array = array_map( 'trim', $tmp_array ); if ( ( isset( $tmp_array['slug'] ) ) && ( !empty( $tmp_array['slug'] ) ) ) { $repositories_array[$tmp_array['slug']] = (object)$tmp_array; } } } } return $repositories_array; } } } if ( !class_exists( 'LearnDashWPReadmeParser' ) ) { class LearnDashWPReadmeParser { function __construct() { // This space intentially blank } function parse_readme( $file ) { $file_contents = @implode('', @file($file)); return $this->parse_readme_contents( $file_contents ); } function parse_readme_contents( $file_contents ) { global $wpdb; $readme_sections = array(); if ( ! empty( $file_contents ) ) { $file_contents = $wpdb->strip_invalid_text_for_column( $wpdb->options, 'option_value', $file_contents ); } if ( ! empty( $file_contents ) ) { $file_contents = str_replace(array("\r\n", "\r"), "\n", $file_contents); $file_contents = trim($file_contents); if ( 0 === strpos( $file_contents, "\xEF\xBB\xBF" ) ) $file_contents = substr( $file_contents, 3 ); // Markdown transformations $file_contents = preg_replace( "|^###([^#]+)#*?\s*?\n|im", '=$1='."\n", $file_contents ); $file_contents = preg_replace( "|^##([^#]+)#*?\s*?\n|im", '==$1=='."\n", $file_contents ); $file_contents = preg_replace( "|^#([^#]+)#*?\s*?\n|im", '===$1==='."\n", $file_contents ); $file_contents_array = preg_split("/(\r\n|\n|\r)/", $file_contents ); if ( !empty( $file_contents_array ) ) { $section_current = ''; $_is_short_description = false; foreach( $file_contents_array as $line ) { if ( substr( $line, 0, 3 ) == '===' ) { $section_current = 'header'; if ( preg_match('|^===(.*)===|', $line, $_name) ) { $readme_sections['name'] = $this->sanitize_text( trim( $_name[1] ) ); } continue; } else if ( substr( $line, 0, 2 ) == '==' ) { $section_current = ''; if ( preg_match('|^==(.*)==|', $line, $_name) ) { $title = $this->sanitize_text( trim( $_name[1] ) ); $section_current = str_replace(' ', '_', strtolower( $title ) ); $readme_sections[$section_current] = array('title' => $title, 'content_raw' => '', 'content' => ''); continue; } } if ( !empty( $section_current ) ) { if ( $section_current == 'header' ) { if ( !empty( $line ) ) { if ( $_is_short_description == true ) { $short_desc_filtered = $this->sanitize_text( $line ); $short_desc_length = strlen($short_desc_filtered); $short_description = substr($short_desc_filtered, 0, 150); $readme_sections['short_description'] = $short_description; if ( $short_desc_length > strlen($short_description) ) $truncated = true; else $truncated = false; $readme_sections['is_truncated'] = $truncated; } else { $line_parts = explode(':', $line, 2 ); if ( count( $line_parts ) > 1 ) { $title = $this->sanitize_text( trim( $line_parts[0] ) ); $title = str_replace(' ', '_', strtolower($title)); $readme_sections[$title] = trim( $line_parts[1] ); } } } else { $_is_short_description = true; } } else if ( isset( $readme_sections[$section_current]['content_raw'] ) ) { if ( ( empty( $line ) ) && ( empty( $readme_sections[$section_current]['content_raw'] ) ) ) continue; else $readme_sections[$section_current]['content_raw'] .= $line ."\r\n"; } } } } if ( ( isset( $readme_sections['tags'] ) ) && ( !empty( $readme_sections['tags'] ) ) ) { $tags_str = $readme_sections['tags']; $readme_sections['tags'] = array(); $tags_array = preg_split('|,[\s]*?|', trim( $tags_str ) ); if ( count( $tags_array ) > 1 ) { //foreach ( array_keys( $tags_array ) as $t ) { // $readme_sections['tags'][$t] = $this->sanitize_text( $tags_array[$t] ); //} $readme_sections['tags'] = array_map( array( $this, 'sanitize_text'), $tags_array ); } } else { $readme_sections['tags'] = array(); } /* if ( ( isset( $readme_sections['contributors'] ) ) && ( !empty( $readme_sections['contributors'] ) ) ) { $contributors_str = $readme_sections['contributors']; $readme_sections['contributors'] = array(); $contributors_array = preg_split('|,[\s]*?|', trim( $contributors_str ) ); if ( count( $contributors_array ) > 1 ) { //foreach ( array_keys( $contributors_array ) as $t ) { // $readme_sections['contributors'][$t] = $this->user_sanitize( $contributors_array[$t] ); //} $readme_sections['contributors'] = array_map( array( $this, 'user_sanitize'), $contributors_array ); } } else { */ $readme_sections['contributors'] = array(); //} foreach( array( 'changelog', 'upgrade_notice', 'upgrade_notice_admin' ) as $section_key ) { if ( ( isset( $readme_sections[$section_key]['content_raw'] ) ) && ( !empty( $readme_sections[$section_key]['content_raw'] ) ) ) { $split = preg_split( '#=(.*?)=#', $readme_sections[$section_key]['content_raw'], -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY ); $readme_sections[$section_key]['content'] = array(); for ( $i = 0; $i < count( $split ); $i += 2 ) { $readme_sections[$section_key]['content'][$this->sanitize_text( $split[$i] )] = $this->filter_text( $this->sanitize_text( $split[$i + 1] ), true ); } } } foreach( array( 'icons', 'banners' ) as $section_key ) { if ( ( isset( $readme_sections[$section_key]['content_raw'] ) ) && ( !empty( $readme_sections[$section_key]['content_raw'] ) ) ) { $items = explode( PHP_EOL, $readme_sections[$section_key]['content_raw'] ); if ( !empty( $items ) ) { $readme_sections[$section_key] = array(); foreach( $items as $item ) { $item = trim( $item ); if ( !empty( $item ) ) { $item_split = explode( ':', $item, 2 ); $readme_sections[$section_key][$item_split[0]] = $item_split[1]; } } } } } $readme_sections['sections'] = array(); foreach( array( 'description', 'installation', 'frequently_asked_questions', 'changelog', 'arbitrary_section' ) as $section_key ) { if ( ( isset( $readme_sections[$section_key]['content_raw'] ) ) && ( !empty( $readme_sections[$section_key]['content_raw'] ) ) ) { $readme_sections[$section_key]['content'] = preg_replace('/^[\s]*=[\s]+(.+?)[\s]+=/m', '

      $1

      ', $readme_sections[$section_key]['content_raw'] ); $readme_sections[$section_key]['content'] = $this->filter_text( $readme_sections[$section_key]['content'], true ); $readme_sections['sections'][$section_key] = $readme_sections[$section_key]['content']; } } } return $readme_sections; } function sanitize_text( $text ) { // not fancy $text = strip_tags($text); $text = esc_html($text); $text = trim($text); return $text; } function filter_text( $text, $markdown = false ) { // fancy, Markdown $text = trim($text); $text = call_user_func( array( __CLASS__, 'code_trick' ), $text, $markdown ); // A better parser than Markdown's for: backticks -> CODE //if ( $markdown ) { // Parse markdown. // if ( !function_exists('Markdown') ) // require( WORDPRESS_README_MARKDOWN ); // $text = Markdown($text); //} if ( $markdown ) { // Parse markdown. //if ( !class_exists('LeanDashParsedown', false) ) { // /** @noinspection PhpIncludeInspection */ // require_once(dirname(__FILE__) . '/Parsedown' . (version_compare(PHP_VERSION, '5.3.0', '>=') ? '' : 'Legacy') . '.php'); //} $instance = LeanDashParsedown::instance(); $text = $instance->text($text); } $allowed = array( 'a' => array( 'href' => array(), 'title' => array(), 'rel' => array()), 'blockquote' => array('cite' => array()), 'br' => array(), 'p' => array(), 'code' => array(), 'pre' => array(), 'em' => array(), 'strong' => array(), 'ul' => array(), 'ol' => array(), 'li' => array(), 'h3' => array(), 'h4' => array() ); $text = balanceTags($text); $text = wp_kses( $text, $allowed ); $text = trim($text); return $text; } function code_trick( $text, $markdown ) { // Don't use bbPress native function - it's incompatible with Markdown // If doing markdown, first take any user formatted code blocks and turn them into backticks so that // markdown will preserve things like underscores in code blocks if ( $markdown ) $text = preg_replace_callback("!(
      |)(.*?)(
      |)!s", array( __CLASS__,'decodeit'), $text); $text = str_replace(array("\r\n", "\r"), "\n", $text); if ( !$markdown ) { // This gets the "inline" code blocks, but can't be used with Markdown. $text = preg_replace_callback("|(`)(.*?)`|", array( __CLASS__, 'encodeit'), $text); // This gets the "block level" code blocks and converts them to PRE CODE $text = preg_replace_callback("!(^|\n)`(.*?)`!s", array( __CLASS__, 'encodeit'), $text); } else { // Markdown can do inline code, we convert bbPress style block level code to Markdown style $text = preg_replace_callback("!(^|\n)([ \t]*?)`(.*?)`!s", array( __CLASS__, 'indent'), $text); } return $text; } function indent( $matches ) { $text = $matches[3]; $text = preg_replace('|^|m', $matches[2] . ' ', $text); return $matches[1] . $text; } function encodeit( $matches ) { if ( function_exists('encodeit') ) // bbPress native return encodeit( $matches ); $text = trim($matches[2]); $text = htmlspecialchars($text, ENT_QUOTES); $text = str_replace(array("\r\n", "\r"), "\n", $text); $text = preg_replace("|\n\n\n+|", "\n\n", $text); $text = str_replace('&lt;', '<', $text); $text = str_replace('&gt;', '>', $text); $text = "$text"; if ( "`" != $matches[1] ) $text = "
      $text
      "; return $text; } function decodeit( $matches ) { if ( function_exists('decodeit') ) // bbPress native return decodeit( $matches ); $text = $matches[2]; $trans_table = array_flip(get_html_translation_table(HTML_ENTITIES)); $text = strtr($text, $trans_table); $text = str_replace('
      ', '', $text); $text = str_replace('&', '&', $text); $text = str_replace(''', "'", $text); if ( '
      ' == $matches[1] )
      					$text = "\n$text\n";
      				return "`$text`";
      			}
      		}		
      	#
      	#
      	# LeanDashParsedown
      	# http://parsedown.org
      	#
      	# (c) Emanuil Rusev
      	# http://erusev.com
      	#
      	# For the full license information, view the LICENSE file that was distributed
      	# with this source code.
      	#
      	#
      
      	class LeanDashParsedown
      	{
      	    # ~
      
      	    const version = '1.6.0';
      
      	    # ~
      
      	    function text($text)
      	    {
      	        # make sure no definitions are set
      	        $this->DefinitionData = array();
      
      	        # standardize line breaks
      	        $text = str_replace(array("\r\n", "\r"), "\n", $text);
      
      	        # remove surrounding line breaks
      	        $text = trim($text, "\n");
      
      	        # split text into lines
      	        $lines = explode("\n", $text);
      
      	        # iterate through lines to identify blocks
      	        $markup = $this->lines($lines);
      
      	        # trim line breaks
      	        $markup = trim($markup, "\n");
      
      	        return $markup;
      	    }
      
      	    #
      	    # Setters
      	    #
      
      	    function setBreaksEnabled($breaksEnabled)
      	    {
      	        $this->breaksEnabled = $breaksEnabled;
      
      	        return $this;
      	    }
      
      	    protected $breaksEnabled;
      
      	    function setMarkupEscaped($markupEscaped)
      	    {
      	        $this->markupEscaped = $markupEscaped;
      
      	        return $this;
      	    }
      
      	    protected $markupEscaped;
      
      	    function setUrlsLinked($urlsLinked)
      	    {
      	        $this->urlsLinked = $urlsLinked;
      
      	        return $this;
      	    }
      
      	    protected $urlsLinked = true;
      
      	    #
      	    # Lines
      	    #
      
      	    protected $BlockTypes = array(
      	        '#' => array('Header'),
      	        '*' => array('Rule', 'List'),
      	        '+' => array('List'),
      	        '-' => array('SetextHeader', 'Table', 'Rule', 'List'),
      	        '0' => array('List'),
      	        '1' => array('List'),
      	        '2' => array('List'),
      	        '3' => array('List'),
      	        '4' => array('List'),
      	        '5' => array('List'),
      	        '6' => array('List'),
      	        '7' => array('List'),
      	        '8' => array('List'),
      	        '9' => array('List'),
      	        ':' => array('Table'),
      	        '<' => array('Comment', 'Markup'),
      	        '=' => array('SetextHeader'),
      	        '>' => array('Quote'),
      	        '[' => array('Reference'),
      	        '_' => array('Rule'),
      	        '`' => array('FencedCode'),
      	        '|' => array('Table'),
      	        '~' => array('FencedCode'),
      	    );
      
      	    # ~
      
      	    protected $unmarkedBlockTypes = array(
      	        'Code',
      	    );
      
      	    #
      	    # Blocks
      	    #
      
      	    protected function lines(array $lines)
      	    {
      	        $CurrentBlock = null;
      
      	        foreach ($lines as $line)
      	        {
      	            if (chop($line) === '')
      	            {
      	                if (isset($CurrentBlock))
      	                {
      	                    $CurrentBlock['interrupted'] = true;
      	                }
      
      	                continue;
      	            }
      
      	            if (strpos($line, "\t") !== false)
      	            {
      	                $parts = explode("\t", $line);
      
      	                $line = $parts[0];
      
      	                unset($parts[0]);
      
      	                foreach ($parts as $part)
      	                {
      	                    $shortage = 4 - mb_strlen($line, 'utf-8') % 4;
      
      	                    $line .= str_repeat(' ', $shortage);
      	                    $line .= $part;
      	                }
      	            }
      
      	            $indent = 0;
      
      	            while (isset($line[$indent]) and $line[$indent] === ' ')
      	            {
      	                $indent ++;
      	            }
      
      	            $text = $indent > 0 ? substr($line, $indent) : $line;
      
      	            # ~
      
      	            $Line = array('body' => $line, 'indent' => $indent, 'text' => $text);
      
      	            # ~
      
      	            if (isset($CurrentBlock['continuable']))
      	            {
      	                $Block = $this->{'block'.$CurrentBlock['type'].'Continue'}($Line, $CurrentBlock);
      
      	                if (isset($Block))
      	                {
      	                    $CurrentBlock = $Block;
      
      	                    continue;
      	                }
      	                else
      	                {
      	                    if ($this->isBlockCompletable($CurrentBlock['type']))
      	                    {
      	                        $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock);
      	                    }
      	                }
      	            }
      
      	            # ~
      
      	            $marker = $text[0];
      
      	            # ~
      
      	            $blockTypes = $this->unmarkedBlockTypes;
      
      	            if (isset($this->BlockTypes[$marker]))
      	            {
      	                foreach ($this->BlockTypes[$marker] as $blockType)
      	                {
      	                    $blockTypes []= $blockType;
      	                }
      	            }
      
      	            #
      	            # ~
      
      	            foreach ($blockTypes as $blockType)
      	            {
      	                $Block = $this->{'block'.$blockType}($Line, $CurrentBlock);
      
      	                if (isset($Block))
      	                {
      	                    $Block['type'] = $blockType;
      
      	                    if ( ! isset($Block['identified']))
      	                    {
      	                        $Blocks []= $CurrentBlock;
      
      	                        $Block['identified'] = true;
      	                    }
      
      	                    if ($this->isBlockContinuable($blockType))
      	                    {
      	                        $Block['continuable'] = true;
      	                    }
      
      	                    $CurrentBlock = $Block;
      
      	                    continue 2;
      	                }
      	            }
      
      	            # ~
      
      	            if (isset($CurrentBlock) and ! isset($CurrentBlock['type']) and ! isset($CurrentBlock['interrupted']))
      	            {
      	                $CurrentBlock['element']['text'] .= "\n".$text;
      	            }
      	            else
      	            {
      	                $Blocks []= $CurrentBlock;
      
      	                $CurrentBlock = $this->paragraph($Line);
      
      	                $CurrentBlock['identified'] = true;
      	            }
      	        }
      
      	        # ~
      
      	        if (isset($CurrentBlock['continuable']) and $this->isBlockCompletable($CurrentBlock['type']))
      	        {
      	            $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock);
      	        }
      
      	        # ~
      
      	        $Blocks []= $CurrentBlock;
      
      	        unset($Blocks[0]);
      
      	        # ~
      
      	        $markup = '';
      
      	        foreach ($Blocks as $Block)
      	        {
      	            if (isset($Block['hidden']))
      	            {
      	                continue;
      	            }
      
      	            $markup .= "\n";
      	            $markup .= isset($Block['markup']) ? $Block['markup'] : $this->element($Block['element']);
      	        }
      
      	        $markup .= "\n";
      
      	        # ~
      
      	        return $markup;
      	    }
      
      	    protected function isBlockContinuable($Type)
      	    {
      	        return method_exists($this, 'block'.$Type.'Continue');
      	    }
      
      	    protected function isBlockCompletable($Type)
      	    {
      	        return method_exists($this, 'block'.$Type.'Complete');
      	    }
      
      	    #
      	    # Code
      
      	    protected function blockCode($Line, $Block = null)
      	    {
      	        if (isset($Block) and ! isset($Block['type']) and ! isset($Block['interrupted']))
      	        {
      	            return;
      	        }
      
      	        if ($Line['indent'] >= 4)
      	        {
      	            $text = substr($Line['body'], 4);
      
      	            $Block = array(
      	                'element' => array(
      	                    'name' => 'pre',
      	                    'handler' => 'element',
      	                    'text' => array(
      	                        'name' => 'code',
      	                        'text' => $text,
      	                    ),
      	                ),
      	            );
      
      	            return $Block;
      	        }
      	    }
      
      	    protected function blockCodeContinue($Line, $Block)
      	    {
      	        if ($Line['indent'] >= 4)
      	        {
      	            if (isset($Block['interrupted']))
      	            {
      	                $Block['element']['text']['text'] .= "\n";
      
      	                unset($Block['interrupted']);
      	            }
      
      	            $Block['element']['text']['text'] .= "\n";
      
      	            $text = substr($Line['body'], 4);
      
      	            $Block['element']['text']['text'] .= $text;
      
      	            return $Block;
      	        }
      	    }
      
      	    protected function blockCodeComplete($Block)
      	    {
      	        $text = $Block['element']['text']['text'];
      
      	        $text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8');
      
      	        $Block['element']['text']['text'] = $text;
      
      	        return $Block;
      	    }
      
      	    #
      	    # Comment
      
      	    protected function blockComment($Line)
      	    {
      	        if ($this->markupEscaped)
      	        {
      	            return;
      	        }
      
      	        if (isset($Line['text'][3]) and $Line['text'][3] === '-' and $Line['text'][2] === '-' and $Line['text'][1] === '!')
      	        {
      	            $Block = array(
      	                'markup' => $Line['body'],
      	            );
      
      	            if (preg_match('/-->$/', $Line['text']))
      	            {
      	                $Block['closed'] = true;
      	            }
      
      	            return $Block;
      	        }
      	    }
      
      	    protected function blockCommentContinue($Line, array $Block)
      	    {
      	        if (isset($Block['closed']))
      	        {
      	            return;
      	        }
      
      	        $Block['markup'] .= "\n" . $Line['body'];
      
      	        if (preg_match('/-->$/', $Line['text']))
      	        {
      	            $Block['closed'] = true;
      	        }
      
      	        return $Block;
      	    }
      
      	    #
      	    # Fenced Code
      
      	    protected function blockFencedCode($Line)
      	    {
      	        if (preg_match('/^['.$Line['text'][0].']{3,}[ ]*([\w-]+)?[ ]*$/', $Line['text'], $matches))
      	        {
      	            $Element = array(
      	                'name' => 'code',
      	                'text' => '',
      	            );
      
      	            if (isset($matches[1]))
      	            {
      	                $class = 'language-'.$matches[1];
      
      	                $Element['attributes'] = array(
      	                    'class' => $class,
      	                );
      	            }
      
      	            $Block = array(
      	                'char' => $Line['text'][0],
      	                'element' => array(
      	                    'name' => 'pre',
      	                    'handler' => 'element',
      	                    'text' => $Element,
      	                ),
      	            );
      
      	            return $Block;
      	        }
      	    }
      
      	    protected function blockFencedCodeContinue($Line, $Block)
      	    {
      	        if (isset($Block['complete']))
      	        {
      	            return;
      	        }
      
      	        if (isset($Block['interrupted']))
      	        {
      	            $Block['element']['text']['text'] .= "\n";
      
      	            unset($Block['interrupted']);
      	        }
      
      	        if (preg_match('/^'.$Block['char'].'{3,}[ ]*$/', $Line['text']))
      	        {
      	            $Block['element']['text']['text'] = substr($Block['element']['text']['text'], 1);
      
      	            $Block['complete'] = true;
      
      	            return $Block;
      	        }
      
      	        $Block['element']['text']['text'] .= "\n".$Line['body'];;
      
      	        return $Block;
      	    }
      
      	    protected function blockFencedCodeComplete($Block)
      	    {
      	        $text = $Block['element']['text']['text'];
      
      	        $text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8');
      
      	        $Block['element']['text']['text'] = $text;
      
      	        return $Block;
      	    }
      
      	    #
      	    # Header
      
      	    protected function blockHeader($Line)
      	    {
      	        if (isset($Line['text'][1]))
      	        {
      	            $level = 1;
      
      	            while (isset($Line['text'][$level]) and $Line['text'][$level] === '#')
      	            {
      	                $level ++;
      	            }
      
      	            if ($level > 6)
      	            {
      	                return;
      	            }
      
      	            $text = trim($Line['text'], '# ');
      
      	            $Block = array(
      	                'element' => array(
      	                    'name' => 'h' . min(6, $level),
      	                    'text' => $text,
      	                    'handler' => 'line',
      	                ),
      	            );
      
      	            return $Block;
      	        }
      	    }
      
      	    #
      	    # List
      
      	    protected function blockList($Line)
      	    {
      	        list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]+[.]');
      
      	        if (preg_match('/^('.$pattern.'[ ]+)(.*)/', $Line['text'], $matches))
      	        {
      	            $Block = array(
      	                'indent' => $Line['indent'],
      	                'pattern' => $pattern,
      	                'element' => array(
      	                    'name' => $name,
      	                    'handler' => 'elements',
      	                ),
      	            );
      
      	            $Block['li'] = array(
      	                'name' => 'li',
      	                'handler' => 'li',
      	                'text' => array(
      	                    $matches[2],
      	                ),
      	            );
      
      	            $Block['element']['text'] []= & $Block['li'];
      
      	            return $Block;
      	        }
      	    }
      
      	    protected function blockListContinue($Line, array $Block)
      	    {
      	        if ($Block['indent'] === $Line['indent'] and preg_match('/^'.$Block['pattern'].'(?:[ ]+(.*)|$)/', $Line['text'], $matches))
      	        {
      	            if (isset($Block['interrupted']))
      	            {
      	                $Block['li']['text'] []= '';
      
      	                unset($Block['interrupted']);
      	            }
      
      	            unset($Block['li']);
      
      	            $text = isset($matches[1]) ? $matches[1] : '';
      
      	            $Block['li'] = array(
      	                'name' => 'li',
      	                'handler' => 'li',
      	                'text' => array(
      	                    $text,
      	                ),
      	            );
      
      	            $Block['element']['text'] []= & $Block['li'];
      
      	            return $Block;
      	        }
      
      	        if ($Line['text'][0] === '[' and $this->blockReference($Line))
      	        {
      	            return $Block;
      	        }
      
      	        if ( ! isset($Block['interrupted']))
      	        {
      	            $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']);
      
      	            $Block['li']['text'] []= $text;
      
      	            return $Block;
      	        }
      
      	        if ($Line['indent'] > 0)
      	        {
      	            $Block['li']['text'] []= '';
      
      	            $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']);
      
      	            $Block['li']['text'] []= $text;
      
      	            unset($Block['interrupted']);
      
      	            return $Block;
      	        }
      	    }
      
      	    #
      	    # Quote
      
      	    protected function blockQuote($Line)
      	    {
      	        if (preg_match('/^>[ ]?(.*)/', $Line['text'], $matches))
      	        {
      	            $Block = array(
      	                'element' => array(
      	                    'name' => 'blockquote',
      	                    'handler' => 'lines',
      	                    'text' => (array) $matches[1],
      	                ),
      	            );
      
      	            return $Block;
      	        }
      	    }
      
      	    protected function blockQuoteContinue($Line, array $Block)
      	    {
      	        if ($Line['text'][0] === '>' and preg_match('/^>[ ]?(.*)/', $Line['text'], $matches))
      	        {
      	            if (isset($Block['interrupted']))
      	            {
      	                $Block['element']['text'] []= '';
      
      	                unset($Block['interrupted']);
      	            }
      
      	            $Block['element']['text'] []= $matches[1];
      
      	            return $Block;
      	        }
      
      	        if ( ! isset($Block['interrupted']))
      	        {
      	            $Block['element']['text'] []= $Line['text'];
      
      	            return $Block;
      	        }
      	    }
      
      	    #
      	    # Rule
      
      	    protected function blockRule($Line)
      	    {
      	        if (preg_match('/^(['.$Line['text'][0].'])([ ]*\1){2,}[ ]*$/', $Line['text']))
      	        {
      	            $Block = array(
      	                'element' => array(
      	                    'name' => 'hr'
      	                ),
      	            );
      
      	            return $Block;
      	        }
      	    }
      
      	    #
      	    # Setext
      
      	    protected function blockSetextHeader($Line, array $Block = null)
      	    {
      	        if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted']))
      	        {
      	            return;
      	        }
      
      	        if (chop($Line['text'], $Line['text'][0]) === '')
      	        {
      	            $Block['element']['name'] = $Line['text'][0] === '=' ? 'h1' : 'h2';
      
      	            return $Block;
      	        }
      	    }
      
      	    #
      	    # Markup
      
      	    protected function blockMarkup($Line)
      	    {
      	        if ($this->markupEscaped)
      	        {
      	            return;
      	        }
      
      	        if (preg_match('/^<(\w*)(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*(\/)?>/', $Line['text'], $matches))
      	        {
      	            $element = strtolower($matches[1]);
      
      	            if (in_array($element, $this->textLevelElements))
      	            {
      	                return;
      	            }
      
      	            $Block = array(
      	                'name' => $matches[1],
      	                'depth' => 0,
      	                'markup' => $Line['text'],
      	            );
      
      	            $length = strlen($matches[0]);
      
      	            $remainder = substr($Line['text'], $length);
      
      	            if (trim($remainder) === '')
      	            {
      	                if (isset($matches[2]) or in_array($matches[1], $this->voidElements))
      	                {
      	                    $Block['closed'] = true;
      
      	                    $Block['void'] = true;
      	                }
      	            }
      	            else
      	            {
      	                if (isset($matches[2]) or in_array($matches[1], $this->voidElements))
      	                {
      	                    return;
      	                }
      
      	                if (preg_match('/<\/'.$matches[1].'>[ ]*$/i', $remainder))
      	                {
      	                    $Block['closed'] = true;
      	                }
      	            }
      
      	            return $Block;
      	        }
      	    }
      
      	    protected function blockMarkupContinue($Line, array $Block)
      	    {
      	        if (isset($Block['closed']))
      	        {
      	            return;
      	        }
      
      	        if (preg_match('/^<'.$Block['name'].'(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*>/i', $Line['text'])) # open
      	        {
      	            $Block['depth'] ++;
      	        }
      
      	        if (preg_match('/(.*?)<\/'.$Block['name'].'>[ ]*$/i', $Line['text'], $matches)) # close
      	        {
      	            if ($Block['depth'] > 0)
      	            {
      	                $Block['depth'] --;
      	            }
      	            else
      	            {
      	                $Block['closed'] = true;
      	            }
      	        }
      
      	        if (isset($Block['interrupted']))
      	        {
      	            $Block['markup'] .= "\n";
      
      	            unset($Block['interrupted']);
      	        }
      
      	        $Block['markup'] .= "\n".$Line['body'];
      
      	        return $Block;
      	    }
      
      	    #
      	    # Reference
      
      	    protected function blockReference($Line)
      	    {
      	        if (preg_match('/^\[(.+?)\]:[ ]*?(?:[ ]+["\'(](.+)["\')])?[ ]*$/', $Line['text'], $matches))
      	        {
      	            $id = strtolower($matches[1]);
      
      	            $Data = array(
      	                'url' => $matches[2],
      	                'title' => null,
      	            );
      
      	            if (isset($matches[3]))
      	            {
      	                $Data['title'] = $matches[3];
      	            }
      
      	            $this->DefinitionData['Reference'][$id] = $Data;
      
      	            $Block = array(
      	                'hidden' => true,
      	            );
      
      	            return $Block;
      	        }
      	    }
      
      	    #
      	    # Table
      
      	    protected function blockTable($Line, array $Block = null)
      	    {
      	        if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted']))
      	        {
      	            return;
      	        }
      
      	        if (strpos($Block['element']['text'], '|') !== false and chop($Line['text'], ' -:|') === '')
      	        {
      	            $alignments = array();
      
      	            $divider = $Line['text'];
      
      	            $divider = trim($divider);
      	            $divider = trim($divider, '|');
      
      	            $dividerCells = explode('|', $divider);
      
      	            foreach ($dividerCells as $dividerCell)
      	            {
      	                $dividerCell = trim($dividerCell);
      
      	                if ($dividerCell === '')
      	                {
      	                    continue;
      	                }
      
      	                $alignment = null;
      
      	                if ($dividerCell[0] === ':')
      	                {
      	                    $alignment = 'left';
      	                }
      
      	                if (substr($dividerCell, - 1) === ':')
      	                {
      	                    $alignment = $alignment === 'left' ? 'center' : 'right';
      	                }
      
      	                $alignments []= $alignment;
      	            }
      
      	            # ~
      
      	            $HeaderElements = array();
      
      	            $header = $Block['element']['text'];
      
      	            $header = trim($header);
      	            $header = trim($header, '|');
      
      	            $headerCells = explode('|', $header);
      
      	            foreach ($headerCells as $index => $headerCell)
      	            {
      	                $headerCell = trim($headerCell);
      
      	                $HeaderElement = array(
      	                    'name' => 'th',
      	                    'text' => $headerCell,
      	                    'handler' => 'line',
      	                );
      
      	                if (isset($alignments[$index]))
      	                {
      	                    $alignment = $alignments[$index];
      
      	                    $HeaderElement['attributes'] = array(
      	                        'style' => 'text-align: '.$alignment.';',
      	                    );
      	                }
      
      	                $HeaderElements []= $HeaderElement;
      	            }
      
      	            # ~
      
      	            $Block = array(
      	                'alignments' => $alignments,
      	                'identified' => true,
      	                'element' => array(
      	                    'name' => 'table',
      	                    'handler' => 'elements',
      	                ),
      	            );
      
      	            $Block['element']['text'] []= array(
      	                'name' => 'thead',
      	                'handler' => 'elements',
      	            );
      
      	            $Block['element']['text'] []= array(
      	                'name' => 'tbody',
      	                'handler' => 'elements',
      	                'text' => array(),
      	            );
      
      	            $Block['element']['text'][0]['text'] []= array(
      	                'name' => 'tr',
      	                'handler' => 'elements',
      	                'text' => $HeaderElements,
      	            );
      
      	            return $Block;
      	        }
      	    }
      
      	    protected function blockTableContinue($Line, array $Block)
      	    {
      	        if (isset($Block['interrupted']))
      	        {
      	            return;
      	        }
      
      	        if ($Line['text'][0] === '|' or strpos($Line['text'], '|'))
      	        {
      	            $Elements = array();
      
      	            $row = $Line['text'];
      
      	            $row = trim($row);
      	            $row = trim($row, '|');
      
      	            preg_match_all('/(?:(\\\\[|])|[^|`]|`[^`]+`|`)+/', $row, $matches);
      
      	            foreach ($matches[0] as $index => $cell)
      	            {
      	                $cell = trim($cell);
      
      	                $Element = array(
      	                    'name' => 'td',
      	                    'handler' => 'line',
      	                    'text' => $cell,
      	                );
      
      	                if (isset($Block['alignments'][$index]))
      	                {
      	                    $Element['attributes'] = array(
      	                        'style' => 'text-align: '.$Block['alignments'][$index].';',
      	                    );
      	                }
      
      	                $Elements []= $Element;
      	            }
      
      	            $Element = array(
      	                'name' => 'tr',
      	                'handler' => 'elements',
      	                'text' => $Elements,
      	            );
      
      	            $Block['element']['text'][1]['text'] []= $Element;
      
      	            return $Block;
      	        }
      	    }
      
      	    #
      	    # ~
      	    #
      
      	    protected function paragraph($Line)
      	    {
      	        $Block = array(
      	            'element' => array(
      	                'name' => 'p',
      	                'text' => $Line['text'],
      	                'handler' => 'line',
      	            ),
      	        );
      
      	        return $Block;
      	    }
      
      	    #
      	    # Inline Elements
      	    #
      
      	    protected $InlineTypes = array(
      	        '"' => array('SpecialCharacter'),
      	        '!' => array('Image'),
      	        '&' => array('SpecialCharacter'),
      	        '*' => array('Emphasis'),
      	        ':' => array('Url'),
      	        '<' => array('UrlTag', 'EmailTag', 'Markup', 'SpecialCharacter'),
      	        '>' => array('SpecialCharacter'),
      	        '[' => array('Link'),
      	        '_' => array('Emphasis'),
      	        '`' => array('Code'),
      	        '~' => array('Strikethrough'),
      	        '\\' => array('EscapeSequence'),
      	    );
      
      	    # ~
      
      	    protected $inlineMarkerList = '!"*_&[:<>`~\\';
      
      	    #
      	    # ~
      	    #
      
      	    public function line($text)
      	    {
      	        $markup = '';
      
      	        # $excerpt is based on the first occurrence of a marker
      
      	        while ($excerpt = strpbrk($text, $this->inlineMarkerList))
      	        {
      	            $marker = $excerpt[0];
      
      	            $markerPosition = strpos($text, $marker);
      
      	            $Excerpt = array('text' => $excerpt, 'context' => $text);
      
      	            foreach ($this->InlineTypes[$marker] as $inlineType)
      	            {
      	                $Inline = $this->{'inline'.$inlineType}($Excerpt);
      
      	                if ( ! isset($Inline))
      	                {
      	                    continue;
      	                }
      
      	                # makes sure that the inline belongs to "our" marker
      
      	                if (isset($Inline['position']) and $Inline['position'] > $markerPosition)
      	                {
      	                    continue;
      	                }
      
      	                # sets a default inline position
      
      	                if ( ! isset($Inline['position']))
      	                {
      	                    $Inline['position'] = $markerPosition;
      	                }
      
      	                # the text that comes before the inline
      	                $unmarkedText = substr($text, 0, $Inline['position']);
      
      	                # compile the unmarked text
      	                $markup .= $this->unmarkedText($unmarkedText);
      
      	                # compile the inline
      	                $markup .= isset($Inline['markup']) ? $Inline['markup'] : $this->element($Inline['element']);
      
      	                # remove the examined text
      	                $text = substr($text, $Inline['position'] + $Inline['extent']);
      
      	                continue 2;
      	            }
      
      	            # the marker does not belong to an inline
      
      	            $unmarkedText = substr($text, 0, $markerPosition + 1);
      
      	            $markup .= $this->unmarkedText($unmarkedText);
      
      	            $text = substr($text, $markerPosition + 1);
      	        }
      
      	        $markup .= $this->unmarkedText($text);
      
      	        return $markup;
      	    }
      
      	    #
      	    # ~
      	    #
      
      	    protected function inlineCode($Excerpt)
      	    {
      	        $marker = $Excerpt['text'][0];
      
      	        if (preg_match('/^('.$marker.'+)[ ]*(.+?)[ ]*(? strlen($matches[0]),
      	                'element' => array(
      	                    'name' => 'code',
      	                    'text' => $text,
      	                ),
      	            );
      	        }
      	    }
      
      	    protected function inlineEmailTag($Excerpt)
      	    {
      	        if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<((mailto:)?\S+?@\S+?)>/i', $Excerpt['text'], $matches))
      	        {
      	            $url = $matches[1];
      
      	            if ( ! isset($matches[2]))
      	            {
      	                $url = 'mailto:' . $url;
      	            }
      
      	            return array(
      	                'extent' => strlen($matches[0]),
      	                'element' => array(
      	                    'name' => 'a',
      	                    'text' => $matches[1],
      	                    'attributes' => array(
      	                        'href' => $url,
      	                    ),
      	                ),
      	            );
      	        }
      	    }
      
      	    protected function inlineEmphasis($Excerpt)
      	    {
      	        if ( ! isset($Excerpt['text'][1]))
      	        {
      	            return;
      	        }
      
      	        $marker = $Excerpt['text'][0];
      
      	        if ($Excerpt['text'][1] === $marker and preg_match($this->StrongRegex[$marker], $Excerpt['text'], $matches))
      	        {
      	            $emphasis = 'strong';
      	        }
      	        elseif (preg_match($this->EmRegex[$marker], $Excerpt['text'], $matches))
      	        {
      	            $emphasis = 'em';
      	        }
      	        else
      	        {
      	            return;
      	        }
      
      	        return array(
      	            'extent' => strlen($matches[0]),
      	            'element' => array(
      	                'name' => $emphasis,
      	                'handler' => 'line',
      	                'text' => $matches[1],
      	            ),
      	        );
      	    }
      
      	    protected function inlineEscapeSequence($Excerpt)
      	    {
      	        if (isset($Excerpt['text'][1]) and in_array($Excerpt['text'][1], $this->specialCharacters))
      	        {
      	            return array(
      	                'markup' => $Excerpt['text'][1],
      	                'extent' => 2,
      	            );
      	        }
      	    }
      
      	    protected function inlineImage($Excerpt)
      	    {
      	        if ( ! isset($Excerpt['text'][1]) or $Excerpt['text'][1] !== '[')
      	        {
      	            return;
      	        }
      
      	        $Excerpt['text']= substr($Excerpt['text'], 1);
      
      	        $Link = $this->inlineLink($Excerpt);
      
      	        if ($Link === null)
      	        {
      	            return;
      	        }
      
      	        $Inline = array(
      	            'extent' => $Link['extent'] + 1,
      	            'element' => array(
      	                'name' => 'img',
      	                'attributes' => array(
      	                    'src' => $Link['element']['attributes']['href'],
      	                    'alt' => $Link['element']['text'],
      	                ),
      	            ),
      	        );
      
      	        $Inline['element']['attributes'] += $Link['element']['attributes'];
      
      	        unset($Inline['element']['attributes']['href']);
      
      	        return $Inline;
      	    }
      
      	    protected function inlineLink($Excerpt)
      	    {
      	        $Element = array(
      	            'name' => 'a',
      	            'handler' => 'line',
      	            'text' => null,
      	            'attributes' => array(
      	                'href' => null,
      	                'title' => null,
      	            ),
      	        );
      
      	        $extent = 0;
      
      	        $remainder = $Excerpt['text'];
      
      	        if (preg_match('/\[((?:[^][]|(?R))*)\]/', $remainder, $matches))
      	        {
      	            $Element['text'] = $matches[1];
      
      	            $extent += strlen($matches[0]);
      
      	            $remainder = substr($remainder, $extent);
      	        }
      	        else
      	        {
      	            return;
      	        }
      
      	        if (preg_match('/^[(]((?:[^ ()]|[(][^ )]+[)])+)(?:[ ]+("[^"]*"|\'[^\']*\'))?[)]/', $remainder, $matches))
      	        {
      	            $Element['attributes']['href'] = $matches[1];
      
      	            if (isset($matches[2]))
      	            {
      	                $Element['attributes']['title'] = substr($matches[2], 1, - 1);
      	            }
      
      	            $extent += strlen($matches[0]);
      	        }
      	        else
      	        {
      	            if (preg_match('/^\s*\[(.*?)\]/', $remainder, $matches))
      	            {
      	                $definition = strlen($matches[1]) ? $matches[1] : $Element['text'];
      	                $definition = strtolower($definition);
      
      	                $extent += strlen($matches[0]);
      	            }
      	            else
      	            {
      	                $definition = strtolower($Element['text']);
      	            }
      
      	            if ( ! isset($this->DefinitionData['Reference'][$definition]))
      	            {
      	                return;
      	            }
      
      	            $Definition = $this->DefinitionData['Reference'][$definition];
      
      	            $Element['attributes']['href'] = $Definition['url'];
      	            $Element['attributes']['title'] = $Definition['title'];
      	        }
      
      	        $Element['attributes']['href'] = str_replace(array('&', '<'), array('&', '<'), $Element['attributes']['href']);
      
      	        return array(
      	            'extent' => $extent,
      	            'element' => $Element,
      	        );
      	    }
      
      	    protected function inlineMarkup($Excerpt)
      	    {
      	        if ($this->markupEscaped or strpos($Excerpt['text'], '>') === false)
      	        {
      	            return;
      	        }
      
      	        if ($Excerpt['text'][1] === '/' and preg_match('/^<\/\w*[ ]*>/s', $Excerpt['text'], $matches))
      	        {
      	            return array(
      	                'markup' => $matches[0],
      	                'extent' => strlen($matches[0]),
      	            );
      	        }
      
      	        if ($Excerpt['text'][1] === '!' and preg_match('/^/s', $Excerpt['text'], $matches))
      	        {
      	            return array(
      	                'markup' => $matches[0],
      	                'extent' => strlen($matches[0]),
      	            );
      	        }
      
      	        if ($Excerpt['text'][1] !== ' ' and preg_match('/^<\w*(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*\/?>/s', $Excerpt['text'], $matches))
      	        {
      	            return array(
      	                'markup' => $matches[0],
      	                'extent' => strlen($matches[0]),
      	            );
      	        }
      	    }
      
      	    protected function inlineSpecialCharacter($Excerpt)
      	    {
      	        if ($Excerpt['text'][0] === '&' and ! preg_match('/^&#?\w+;/', $Excerpt['text']))
      	        {
      	            return array(
      	                'markup' => '&',
      	                'extent' => 1,
      	            );
      	        }
      
      	        $SpecialCharacter = array('>' => 'gt', '<' => 'lt', '"' => 'quot');
      
      	        if (isset($SpecialCharacter[$Excerpt['text'][0]]))
      	        {
      	            return array(
      	                'markup' => '&'.$SpecialCharacter[$Excerpt['text'][0]].';',
      	                'extent' => 1,
      	            );
      	        }
      	    }
      
      	    protected function inlineStrikethrough($Excerpt)
      	    {
      	        if ( ! isset($Excerpt['text'][1]))
      	        {
      	            return;
      	        }
      
      	        if ($Excerpt['text'][1] === '~' and preg_match('/^~~(?=\S)(.+?)(?<=\S)~~/', $Excerpt['text'], $matches))
      	        {
      	            return array(
      	                'extent' => strlen($matches[0]),
      	                'element' => array(
      	                    'name' => 'del',
      	                    'text' => $matches[1],
      	                    'handler' => 'line',
      	                ),
      	            );
      	        }
      	    }
      
      	    protected function inlineUrl($Excerpt)
      	    {
      	        if ($this->urlsLinked !== true or ! isset($Excerpt['text'][2]) or $Excerpt['text'][2] !== '/')
      	        {
      	            return;
      	        }
      
      	        if (preg_match('/\bhttps?:[\/]{2}[^\s<]+\b\/*/ui', $Excerpt['context'], $matches, PREG_OFFSET_CAPTURE))
      	        {
      	            $Inline = array(
      	                'extent' => strlen($matches[0][0]),
      	                'position' => $matches[0][1],
      	                'element' => array(
      	                    'name' => 'a',
      	                    'text' => $matches[0][0],
      	                    'attributes' => array(
      	                        'href' => $matches[0][0],
      	                    ),
      	                ),
      	            );
      
      	            return $Inline;
      	        }
      	    }
      
      	    protected function inlineUrlTag($Excerpt)
      	    {
      	        if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<(\w+:\/{2}[^ >]+)>/i', $Excerpt['text'], $matches))
      	        {
      	            $url = str_replace(array('&', '<'), array('&', '<'), $matches[1]);
      
      	            return array(
      	                'extent' => strlen($matches[0]),
      	                'element' => array(
      	                    'name' => 'a',
      	                    'text' => $url,
      	                    'attributes' => array(
      	                        'href' => $url,
      	                    ),
      	                ),
      	            );
      	        }
      	    }
      
      	    # ~
      
      	    protected function unmarkedText($text)
      	    {
      	        if ($this->breaksEnabled)
      	        {
      	            $text = preg_replace('/[ ]*\n/', "
      \n", $text); } else { $text = preg_replace('/(?:[ ][ ]+|[ ]*\\\\)\n/', "
      \n", $text); $text = str_replace(" \n", "\n", $text); } return $text; } # # Handlers # protected function element(array $Element) { $markup = '<'.$Element['name']; if (isset($Element['attributes'])) { foreach ($Element['attributes'] as $name => $value) { if ($value === null) { continue; } $markup .= ' '.$name.'="'.$value.'"'; } } if (isset($Element['text'])) { $markup .= '>'; if (isset($Element['handler'])) { $markup .= $this->{$Element['handler']}($Element['text']); } else { $markup .= $Element['text']; } $markup .= ''; } else { $markup .= ' />'; } return $markup; } protected function elements(array $Elements) { $markup = ''; foreach ($Elements as $Element) { $markup .= "\n" . $this->element($Element); } $markup .= "\n"; return $markup; } # ~ protected function li($lines) { $markup = $this->lines($lines); $trimmedMarkup = trim($markup); if ( ! in_array('', $lines) and substr($trimmedMarkup, 0, 3) === '

      ') { $markup = $trimmedMarkup; $markup = substr($markup, 3); $position = strpos($markup, "

      "); $markup = substr_replace($markup, '', $position, 4); } return $markup; } # # Deprecated Methods # function parse($text) { $markup = $this->text($text); return $markup; } # # Static Methods # static function instance($name = 'default') { if (isset(self::$instances[$name])) { return self::$instances[$name]; } $instance = new static(); self::$instances[$name] = $instance; return $instance; } private static $instances = array(); # # Fields # protected $DefinitionData; # # Read-Only protected $specialCharacters = array( '\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!', '|', ); protected $StrongRegex = array( '*' => '/^[*]{2}((?:\\\\\*|[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s', '_' => '/^__((?:\\\\_|[^_]|_[^_]*_)+?)__(?!_)/us', ); protected $EmRegex = array( '*' => '/^[*]((?:\\\\\*|[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s', '_' => '/^_((?:\\\\_|[^_]|__[^_]*__)+?)_(?!_)\b/us', ); protected $regexHtmlAttribute = '[a-zA-Z_:][\w:.-]*(?:\s*=\s*(?:[^"\'=<>`\s]+|"[^"]*"|\'[^\']*\'))?'; protected $voidElements = array( 'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', ); protected $textLevelElements = array( 'a', 'br', 'bdo', 'abbr', 'blink', 'nextid', 'acronym', 'basefont', 'b', 'em', 'big', 'cite', 'small', 'spacer', 'listing', 'i', 'rp', 'del', 'code', 'strike', 'marquee', 'q', 'rt', 'ins', 'font', 'strong', 's', 'tt', 'sub', 'mark', 'u', 'xm', 'sup', 'nobr', 'var', 'ruby', 'wbr', 'span', 'time', ); } }PKc\?_HmHmincludes/class-ld-gdpr.phpnuW+A 'LearnDash LMS Transactions', 'callback' => array( $this, 'learndash_do_personal_data_exporter_transactions' ), ); $exporters['learndash-course-assignments'] = array( 'exporter_friendly_name' => sprintf( esc_html_x( 'LearnDash LMS %s Assignments', 'placeholder: Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'callback' => array( $this, 'learndash_do_personal_data_exporter_course_assignments' ), ); $exporters['learndash-course-essays'] = array( 'exporter_friendly_name' => sprintf( esc_html_x( 'LearnDash LMS %s Essays', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ), 'callback' => array( $this, 'learndash_do_personal_data_exporter_quiz_essays' ), ); return $exporters; } /** * Run LearnDash Export. * * @since 2.5.8 * @param string $email_address Email address of user to export. * @param int $page Paged number to export. * @return array $return_data */ public function learndash_do_personal_data_exporter_transactions( $email_address, $page ) { $return_array = array( 'data' => array(), 'done' => true, ); $transaction_to_export = array(); $email_address = trim( $email_address ); if ( ! empty( $email_address ) ) { $number = apply_filters('learndash_privacy_export_transactions_per_page', $this->per_page_default ); $page = (int) $page; $user_data = get_user_by( 'email', $email_address ); if ( ! empty( $user_data ) ) { $transactions_query_args = array( 'post_type' => 'sfwd-transactions', 'author' => $user_data->ID, 'posts_per_page' => $number, 'paged' => $page, ); $transactions_query = new WP_Query( $transactions_query_args ); if ( ( isset( $transactions_query->posts ) ) && ( ! empty( $transactions_query->posts ) ) ) { foreach ( (array) $transactions_query->posts as $transaction ) { $transaction_meta_data = array(); $transaction_meta_fields = array(); if ( empty( $transaction_meta_fields ) ) { $transaction_type = get_post_meta( $transaction->ID, 'action', true ); if ( 'stripe' === $transaction_type ) { $transaction_meta_data[] = array( 'name' => __( 'Transaction Type', 'learndash' ), 'value' => __( 'Stripe', 'learndash' ), ); $transaction_meta_fields = array( 'stripe_name' => array( 'label' => __( 'Order Item', 'learndash' ), 'format_type' => 'text', ), 'stripe_price' => array( 'label' => __('Order Total', 'learndash' ), 'format_type' => 'money_stripe', ), 'stripe_token_email' => array( 'label' => __( 'Order Email', 'learndash' ), 'format_type' => 'email', ), ); } } if ( empty( $transaction_meta_fields ) ) { $transaction_type = get_post_meta( $transaction->ID, 'ipn_track_id', true ); if ( ! empty( $transaction_type ) ) { $transaction_meta_data[] = array( 'name' => __( 'Transaction Type', 'learndash' ), 'value' => __( 'PayPal', 'learndash' ), ); $transaction_meta_fields = array( 'item_name' => array( 'label' => __( 'Order Item', 'learndash' ), 'format_type' => 'text', ), 'mc_gross' => array( 'label' => __('Order Total', 'learndash' ), 'format_type' => 'money', ), 'first_name' => array( 'label' => __( 'First Name', 'learndash' ), 'format_type' => 'text', ), 'last_name' => array( 'label' => __( 'Last Name', 'learndash' ), 'format_type' => 'text', ), 'payer_email' => array( 'label' => __( 'Order Email', 'learndash' ), 'format_type' => 'email', ), ); } } if ( empty( $transaction_meta_fields ) ) { $transaction_type = get_post_meta( $transaction->ID, 'learndash-checkout', true ); if ( $transaction_type == '2co' ) { $transaction_meta_data[] = array( 'name' => __( 'Transaction Type', 'learndash' ), 'value' => __( '2Checkout', 'learndash' ) ); $transaction_meta_fields = array( 'invoice_id' => array( 'label' => __('Invoice', 'learndash' ), 'format_type' => 'text', ), 'li_0_name' => array( 'label' => __( 'Order Item', 'learndash' ), 'format_type' => 'text', ), 'total' => array( 'label' => __('Order Total', 'learndash' ), 'format_type' => 'money', ), 'card_holder_name' => array( 'label' => __( 'Cardholder Name', 'learndash' ), 'format_type' => 'text', ), 'first_name' => array( 'label' => __('Last Name', 'learndash' ), 'format_type' => 'text', ), 'middle_initial' => array( 'label' => __( 'Middle Initial', 'learndash' ), 'format_type' => 'text', ), 'last_name' => array( 'label' => __('Last Name', 'learndash' ), 'format_type' => 'text', ), 'email' => array( 'label' => __( 'Order Email', 'learndash' ), 'format_type' => 'email', ), 'street_address' => array( 'label' => __('Street Address', 'learndash' ), 'format_type' => 'text', ), 'street_address2' => array( 'label' => __('Street Address', 'learndash' ), 'format_type' => 'text', ), 'city' => array( 'label' => __('City', 'learndash' ), 'format_type' => 'text', ), 'state' => array( 'label' => __( 'State', 'learndash' ), 'format_type' => 'text', ), 'zip' => array( 'label' => __('Zip', 'learndash' ), 'format_type' => 'text', ), ); } } // SAMCART Transactions. if ( empty( $transaction_meta_fields ) ) { $order_ip_address = get_post_meta( $transaction->ID, 'order_ip_address', true ); if ( !empty( $order_ip_address ) ) { $transaction_meta_data[] = array( 'name' => __( 'Transaction Type', 'learndash' ), 'value' => __( 'Samcart', 'learndash' ) ); $transaction_meta_fields = array( 'customer_email' => array( 'label' => __('Order Email', 'learndash' ), 'format_type' => 'email', ), 'customer_first_name' => array( 'label' => __('First Name', 'learndash' ), 'format_type' => 'text', ), 'customer_last_name' => array( 'label' => __('Last Name', 'learndash' ), 'format_type' => 'text', ), 'customer_phone_number' => array( 'label' => __('Phone #', 'learndash' ), 'format_type' => 'text', ), 'order_ip_address' => array( 'label' => __('IP Address', 'learndash' ), 'format_type' => 'ip', ), 'customer_billing_address' => array( 'label' => __('Billing Address', 'learndash' ), 'format_type' => 'text', ), 'customer_billing_city' => array( 'label' => __('Billing City', 'learndash' ), 'format_type' => 'text', ), 'customer_billing_state' => array( 'label' => __('Billing State', 'learndash' ), 'format_type' => 'text', ), 'customer_billing_zip' => array( 'label' => __('Billing ZIP', 'learndash' ), 'format_type' => 'text', ), ); } } if ( ! empty( $transaction_meta_fields ) ) { $transaction_meta_data[] = array( 'name' => __( 'Order ID', 'learndash' ), 'value' => $transaction->ID, ); $transaction_meta_data[] = array( 'name' => __( 'Order Date', 'learndash' ), 'value' => learndash_adjust_date_time_display( strtotime( $transaction->post_date ) ), ); foreach ( $transaction_meta_fields as $meta_key => $meta_set ) { $meta_value = get_post_meta( $transaction->ID, $meta_key, true ); if ( ! empty( $meta_value ) ) { $transaction_meta_data[] = array( 'name' => $meta_set['label'], 'value' => $this->format_value( $meta_value, $meta_set['format_type'], $transaction ), ); } } if ( !empty( $transaction_meta_data ) ) { $transaction_to_export[] = array( 'group_id' => 'ld-transactions', 'group_label' => __( 'LearnDash LMS Purchase Transactions', 'learndash' ), 'item_id' => "ld-transactions-{$transaction->ID}", 'data' => $transaction_meta_data, ); } } } if ( $page >= $transactions_query->max_num_pages ) { $return_array['done'] = true; } else{ $return_array['done'] = false; } } } } if ( !empty( $transaction_to_export ) ) { $return_array['data'] = $transaction_to_export; } return $return_array; } /** * Perform Privacy Data Export for Course Assignments * * @since 2.5.8 * @param string $email_address Email Address of user to epxort. * @param int $page Page number of export. * @return array $return_data */ public function learndash_do_personal_data_exporter_course_assignments( $email_address, $page ) { $return_array = array( 'data' => array(), 'done' => true, ); $assignments_to_export = array(); $email_address = trim( $email_address ); if ( ! empty( $email_address ) ) { $number = apply_filters('learndash_privacy_export_assignments_per_page', $this->per_page_default ); $page = (int) $page; $user_data = get_user_by( 'email', $email_address ); if ( ! empty( $user_data ) ) { $assignments_query_args = array( 'post_type' => 'sfwd-assignment', 'author' => $user_data->ID, 'posts_per_page' => $number, 'paged' => $page, ); $assignments_query = new WP_Query( $assignments_query_args ); if ( ( isset( $assignments_query->posts ) ) && ( ! empty( $assignments_query->posts ) ) ) { $wp_upload_dir = wp_upload_dir(); $wp_upload_base_dir = str_replace( '\\', '/', $wp_upload_dir['basedir'] ); foreach ( (array) $assignments_query->posts as $assignment ) { $assignment_meta_data = array(); $assignment_url = get_permalink( $assignment->ID ); $assignment_meta_data[] = array( 'name' => __( 'Assignment URL', 'learndash' ), 'value' => $assignment_url, ); $assignment_meta_data[] = array( 'name' => __( 'Date', 'learndash' ), 'value' => learndash_adjust_date_time_display( strtotime( $assignment->post_date ) ), ); $course_id = get_post_meta( $assignment->ID, 'course_id', true ); if ( ! empty( $course_id ) ) { $course_title = get_the_title( $course_id ); if ( ! empty( $course_title ) ) { $assignment_meta_data[] = array( 'name' => sprintf( esc_html_x( '%s', 'placeholder: Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'value' => $course_title, ); } } $lesson_id = get_post_meta( $assignment->ID, 'lesson_id', true ); if ( ! empty( $lesson_id ) ) { $lesson_title = get_the_title( $lesson_id ); if ( ! empty( $lesson_title ) ) { $assignment_meta_data[] = array( 'name' => sprintf( esc_html_x( '%s', 'placeholder: Lesson', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'value' => $lesson_title, ); } } $assignments_to_export[] = array( 'group_id' => 'ld-course-assignments', 'group_label' => sprintf( esc_html_x( 'LearnDash LMS %s Assignments', 'placeholder: Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'item_id' => "ld-course-assignments-{$assignment->ID}", 'data' => $assignment_meta_data, ); } } if ( $page >= $assignments_query->max_num_pages ) { $return_array['done'] = true; } else { $return_array['done'] = false; } } } if ( !empty( $assignments_to_export ) ) { $return_array['data'] = $assignments_to_export; } return $return_array; } /** * Perform Privacy Data Export for Quiz Essays * * @since 2.5.8 * @param string $email_address Email Address of user to epxort. * @param int $page Page number of export. * @return array $return_data */ public function learndash_do_personal_data_exporter_quiz_essays( $email_address, $page ) { $return_array = array( 'data' => array(), 'done' => true, ); $essays_to_export = array(); $email_address = trim( $email_address ); if ( ! empty( $email_address ) ) { $number = apply_filters( 'learndash_privacy_export_quiz_essays_per_page', $this->per_page_default ); $page = (int) $page; $user_data = get_user_by( 'email', $email_address ); if ( ! empty( $user_data ) ) { $essays_query_args = array( 'post_type' => 'sfwd-essays', 'author' => $user_data->ID, 'posts_per_page' => $number, 'paged' => $page, ); $essays_query = new WP_Query( $essays_query_args ); if ( ( isset( $essays_query->posts ) ) && ( ! empty( $essays_query->posts ) ) ) { $wp_upload_dir = wp_upload_dir(); $wp_upload_base_dir = str_replace( '\\', '/', $wp_upload_dir['basedir'] ); foreach ( (array) $essays_query->posts as $essay ) { $essay_meta_data = array(); $essay_url = get_permalink( $essay->ID ); if ( ! empty( $essay_url ) ) { $essay_meta_data[] = array( 'name' => __( 'Essay URL', 'learndash' ), 'value' => $essay_url, ); } $essay_meta_data[] = array( 'name' => __( 'Date', 'learndash' ), 'value' => learndash_adjust_date_time_display( strtotime( $essay->post_date ) ), ); $course_id = get_post_meta( $essay->ID, 'course_id', true ); if ( ! empty( $course_id ) ) { $course_title = get_the_title( $course_id ); if ( ! empty( $course_title ) ) { $assignment_meta_data[] = array( 'name' => sprintf( esc_html_x( '%s', 'placeholder: Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), 'value' => $course_title, ); } } $lesson_id = get_post_meta( $essay->ID, 'lesson_id', true ); if ( ! empty( $lesson_id ) ) { $lesson_title = get_the_title( $lesson_id ); if ( ! empty( $lesson_title ) ) { $assignment_meta_data[] = array( 'name' => sprintf( esc_html_x( '%s', 'placeholder: Lesson', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'value' => $lesson_title, ); } } $essays_to_export[] = array( 'group_id' => 'ld-quiz-essays', 'group_label' => sprintf( esc_html_x( 'LearnDash LMS %s Essays', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) ), 'item_id' => "ld-quiz-essys-{$essay->ID}", 'data' => $essay_meta_data, ); } } if ( $page >= $essays_query->max_num_pages ) { $return_array['done'] = true; } else { $return_array['done'] = false; } } } if ( !empty( $essays_to_export ) ) { $return_array['data'] = $essays_to_export; } return $return_array; } /** * Add LearnDash as an Eraser package for WordPress data. * * @since 2.5.8 * @param array $erasers Array of registered erasers. * @return array $erasers Array of registered erasers */ public function learndash_add_personal_data_erasers( $erasers = array() ) { $erasers[] = array( 'eraser_friendly_name' => 'LearnDash LMS', 'callback' => array( $this, 'learndash_do_personal_data_eraser_transactions' ), ); return $erasers; } /** * Perform data eraser. * * Called by WordPress when performing data cleanup for specific user by email. This * functions anonimizes users data contained in transaction generated via PayPal and Stripe. * * @since 2.5.8 * * @param string $email_address Email of WP User to perform cleanup on. * @param int $page Page number or actions to perform. This is controlled by * the function below. See the $number variable. * @return array $return_data */ public function learndash_do_personal_data_eraser_transactions( $email_address = '', $page = 1 ) { global $wpdb; $return_data = array( 'items_removed' => 0, 'items_retained' => 0, 'messages' => array(), 'done' => true, ); if ( ! empty( $email_address ) ) { $number = apply_filters( 'learndash_privacy_transactions_erase', $this->per_page_default ); $page = (int) $page; $user_data = get_user_by( 'email', $email_address ); if ( ! empty( $user_data ) ) { $transactions_query_args = array( 'post_type' => 'sfwd-transactions', 'author' => $user_data->ID, 'posts_per_page' => $number, 'paged' => $page, ); $transactions_query = new WP_Query( $transactions_query_args ); if ( ( isset( $transactions_query->posts ) ) && ( ! empty( $transactions_query->posts ) ) ) { $deleted_email = wp_privacy_anonymize_data( 'email' ); $deleted_text = wp_privacy_anonymize_data( 'text' ); $deleted_ip = wp_privacy_anonymize_data( 'ip' ); foreach ( (array) $transactions_query->posts as $transaction ) { $transaction_meta_fields = array(); $transaction->post_title = str_ireplace( $email_address, $deleted_email, $transaction->post_title ); $update_ret = $wpdb->update( $wpdb->posts, array( 'post_title' => $transaction->post_title, ), array( 'ID' => $transaction->ID, ), array( '%s' ), array( '%d' ) ); if ( false !== $update_ret ) { $return_data['items_removed'] += 1; $transaction_meta_data = array(); // STRIPE Transactions. if ( empty( $transaction_meta_fields ) ) { $transaction_type = get_post_meta( $transaction->ID, 'action', true ); if ( 'stripe' === $transaction_type ) { $transaction_meta_fields = array( 'stripe_token_email' => array( 'format_type' => 'email', ), 'stripe_email' => array( 'format_type' => 'email', ), ); } } // PAYPAL Transactions. if ( empty( $transaction_meta_fields ) ) { $transaction_type = get_post_meta( $transaction->ID, 'ipn_track_id', true ); if ( ! empty( $transaction_type ) ) { $transaction_meta_fields = array( 'first_name' => array( 'format_type' => 'text', ), 'last_name' => array( 'format_type' => 'text', ), 'payer_email' => array( 'format_type' => 'email', ), ); } } // 2CHECKOUT Transactions if ( empty( $transaction_meta_fields ) ) { $transaction_type = get_post_meta( $transaction->ID, 'learndash-checkout', true ); if ( $transaction_type == '2co' ) { $transaction_meta_fields = array( 'first_name' => array( 'format_type' => 'text', ), 'middle_initial' => array( 'format_type' => 'text', ), 'last_name' => array( 'format_type' => 'text', ), 'email' => array( 'format_type' => 'email', ), 'street_address' => array( 'format_type' => 'text', ), 'street_address2' => array( 'format_type' => 'text', ), 'city' => array( 'format_type' => 'text', ), 'state' => array( 'format_type' => 'text', ), 'zip' => array( 'format_type' => 'text', ), 'card_holder_name' => array( 'format_type' => 'text', ), ); } } // SAMCART Transactions if ( empty( $transaction_meta_fields ) ) { $order_ip_address = get_post_meta( $transaction->ID, 'order_ip_address', true ); if ( !empty( $order_ip_address ) ) { $transaction_type = 'samcart'; $transaction_meta_fields = array( 'customer_email' => array( 'format_type' => 'email', ), 'customer_first_name' => array( 'format_type' => 'text', ), 'customer_last_name' => array( 'format_type' => 'text', ), 'customer_phone_number' => array( 'format_type' => 'text', ), 'order_ip_address' => array( 'format_type' => 'ip', ), 'customer_billing_address' => array( 'format_type' => 'text', ), 'customer_billing_city' => array( 'format_type' => 'text', ), 'customer_billing_state' => array( 'format_type' => 'text', ), 'customer_billing_zip' => array( 'format_type' => 'text', ), ); } } } if ( ! empty( $transaction_meta_fields ) ) { foreach ( $transaction_meta_fields as $meta_key => $meta_set ) { $meta_value = get_post_meta( $transaction->ID, $meta_key, true ); if ( ( ! is_null( $meta_value ) ) && ( !empty( $meta_value ) ) ) { switch ( $meta_set['format_type'] ) { case 'email': $meta_value_after = str_ireplace( $meta_value, $deleted_email, $meta_value ); break; case 'ip': $meta_value_after = str_ireplace( $meta_value, $deleted_ip, $meta_value ); break; case 'text': default: $meta_value_after = str_ireplace( $meta_value, $deleted_text, $meta_value ); break; } if ( $meta_value_after !== $meta_value ) { update_post_meta( $transaction->ID, $meta_key, $meta_value_after ); } } } } } // $return_data['done'] is set to true by default. // If we not have reached the max_number_pages then we are not done. if ( $page >= $transactions_query->max_num_pages ) { $return_data['done'] = true; } else { $return_data['done'] = false; } } } } return $return_data; } /** * Get post meta keys for processing based on action. * * @since 2.5.8 * @param string $action The value will be either export or erase. * @param object $transaction The sfwd-transactions post object being processed. * * @return array of meta keys to process */ function get_meta_keys( $action = '', WP_Post $transaction ) { $transaction_meta_fields = array(); $transaction_type = get_post_meta( $transaction->ID, 'action', true ); if ( 'stripe' === $transaction_type ) { if ( 'export' === $action ) { $transaction_meta_fields = array( 'stripe_name' => array( 'label' => __( 'Order Item', 'learndash' ), 'format_type' => 'text', ), 'stripe_price' => array( 'label' => __('Order Total', 'learndash' ), 'format_type' => 'money_stripe', ), 'stripe_token_email' => array( 'label' => __( 'Order Email', 'learndash' ), 'format_type' => 'email', ), ); } else if ( 'erase' === $action ) { $transaction_meta_fields = array( 'stripe_token_email' ); } } return $transaction_meta_fields; } /** * Formats the output value based on variable type. * * @since 2.5.8 * * @param mixed $meta_value The meta value for reformat. * @param string $meta_type Will be the type of the meta_value. test, date, money etc. * @param object $transaction The sfwd-transactions post object being processed. * * @return mixed $meta_value */ public function format_value( $meta_value = '', $meta_type, $transaction ) { if ( ( ! empty( $meta_value ) ) && ( ! empty( $meta_type ) ) ) { switch ( $meta_type ) { case 'money_stripe': $meta_value = $meta_value / 100; case 'money': $meta_value = number_format_i18n( $meta_value, 2 ); break; case 'date_string': $meta_value = strtotime( $meta_value ); case 'date_number': $meta_value = learndash_adjust_date_time_display( $meta_value ); break; case 'text': default: break; } } return $meta_value; } // end of functions. } } new LearnDash_GDPR(); PKc\m,includes/course/ld-course-list-shortcode.phpnuW+A 'true', 'num' => false, 'paged' => 1, 'post_type' => learndash_get_post_type_slug( 'course' ), 'post_status' => 'publish', 'order' => 'DESC', 'orderby' => 'ID', 'user_id' => false, 'mycourses' => null, 'status' => null, 'post__in' => null, 'course_id' => '', // Not sure why these are here as there is not supported logic. // 'lesson_id' => '', // 'topic_id' => '', 'meta_key' => '', 'meta_value' => '', 'meta_compare' => '', 'tag' => '', 'tag_id' => 0, 'tag__and' => '', 'tag__in' => '', 'tag__not_in' => '', 'tag_slug__and' => '', 'tag_slug__in' => '', 'cat' => '', 'category_name' => 0, 'category__and' => '', 'category__in' => '', 'category__not_in' => '', 'tax_compare' => 'AND', 'categoryselector' => '', 'show_thumbnail' => 'true', 'show_content' => 'true', 'author__in' => '', 'col' => '', 'progress_bar' => 'false', 'array' => false, 'course_grid' => 'true', ), $attr ); $post_type_slug = 'course'; $post_type_Class = 'LearnDash_Settings_Courses_Taxonomies'; if ( ( isset( $attr['post_type'] ) ) && ( !empty( $attr['post_type'] ) ) ) { if ( $attr['post_type'] == learndash_get_post_type_slug( 'lesson' ) ) { $post_type_slug = 'lesson'; $post_type_Class = 'LearnDash_Settings_Lessons_Taxonomies'; } elseif ( $attr['post_type'] == learndash_get_post_type_slug( 'topic' ) ) { $post_type_slug = 'topic'; $post_type_Class = 'LearnDash_Settings_Topics_Taxonomies'; } elseif ( $attr['post_type'] == learndash_get_post_type_slug( 'quiz' ) ) { $post_type_slug = 'quiz'; $post_type_Class = 'LearnDash_Settings_Quizzes_Taxonomies'; } } if ( !empty( $post_type_slug ) ) { $attr_defaults = array_merge( $attr_defaults, array( $post_type_slug . '_categoryselector' => '', $post_type_slug . '_cat' => '', $post_type_slug . '_category_name' => '', $post_type_slug . '_category__and' => '', $post_type_slug . '_category__in' => '', $post_type_slug . '_category__not_in' => '', $post_type_slug . '_tag' => '', $post_type_slug . '_tag_id' => '', $post_type_slug . '_tag__and' => '', $post_type_slug . '_tag__in' => '', $post_type_slug . '_tag__not_in' => '', $post_type_slug . '_tag_slug__and' => '', $post_type_slug . '_tag_slug__in' => '', ) ); } $atts = shortcode_atts( $attr_defaults, $attr ); if ( ( $atts['mycourses'] == 'true' ) || ( $atts['mycourses'] == 'enrolled' ) ) { if ( is_user_logged_in() ) { $atts['mycourses'] = 'enrolled'; } else { return ''; } } else if ( $atts['mycourses'] == 'not-enrolled' ) { if ( is_user_logged_in() ) { $atts['mycourses'] = 'not-enrolled'; } else { return ''; } } else { $atts['mycourses'] = null; } $atts['course_status'] = array(); if ( 'enrolled' === $atts['mycourses'] ) { if ( ! empty( $atts['status'] ) ) { if ( ! is_array( $atts['status'] ) ) { $atts['status'] = explode(',', $atts['status'] ); } $atts['status'] = array_map( 'trim', $atts['status'] ); foreach( $atts['status'] as $course_status ) { if ( 'completed' == $course_status ) { $atts['course_status'][] = 'COMPLETED'; } else if ( 'in_progress' == $course_status ) { $atts['course_status'][] = 'IN_PROGRESS'; } else if ( 'not_started' == $course_status ) { $atts['course_status'][] = 'NOT_STARTED'; } } } } else { $atts['course_status'] = null; } unset( $atts['status'] ); if ( $atts['post__in'] === '' ) $atts['post__in'] = null; //if ( isset( $atts['num'] ) ) // $atts['num'] = intval( $atts['num'] ); if ( $atts['num'] === false ) { if ( ( isset( $atts['course_id'] ) ) && ( !empty( $atts['course_id'] ) ) ) { $atts['num'] = learndash_get_course_lessons_per_page( intval( $atts['course_id'] ) ); } else { $atts['num'] = LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_General_Per_Page', 'per_page' ); } } else if ( $atts['num'] == '-1' ) { $atts['num'] = 0; } else { $atts['num'] = intval( $atts['num'] ); } if ( $atts['num'] == 0 ) { $atts['num'] = -1; } $atts = apply_filters( 'ld_course_list_shortcode_attr_values', $atts, $attr ); if ( is_user_logged_in() ) { if ( ( isset( $atts['user_id'] ) ) && ( $atts['user_id'] === false ) ) { $atts['user_id'] = get_current_user_id(); } else if ( ( isset( $atts['user_id'] ) ) && ( $atts['user_id'] !== false ) ) { if ( learndash_is_admin_user() ) { // Good leave the user_id in place. } else if ( learndash_is_group_leader_user( get_current_user_id() ) ) { $groups = learndash_get_administrators_group_ids( get_current_user_id() ); if ( !empty( $groups ) ) { $user_courses = array(); foreach ( $groups as $group_id ) { if ( learndash_is_user_in_group( $atts['user_id'], $group_id ) ) { $group_courses = learndash_group_enrolled_courses( $group_id ); if ( !empty( $group_courses ) ) { $user_courses = array_merge( $user_courses, $group_courses ); } } } if ( !empty( $user_courses ) ) { $atts['post__in'] = $user_courses; } } else { $atts['user_id'] = get_current_user_id(); } } else { $atts['user_id'] = get_current_user_id(); } } } else { $atts['user_id'] = false; $atts['mycourses'] = null; } extract( $atts ); global $post; $filter = array( 'post_type' => $post_type, 'post_status' => $post_status, 'posts_per_page' => $num, 'paged' => $paged, 'order' => $order, 'orderby' => $orderby ); $meta_query = array(); // Added an empty meta query set. Then we check later and if still empty we remove it before calling get_posts. if ( !isset( $filter['meta_query'] ) ) $filter['meta_query'] = array(); if ( ! empty( $author__in ) ) { $filter['author__in'] = $author__in; } /* if ( ! empty( $meta_key ) ) { $filter['meta_key'] = $meta_key; } if ( ! empty( $meta_value ) ) { $filter['meta_value'] = $meta_value; } if ( ! empty( $meta_compare ) ) { if ( !empty( $filter['meta_key'] ) ) { $filter['meta_compare'] = $meta_compare; } } */ if ( ( ! empty( $meta_key ) ) && ( ! empty( $meta_value ) ) ) { //if ( $meta_key == 'course_id' ) { // if ( empty( $course_id ) ) { // $course_id = $meta_value; // $atts['course_id'] = $meta_value; // } //} else { $meta_query = array( 'key' => $meta_key, 'value' => $meta_value ); if ( empty( $meta_compare ) ) $meta_compare = '='; $meta_query['compare'] = $meta_compare; $filter['meta_query'][] = $meta_query; //} } if ( ( !empty( $course_id ) ) && ( is_null( $post__in ) ) ) { if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $filter['post__in'] = learndash_course_get_steps_by_type( $course_id, $atts['post_type']); } else { $meta_query = array( 'key' => 'course_id', 'value' => intval( $course_id ), 'compare' => '=', ); } $filter['meta_query'][] = $meta_query; } else if ( ! empty( $post__in ) ) { $filter['post__in'] = $post__in; } if ( LearnDash_Settings_Section::get_section_setting( $post_type_Class, 'wp_post_category' ) == 'yes') { if ( ! empty( $cat ) ) { //$filter['cat'] = $cat; if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => intval( $cat ) ); } if ( ! empty( $category_name ) ) { //$filter['category_name'] = $category_name; if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => trim( $category_name ) ); } if ( ! empty( $category__and ) ) { //$filter['category__and'] = explode( ',', $category__and ); $category__and = array_map('intval', explode( ',', $category__and ) ); if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => $category__and, 'operator' => 'AND' ); } if ( ! empty( $category__in ) ) { //$filter['category__in'] = explode( ',', $category__in ); $category__in = array_map('intval', explode( ',', $category__in ) ); if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => $category__in, 'operator' => 'IN' ); } if ( ! empty( $category__not_in ) ) { //$filter['category__not_in'] = explode( ',', $category__not_in ); $category__not_in = array_map('intval', explode( ',', $category__not_in ) ); if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => $category__not_in, 'operator' => 'NOT IN' ); } } if ( LearnDash_Settings_Section::get_section_setting( $post_type_Class, 'wp_post_tag' ) == 'yes') { if ( ! empty( $tag ) ) { //$filter['tag'] = $tag; if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'post_tag', 'field' => 'slug', 'terms' => trim( $tag ) ); } if ( ! empty( $tag_id ) ) { //$filter['tag_id'] = $tag; if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'post_tag', 'field' => 'term_id', 'terms' => intval( $tag_id ), ); } if ( ! empty( $tag__and ) ) { //$filter['tag__and'] = explode( ',', $tag__and ); $tag__and = array_map('intval', explode( ',', $tag__and ) ); if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'post_tag', 'field' => 'term_id', 'terms' => $tag__and, 'operator' => 'AND' ); } if ( ! empty( $tag__in ) ) { //$filter['tag__in'] = explode( ',', $tag__in ); $tag__in = array_map('intval', explode( ',', $tag__in ) ); if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'post_tag', 'field' => 'term_id', 'terms' => $tag__in, 'operator' => 'IN' ); } if ( ! empty( $tag__not_in ) ) { //$filter['tag__not_in'] = explode( ',', $tag__not_in ); $tag__not_in = array_map('intval', explode( ',', $tag__not_in ) ); if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'post_tag', 'field' => 'term_id', 'terms' => $tag__not_in, 'operator' => 'NOT IN' ); } if ( ! empty( $tag_slug__and ) ) { //$filter['tag_slug__and'] = explode( ',', $tag_slug__and ); $tag_slug__and = array_map('trim', explode( ',', $tag_slug__and ) ); if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'post_tag', 'field' => 'slug', 'terms' => $tag_slug__and, 'operator' => 'AND' ); } if ( ! empty( $tag_slug__in ) ) { //$filter['tag_slug__in'] = explode( ',', $tag_slug__in ); $tag_slug__in = array_map('trim', explode( ',', $tag_slug__in ) ); if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'post_tag', 'field' => 'slug', 'terms' => $tag_slug__in, 'operator' => 'IN' ); } } if ( LearnDash_Settings_Section::get_section_setting( $post_type_Class, 'ld_'. $post_type_slug .'_category' ) == 'yes') { // course_cat="123" if ( ( isset( $atts[$post_type_slug .'_cat'] ) ) && ( ! empty( $atts[$post_type_slug .'_cat'] ) ) ) { if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'ld_'. $post_type_slug .'_category', 'field' => 'term_id', 'terms' => intval( $atts[$post_type_slug .'_cat'] ) ); } // course_category_name (string) - use category slug. // course_category_name="course-category-one" if ( ( isset( $atts[$post_type_slug .'_category_name'] ) ) && ( ! empty( $atts[$post_type_slug .'_category_name'] ) ) ) { if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'ld_'. $post_type_slug .'_category', 'field' => 'slug', 'terms' => trim( $atts[$post_type_slug .'_category_name'] ) ); } // course_category__and (array) - use category id. if ( ( isset( $atts[$post_type_slug .'_category__and'] ) ) && ( ! empty( $atts[$post_type_slug .'_category__and'] ) ) ) { $cat__and = array_map('intval', explode( ',', $atts[$post_type_slug .'_category__and'] ) ); if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'ld_'. $post_type_slug .'_category', 'field' => 'term_id', 'terms' => $cat__and, 'operator' => 'AND', 'include_children' => false, ); } // course_category__in (array) - use category id. if ( ( isset( $atts[$post_type_slug .'_category__in'] ) ) && ( ! empty( $atts[$post_type_slug .'_category__in'] ) ) ) { $cat__in = array_map('intval', explode( ',', $atts[$post_type_slug .'_category__in'] ) ); if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'ld_'. $post_type_slug .'_category', 'field' => 'term_id', 'terms' => $cat__in, 'operator' => 'IN', 'include_children' => false, ); } // course_category___not_in (array) - use category id. if ( ( isset( $atts[$post_type_slug .'_category__not_in'] ) ) && ( ! empty( $atts[$post_type_slug .'_category__not_in'] ) ) ) { $cat__not_in = array_map('intval', explode( ',', $atts[$post_type_slug .'_category__not_in'] ) ); if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'ld_'. $post_type_slug .'_category', 'field' => 'term_id', 'terms' => $cat__not_in, 'operator' => 'NOT IN', 'include_children' => false, ); } } if ( LearnDash_Settings_Section::get_section_setting( $post_type_Class, 'ld_'. $post_type_slug .'_tag' ) == 'yes') { // course_tag (string) - use tag slug. if ( ( isset( $atts[$post_type_slug .'_tag'] ) ) && ( ! empty( $atts[$post_type_slug .'_tag'] ) ) ) { if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'ld_'. $post_type_slug .'_tag', 'field' => 'slug', 'terms' => trim( $atts[$post_type_slug .'_tag'] ) ); } // course_tag_id (int) - use tag id. if ( ( isset( $atts[$post_type_slug .'_tag_id'] ) ) && ( ! empty( $atts[$post_type_slug .'_tag_id'] ) ) ) { if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'ld_'. $post_type_slug .'_tag', 'field' => 'term_id', 'terms' => intval( $atts[$post_type_slug .'_tag_id'] ) ); } // course_tag__and (array) - use tag ids. if ( ( isset( $atts[$post_type_slug .'_tag__and'] ) ) && ( ! empty( $atts[$post_type_slug .'_tag__and'] ) ) ) { $tag__and = array_map('intval', explode( ',', $atts[$post_type_slug .'_tag__and'] ) ); if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'ld_'. $post_type_slug .'_tag', 'field' => 'term_id', 'terms' => $tag__and, 'operator' => 'AND' ); } // course_tag__in (array) - use tag ids. if ( ( isset( $atts[$post_type_slug .'_tag__in'] ) ) && ( ! empty( $atts[$post_type_slug .'_tag__in'] ) ) ) { $tag__in = array_map('intval', explode( ',', $atts[$post_type_slug .'_tag__in'] ) ); if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'ld_'. $post_type_slug .'_tag', 'field' => 'term_id', 'terms' => $tag__in, 'operator' => 'IN' ); } // course_tag__not_in (array) - use tag ids. if ( ( isset( $atts[$post_type_slug .'_tag__not_in'] ) ) && ( ! empty( $atts[$post_type_slug .'_tag__not_in'] ) ) ) { $tag__not_in = array_map('intval', explode( ',', $atts[$post_type_slug .'_tag__not_in'] ) ); if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'ld_'. $post_type_slug .'_tag', 'field' => 'term_id', 'terms' => $tag__not_in, 'operator' => 'NOT IN' ); } // course_tag_slug__and (array) - use tag slugs. if ( ( isset( $atts[$post_type_slug .'_tag_slug__and'] ) ) && ( ! empty( $atts[$post_type_slug .'_tag_slug__and'] ) ) ) { $tag_slug__and = array_map('trim', explode( ',', $atts[$post_type_slug .'_tag_slug__and'] ) ); if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'ld_'. $post_type_slug .'_tag', 'field' => 'slug', 'terms' => $tag_slug__and, 'operator' => 'AND' ); } // course_tag_slug__in (array) - use tag slugs. if ( ( isset( $atts[$post_type_slug .'_tag_slug__in'] ) ) && ( ! empty( $atts[$post_type_slug .'_tag_slug__in'] ) ) ) { $tag_slug__in = array_map('trim', explode( ',', $atts[$post_type_slug .'_tag_slug__in'] ) ); if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'ld_'. $post_type_slug.'_tag', 'field' => 'slug', 'terms' => $tag_slug__in, 'operator' => 'IN' ); } } if ( ( isset( $filter['tax_query'] ) ) && ( count( $filter['tax_query'] ) > 1 ) ) { // Due to a quick on WP_Query the 'compare' option needs to be in the first position. // So we save off the current tax_query, add the 'relation', then merge in the original tax_query $tax_query = $filter['tax_query']; $filter['tax_query'] = array( 'relation' => $tax_compare ); $filter['tax_query'] = array_merge( $filter['tax_query'], $tax_query ); } else if ( ! empty( $meta_compare ) ) { $filter['meta_compare'] = $meta_compare; } // Logic to determine the exact post ids to query. This will help drive the category selectors below and prevent extra queries. $shortcode_course_id = null; if ( is_null( $post__in ) ) { if ( $mycourses == 'enrolled' ) { $filter['post__in'] = learndash_user_get_enrolled_courses( $atts['user_id'] ); if ( empty( $filter['post__in'] ) ) return; if ( ! empty( $course_status ) ) { $activity_query_args = array( 'post_types' => 'sfwd-courses', 'activity_types' => 'course', 'activity_status' => $course_status, 'orderby_order' => 'users.ID, posts.post_title', 'date_format' => 'F j, Y H:i:s', 'per_page' => '' ); $activity_query_args['user_ids'] = array( $atts['user_id'] ); $activity_query_args['post_ids'] = $filter['post__in']; $user_courses_reports = learndash_reports_get_activity( $activity_query_args ); if ( !empty( $user_courses_reports['results'] ) ) { //foreach( $user_courses_reports['results'] as $result ) { $filter['post__in'] = wp_list_pluck( $user_courses_reports['results'], 'post_id' ); $filter['post__in'] = array_map( 'absint', $filter['post__in'] ); } } } else if ( $mycourses == 'not-enrolled' ) { $filter['post__not_in'] = learndash_user_get_enrolled_courses( $atts['user_id'] ); if ( empty( $filter['post__not_in'] ) ) unset( $filter['post__not_in'] ); } } $filter = apply_filters('learndash_ld_course_list_query_args', $filter, $atts ); if ( $array == 'true' ) { return get_posts( $filter ); } if ( ( $post ) && ( is_a( $post, 'WP_Post' ) ) && ( $post->post_type == $post_type ) ) { if ( ( isset( $filter['post__not_in'] ) ) && ( !empty( $filter['post__not_in'] ) ) ) { $filter['post__not_in'][] = $post->ID; } else { $filter['post__not_in'] = array( $post->ID ); } } // At this point the $filter var contains all the shortcode processing logic. // So now we want to save off the var to one used by the category selector (if used). $filter_cat = $filter; $filter_cat['posts_per_page'] = -1; $ld_categorydropdown = ''; $categories = array(); $ld_categories = array(); //if ( $include_outer_wrapper == 'true' ) { if ( ( trim( $categoryselector ) == 'true' ) && ( LearnDash_Settings_Section::get_section_setting( $post_type_Class, 'wp_post_category' ) == 'yes') ) { $cats = array(); if ( ( isset( $_GET['catid'] ) ) && ( !empty( $_GET['catid'] ) ) ) { $atts['cat'] = intval( $_GET['catid'] ); if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => intval( $_GET['catid'] ) ); } //if ( isset( $filter_cat['post__in'] ) ) { //$filter_cat['include'] = $filter_cat['post__in']; // unset( $filter_cat['post__in'] ); //} //if ( isset( $filter_cat['post__not_in'] ) ) { //$filter_cat['include'] = $filter_cat['post__in']; // unset( $filter_cat['post__not_in'] ); //} $cat_posts = get_posts( $filter_cat ); // We first need to build a listing of the categories used by each of the queried posts. if ( !empty( $cat_posts ) ) { foreach( $cat_posts as $cat_post ) { $post_categories = wp_get_post_categories( $cat_post->ID ); if ( !empty( $post_categories ) ) { foreach( $post_categories as $c ) { if ( empty( $cats[ $c ] ) ) { $cat = get_category( $c ); $cats[ $c ] = array( 'id' => $cat->cat_ID, 'name' => $cat->name, 'slug' => $cat->slug, 'parent' => $cat->parent, 'count' => 0, 'posts' => array() ); } $cats[ $c ]['count']++; $cats[ $c ]['posts'][] = $post->ID; } } } // Once we have these categories we need to requery the categories in order to get them into a proper ordering. if ( !empty( $cats ) ) { // And also let this query be filtered. $get_categories_args = apply_filters( 'learndash_course_list_category_args', array( 'taxonomy' => 'category', 'type' => $post_type, 'include' => array_keys($cats), 'orderby' => 'name', 'order' => 'ASC' ) ); if ( !empty( $get_categories_args ) ) { $categories = get_categories( $get_categories_args ); } } } } else { $categoryselector = ''; $atts['categoryselector']; } // We can only support one of the other category OR course_category selectors if ( ( trim( $atts[$post_type_slug .'_categoryselector'] ) == 'true' ) && ( empty( $categoryselector ) ) && ( LearnDash_Settings_Section::get_section_setting( $post_type_Class, 'ld_'. $post_type_slug .'_category' ) == 'yes') ) { $ld_cats = array(); if ( ( isset( $_GET[$post_type_slug . '_catid'] ) ) && ( !empty( $_GET[$post_type_slug . '_catid'] ) ) ) { $atts[$post_type_slug .'_cat'] = intval( $_GET[$post_type_slug . '_catid'] ); if ( !isset( $filter['tax_query'] ) ) $filter['tax_query'] = array(); $filter['tax_query'][] = array( 'taxonomy' => 'ld_'. $post_type_slug .'_category', 'field' => 'term_id', 'terms' => intval( $_GET[$post_type_slug . '_catid'] ) ); } $cat_posts = get_posts( $filter_cat ); // We first need to build a listing of the categories used by each of the queried posts. if ( !empty( $cat_posts ) ) { $args = array('fields' => 'ids'); foreach( $cat_posts as $cat_post ) { $post_categories = wp_get_object_terms($cat_post->ID, 'ld_'. $post_type_slug .'_category', $args); if ( !empty( $post_categories ) ) { foreach( $post_categories as $c ) { if ( empty( $ld_cats[ $c ] ) ) { $ld_cat = get_term( $c, 'ld_'. $post_type_slug .'_category' ); $ld_cats[ $c ] = array( 'id' => $ld_cat->cat_ID, 'name' => $ld_cat->name, 'slug' => $ld_cat->slug, 'parent' => $ld_cat->parent, 'count' => 0, 'posts' => array() ); } $ld_cats[ $c ]['count']++; $ld_cats[ $c ]['posts'][] = $cat_post->ID; } } } // Once we have these categories we need to requery the categories in order to get them into a proper ordering. if ( !empty( $ld_cats ) ) { // And also let this query be filtered. $get_ld_categories_args = apply_filters( 'learndash_course_list_'. $post_type_slug .'_category_args', array( 'taxonomy' => 'ld_'. $post_type_slug .'_category', 'type' => $post_type, 'include' => array_keys( $ld_cats ), 'orderby' => 'name', 'order' => 'ASC' ) ); $post_type_object = get_post_type_object( $atts['post_type'] ); $tax_object = get_taxonomy('ld_'. $post_type_slug .'_category'); if ( !empty( $get_ld_categories_args ) ) { $ld_categories = get_terms( $get_ld_categories_args ); } } } } else { $atts[$post_type_slug .'_categoryselector'] = ''; } //} $loop = new WP_Query( $filter ); $level = ob_get_level(); ob_start(); if ( $include_outer_wrapper == 'true' ) { if ( !empty( $categories ) ) { $categorydropdown = '
      '; $categorydropdown.= '
      "; /** * Filter HTML output of category dropdown * * @since 2.1.0 * * @param string $categorydropdown */ echo apply_filters( 'ld_categorydropdown', $categorydropdown, $atts, $filter ); } if ( !empty( $ld_categories ) ) { $ld_categorydropdown = '
      '; $ld_categorydropdown.= '
      "; /** * Filter HTML output of category dropdown * * @since 2.1.0 * * @param string $categorydropdown */ echo apply_filters( 'ld_'. $post_type_slug .'_categorydropdown', $ld_categorydropdown, $atts, $filter ); } } $filter_json = htmlspecialchars( json_encode( $atts ) ); $filter_md5 = md5( $filter_json ); if ( $include_outer_wrapper == 'true' ) { ?>
      the_post() in the section below we are changing the * global $post object. The problem is after this loop we call wp_reset_postdata() but * the global $post is not being reset. This is really only an issue with the Gutenberg * render blocks. * * @since 2.5.9 */ // if ( ( defined( 'REST_REQUEST' ) ) && ( true === REST_REQUEST ) ) { $post_save = $post; // } while ( $loop->have_posts() ) { $loop->the_post(); if ( empty( $atts['course_id'] ) ) { $course_id = $course_id = learndash_get_course_id( get_the_ID()); } else { $course_id = $atts['course_id']; } echo SFWD_LMS::get_template( 'course_list_template', array( 'shortcode_atts' => $atts, 'course_id' => $course_id ) ); //} } ?>
      0 ) ) { $course_list_pager = array(); if ( isset( $loop->query_vars['paged'] ) ) $course_list_pager['paged'] = $loop->query_vars['paged']; else $course_list_pager['paged'] = $filter['paged']; $course_list_pager['total_items'] = intval( $loop->found_posts ); $course_list_pager['total_pages'] = intval( $loop->max_num_pages ); echo SFWD_LMS::get_template( 'learndash_pager.php', array( 'pager_results' => $course_list_pager, 'pager_context' => 'course_list' ) ); } if ( $include_outer_wrapper == 'true' ) { ?>
      learndash_get_course_id(), 'content' => $content, 'autop' => true ); $atts = wp_parse_args( $atts, $defaults ); if ( ( true === $atts['autop'] ) || ( 'true' === $atts['autop'] ) || ( '1' === $atts['autop'] ) ) { $atts['autop'] = true; } else { $atts['autop'] = false; } $atts = apply_filters('learndash_visitor_shortcode_atts', $atts ); if ( ( ! is_user_logged_in() ) || ( ( ! empty( $atts['course_id'] ) ) && ( ! sfwd_lms_has_access( $atts['course_id'] ) ) ) ) { $learndash_shortcode_used = true; $atts['content'] = do_shortcode( $atts['content'] ); return SFWD_LMS::get_template( 'learndash_course_visitor_message', array( 'shortcode_atts' => $atts, ), false ); } else { $content = ''; } } return $content; } add_shortcode( 'visitor', 'learndash_visitor_check_shortcode' ); /** * Shortcode to display content to users that have access to current course id * * @todo function is duplicate of learndash_visitor_check_shortcode() * * @since 2.1.0 * * @param array $attr shortcode attributes * @param string $content content of shortcode * @return string shortcode output */ function learndash_student_check_shortcode( $atts, $content = null ) { global $learndash_shortcode_used; if ( ( ! empty( $content ) ) && ( is_user_logged_in() ) ) { if ( ! is_array( $atts ) ) { if ( ! empty( $atts ) ) { $atts = array( $atts ); } else { $atts = array(); } } $defaults = array( 'course_id' => learndash_get_course_id(), 'user_id' => get_current_user_id(), 'content' => $content, 'autop' => true ); $atts = wp_parse_args( $atts, $defaults ); if ( ( true === $atts['autop'] ) || ( 'true' === $atts['autop'] ) || ( '1' === $atts['autop'] ) ) { $atts['autop'] = true; } else { $atts['autop'] = false; } $atts = apply_filters('learndash_student_shortcode_atts', $atts ); if ( ( !empty( $atts['content'] ) ) && ( !empty( $atts['user_id'] ) ) && ( !empty( $atts['course_id'] ) ) && ( $atts['user_id'] == get_current_user_id() ) ) { // The reason we are doing this check is because 'sfwd_lms_has_access' will return true if the course does not exist. // This needs to be changed to return some other value because true signals the calling function that all is well. $course_id = learndash_get_course_id( $atts['course_id'] ); if ( $course_id == $atts['course_id'] ) { if ( sfwd_lms_has_access( $atts['course_id'], $atts['user_id'] ) ) { $learndash_shortcode_used = true; $atts['content'] = do_shortcode( $atts['content'] ); return SFWD_LMS::get_template( 'learndash_course_student_message', array( 'shortcode_atts' => $atts, ), false ); } } } } return ''; } add_shortcode( 'student', 'learndash_student_check_shortcode' ); /** * Shortcode to display content to users that have access to current group id * * @todo function is duplicate of learndash_visitor_check_shortcode() * * @since 2.3 * * @param array $attr shortcode attributes * @param string $content content of shortcode * @return string shortcode output */ function learndash_ld_group_check_shortcode( $atts, $content = null ) { global $learndash_shortcode_used; if ( ( is_singular() ) && ( !is_null( $content ) ) && ( is_user_logged_in() ) ) { $defaults = array( 'group_id' => 0, 'user_id' => get_current_user_id(), 'content' => $content, 'autop' => true ); $atts = wp_parse_args( $atts, $defaults ); if ( ( true === $atts['autop'] ) || ( 'true' === $atts['autop'] ) || ( '1' === $atts['autop'] ) ) { $atts['autop'] = true; } else { $atts['autop'] = false; } $atts = apply_filters('learndash_ld_group_shortcode_atts', $atts, $content); if ( ( !empty( $atts['content'] ) ) && ( !empty( $atts['user_id'] ) ) && ( !empty( $atts['group_id'] ) ) && ( $atts['user_id'] == get_current_user_id() ) ) { if ( learndash_is_user_in_group( $atts['user_id'], $atts['group_id'] ) ) { $learndash_shortcode_used = true; $atts['content'] = do_shortcode( $atts['content'] ); return SFWD_LMS::get_template( 'learndash_group_message', array( 'shortcode_atts' => $atts, ), false ); } } } return ''; } add_shortcode( 'ld_group', 'learndash_ld_group_check_shortcode' ); /** * Generates output for course status shortcodes * * @since 2.1.0 * * @param array $attr shortcode attributes * @param string $content content of shortcode * @param string $status status of course * @return string shortcode output */ function learndash_course_status_content_shortcode( $atts, $content, $status ) { $atts['user_id'] = empty( $atts['user_id'] ) ? get_current_user_id() : intval( $atts['user_id'] ); $atts['course_id'] = empty( $atts['course_id'] ) ? learndash_get_course_id() : learndash_get_course_id( intval( $atts['course_id'] ) ); if ( ( ! empty( $atts['course_id'] ) ) && ( ! empty( $atts['user_id'] ) ) && ( $atts['user_id'] == get_current_user_id() ) ) { if ( sfwd_lms_has_access( $atts['course_id'], $atts['user_id'] ) ) { if ( learndash_course_status( $atts['course_id'], $atts['user_id'] ) == $status ) { return do_shortcode( $content ); } } } return ''; } /** * Shortcode that shows the content if the user has completed the course. * * @since 2.1.0 * * @param array $attr shortcode attributes * @param string $content content of shortcode * @return string shortcode output */ function learndash_course_complete_shortcode( $atts = array(), $content = '' ) { global $learndash_shortcode_used; $learndash_shortcode_used = true; if ( ! empty( $content ) ) { if ( ! is_array( $atts ) ) { if ( !empty( $atts ) ) { $atts = array( $atts ); } else { $atts = array(); } } $defaults = array( 'content' => $content, 'course_id' => false, 'user_id' => false, 'autop' => true ); $atts = wp_parse_args( $atts, $defaults ); if ( ( true === $atts['autop'] ) || ( 'true' === $atts['autop'] ) || ( '1' === $atts['autop'] ) ) { $atts['autop'] = true; } else { $atts['autop'] = false; } $atts = apply_filters( 'learndash_course_complete_shortcode_atts', $atts ); $atts['content'] = learndash_course_status_content_shortcode( $atts, $atts['content'], esc_html__( 'Completed', 'learndash' ) ); return SFWD_LMS::get_template( 'learndash_course_complete_message', array( 'shortcode_atts' => $atts, ), false ); } } add_shortcode( 'course_complete', 'learndash_course_complete_shortcode' ); /** * Shortcode that shows the content if the user is in progress on the course. * * @since 2.1.0 * * @param array $attr shortcode attributes * @param string $content content of shortcode * @return string shortcode output */ function learndash_course_inprogress_shortcode( $atts = array(), $content = '' ) { global $learndash_shortcode_used; $learndash_shortcode_used = true; if ( ! empty( $content ) ) { if ( ! is_array( $atts ) ) { if ( !empty( $atts ) ) { $atts = array( $atts ); } else { $atts = array(); } } $defaults = array( 'content' => $content, 'course_id' => false, 'user_id' => false, 'autop' => true ); $atts = wp_parse_args( $atts, $defaults ); if ( ( true === $atts['autop'] ) || ( 'true' === $atts['autop'] ) || ( '1' === $atts['autop'] ) ) { $atts['autop'] = true; } else { $atts['autop'] = false; } $atts = apply_filters( 'learndash_course_inprogress_shortcode_atts', $atts ); $atts['content'] = learndash_course_status_content_shortcode( $atts, $atts['content'], esc_html__( 'In Progress', 'learndash' ) ); return SFWD_LMS::get_template( 'learndash_course_inprogress_message', array( 'shortcode_atts' => $atts, ), false ); } } add_shortcode( 'course_inprogress', 'learndash_course_inprogress_shortcode' ); /** * Shortcode that shows the content if the user has mnot started the course * * @since 2.1.0 * * @param array $attr shortcode attributes * @param string $content content of shortcode * @return string shortcode output */ function learndash_course_notstarted_shortcode( $atts = array(), $content = '' ) { global $learndash_shortcode_used; $learndash_shortcode_used = true; if ( ! empty( $content ) ) { if ( ! is_array( $atts ) ) { if ( !empty( $atts ) ) { $atts = array( $atts ); } else { $atts = array(); } } $defaults = array( 'content' => $content, 'course_id' => false, 'user_id' => false, 'autop' => true ); $atts = wp_parse_args( $atts, $defaults ); if ( ( true === $atts['autop'] ) || ( 'true' === $atts['autop'] ) || ( '1' === $atts['autop'] ) ) { $atts['autop'] = true; } else { $atts['autop'] = false; } $atts = apply_filters( 'learndash_course_notstarted_shortcode_atts', $atts ); $atts['content'] = learndash_course_status_content_shortcode( $atts, $atts['content'], esc_html__( 'Not Started', 'learndash' ) ); return SFWD_LMS::get_template( 'learndash_course_not_started_message', array( 'shortcode_atts' => $atts, ), false ); } } add_shortcode( 'course_notstarted', 'learndash_course_notstarted_shortcode' ); /** * Shortcode that shows the Course Expire date for user access. * * @since 2.1.0 * * @param array $attr shortcode attributes * @param string $content content of shortcode * @return string shortcode output */ function learndash_course_expire_status_shortcode( $atts, $content ) { global $learndash_shortcode_used; $learndash_shortcode_used = true; $content_shortcode = ''; $atts = shortcode_atts( array( 'course_id' => learndash_get_course_id(), 'user_id' => get_current_user_id(), 'label_before' => sprintf( esc_html_x('%s access will expire on:', 'Course access will expire on:', 'learndash'), LearnDash_Custom_Label::get_label( 'course' ) ), 'label_after' => sprintf( esc_html_x('%s access expired on:', 'Course access expired on:', 'learndash'), LearnDash_Custom_Label::get_label( 'course' ) ), 'format' => get_option('date_format') .' '. get_option('time_format'), 'autop' => true ), $atts ); if ( ( true === $atts['autop'] ) || ( 'true' === $atts['autop'] ) || ( '1' === $atts['autop'] ) ) { $atts['autop'] = true; } else { $atts['autop'] = false; } $atts = apply_filters('learndash_ld_course_expire_status_shortcode_atts', $atts ); if ( ( !empty( $atts['course_id'] ) ) && ( !empty( $atts['user_id'] ) ) ) { if ( sfwd_lms_has_access( $atts['course_id'], $atts['user_id'] ) ) { $course_meta = get_post_meta( $atts['course_id'], '_sfwd-courses', true ); $courses_access_from = ld_course_access_from( $atts['course_id'], $atts['user_id'] ); if ( empty( $courses_access_from ) ) { $courses_access_from = learndash_user_group_enrolled_to_course_from( $atts['user_id'], $atts['course_id'] ); } if ( !empty( $courses_access_from ) ) { $expire_on = ld_course_access_expires_on( $atts['course_id'], $atts['user_id'] ); if (!empty($expire_on)) { if ($expire_on > time()) { $content_shortcode .= $atts['label_before']; } else { $content_shortcode .= $atts['label_after']; } $content_shortcode .= ' '. date($atts['format'], $expire_on + (get_option('gmt_offset') * 3600)); } } $atts['content'] = do_shortcode( $content_shortcode ); return SFWD_LMS::get_template( 'learndash_course_expire_status_message', array( 'shortcode_atts' => $atts, ), false ); } } if (!empty( $content_shortcode ) ) { $content .= $content_shortcode; } return $content; } add_shortcode( 'ld_course_expire_status', 'learndash_course_expire_status_shortcode' ); function learndash_quiz_shortcode( $atts, $content = '', $show_materials = false ) { global $learndash_shortcode_used, $learndash_shortcode_atts; $atts = shortcode_atts( array( 'quiz_id' => 0, 'course_id' => 0, 'quiz_pro_id' => 0, ), $atts ); // Just to ensure compliance. $quiz_id = $atts['quiz_id'] = absint( $atts['quiz_id'] ); $course_id = $atts['course_id'] = absint( $atts['course_id'] ); $quiz_pro_id = $atts['quiz_pro_id'] = absint( $atts['quiz_pro_id'] ); if ( empty( $atts['quiz_id'] ) ) { return $content; } $quiz_post = get_post( $atts['quiz_id'] ); if ( ! is_a( $quiz_post, 'WP_Post' ) ) { return $content; } if ( empty( $course_id ) ) { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) !== 'yes' ) { $course_id = learndash_get_setting( $quiz_post, 'course' ); $course_id = absint( $course_id ); if ( ! empty( $course_id ) ) { $atts['course_id'] = $course_id; } } } $learndash_shortcode_atts['ld_quiz'] = $atts; // Clear out any previous 'LDAdvQuiz' data. if ( isset( $learndash_shortcode_atts['LDAdvQuiz'] ) ) { unset( $learndash_shortcode_atts['LDAdvQuiz'] ); } $learndash_shortcode_used = true; $lesson_progression_enabled = false; if ( ! empty( $atts['course_id'] ) ) { $lesson_progression_enabled = learndash_lesson_progression_enabled( $atts['course_id'] ); } $has_access = ''; $user_id = get_current_user_id(); $quiz_post = get_post( $atts['quiz_id'] ); if ( $quiz_post instanceof WP_Post ) { $quiz_settings = learndash_get_setting( $atts['quiz_id'] ); $meta = SFWD_CPT_Instance::$instances[ 'sfwd-quiz' ]->get_settings_values( 'sfwd-quiz' ); $show_content = ! ( ! empty( $lesson_progression_enabled ) && ! is_quiz_accessable( $user_id, $quiz_post, false, $course_id ) ); $attempts_count = 0; $repeats = ( isset( $quiz_settings['repeats'] ) ) ? trim( $quiz_settings['repeats'] ) : ''; if ( '' === $repeats ) { if ( ! empty( $quiz_settings['quiz_pro'] ) ) { $quiz_mapper = new WpProQuiz_Model_QuizMapper(); $pro_quiz_edit = $quiz_mapper->fetch( $quiz_settings['quiz_pro'] ); if ( ( $pro_quiz_edit ) && ( is_a( $pro_quiz_edit, 'WpProQuiz_Model_Quiz' ) ) ) { if ( ( isset( $atts['quiz_id'] ) ) && ( ! empty( $atts['quiz_id'] ) ) ) { $pro_quiz_edit->setPostId( $atts['quiz_id'] ); } if ( $pro_quiz_edit->isQuizRunOnce() ) { $repeats = 0; // Update for later. learndash_update_setting( $quiz_post, 'repeats', $repeats ); } } } } if ( $repeats !== '' ) { if ( $user_id ) { $usermeta = get_user_meta( $user_id, '_sfwd-quizzes', true ); $usermeta = maybe_unserialize( $usermeta ); if ( ! is_array( $usermeta ) ) { $usermeta = array(); } if ( ! empty( $usermeta ) ) { foreach ( $usermeta as $k => $v ) { if ( ( intval( $v['quiz'] ) === $atts['quiz_id'] ) ) { if ( ! empty( $atts['course_id'] ) ) { if ( ( isset( $v['course'] ) ) && ( ! empty( $v['course'] ) ) && ( absint( $v['course'] ) === absint( $atts['course_id'] ) ) ) { // Count the number of time the student has taken the quiz where the course_id matches. $attempts_count++; } } elseif ( empty( $atts['course_id'] ) ) { if ( ( isset( $v['course'] ) ) && ( empty( $v['course'] ) ) && ( absint( $v['course'] ) === absint( $atts['course_id'] ) ) ) { // Count the number of time the student has taken the quiz where the course_id is zero. $attempts_count++; } } } } } } } $attempts_left = ( ( $repeats === '' ) || ( absint( $repeats ) >= absint( $attempts_count ) ) ); $bypass_course_limits_admin_users = false; if ( $user_id ) { if ( learndash_is_admin_user( $user_id ) ) { $bypass_course_limits_admin_users = LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_General_Admin_User', 'bypass_course_limits_admin_users' ); if ( 'yes' === $bypass_course_limits_admin_users ) { $bypass_course_limits_admin_users = true; } else { $bypass_course_limits_admin_users = false; } } // For logged in users to allow an override filter. $bypass_course_limits_admin_users = apply_filters( 'learndash_prerequities_bypass', $bypass_course_limits_admin_users, $user_id, $course_id, $quiz_post ); } if ( ( true === $bypass_course_limits_admin_users ) && ( ! $attempts_left ) ) { $attempts_left = 1; } /** * Filters the quiz attempts left for user. * * @since 3.1 * * @param boolean $attempts_left True is Quiz attempts left. False if none. * @param integer $attempts_count Number of Quiz attemplts already taken. * @param integer $user_id ID of User taking Quiz. * @param integer $quiz_id ID of Quiz being taken. * @return integer Zero or greater value. * See example https://bitbucket.org/snippets/learndash/Gjygja */ $attempts_left = apply_filters( 'learndash_quiz_attempts', $attempts_left, absint( $attempts_count ), absint( $user_id ), absint( $quiz_post->ID ) ); $attempts_left = absint( $attempts_left ); if ( ! empty( $lesson_progression_enabled ) && ! is_quiz_accessable( $user_id, $quiz_post, false, $course_id ) ) { add_filter( 'comments_array', 'learndash_remove_comments', 1, 2 ); } $materials = ''; /** * Filter for content access * * If not null, will display instead of quiz content * * @since 2.1.0 * * @param string */ $access_message = apply_filters( 'learndash_content_access', null, $quiz_post ); if ( ! is_null( $access_message ) ) { $quiz_content = $access_message; } else { if ( true === $show_materials ) { if ( ! empty( $quiz_settings['quiz_materials'] ) ) { $materials = wp_specialchars_decode( $quiz_settings['quiz_materials'], ENT_QUOTES ); if ( ! empty( $materials ) ) { $materials = do_shortcode( $materials ); } } } $quiz_content = ''; if ( ! empty( $quiz_settings['quiz_pro'] ) ) { $quiz_settings['lesson'] = 0; $quiz_settings['topic'] = 0; if ( ( ! empty( $course_id ) ) && ( ! empty( $quiz_id ) ) ) { $quiz_settings['topic'] = learndash_course_get_single_parent_step( $course_id, $quiz_id, learndash_get_post_type_slug( 'topic' ) ); $quiz_settings['topic'] = absint( $quiz_settings['topic'] ); $quiz_settings['lesson'] = learndash_course_get_single_parent_step( $course_id, $quiz_id, learndash_get_post_type_slug( 'lesson' ) ); $quiz_settings['lesson'] = absint( $quiz_settings['lesson'] ); } $quiz_content = wptexturize( do_shortcode( '[LDAdvQuiz ' . $quiz_settings['quiz_pro'] . ' quiz_pro_id="' . $quiz_settings['quiz_pro'] . '" quiz_id="' . $quiz_post->ID . '" course_id="' . $course_id . '" lesson_id="' . $quiz_settings['lesson'] . '" topic_id="' . $quiz_settings['topic'] . '"]' ) ); } /** * Filter quiz content * * @since 2.1.0 * * @param string $quiz_content */ $quiz_content = apply_filters( 'learndash_quiz_content', $quiz_content, $quiz_post ); } $level = ob_get_level(); ob_start(); $template_file = SFWD_LMS::get_template( 'quiz', null, null, true ); if ( ! empty( $template_file ) ) { include $template_file; } $content = learndash_ob_get_clean( $level ); // Added this defined wrap in v2.1.8 as it was effecting
      ,  and other formatting of the content. 
      		// See wrike https://www.wrike.com/open.htm?id=77352698 as to why this define exists
      		if ( ( defined( 'LEARNDASH_NEW_LINE_AND_CR_TO_SPACE' ) ) && ( LEARNDASH_NEW_LINE_AND_CR_TO_SPACE == true ) ) {
      
      			// Why is this here? 
      			$content = str_replace( array( "\n", "\r" ), ' ', $content );
      		}
      	
      		$user_has_access = $has_access ? 'user_has_access':'user_has_no_access';
      
      			/**
      		 * Filter content to be return inside div
      		 * 
      		 * @since 2.1.0
      		 * 
      		 * @param  string  $content 
      		 */
      		$content = '
      ' . apply_filters( 'learndash_content', $content, $quiz_post ) . '
      '; } return $content; } add_shortcode( 'ld_quiz', 'learndash_quiz_shortcode' ); function ld_course_list_shortcode_pager() { $reply_data = array(); if ( ( isset( $_POST['paged'] ) ) && ( !empty( $_POST['paged'] ) ) ) $paged = intval( $_POST['paged'] ); else $paged = 1; if ( ( isset( $_POST['shortcode_atts'] ) ) && ( !empty( $_POST['shortcode_atts'] ) ) ) $shortcode_atts = $_POST['shortcode_atts']; else $shortcode_atts = array(); $shortcode_atts['include_outer_wrapper'] = 'false'; $shortcode_atts['paged'] = $paged; $reply_data['content'] = ld_course_list( $shortcode_atts ); echo json_encode( $reply_data ); die(); } add_action( 'wp_ajax_ld_course_list_shortcode_pager', 'ld_course_list_shortcode_pager' ); add_action( 'wp_ajax_nopriv_ld_course_list_shortcode_pager', 'ld_course_list_shortcode_pager' );PKc\sJݽ)includes/course/ld-course-info-widget.phpnuW+A 'widget_ldcourseinfo', 'description' => sprintf( esc_html_x( 'LearnDash - %s attempt and score information of users. Visible only to users logged in.', 'placeholders: course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ) ); $control_ops = array(); //'width' => 400, 'height' => 350); parent::__construct( 'ldcourseinfo', sprintf( esc_html_x( '%s Information', 'Course Information', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), $widget_ops, $control_ops ); } /** * Displays widget * * @since 2.1.0 * * @param array $args widget arguments * @param array $instance widget instance * @return string widget output */ function widget( $args, $instance ) { global $learndash_shortcode_used; extract( $args ); /** * Filter widget title * * @since 2.1.0 * * @param string */ $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance ); if ( empty( $user_id ) ) { $current_user = wp_get_current_user(); if ( empty( $current_user->ID ) ) { return; } $user_id = $current_user->ID; } $courseinfo = learndash_course_info( $user_id, $instance ); if ( empty( $courseinfo ) ) { return; } echo $before_widget; if ( ! empty( $title ) ) { echo $before_title . $title . $after_title; } echo $courseinfo; echo $after_widget; $learndash_shortcode_used = true; } /** * Handles widget updates in admin * * @since 2.1.0 * * @param array $new_instance * @param array $old_instance * @return array $instance */ function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['title'] = strip_tags( $new_instance['title'] ); $instance['registered_show_thumbnail'] = esc_attr( $new_instance['registered_show_thumbnail'] ); if ( $new_instance['registered_num'] != '' ) $instance['registered_num'] = intval( $new_instance['registered_num'] ); else $instance['registered_num'] = false; $instance['registered_orderby'] = esc_attr( $new_instance['registered_orderby'] ); $instance['registered_order'] = esc_attr( $new_instance['registered_order'] ); if ( $new_instance['progress_num'] != '' ) $instance['progress_num'] = intval( $new_instance['progress_num'] ); else $instance['progress_num'] = false; $instance['progress_orderby'] = esc_attr( $new_instance['progress_orderby'] ); $instance['progress_order'] = esc_attr( $new_instance['progress_order'] ); if ( $new_instance['quiz_num'] != '' ) $instance['quiz_num'] = intval( $new_instance['quiz_num'] ); else $instance['quiz_num'] = false; $instance['quiz_orderby'] = esc_attr( $new_instance['quiz_orderby'] ); $instance['quiz_order'] = esc_attr( $new_instance['quiz_order'] ); return $instance; } /** * Display widget form in admin * * @since 2.1.0 * * @param array $instance widget instance */ function form( $instance ) { $instance = wp_parse_args( (array) $instance, array( 'title' => '', 'registered_show_thumbnail' => '', 'registered_num' => false, 'registered_orderby' => '', 'registered_order' => '', 'progress_num' => false, 'progress_orderby' => '', 'progress_order' => '', 'quiz_num' => false, 'quiz_orderby' => '', 'quiz_order' => '', ) ); $title = strip_tags( $instance['title'] ); $registered_show_thumbnail = esc_attr( $instance['registered_show_thumbnail'] ); if ( $instance['registered_num'] != '' ) $registered_num = abs(intval( $instance['registered_num'] )); else $registered_num = ''; $registered_orderby = esc_attr( $instance['registered_orderby'] ); $registered_order = esc_attr( $instance['registered_order'] ); if ( $instance['registered_num'] != '' ) $progress_num = abs(intval( $instance['progress_num'] )); else $progress_num = ''; $progress_orderby = esc_attr( $instance['progress_orderby'] ); $progress_order = esc_attr( $instance['progress_order'] ); if ( $instance['quiz_num'] != '' ) $quiz_num = abs( intval( $instance['quiz_num'] )); else $quiz_num = ''; $quiz_orderby = esc_attr( $instance['quiz_orderby'] ); $quiz_order = esc_attr( $instance['quiz_order'] ); //$text = format_to_edit($instance['text']); ?>

      'widget_ldcoursenavigation', 'description' => sprintf( esc_html_x( 'LearnDash - %s Navigation. Shows lessons and topics on the current course.', 'LearnDash - Course Navigation. Shows lessons and topics on the current course.', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ) ); $control_ops = array(); //'width' => 400, 'height' => 350); parent::__construct( 'widget_ldcoursenavigation', sprintf( esc_html_x( '%s Navigation', 'Course Navigation Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), $widget_ops, $control_ops ); } /** * Displays widget * * @since 2.1.0 * * @param array $args widget arguments * @param array $instance widget instance * @return string widget output */ public function widget( $args, $instance ) { global $learndash_shortcode_used; //global $post; $post = get_post( get_the_id() ); if ( ( ! is_a( $post, 'WP_Post' ) ) || ( empty( $post->ID ) ) || ( ! is_single() ) ) { return; } $course_id = learndash_get_course_id( $post->ID ); if ( empty( $course_id ) ) { return; } //$course_price_type = learndash_get_course_meta_setting( $course_id, 'course_price_type' ); // If the course price type is not 'open' and the user is not logged in then abort. //if ( ( 'open' !== $course_price_type ) && ( ! is_user_logged_in() ) ) { // return; //} $instance['show_widget_wrapper'] = true; $instance['current_lesson_id'] = 0; $instance['current_step_id'] = 0; $lesson_query_args = array(); $course_lessons_per_page = learndash_get_course_lessons_per_page( $course_id ); if ( $course_lessons_per_page > 0 ) { if ( in_array( $post->post_type, array( 'sfwd-lessons', 'sfwd-topic', 'sfwd-quiz' ) ) ) { $instance['current_step_id'] = $post->ID; if ( 'sfwd-lessons' === $post->post_type ) { $instance['current_lesson_id'] = $post->ID; } else if ( in_array( $post->post_type, array( 'sfwd-topic', 'sfwd-quiz') ) ) { $instance['current_lesson_id'] = learndash_course_get_single_parent_step( $course_id, $post->ID, 'sfwd-lessons' ); } if ( ! empty( $instance['current_lesson_id'] ) ) { $course_lesson_ids = learndash_course_get_steps_by_type( $course_id, 'sfwd-lessons' ); if ( ! empty( $course_lesson_ids ) ) { $course_lessons_paged = array_chunk( $course_lesson_ids, $course_lessons_per_page, true ); $lessons_paged = 0; foreach ( $course_lessons_paged as $paged => $paged_set ) { if ( in_array( $instance['current_lesson_id'], $paged_set ) ) { $lessons_paged = $paged + 1; break; } } if ( ! empty( $lessons_paged ) ) { $lesson_query_args['pagination'] = 'true'; $lesson_query_args['paged'] = $lessons_paged; } } } else if ( in_array( $post->post_type, array( 'sfwd-quiz' ) ) ) { // If here we have a global Quiz. So we set the pager to the max number $course_lesson_ids = learndash_course_get_steps_by_type( $course_id, 'sfwd-lessons' ); if ( ! empty( $course_lesson_ids ) ) { $course_lessons_paged = array_chunk( $course_lesson_ids, $course_lessons_per_page, true ); $lesson_query_args['paged'] = count( $course_lessons_paged ); } } } } else { if ( in_array( $post->post_type, array( 'sfwd-lessons', 'sfwd-topic', 'sfwd-quiz' ) ) ) { $instance['current_step_id'] = $post->ID; if ( 'sfwd-lessons' === $post->post_type ) { $instance['current_lesson_id'] = $post->ID; } else if ( in_array( $post->post_type, array( 'sfwd-topic', 'sfwd-quiz') ) ) { $instance['current_lesson_id'] = learndash_course_get_single_parent_step( $course_id, $post->ID, 'sfwd-lessons' ); } } } extract( $args ); /** * Filter widget title * * @since 2.1.0 * * @param string */ $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance ); echo $before_widget; if ( ! empty( $title ) ) { echo $before_title . $title . $after_title; } learndash_course_navigation( $course_id, $instance, $lesson_query_args ); echo $after_widget; $learndash_shortcode_used = true; } /** * Handles widget updates in admin * * @since 2.1.0 * * @param array $new_instance * @param array $old_instance * @return array $instance */ function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['title'] = strip_tags( $new_instance['title'] ); $instance['show_lesson_quizzes'] = isset( $new_instance['show_lesson_quizzes'] ) ? (bool) $new_instance['show_lesson_quizzes'] : false; $instance['show_topic_quizzes'] = isset( $new_instance['show_topic_quizzes'] ) ? (bool) $new_instance['show_topic_quizzes'] : false; $instance['show_course_quizzes'] = isset( $new_instance['show_course_quizzes'] ) ? (bool) $new_instance['show_course_quizzes'] : false; return $instance; } /** * Display widget form in admin * * @since 2.1.0 * * @param array $instance widget instance */ function form( $instance ) { $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) ); $title = strip_tags( $instance['title'] ); $show_lesson_quizzes = isset( $instance['show_lesson_quizzes'] ) ? (bool) $instance['show_lesson_quizzes'] : false; $show_topic_quizzes = isset( $instance['show_topic_quizzes'] ) ? (bool) $instance['show_topic_quizzes'] : false; $show_course_quizzes = isset( $instance['show_course_quizzes'] ) ? (bool) $instance['show_course_quizzes'] : false; ?>

      id="get_field_id( 'show_course_quizzes' ); ?>" name="get_field_name( 'show_course_quizzes' ); ?>" />

      id="get_field_id( 'show_lesson_quizzes' ); ?>" name="get_field_name( 'show_lesson_quizzes' ); ?>" />

      id="get_field_id( 'show_topic_quizzes' ); ?>" name="get_field_name( 'show_topic_quizzes' ); ?>" />

      ID ) || $course_id != $course->ID ) { return; } if ( empty( $course->ID ) || $course->post_type != 'sfwd-courses' ) { return; } if ( is_user_logged_in() ) $user_id = get_current_user_id(); else $user_id = 0; $course_navigation_widget_pager = array(); global $course_navigation_widget_pager; add_action( 'learndash_course_lessons_list_pager', function( $query_result = null ) { global $course_navigation_widget_pager; $course_navigation_widget_pager['paged'] = 1; if ( ( isset( $query_result->query_vars['paged'] ) ) && ( $query_result->query_vars['paged'] > 1 ) ) $course_navigation_widget_pager['paged'] = $query_result->query_vars['paged']; $course_navigation_widget_pager['total_items'] = $query_result->found_posts; $course_navigation_widget_pager['total_pages'] = $query_result->max_num_pages; } ); $lessons = learndash_get_course_lessons_list( $course, $user_id, $lesson_query_args ); $template_file = SFWD_LMS::get_template( 'course_navigation_widget', array( 'course_id' => $course_id, 'course' => $course, 'lessons' => $lessons, 'widget' => $widget_instance ), null, true ); if ( ! empty( $template_file ) ) { include( $template_file ); } } /** * Outputs course navigation admin template for widget * * @since 2.1.0 * * @param int $course_id course id * @param widget_instance array of widgert settings * @param lesson_query_args array of query options for pagnination etc. * * @return string course navigation output */ function learndash_course_navigation_admin( $course_id, $instance = array(), $lesson_query_args = array() ) { $course = get_post( $course_id ); if ( empty( $course->ID ) || $course_id != $course->ID ) { return; } $course = get_post( $course_id ); if ( empty( $course->ID ) || $course->post_type != 'sfwd-courses' ) { return; } if ( is_user_logged_in() ) $user_id = get_current_user_id(); else $user_id = 0; $course_navigation_admin_pager = array(); global $course_navigation_admin_pager; add_action( 'learndash_course_lessons_list_pager', function( $query_result = null ) { global $course_navigation_admin_pager; $course_navigation_admin_pager['paged'] = 1; if ( ( isset( $query_result->query_vars['paged'] ) ) && ( $query_result->query_vars['paged'] > 1 ) ) $course_navigation_admin_pager['paged'] = $query_result->query_vars['paged']; $course_navigation_admin_pager['total_items'] = $query_result->found_posts; $course_navigation_admin_pager['total_pages'] = $query_result->max_num_pages; } ); $lessons = learndash_get_course_lessons_list( $course, $user_id, $lesson_query_args ); $quizzes = learndash_get_course_quiz_list( $course_id, $user_id ); SFWD_LMS::get_template( 'course_navigation_admin', array( 'user_id' => $user_id, 'course_id' => $course_id, 'course' => $course, 'lessons' => $lessons, 'course_quiz_list' => $quizzes, 'widget' => $instance ), true ); } function learndash_course_switcher_admin( $course_id ) { $template_file = SFWD_LMS::get_template( 'course_navigation_switcher_admin', array(), null, true ); if ( ! empty( $template_file ) ) { include( $template_file ); } } /** * Register course navigation meta box for admin * * @since 2.1.0 */ /* function learndash_course_navigation_admin_box() { $post_types = array('sfwd-courses', 'sfwd-lessons', 'sfwd-quiz', 'sfwd-topic'); foreach( $post_types as $post_type ) { add_meta_box( 'learndash_course_navigation_admin_meta', esc_html__( 'Associated Content', 'learndash' ), 'learndash_course_navigation_admin_box_content', $post_type, 'side', 'high' ); } } add_action( 'add_meta_boxes', 'learndash_course_navigation_admin_box' ); */ /** * Hook to add the needed style and script files needed to handle pager * * @since 2.5.4 */ function learndash_course_step_edit_init() { global $learndash_assets_loaded; $screen = get_current_screen(); if ( ( $screen->base == 'post') && ( in_array( $screen->post_type, array( 'sfwd-courses', 'sfwd-lessons', 'sfwd-topic', 'sfwd-quiz' ) ) ) ) { $filepath = SFWD_LMS::get_template( 'learndash_pager.css', null, null, true ); if ( !empty( $filepath ) ) { wp_enqueue_style( 'learndash_pager_css', learndash_template_url_from_path( $filepath ), array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'learndash_pager_css', 'rtl', 'replace' ); $learndash_assets_loaded['styles']['learndash_pager_css'] = __FUNCTION__; } $filepath = SFWD_LMS::get_template( 'learndash_pager.js', null, null, true ); if ( !empty( $filepath ) ) { wp_enqueue_script( 'learndash_pager_js', learndash_template_url_from_path( $filepath ), array( 'jquery' ), LEARNDASH_SCRIPT_VERSION_TOKEN, true ); $learndash_assets_loaded['scripts']['learndash_pager_js'] = __FUNCTION__; } } } add_action( 'load-post.php', 'learndash_course_step_edit_init' ); add_action( 'load-post-new.php', 'learndash_course_step_edit_init' ); /** * Add content to course navigation meta box for admi * * @since 2.1.0 */ function learndash_course_navigation_admin_box_content() { if ( ( isset($_GET['post'] ) ) && ( !empty( $_GET['post'] ) ) ) { $course_id = learndash_get_course_id( intval( $_GET['post'] ) ); if ( !empty( $course_id ) ) { $instance = array(); $instance['show_widget_wrapper'] = true; $instance['course_id'] = $course_id; $instance['current_lesson_id'] = 0; $instance['current_step_id'] = 0; $lesson_query_args = array(); $lesson_query_args['pagination'] = 'true'; $lesson_query_args['paged'] = 1; //if ( $course_id != intval( $_GET['post'] ) ) // $widget_instance['current_step_id'] = intval( $_GET['post'] ); //else // $widget_instance['current_step_id'] = 0; //$current_post_type = get_post_type( $_GET['post'] ); $current_post = get_post( intval( $_GET['post'] ) ); if ( ( is_a( $current_post, 'WP_Post' ) ) && ( is_user_logged_in() ) && ( in_array( $current_post->post_type, array( 'sfwd-courses', 'sfwd-lessons', 'sfwd-topic', 'sfwd-quiz' ) ) ) ) { $course_lessons_per_page = learndash_get_course_lessons_per_page( $course_id ); if ( $course_lessons_per_page > 0 ) { if ( in_array( $current_post->post_type, array( 'sfwd-lessons', 'sfwd-topic', 'sfwd-quiz' ) ) ) { $instance['current_step_id'] = $current_post->ID; if ( $current_post->post_type == 'sfwd-lessons' ) { $instance['current_lesson_id'] = $instance['current_step_id']; } else if ( in_array( $current_post->post_type, array('sfwd-topic', 'sfwd-quiz') ) ) { $instance['current_lesson_id'] = learndash_course_get_single_parent_step( $course_id, $instance['current_step_id'], 'sfwd-lessons' ); } if ( !empty( $instance['current_lesson_id'] ) ) { $ld_course_steps_object = LDLMS_Factory_Post::course_steps( $course_id ); $course_lesson_ids = $ld_course_steps_object->get_children_steps( $course_id, 'sfwd-lessons' ); if ( !empty( $course_lesson_ids ) ) { $course_lessons_paged = array_chunk( $course_lesson_ids, $course_lessons_per_page, true ); $lessons_paged = 0; foreach( $course_lessons_paged as $paged => $paged_set ) { if ( in_array( $instance['current_lesson_id'], $paged_set ) ) { $lessons_paged = $paged + 1; break; } } if ( !empty( $lessons_paged ) ) { $lesson_query_args['pagination'] = 'true'; $lesson_query_args['paged'] = $lessons_paged; } } } else if ( in_array( $current_post->post_type, array( 'sfwd-quiz') ) ) { // If here we have a global Quiz. So we set the pager to the max number $course_lesson_ids = learndash_course_get_steps_by_type( $course_id, 'sfwd-lessons' ); if ( !empty( $course_lesson_ids ) ) { $course_lessons_paged = array_chunk( $course_lesson_ids, $course_lessons_per_page, true ); $lesson_query_args['paged'] = count( $course_lessons_paged ); } } } } else { $lesson_query_args['pagination'] = 'false'; if ( in_array( $current_post->post_type, array( 'sfwd-lessons', 'sfwd-topic', 'sfwd-quiz' ) ) ) { $instance['current_step_id'] = $current_post->ID; if ( $current_post->post_type == 'sfwd-lessons' ) { $instance['current_lesson_id'] = $current_post->ID; } else if ( in_array( $current_post->post_type, array('sfwd-topic', 'sfwd-quiz') ) ) { $instance['current_lesson_id'] = learndash_course_get_single_parent_step( $course_id, $current_post->ID, 'sfwd-lessons' ); } } } } learndash_course_navigation_admin( $course_id, $instance, $lesson_query_args ); } else { echo sprintf( // translators: placeholders: Course. esc_html_x( 'No associated %s', 'placeholder: Course', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ); } if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { learndash_course_switcher_admin( $course_id ); } } } /** * Get course info html output for user (helper function) * * @since 2.1.0 * * @param int $user_id * @return string course info output */ function learndash_course_info( $user_id, $atts = array() ) { return SFWD_LMS::get_course_info( $user_id, $atts ); } /** * Shortcode get course info html output for user (helper function) * * @since 2.1.0 * * @param array $atts shortcode attributes * @return string course info output */ function learndash_course_info_shortcode( $atts = array() ) { global $learndash_shortcode_used; if ( ( isset( $atts['user_id'] ) ) && ( !empty( $atts['user_id'] ) ) ) { $user_id = intval( $atts['user_id'] ); unset( $atts['user_id'] ); } else { $current_user = wp_get_current_user(); if ( empty( $current_user->ID ) ) { return; } $user_id = $current_user->ID; } $learndash_shortcode_used = true; return SFWD_LMS::get_course_info( $user_id, $atts ); } add_shortcode( 'ld_course_info', 'learndash_course_info_shortcode' ); function learndash_user_course_points_shortcode( $atts, $content = '' ) { global $learndash_shortcode_used; $defaults = array( 'user_id' => get_current_user_id(), 'context' => 'ld_user_course_points' ); $atts = wp_parse_args( $atts, $defaults ); if ( !isset( $atts['user_id'] ) ) return; $learndash_shortcode_used = true; $user_couse_points = learndash_get_user_course_points( $atts['user_id'] ); $content = SFWD_LMS::get_template( 'learndash_course_points_user_message', array( 'user_course_points' => $user_couse_points, 'user_id' => $atts['user_id'], 'shortcode_atts' => $atts, ), false ); return $content; } add_shortcode( 'ld_user_course_points', 'learndash_user_course_points_shortcode' ); /** * Shortcoude output profile for user * * @since 2.1.0 * * @param array $atts shortcode attributes * @return string output profile for user */ function learndash_profile( $atts ) { global $learndash_shortcode_used; // Add check to ensure user it logged in if ( !is_user_logged_in() ) return ''; $defaults = array( 'user_id' => get_current_user_id(), 'per_page' => false, 'order' => 'DESC', 'orderby' => 'ID', 'course_points_user' => 'yes', 'expand_all' => false, 'profile_link' => 'yes', 'show_header' => 'yes', 'show_quizzes' => 'yes', 'show_search' => 'yes', 'search' => '', ); $atts = wp_parse_args( $atts, $defaults ); if ( ( strtolower($atts['expand_all'] ) == 'yes' ) || ( $atts['expand_all'] == 'true' ) || ( $atts['expand_all'] == '1' )) $atts['expand_all'] = true; else $atts['expand_all'] = false; if ( ( strtolower($atts['show_header'] ) == 'yes' ) || ( $atts['show_header'] == 'true' ) || ( $atts['show_header'] == '1' )) $atts['show_header'] = 'yes'; else $atts['show_header'] = false; if ( ( strtolower($atts['show_search'] ) == 'yes' ) || ( $atts['show_search'] == 'true' ) || ( $atts['show_search'] == '1' )) $atts['show_search'] = 'yes'; else $atts['show_search'] = false; if ( ( strtolower($atts['course_points_user'] ) == 'yes' ) || ( $atts['course_points_user'] == 'true' ) || ( $atts['course_points_user'] == '1' )) $atts['course_points_user'] = 'yes'; else $atts['course_points_user'] = false; if ( $atts['per_page'] === false ) { $atts['per_page'] = $atts['quiz_num'] = LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_General_Per_Page', 'per_page' ); } else { $atts['per_page'] = intval( $atts['per_page'] ); } if ( $atts['per_page'] > 0 ) { $atts['paged'] = 1; } else { unset( $atts['paged'] ); $atts['nopaging'] = true; } if ( ( strtolower( $atts['profile_link'] ) == 'yes' ) || ( $atts['profile_link'] == 'true' ) || ( $atts['profile_link'] == '1' ) ) $atts['profile_link'] = true; else $atts['profile_link'] = false; if ( ( strtolower( $atts['show_quizzes'] ) == 'yes' ) || ( $atts['show_quizzes'] == 'true' ) || ( $atts['show_quizzes'] == '1' ) ) $atts['show_quizzes'] = true; else $atts['show_quizzes'] = false; if ( ( isset( $_GET['ld-profile-search'] ) ) && ( ! empty( $_GET['ld-profile-search'] ) ) ) { $atts['search'] = esc_attr( $_GET['ld-profile-search'] ); } $atts = apply_filters('learndash_profile_shortcode_atts', $atts ); if ( isset( $atts['search'] ) ) { $atts['s'] = $atts['search']; unset( $atts['search'] ); } if ( empty( $atts['user_id'] ) ) return; $current_user = get_user_by( 'id', $atts['user_id'] ); $user_courses = ld_get_mycourses( $atts['user_id'], $atts ); $usermeta = get_user_meta( $atts['user_id'], '_sfwd-quizzes', true ); $quiz_attempts_meta = empty( $usermeta ) ? false : $usermeta; $quiz_attempts = array(); if ( ! empty( $quiz_attempts_meta ) ) { foreach ( $quiz_attempts_meta as $quiz_attempt ) { $c = learndash_certificate_details( $quiz_attempt['quiz'], $atts['user_id'] ); $quiz_attempt['post'] = get_post( $quiz_attempt['quiz'] ); $quiz_attempt['percentage'] = ! empty( $quiz_attempt['percentage'] ) ? $quiz_attempt['percentage'] : ( ! empty( $quiz_attempt['count'] ) ? $quiz_attempt['score'] * 100 / $quiz_attempt['count'] : 0 ); if ( $atts['user_id'] == get_current_user_id() && ! empty( $c['certificateLink'] ) && ( ( isset( $quiz_attempt['percentage'] ) && $quiz_attempt['percentage'] >= $c['certificate_threshold'] * 100 ) ) ) { $quiz_attempt['certificate'] = $c; } if ( !isset( $quiz_attempt['course'] ) ) $quiz_attempt['course'] = learndash_get_course_id( $quiz_attempt['quiz'] ); $course_id = intval( $quiz_attempt['course'] ); $quiz_attempts[$course_id][] = $quiz_attempt; } } $profile_pager = array(); if ( ( isset( $atts['per_page'] ) ) && ( intval( $atts['per_page'] ) > 0 ) ) { $atts['per_page'] = intval( $atts['per_page'] ); if ( ( isset( $_GET['ld-profile-page'] ) ) && ( !empty( $_GET['ld-profile-page'] ) ) ) { $profile_pager['paged'] = intval( $_GET['ld-profile-page'] ); } else { $profile_pager['paged'] = 1; } $profile_pager['total_items'] = count( $user_courses ); $profile_pager['total_pages'] = ceil( count( $user_courses ) / $atts['per_page'] ); $user_courses = array_slice ( $user_courses, ( $profile_pager['paged'] * $atts['per_page'] ) - $atts['per_page'], $atts['per_page'], false ); } $learndash_shortcode_used = true; return SFWD_LMS::get_template( 'profile', array( 'user_id' => $atts['user_id'], 'quiz_attempts' => $quiz_attempts, 'current_user' => $current_user, 'user_courses' => $user_courses, 'shortcode_atts' => $atts, 'profile_pager' => $profile_pager ) ); } add_shortcode( 'ld_profile', 'learndash_profile' ); function wp_ajax_ld_course_registered_pager() { if ( !is_user_logged_in() ) return ''; if ( ! current_user_can( 'read' ) ) return ''; add_filter('learndash_course_info_paged', function( $paged = 1, $context = '' ) { if ( ( $context == 'registered' ) && ( isset( $_POST['paged'] ) ) && ( !empty( $_POST['paged'] ) ) ) { $paged = intval( $_POST['paged'] ); } // Always return $paged return $paged; }, 10, 2 ); $reply_data = array(); if ( isset( $_POST['shortcode_atts'] ) ) $shortcode_atts = $_POST['shortcode_atts']; else $shortcode_atts = array(); $user_id = get_current_user_id(); if ( learndash_is_group_leader_user() ) { if ( ( isset( $shortcode_atts['user_id'] ) ) && ( ! empty( $shortcode_atts['user_id'] ) ) ) { if ( learndash_is_group_leader_of_user( $user_id, $shortcode_atts['user_id'] ) ) { $user_id = intval( $shortcode_atts['user_id'] ); } } } else if ( learndash_is_admin_user() ) { if ( ( isset( $shortcode_atts['user_id'] ) ) && ( ! empty( $shortcode_atts['user_id'] ) ) ) { $user_id = intval( $shortcode_atts['user_id'] ); } } $shortcode_atts['return'] = true; $shortcode_atts['type'] = 'registered'; // Setup the pager filter. if ( !learndash_ajax_pager_verify_atts( $user_id, $shortcode_atts ) ) { return ''; } $user_progress = SFWD_LMS::get_course_info( $user_id, $shortcode_atts ); if ( ( isset( $user_progress['courses_registered'] ) ) && ( !empty( $user_progress['courses_registered'] ) ) ) { $courses_registered = $user_progress['courses_registered']; $level = ob_get_level(); ob_start(); $template_file = SFWD_LMS::get_template( 'course_registered_rows', null, null, true ); if ( ! empty( $template_file ) ) { include $template_file; } $reply_data['content'] = learndash_ob_get_clean( $level ); } if ( isset( $user_progress['courses_registered_pager'] ) ) { $reply_data['pager'] = SFWD_LMS::get_template( 'learndash_pager.php', array( 'pager_results' => $user_progress['courses_registered_pager'], 'pager_context' => 'course_info_registered' ) ); } echo json_encode( $reply_data ); die(); } add_action( 'wp_ajax_ld_course_registered_pager', 'wp_ajax_ld_course_registered_pager' ); function wp_ajax_ld_course_progress_pager() { if ( !is_user_logged_in() ) return ''; add_filter('learndash_course_info_paged', function( $paged = 1, $context = '' ) { if ( ( $context == 'courses' ) && ( isset( $_POST['paged'] ) ) && ( !empty( $_POST['paged'] ) ) ) { $paged = intval( $_POST['paged'] ); } // Always return $paged return $paged; }, 10, 2 ); $reply_data = array(); if ( isset( $_POST['shortcode_atts'] ) ) $shortcode_atts = $_POST['shortcode_atts']; else $shortcode_atts = array(); $user_id = get_current_user_id(); if ( ( isset( $shortcode_atts['user_id'] ) ) && ( ! empty( $shortcode_atts['user_id'] ) ) ) { $shortcode_atts['user_id'] = absint( $shortcode_atts['user_id'] ); if ( $user_id !== $shortcode_atts['user_id'] ) { if ( ( learndash_is_group_leader_user() ) && ( learndash_is_group_leader_of_user( $user_id, $shortcode_atts['user_id'] ) ) ) { $user_id = intval( $shortcode_atts['user_id'] ); } else if ( learndash_is_admin_user() ) { $user_id = intval( $shortcode_atts['user_id'] ); } } } $shortcode_atts['return'] = true; $shortcode_atts['type'] = 'course'; // Setup the pager filter. if ( !learndash_ajax_pager_verify_atts( $user_id, $shortcode_atts) ) { return ''; } $user_progress = SFWD_LMS::get_course_info( $user_id, $shortcode_atts ); if ( ( isset( $user_progress['course_progress'] ) ) && ( !empty( $user_progress['course_progress'] ) ) ) { $courses_registered = $user_progress['courses_registered']; $course_progress = $user_progress['course_progress']; $level = ob_get_level(); ob_start(); $template_file = SFWD_LMS::get_template( 'course_progress_rows', null, null, true ); if ( ! empty( $template_file ) ) { include $template_file; } $reply_data['content'] = learndash_ob_get_clean( $level ); } if ( isset( $user_progress['course_progress_pager'] ) ) { $reply_data['pager'] = SFWD_LMS::get_template( 'learndash_pager.php', array( 'pager_results' => $user_progress['course_progress_pager'], 'pager_context' => 'course_info_courses' ) ); } echo json_encode( $reply_data ); die(); } add_action( 'wp_ajax_ld_course_progress_pager', 'wp_ajax_ld_course_progress_pager' ); add_action( 'wp_ajax_nopriv_ld_course_progress_pager', 'wp_ajax_ld_course_progress_pager' ); function wp_ajax_ld_quiz_progress_pager() { if ( ! is_user_logged_in() ) return ''; if ( ! current_user_can( 'read' ) ) return ''; add_filter('learndash_quiz_info_paged', function( $paged = 1 ) { if ( ( isset( $_POST['paged'] ) ) && ( !empty( $_POST['paged'] ) ) ) { $paged = intval( $_POST['paged'] ); } return $paged; }); if ( isset( $_POST['shortcode_atts'] ) ) $shortcode_atts = $_POST['shortcode_atts']; else $shortcode_atts = array(); $user_id = get_current_user_id(); if ( ( isset( $shortcode_atts['user_id'] ) ) && ( ! empty( $shortcode_atts['user_id'] ) ) ) { $shortcode_atts['user_id'] = absint( $shortcode_atts['user_id'] ); if ( $user_id !== $shortcode_atts['user_id'] ) { if ( ( learndash_is_group_leader_user() ) && ( learndash_is_group_leader_of_user( $user_id, $shortcode_atts['user_id'] ) ) ) { $user_id = intval( $shortcode_atts['user_id'] ); } else if ( learndash_is_admin_user() ) { $user_id = intval( $shortcode_atts['user_id'] ); } } } $shortcode_atts['return'] = true; $shortcode_atts['type'] = 'quiz'; // Setup the pager filter. if ( !learndash_ajax_pager_verify_atts( $user_id, $shortcode_atts ) ) { return ''; } $reply_data = array(); $user_progress = SFWD_LMS::get_course_info( $user_id, $shortcode_atts ); if ( ( isset( $user_progress['quizzes'] ) ) && ( !empty( $user_progress['quizzes'] ) ) ) { $quizzes = $user_progress['quizzes']; $level = ob_get_level(); ob_start(); $template_file = SFWD_LMS::get_template( 'quiz_progress_rows', null, null, true ); if ( ! empty( $template_file ) ) { include $template_file; } $reply_data['content'] = learndash_ob_get_clean( $level ); } if ( isset( $user_progress['quizzes_pager'] ) ) { $reply_data['pager'] = SFWD_LMS::get_template( 'learndash_pager.php', array( 'pager_results' => $user_progress['quizzes_pager'], 'pager_context' => 'course_info_quizzes' ) ); } echo json_encode( $reply_data ); die(); } add_action( 'wp_ajax_ld_quiz_progress_pager', 'wp_ajax_ld_quiz_progress_pager' ); /** * Course Navigation AJAX Pager handler function * * @since 2.5.4 */ function wp_ajax_ld_course_navigation_pager() { $reply_data = array(); if ( ( isset( $_POST['paged'] ) ) && ( !empty( $_POST['paged'] ) ) ) { $paged = intval( $_POST['paged'] ); } else { $paged = 1; } if ( ( isset( $_POST['widget_data']['course_id'] ) ) && ( !empty( $_POST['widget_data']['course_id'] ) ) ) { $course_id = intval( $_POST['widget_data']['course_id'] ); } else { $course_id = 0; } if ( ( isset( $_POST['widget_data']['widget_instance'] ) ) && ( !empty( $_POST['widget_data']['widget_instance'] ) ) ) { $widget_instance = $_POST['widget_data']['widget_instance']; } else { $widget_instance = array(); } if ( ( !empty( $course_id ) ) && ( !empty( $widget_instance ) ) ) { $lesson_query_args = array(); $course_lessons_per_page = learndash_get_course_lessons_per_page( $course_id ); if ( $course_lessons_per_page > 0 ) { $lesson_query_args['pagination'] = 'true'; $lesson_query_args['paged'] = $paged; } $widget_instance['show_widget_wrapper'] = false; $level = ob_get_level(); ob_start(); learndash_course_navigation( $course_id, $widget_instance, $lesson_query_args ); $reply_data['content'] = learndash_ob_get_clean( $level ); } echo json_encode( $reply_data ); die(); } add_action( 'wp_ajax_ld_course_navigation_pager', 'wp_ajax_ld_course_navigation_pager' ); add_action( 'wp_ajax_nopriv_ld_course_navigation_pager', 'wp_ajax_ld_course_navigation_pager' ); /** * Course Navigation AJAX Pager handler function * * @since 2.5.4 */ function wp_ajax_ld_course_navigation_admin_pager() { $reply_data = array(); if ( ( isset( $_POST['paged'] ) ) && ( !empty( $_POST['paged'] ) ) ) { $paged = intval( $_POST['paged'] ); } else { $paged = 1; } if ( ( isset( $_POST['widget_data'] ) ) && ( !empty( $_POST['widget_data'] ) ) ) { $widget_data = $_POST['widget_data']; } else { $widget_data = array(); } if ( ( isset( $widget_data['course_id'] ) ) && ( !empty( $widget_data['course_id'] ) ) ) { $course_id = intval( $widget_data['course_id'] ); } else { $course_id = 0; } if ( ( !empty( $course_id ) ) && ( !empty( $widget_data ) ) ) { if ( ( isset( $_POST['widget_data']['nonce'] ) ) && ( ! empty( $_POST['widget_data']['nonce'] ) ) && ( wp_verify_nonce( $_POST['widget_data']['nonce'], 'ld_course_navigation_admin_pager_nonce_' . $course_id . '_' . get_current_user_id() ) ) ) { $lesson_query_args = array(); //$course_lessons_per_page = learndash_get_course_lessons_per_page( $course_id ); //if ( $course_lessons_per_page > 0 ) { $lesson_query_args['pagination'] = 'true'; $lesson_query_args['paged'] = $paged; //} $widget_data['show_widget_wrapper'] = false; $level = ob_get_level(); ob_start(); learndash_course_navigation_admin( $course_id, $widget_data, $lesson_query_args ); $reply_data['content'] = learndash_ob_get_clean( $level ); } } echo json_encode( $reply_data ); die(); } add_action( 'wp_ajax_ld_course_navigation_admin_pager', 'wp_ajax_ld_course_navigation_admin_pager' ); function learndash_ajax_pager_verify_atts( $user_id, $shortcode_atts ) { $use_filter = false; if ( ( !empty( $user_id ) ) && ( isset( $shortcode_atts['pagenow'] ) ) ) { if ( ( isset( $shortcode_atts['pagenow_nonce'] ) ) && ( !empty( $shortcode_atts['pagenow_nonce'] ) ) ) { if ( ( $shortcode_atts['pagenow'] == 'profile.php' ) || ( $shortcode_atts['pagenow'] == 'user-edit.php' ) ) { if ( wp_verify_nonce( $shortcode_atts['pagenow_nonce'], $shortcode_atts['pagenow'] .'-'. $user_id ) ) { $use_filter = true; } } else if ( $shortcode_atts['pagenow'] == 'group_admin_page' ) { if ( ( isset( $shortcode_atts['group_id'] ) ) && ( intval( $shortcode_atts['group_id'] ) ) ) { if ( wp_verify_nonce( $shortcode_atts['pagenow_nonce'], $shortcode_atts['pagenow'] .'-'. intval( $shortcode_atts['group_id'] ).'-'. $user_id ) ) { $use_filter = true; } } } else if ( $shortcode_atts['pagenow'] == 'learndash' ) { if ( wp_verify_nonce( $shortcode_atts['pagenow_nonce'], $shortcode_atts['pagenow'] .'-'. $user_id ) ) { // Hard return here because we don't want to set $user_filter to true as that will trigger the // logic below to show the admin only details link. return true; } } } if ( $use_filter == true ) { // The following filter is called during the template output. Normally if the admin is viewing profile.php // We show the edit options. but via AJAX we don't know from where the user is viewing. It may be a front-end // page etc. So as part of the shortcode atts we store the pagenow and a nonce we then verify within the logic below. add_filter( 'learndash_show_user_course_complete_options', function( $show_admin_options, $user_id = 0 ) { if ( current_user_can( 'edit_users' ) ) { $show_admin_options = true; } return $show_admin_options; }, 1, 2 ); } } return $use_filter; }PKc\ XxXx'includes/course/ld-course-functions.phpnuW+AID ) { $p = $id; $id = $p->ID; } else if ( is_numeric( $id ) ) { $p = get_post( $id ); } if ( empty( $id ) ) { if ( defined( 'REST_REQUEST' ) && REST_REQUEST ) { //return false; } else { if ( is_admin() ) { global $parent_file, $post_type, $pagenow; if ( ( ! in_array( $pagenow, array( 'post.php', 'post-new.php' ) ) ) || ( ! in_array( $post_type, array( 'sfwd-courses', 'sfwd-lessons', 'sfwd-topic', 'sfwd-quiz' ) ) ) ) { return false; } } else if ( ! is_single() || is_home() ) { return false; } } $post = get_post( get_the_id() ); if ( ( $post ) && ( $post instanceof WP_Post ) ) { $id = $post->ID; $p = $post; } else { return false; } } if ( empty( $p->ID ) ) { return 0; } if ( $p->post_type == 'sfwd-courses' ) { return $p->ID; } // Somewhat a kludge. Here we try ans assume the course_id being handled. if ( ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) && ( $bypass_cb === false ) ) { if ( ! is_admin() ) { $course_slug = get_query_var( 'sfwd-courses' ); if ( ! empty( $course_slug ) ) { //$course_post = get_page_by_path( $course_slug, OBJECT, 'sfwd-courses' ); $course_post = learndash_get_page_by_path( $course_slug, 'sfwd-courses' ); if ( ( $course_post ) && ( $course_post instanceof WP_Post ) ) { return $course_post->ID; } } } if ( ( isset( $_GET['course_id'] ) ) && ( ! empty( $_GET['course_id'] ) ) ) { return intval( $_GET['course_id'] ); } else if ( ( isset( $_GET['course'] ) ) && ( ! empty( $_GET['course'] ) ) ) { return intval( $_GET['course'] ); } else if ( ( isset( $_POST['course_id'] ) ) && ( ! empty( $_POST['course_id'] ) ) ) { return intval( $_POST['course_id'] ); } else if ( ( isset( $_POST['course'] ) ) && ( ! empty( $_POST['course'] ) ) ) { return intval( $_POST['course'] ); } else if ( ( isset( $_GET['post'] ) ) && ( ! empty( $_GET['post'] ) ) ) { if ( get_post_type( intval( $_GET['post'] ) ) == 'sfwd-courses' ) { return intval( $_GET['post'] ); } } } return (int)get_post_meta( $id, 'course_id', true ); } /** * Get course ID for resource (legacy users) * * Determine type of ID is being passed in. Should be the ID of * anything that belongs to a course (Lesson, Topic, Quiz, etc) * * @since 2.1.0 * * @param obj|int $id id of resource * @return string id of course */ function learndash_get_legacy_course_id( $id = null ){ global $post; if ( empty( $id ) ) { if ( ! is_single() || is_home() ) { return false; } $id = $post->ID; } $terms = wp_get_post_terms( $id, 'courses' ); if ( empty( $terms) || empty( $terms[0] ) || empty( $terms[0]->slug) ) { return 0; } $courseslug = $terms[0]->slug; global $wpdb; $term_taxonomy_id = $wpdb->get_var( $wpdb->prepare( " SELECT `term_taxonomy_id` FROM $wpdb->term_taxonomy tt, $wpdb->terms t WHERE slug = %s AND t.term_id = tt.term_id AND tt.taxonomy = 'courses' ", $courseslug ) ); $course_id = $wpdb->get_var( $wpdb->prepare( " SELECT `ID` FROM $wpdb->term_relationships, $wpdb->posts WHERE `ID` = `object_id` AND `term_taxonomy_id` = %d AND `post_type` = 'sfwd-courses' AND `post_status` = 'publish' ", $term_taxonomy_id ) ); return $course_id; } /** * Get lesson id of resource * * @since 2.1.0 * * @param int $id post id of resource * @return string lesson id */ function learndash_get_lesson_id( $post_id = null, $course_id = null ) { global $post; if ( empty( $post_id ) ) { if ( ! is_single() || is_home() ) { return false; } $post_id = $post->ID; } if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $lesson_slug = get_query_var( 'sfwd-lessons' ); if ( !empty( $lesson_slug ) ) { //$lesson_post = get_page_by_path( $lesson_slug, OBJECT, 'sfwd-lessons' ); $lesson_post = learndash_get_page_by_path( $lesson_slug, 'sfwd-lessons' ); if ( ( $lesson_post ) && ( $lesson_post instanceof WP_Post ) ) { return $lesson_post->ID; } } else { if ( empty( $course_id ) ) { $course_id = learndash_get_course_id( $post_id ); } if ( !empty( $course_id ) ) { return learndash_course_get_single_parent_step( $course_id, $post_id ); } } } return get_post_meta( $post_id, 'lesson_id', true ); } /** * Get array of courses that user has access to * * @since 2.1.0 * * @param int $user_id * @param array array attributes ('order', 'orderby') * @return array array of courses that user has access to */ function ld_get_mycourses( $user_id = null, $atts = array() ) { $defaults = array( 'order' => 'DESC', 'orderby' => 'ID', 's' => '', ); $atts = wp_parse_args( $atts, $defaults ); return learndash_user_get_enrolled_courses( $user_id, $atts, true ); } /** * Does user have access to course (houses filter) * * @since 2.1.0 * * @param int $post_id id of resource * @param int $user_id * @return bool */ function sfwd_lms_has_access( $post_id, $user_id = null ) { /** * Filter if user has access to course * * Calls sfwd_lms_has_access_fn() to determine if user has access to course * * @since 2.1.0 * * @param bool */ return apply_filters( 'sfwd_lms_has_access', sfwd_lms_has_access_fn( $post_id, $user_id ), $post_id, $user_id ); } /** * Does user have access to course * * Check's if user has access to course when they try to access a resource that * belong to that course (Lesson, Topic, Quiz, etc.) * * @since 2.1.0 * * @param int $post_id id of resource * @param int $user_id * @return bool */ function sfwd_lms_has_access_fn( $post_id, $user_id = null ) { if ( empty( $user_id ) ) { $user_id = get_current_user_id(); } if ( learndash_is_admin_user( $user_id ) ) { /** * See example if 'learndash_override_course_auto_enroll' filter * https://bitbucket.org/snippets/learndash/kon6y * * @since 2.3 */ $course_autoenroll_admin = LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_General_Admin_User', 'courses_autoenroll_admin_users' ); if ( $course_autoenroll_admin == 'yes' ) { $course_autoenroll_admin = true; } else { $course_autoenroll_admin = false; } if ( apply_filters('learndash_override_course_auto_enroll', $course_autoenroll_admin, $user_id ) ) { return true; } } $course_id = learndash_get_course_id( $post_id ); if ( empty( $course_id ) ) { return true; } if ( ! empty( $post_id ) && learndash_is_sample( $post_id ) ) { return true; } $meta = get_post_meta( $course_id, '_sfwd-courses', true ); if ( @$meta['sfwd-courses_course_price_type'] == 'open' || @$meta['sfwd-courses_course_price_type'] == 'paynow' && empty( $meta['sfwd-courses_course_join'] ) && empty( $meta['sfwd-courses_course_price'] ) ) { return true; } if ( empty( $user_id ) ) { return false; } if ( true === learndash_use_legacy_course_access_list() ) { if ( ! empty( $meta['sfwd-courses_course_access_list'] ) ) { //$course_access_list = explode( ',', $meta['sfwd-courses_course_access_list'] ); $course_access_list = learndash_convert_course_access_list( $meta['sfwd-courses_course_access_list'], true ); } else { $course_access_list = array(); } if ( ( in_array( $user_id, $course_access_list ) ) || ( learndash_user_group_enrolled_to_course( $user_id, $course_id ) ) ) { $expired = ld_course_access_expired( $course_id, $user_id ); return ! $expired; //True if not expired. } else { return false; } } else { $course_user_meta = get_user_meta( $user_id, 'course_' . $course_id . '_access_from', true ); if ( ( ! empty( $course_user_meta ) ) || ( learndash_user_group_enrolled_to_course( $user_id, $course_id ) ) ) { $expired = ld_course_access_expired( $course_id, $user_id ); return ! $expired; //True if not expired. } else { return false; } } } /** * Redirect user to course * * @since 2.1.0 * * @param int $post_id id of resource that belongs to a course */ function sfwd_lms_access_redirect( $post_id ) { $access = sfwd_lms_has_access( $post_id ); if ( $access === true ) { return true; } $link = get_permalink( learndash_get_course_id( $post_id ) ); $link = apply_filters( 'learndash_access_redirect' , $link, $post_id ); if ( !empty( $link ) ) { wp_redirect( $link ); exit(); } } /** * Is users access to course expired * * @since 2.1.0 * * @param int $course_id * @param int $user_id * @return bool */ function ld_course_access_expired( $course_id, $user_id ) { $course_access_upto = ld_course_access_expires_on( $course_id, $user_id ); if ( empty( $course_access_upto ) ) { return false; } else { if ( time() >= $course_access_upto ) { /** * Filter to control processing the user course expiration. * * @since 2.6.2 * @param boolean true. * @param integer $user_id User ID. * @param integer $course_id, Course ID. * @param integer $course_access_upto Timestamp when user course access is to expire. * * If return true then processing will continue. If false returned then abort and false returned to calling function. */ if ( apply_filters( 'learndash_process_user_course_access_expire', true, $user_id, $course_id, $course_access_upto ) ) { /** * As of LearnDash 2.3.0.3 we store the GMT timestamp as the meta value. In prior versions we stored 1 */ update_user_meta( $user_id, 'learndash_course_expired_' . $course_id, time() ); ld_update_course_access( $user_id, $course_id, true ); /** * Action fired when the user course access expired. * * @since 2.6.2 * * @param integer $user_id User ID. * @param integer $course_id, Course ID. */ do_action( 'learndash_user_course_access_expired', $user_id, $course_id ); $delete_course_progress = learndash_get_setting( $course_id, 'expire_access_delete_progress' ); if ( ! empty( $delete_course_progress) ) { learndash_delete_course_progress( $course_id, $user_id ); } return true; } else { return false; } } else { return false; } } } /** * Generate alert in wp_head that users access to course is expired * * @since 2.1.0 */ function ld_course_access_expired_alert() { global $post; if ( ! is_singular() || empty( $post->ID ) || $post->post_type != 'sfwd-courses' ) { return; } $user_id = get_current_user_id(); if ( empty( $user_id ) ) { return; } $expired = get_user_meta( $user_id, 'learndash_course_expired_'.$post->ID, true ); if ( empty( $expired) ) { return; } $has_access = sfwd_lms_has_access( $post->ID, $user_id ); if ( $has_access ) { delete_user_meta( $user_id, 'learndash_course_expired_'.$post->ID ); return; } else { ?> 0 ) { $course_access_upto = abs( intval( $courses_access_from ) ) + ( abs( intval( $expire_access_days ) ) * DAY_IN_SECONDS ); } } } /** * Filter for 'ld_course_access_expires_on'. * * @since 3.0.7 * @param integer $course_access_upto timestamp. * @param integer $course_id Course ID. * @param integer $user_id User ID. */ return apply_filters( 'ld_course_access_expires_on', $course_access_upto, $course_id, $user_id ); } /** * Get amount of time when lesson becomes available to user * * @since 2.1.0 * * @param int $course_id Course ID to check. * @param int $user_id User ID to check. * @return int */ function ld_course_access_from( $course_id = 0, $user_id = 0 ) { static $courses = array(); $course_id = absint( $course_id ); $user_id = absint( $user_id ); // If Shared Steps enabled we need to ensure both Course ID and User ID and not empty. if ( 'yes' === LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) ) { if ( ( empty( $course_id ) ) || ( empty( $user_id ) ) ) { return false; } } if ( ! isset( $courses[ $course_id ][ $user_id ] ) ) { if ( ! isset( $courses[ $course_id ] ) ) { $courses[ $course_id ] = array(); } $courses[ $course_id ][ $user_id ] = false; $courses[ $course_id ][ $user_id ] = (int) get_user_meta( $user_id, 'course_' . $course_id . '_access_from', true ); if ( empty( $courses[ $course_id ][ $user_id ] ) ) { if ( ( 'open' === learndash_get_course_meta_setting( $course_id, 'course_price_type' ) ) && ( apply_filters( 'learndash_course_open_set_user_access_from', true, $user_id, $course_id ) ) ) { $enrolled_groups = learndash_user_group_enrolled_to_course_from( $user_id, $course_id ); if ( ! empty( $enrolled_groups ) ) { $courses[ $course_id ][ $user_id ] = absint( $enrolled_groups ); } } } if ( empty( $courses[ $course_id ][ $user_id ] ) ) { $course_activity_args = array( //'course_id' => $course_id, 'user_id' => $user_id, 'post_id' => $course_id, 'activity_type' => 'access', ); $course_activity = learndash_get_user_activity( $course_activity_args ); if ( ( ! empty( $course_activity ) ) && ( is_object( $course_activity ) ) ) { if ( ( property_exists( $course_activity, 'activity_started' ) ) && ( ! empty( $course_activity->activity_started ) ) ) { $courses[ $course_id ][ $user_id ] = intval( $course_activity->activity_started ); update_user_meta( $user_id, 'course_' . $course_id . '_access_from', $courses[ $course_id ][ $user_id ] ); } } } } /** * Filter for 'ld_course_access_from'. * * @since 3.0.7 * @param integer timestamp * @param integer $course_id * @param integer $user_id */ return apply_filters( 'ld_course_access_from', $courses[ $course_id ][ $user_id ], $course_id, $user_id ); } /** * Update the course access time for a user. * * @since 2.6.0 * * @param int $course_id Course ID for update. * @param int $user_id User ID for update. * @param mixed $access Value can be a date string (YYYY-MM-DD hh:mm:ss or integer value. * @param bool $is_gmt If $access value is GMT (true) or relative to site timezone (false). * * @return bool Returns true if success. */ function ld_course_access_from_update( $course_id, $user_id, $access = '', $is_gmt = false ) { if ( ( ! empty( $course_id ) ) && ( ! empty( $user_id ) ) && ( ! empty( $access ) ) ) { if ( ! is_numeric( $access ) ) { // If we a non-numberic value like a date stamp Y-m-d hh:mm:ss we want to convert it to a GMT timestamp. $access_time = learndash_get_timestamp_from_date_string( $access, !$is_gmt ); } elseif ( is_string( $access ) ) { if ( ! $is_gmt ) { $access = get_gmt_from_date( $access, 'Y-m-d H:i:s' ); } $access_time = strtotime( $access ); } else { return false; } if ( ( ! empty( $access_time ) ) && ( $access_time > 0 ) ) { // We don't allow dates greater than now. if ( $access_time > time() ) { $access_time = time(); } $course_args = array( 'course_id' => $course_id, 'post_id' => $course_id, 'activity_type' => 'course', 'user_id' => $user_id, 'activity_started' => $access_time, ); $activity_id = learndash_update_user_activity( $course_args ); return update_user_meta( $user_id, 'course_' . $course_id . '_access_from', $access_time ); } } } /** * Update list of courses users has access to * * @since 2.1.0 * * @param int $user_id * @param int $course_id * @param bool $remove * @return array list of courses users has access to */ function ld_update_course_access( $user_id, $course_id, $remove = false ) { $action_success = false; $user_id = absint( $user_id ); $course_id = absint( $course_id ); $course_access_list = null; if ( ( empty( $user_id ) ) || ( empty( $course_id ) ) ) { return; } if ( true === learndash_use_legacy_course_access_list() ) { $course_access_list = learndash_get_setting( $course_id, 'course_access_list' ); $course_access_list = learndash_convert_course_access_list( $course_access_list, true ); if ( empty( $remove ) ) { $course_access_list[] = $user_id; $course_access_list = array_unique( $course_access_list ); $action_success = true; } else { $course_access_list = array_diff( $course_access_list, array( $user_id ) ); $action_success = true; } $course_access_list = learndash_convert_course_access_list( $course_access_list ); learndash_update_setting( $course_id, 'course_access_list', $course_access_list ); } $user_course_access_time = 0; if ( empty( $remove ) ) { $user_course_access_time = get_user_meta( $user_id, 'course_' . $course_id . '_access_from', true ); if ( empty( $user_course_access_time ) ) { $user_course_access_time = time(); update_user_meta( $user_id, 'course_' . $course_id . '_access_from', $user_course_access_time ); $action_success = true; } } else { delete_user_meta( $user_id, 'course_'. $course_id .'_access_from' ); $action_success = true; } $course_activity_args = array( 'activity_type' => 'access', 'user_id' => $user_id, 'post_id' => $course_id, 'course_id' => $course_id, ); $course_activity = learndash_get_user_activity( $course_activity_args ); if ( is_null( $course_activity ) ) { $course_activity_args['course_id'] = 0; $course_activity = learndash_get_user_activity( $course_activity_args ); } if ( is_object( $course_activity ) ) { $course_activity_args = json_decode( json_encode( $course_activity ), true ); $course_activity_args['changed'] = false; } else { $course_activity_args['changed'] = true; $course_activity_args['activity_started'] = 0; } if ( ( empty( $course_activity_args['course_id'] ) ) || ( $course_activity_args['course_id'] !== $course_activity_args['post_id'] ) ) { $course_activity_args['course_id'] = $course_activity_args['post_id']; $course_activity_args['changed'] = true; } if ( empty( $remove ) ) { if ( $user_course_access_time !== absint( $course_activity_args['activity_started'] ) ) { $course_activity_args['activity_started'] = $user_course_access_time; $course_activity_args['changed'] = true; } } else { $course_activity_args['activity_started'] = $user_course_access_time; $course_activity_args['changed'] = true; } if ( true === $course_activity_args['changed'] ) { $skip = false; if ( ( ! empty( $remove ) ) && ( ! isset( $course_activity_args['activity_id'] ) ) ) { $skip = true; } if ( true !== $skip ) { $course_activity_args['data_upgrade'] = true; learndash_update_user_activity( $course_activity_args ); } } /** * Run actions after a users list of courses is updated * * @since 2.1.0 * * @param int $user_id * @param int $course_id * @param array $course_access_list * @param bool $remove */ do_action( 'learndash_update_course_access', $user_id, $course_id, $course_access_list, $remove ); return $action_success; } /** * Get timestamp of when user has access to lesson * * @since 2.1.0 * * @param int $lesson_id * @param int $user_id * @return int timestamp */ function ld_lesson_access_from( $lesson_id, $user_id, $course_id = null ) { $return = null; if ( is_null( $course_id ) ) { $course_id = learndash_get_course_id( $lesson_id ); } $courses_access_from = ld_course_access_from( $course_id, $user_id ); if ( empty( $courses_access_from ) ) { $courses_access_from = learndash_user_group_enrolled_to_course_from( $user_id, $course_id ); } $visible_after = learndash_get_setting( $lesson_id, 'visible_after' ); if ( $visible_after > 0 ) { // Adjust the Course acces from by the number of days. Use abs() to ensure no negative days. $lesson_access_from = $courses_access_from + abs($visible_after) * 24 * 60 * 60; $lesson_access_from = apply_filters( 'ld_lesson_access_from__visible_after', $lesson_access_from, $lesson_id, $user_id ); $current_timestamp = time(); if ( $current_timestamp < $lesson_access_from ) { $return = $lesson_access_from; } } else { $visible_after_specific_date = learndash_get_setting( $lesson_id, 'visible_after_specific_date' ); if ( !empty( $visible_after_specific_date ) ) { if ( !is_numeric( $visible_after_specific_date ) ) { // If we a non-numberic value like a date stamp Y-m-d hh:mm:ss we want to convert it to a GMT timestamp $visible_after_specific_date = learndash_get_timestamp_from_date_string( $visible_after_specific_date, true ); } $current_time = time(); if ( $current_time < $visible_after_specific_date ) { $return = apply_filters( 'ld_lesson_access_from__visible_after_specific_date', $visible_after_specific_date, $lesson_id, $user_id ); } } } return apply_filters( 'ld_lesson_access_from', $return, $lesson_id, $user_id ); } /** * Display when lesson will be available * * @since 2.1.0 * * @param string $content content of lesson * @param object $post WP_Post object * @return string when lesson will be available */ function lesson_visible_after( $content, $post ) { if ( empty( $post->post_type ) ) { return $content; } if ( $post->post_type == 'sfwd-lessons' ) { $lesson_id = $post->ID; } else { if ( $post->post_type == 'sfwd-topic' || $post->post_type == 'sfwd-quiz' ) { if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $course_id = learndash_get_course_id( $post ); $lesson_id = learndash_course_get_single_parent_step( $course_id, $post->ID ); } else { $lesson_id = learndash_get_setting( $post, 'lesson' ); } } else { return $content; } } if ( empty( $lesson_id ) ) { return $content; } if ( is_user_logged_in() ) { $user_id = get_current_user_id(); } else { return $content; } if ( learndash_is_admin_user( $user_id ) ) { $bypass_course_limits_admin_users = LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_General_Admin_User', 'bypass_course_limits_admin_users' ); if ( $bypass_course_limits_admin_users == 'yes' ) $bypass_course_limits_admin_users = true; else $bypass_course_limits_admin_users = false; } else { $bypass_course_limits_admin_users = false; } // For logged in users to allow an override filter. $bypass_course_limits_admin_users = apply_filters( 'learndash_prerequities_bypass', $bypass_course_limits_admin_users, $user_id, $post->ID, $post ); $lesson_access_from = ld_lesson_access_from( $lesson_id, get_current_user_id() ); if ( ( empty( $lesson_access_from ) ) || ( $bypass_course_limits_admin_users ) ) { return $content; } else { $content = SFWD_LMS::get_template( 'learndash_course_lesson_not_available', array( 'user_id' => get_current_user_id(), 'course_id' => learndash_get_course_id( $lesson_id ), 'lesson_id' => $lesson_id, 'lesson_access_from_int' => $lesson_access_from, 'lesson_access_from_date' => learndash_adjust_date_time_display( $lesson_access_from ), 'context' => 'lesson' ), false ); return $content; } return $content; } add_filter( 'learndash_content', 'lesson_visible_after', 1, 2 ); /** * Is users course prerequisites completed for a given course * * @since 2.1.0 * * @param int $id course id * @return boolean */ function is_course_prerequities_completed( $post_id = 0 ) { $course_pre_complete = true; if ( !empty( $post_id ) ) { $course_id = learndash_get_course_id( $post_id ); if ( ( !empty( $course_id ) ) && ( learndash_get_course_prerequisite_enabled( $course_id ) ) ) { $course_pre = learndash_get_course_prerequisites( $course_id ); if ( ! empty( $course_pre ) ) { $course_pre_compare = learndash_get_course_prerequisite_compare( $course_id ); if ( $course_pre_compare == 'ANY' ) { $s_pre = array_search( true, $course_pre ); if ( $s_pre !== false ) $course_pre_complete = true; else $course_pre_complete = false; } else if ( $course_pre_compare == 'ALL' ) { $s_pre = array_search( false, $course_pre ); if ( array_search( false, $course_pre ) === false ) $course_pre_complete = true; else $course_pre_complete = false; } } } } return $course_pre_complete; } /** * Given a course ID will return an array of the prereq item and the status * * @since 2.4.0 * * @param int $id course id * @return array */ function learndash_get_course_prerequisites( $post_id = 0 ) { $courses_status_array = array(); if ( !empty( $post_id ) ) { $course_id = learndash_get_course_id( $post_id ); if ( ( !empty( $course_id ) ) && ( learndash_get_course_prerequisite_enabled( $course_id ) ) ) { $course_pre = learndash_get_course_prerequisite( $course_id ); if ( ! empty( $course_pre ) ) { $course_pre_compare = learndash_get_course_prerequisite_compare( $course_id ); if ( is_string( $course_pre ) ) $course_pre = array( $course_pre ); foreach( $course_pre as $c_id ) { //Now check if the prerequities course is completed by user or not $course_status = learndash_course_status( $c_id, null ); if ( $course_status == esc_html__( 'Completed','learndash' ) ) { $courses_status_array[$c_id] = true; } else { $courses_status_array[$c_id] = false; } } } } } return $courses_status_array; } /** * Get list of course prerequisites for a given course * * @since 2.1.0 * * @param int $id course id * @return array list of courses */ function learndash_get_course_prerequisite( $course_id = 0 ) { $course_pre = learndash_get_setting( $course_id, 'course_prerequisite' ); if ( empty( $course_pre ) ) $course_pre = array(); return $course_pre; } function learndash_set_course_prerequisite( $course_id = 0, $course_prerequisites = array() ) { if ( !empty( $course_id ) ) { if ( ( !empty( $course_prerequisites ) ) && ( is_array( $course_prerequisites ) ) ) { $course_prerequisites = array_unique( $course_prerequisites ); } return learndash_update_setting( $course_id, 'course_prerequisite', (array)$course_prerequisites ); } } /** * Given a course ID will return true or false if prereq is enabled * * @since 2.4.0 * * @param int $id course id * @return bool true is prereq is enabled false if not */ function learndash_get_course_prerequisite_enabled( $course_id ) { $course_pre_enabled = false; $course_id = learndash_get_course_id( $course_id ); if (!empty( $course_id ) ) { $post_options = get_post_meta( $course_id, '_sfwd-courses', true ); if ( ( isset( $post_options['sfwd-courses_course_prerequisite_enabled'] ) ) && ( $post_options['sfwd-courses_course_prerequisite_enabled'] == 'on' ) ) { $course_pre_enabled = true; } else if ( !isset( $post_options['sfwd-courses_course_prerequisite_enabled'] ) ) { // If the 'course_prerequisite_enabled' setting is not found we check the 'sfwd-courses_course_prerequisite' if ( ( isset( $post_options['sfwd-courses_course_prerequisite'] ) ) && ( !empty( $post_options['sfwd-courses_course_prerequisite'] ) ) ) { $course_pre_enabled = true; $post_options['sfwd-courses_course_prerequisite_enabled'] = 'on'; } else { $post_options['sfwd-courses_course_prerequisite_enabled'] = ''; } update_post_meta( $course_id, '_sfwd-courses', $post_options ); } } return $course_pre_enabled; } function learndash_set_course_prerequisite_enabled( $course_id, $enabled = true ) { if ( $enabled === true ) $enabled = 'on'; if ( $enabled != 'on' ) $enabled = ''; return learndash_update_setting( $course_id, 'course_prerequisite_enabled', $enabled ); } /** * Given a course ID will return the compare value 'ALL' or 'ANY' (default) * * @since 2.4.0 * * @param int $id course id * @return string 'ALL' or 'ANY' default */ function learndash_get_course_prerequisite_compare( $post_id ) { $course_pre_compare = 'ANY'; if ( !empty( $post_id ) ) { $course_id = learndash_get_course_id( $post_id ); if ( !empty( $course_id ) ) { $course_prerequisite_compare = learndash_get_setting( $course_id, 'course_prerequisite_compare' ); if ( ( $course_prerequisite_compare == 'ANY') || ( $course_prerequisite_compare == 'ALL' ) ) { $course_pre_compare = $course_prerequisite_compare; } } } return $course_pre_compare; } /** * Given a course ID will return true or false if course points enabled * * @since 2.4.0 * * @param int $id course id * @return bool true is prereq is enabled false if not */ function learndash_get_course_points_enabled( $post_id = 0 ) { $course_points_enabled = false; if ( !empty( $post_id ) ) { $course_id = learndash_get_course_id( $post_id ); if ( !empty( $course_id ) ) { $course_points_enabled = learndash_get_setting( $course_id, 'course_points_enabled' ); if ( $course_points_enabled == 'on' ) $course_points_enabled = true; } } return $course_points_enabled; } /** * Given a course ID will return the course points * * @since 2.4.0 * * @param int $post_id Course Step ir Course post ID. * @param int $decimals Number of decimal places to round. * @return bool false - course points not enabled, int 0 or greater course points */ function learndash_get_course_points( $post_id = 0, $decimals = 1 ) { $course_points = false; if ( !empty( $post_id ) ) { $course_id = learndash_get_course_id( $post_id ); if ( !empty( $course_id ) ) { if ( learndash_get_course_points_enabled( $course_id ) ) { $course_points = 0; $course_points = learndash_get_setting( $course_id, 'course_points' ); if ( !empty( $course_points ) ) { $course_points = learndash_format_course_points( $course_points, $decimals ); } } } } return $course_points; } /** * Given a course ID will return the course points for access * * @since 2.4.0 * * @param int $id course id * @return bool false - course point not enabled, int 0 or greater access points */ function learndash_get_course_points_access( $post_id = 0 ) { $course_points_access = false; if ( !empty( $post_id ) ) { $course_id = learndash_get_course_id( $post_id ); if ( !empty( $course_id ) ) { if ( learndash_get_course_points_enabled( $course_id ) ) { $course_points_access = 0; $course_points_access = learndash_format_course_points( learndash_get_setting( $course_id, 'course_points_access' ) ); } } } return $course_points_access; } function learndash_check_user_course_points_access( $post_id, $user_id = 0 ) { $user_can_access = true; if ( empty( $user_id ) ) { if ( is_user_logged_in() ) { $user_id = get_current_user_id(); } else { return false; } } if ( !empty( $post_id ) ) { $course_id = learndash_get_course_id( $post_id ); if ( ( !empty( $course_id ) ) && ( !empty( $user_id ) ) ) { if ( learndash_get_course_points_enabled( $course_id ) ) { $course_access_points = learndash_get_course_points_access( $course_id ); if ( !empty( $course_access_points ) ) { $user_course_points = learndash_get_user_course_points( $user_id ); if ( floatval( $user_course_points ) >= floatval( $course_access_points ) ) return true; else return false; } } } } return true; } /** * Handles actions to be made when user joins a course * * Redirects user to login url, adds course access to user * * @since 2.1.0 */ function learndash_process_course_join(){ if ( ( ! isset( $_POST['course_join'] ) ) || ( ! isset( $_POST['course_id'] ) ) ) { return; } $user_id = get_current_user_id(); $course_id = intval( $_POST['course_id'] ); if ( empty( $user_id ) ) { $redirect_url = get_permalink( $course_id ); //$redirect_url = add_query_arg('course_join', $_POST['course_join'], $redirect_url ); //$redirect_url = add_query_arg('course_id', $course_id, $redirect_url ); $login_url = wp_login_url( $redirect_url ); /** * Filter URL of where user should be redirected to * * @since 2.1.0 * * @param login_url $login_url */ $login_url = apply_filters( 'learndash_course_join_redirect', $login_url, $course_id ); wp_redirect( $login_url ); exit; } /** * Verify the form is valid * @since 2.2.1.2 */ if ( !wp_verify_nonce( $_POST['course_join'], 'course_join_'. $user_id .'_'. $course_id ) ) { return; } $meta = get_post_meta( $course_id, '_sfwd-courses', true ); if ( @$meta['sfwd-courses_course_price_type'] == 'free' || @$meta['sfwd-courses_course_price_type'] == 'paynow' && empty( $meta['sfwd-courses_course_price'] ) && ! empty( $meta['sfwd-courses_course_join'] ) || sfwd_lms_has_access( $course_id, $user_id ) ) { ld_update_course_access( $user_id, $course_id ); } } add_action( 'wp', 'learndash_process_course_join' ); /* global $learndash_after_login; //$learndash_after_login = false; function learndash_wp_login_process_course_join( $user_login = '', $user = '' ) { if ( !empty( $user_login ) ) { if ( !( $user instanceof WP_User ) ) { $user = get_user_by('login', $user_login ); } if ( $user instanceof WP_User ) { global $learndash_after_login; $learndash_after_login = true; } } } add_action('wp_login', 'learndash_wp_login_process_course_join', 99, 2); */ /* function learndash_course_login_redirect( $redirect_to, $requested_redirect_to, $user ) { global $learndash_after_login; if ( $learndash_after_login ) { if ( ( isset( $redirect_to ) ) && ( !empty( $redirect_to ) ) ) { $url = parse_url( $redirect_to ); if ( ( isset( $url['query'] ) ) && ( !empty( $url['query'] ) ) ) { parse_str( $url['query'], $url_elements ); if ( ( isset( $url_elements['course_id'] ) ) && ( !empty( $url_elements['course_id'] ) ) && ( isset( $url_elements['course_join'] ) ) && ( !empty( $url_elements['course_join'] ) ) ) { // sort of a hack. If we are here then the user clicked on a Course 'Take This Course' form button. At the time the user was not known to WP which means // the nonce used in the form will be different than a nonce for an authentcated user. So we need to reseed the nonce so when we get to the form processing // in learndash_process_course_join() it will verify. $redirect_to = add_query_arg( 'course_join', wp_create_nonce( 'course_join_'. $user->ID .'_'. $url_elements['course_id'] ), $redirect_to ); } } } } return $redirect_to; } add_filter( 'login_redirect', 'learndash_course_login_redirect', 10, 3 ); */ /** * Shortcode to output course content * * @since 2.1.0 * * @param array $atts shortcode attributes * @return string output of shortcode */ function learndash_course_content_shortcode( $atts ) { global $learndash_shortcode_used; $atts_defaults = array( 'course_id' => 0, 'num' => false ); $atts = shortcode_atts( $atts_defaults, $atts ); if ( empty( $atts['course_id'] ) ) { $course_id = learndash_get_course_id(); if ( empty( $course_id ) ) { return ''; } $atts['course_id'] = intval( $course_id ); } if ( isset( $_GET['ld-courseinfo-lesson-page'] ) ) { $atts['paged'] = intval( $_GET['ld-courseinfo-lesson-page'] ); } $course_id = intval( $atts['course_id'] ); $course = $post = get_post( $course_id ); // if ( ! is_singular() || $post->post_type != 'sfwd-courses' ) { // return ''; // } if ( is_user_logged_in() ) $user_id = get_current_user_id(); else $user_id = 0; $logged_in = ! empty( $user_id ); $lesson_progression_enabled = false; $course_settings = learndash_get_setting( $course ); $lesson_progression_enabled = learndash_lesson_progression_enabled( $course_id ); $courses_options = learndash_get_option( 'sfwd-courses' ); $lessons_options = learndash_get_option( 'sfwd-lessons' ); $quizzes_options = learndash_get_option( 'sfwd-quiz' ); $course_status = learndash_course_status( $course_id, null ); $has_access = sfwd_lms_has_access( $course_id, $user_id ); $lessons = learndash_get_course_lessons_list( $course, $user_id, $atts ); $quizzes = learndash_get_course_quiz_list( $course ); $has_course_content = ( ! empty( $lessons ) || ! empty( $quizzes ) ); $has_topics = false; if ( ! empty( $lessons) ) { foreach ( $lessons as $lesson ) { $lesson_topics[ $lesson['post']->ID ] = learndash_topic_dots( $lesson['post']->ID, false, 'array', $user_id, $course_id ); if ( ! empty( $lesson_topics[ $lesson['post']->ID ] ) ) { $has_topics = true; } } } $level = ob_get_level(); ob_start(); $template_file = SFWD_LMS::get_template( 'course_content_shortcode', null, null, true ); if ( ! empty( $template_file ) ) { include $template_file; } $content = learndash_ob_get_clean( $level ); $content = str_replace( array("\n", "\r"), ' ', $content ); $user_has_access = $has_access? 'user_has_access':'user_has_no_access'; $learndash_shortcode_used = true; // Prevent the shortcoce page from showing when used on a course (sfwd-courses) single page // as it will conflict with pager from the templates/course.php output. $queried_object = get_queried_object(); if ( ( is_a( $queried_object, 'WP_Post' ) ) && ( $queried_object->post_type == 'sfwd-courses' ) ) { global $course_pager_results; $course_pager_results = null; } /** * Filter course content shortcode * * @since 2.1.0 */ return '
      '.apply_filters( 'learndash_content', $content, $post ).'
      '; } add_shortcode( 'course_content', 'learndash_course_content_shortcode' ); function learndash_update_user_activity( $args = array() ) { global $wpdb; $default_args = array( // Can be passed in if we are updating a specific existing activity row. 'activity_id' => 0, // Required. This is the ID of the Course. Unique key part 1/4 'course_id' => 0, // Required. This is the ID of the Course, Lesson, Topic, Quiz item. Unique key part 2/4 'post_id' => 0, // Optional. Will use get_current_user_id() if left 0. Unique key part 3/4 'user_id' => 0, // Will be the token stats that described the status_times array (next argument) Can be most anything. // From 'course', 'lesson', 'topic', 'access' or 'expired'. Unique key part 4/4. 'activity_type' => '', // true if the lesson, topic, course, quiz is complete. False if not complete. null if not started 'activity_status' => '', // Should be the timstamp when the 'status' started 'activity_started' => '', // Should be the timstamp when the 'status' completed 'activity_completed' => '', // Should be the timstamp when the activity record was last updated. Used as a sort column for ProPanel and other queries 'activity_updated' => '', // Flag to indicate what we are 'update', 'insert', 'delete'. The default action 'update' will cause this function // to check for an existing record to update (if found) 'activity_action' => 'update', 'activity_meta' => '' ); $args = wp_parse_args( $args, $default_args ); if ( empty( $args['activity_id'] ) ) { if ( ( empty( $args['post_id'] ) ) || ( empty( $args['activity_type'] ) ) ) { //error_log('ABORT #1'); return; } } //if ( empty( $args['course_id'] ) ) { // error_log('here'); //} if ( empty( $args['user_id'] ) ) { // If we don't have a user_id passed via args if ( !is_user_logged_in() ) return; // If not logged in, abort // Else use the logged in user ID as the args user_id $args['user_id'] = get_current_user_id(); } // End of args processing. Finally after we have applied all the logic we go out for filters. $args = apply_filters('learndash_update_user_activity_args', $args); if ( empty( $args ) ) return; $values_array = array( 'user_id' => $args['user_id'], 'course_id' => $args['course_id'], 'post_id' => $args['post_id'], 'activity_type' => $args['activity_type'], ); $types_array = array( '%d', // user_id '%d', // course_id '%d', // post_id '%s', // activity_type ); if ( ( $args['activity_status'] === true ) || ( $args['activity_status'] === false ) ) { $values_array['activity_status'] = $args['activity_status']; $types_array[] = '%d'; } //if ( ( $args['activity_status'] == true ) && ( !empty( $args['activity_completed'] ) ) ) { if ( $args['activity_completed'] !== '' ) { $values_array['activity_completed'] = $args['activity_completed']; $types_array[] = '%d'; } if ( $args['activity_started'] !== '' ) { $values_array['activity_started'] = $args['activity_started']; $types_array[] = '%d'; } if ( $args['activity_updated'] !== '' ) { $values_array['activity_updated'] = $args['activity_updated']; $types_array[] = '%d'; } else { if ( ( empty( $args['activity_started'] ) ) && ( empty( $args['activity_completed'] ) ) ) { if ( !isset( $args['data_upgrade'] ) ) { $values_array['activity_updated'] = time(); $types_array[] = '%d'; } } else if ( $args['activity_started'] == $args['activity_completed'] ) { $values_array['activity_updated'] = $args['activity_completed']; $types_array[] = '%d'; } else { if ( $args['activity_started'] > $args['activity_completed'] ) { $values_array['activity_updated'] = $args['activity_started']; $types_array[] = '%d'; } else if ( $args['activity_completed'] > $args['activity_started'] ) { $values_array['activity_updated'] = $args['activity_completed']; $types_array[] = '%d'; } } } $update_ret = false; if ( $args['activity_action'] == 'update' ) { if ( empty( $args['activity_id'] ) ) { $activity = learndash_get_user_activity( $args ); if ( null !== $activity ) { $args['activity_id'] = $activity->activity_id; } } if ( !empty( $args['activity_id'] ) ) { $update_values_array = $values_array; $update_types_array = $types_array; $update_ret = $wpdb->update( LDLMS_DB::get_table_name( 'user_activity' ), $update_values_array, array( 'activity_id' => $args['activity_id'] ), $update_types_array, array( '%d' // activity_id ) ); } else { $args['activity_action'] = 'insert'; } } if ( $args['activity_action'] == 'insert' ) { $values_array['activity_updated'] = time(); $types_array[] = '%d'; $insert_ret = $wpdb->insert( LDLMS_DB::get_table_name( 'user_activity' ), $values_array, $types_array ); if ( $insert_ret !== false) { $args['activity_id'] = $wpdb->insert_id; } } // Finally for the course we update the activity meta if ( ( !empty( $args['activity_id'] ) ) && ( !empty( $args['activity_meta'] ) ) ) { foreach( $args['activity_meta'] as $meta_key => $meta_value ) { learndash_update_user_activity_meta( $args['activity_id'], $meta_key, $meta_value); } } do_action( 'learndash_update_user_activity', $args ); return $args['activity_id']; } function learndash_get_user_activity( $args = array() ) { global $wpdb; if ( !isset( $args['course_id'] ) ) $args['course_id'] = 0; if ( $args['activity_type'] == 'quiz' ) { $data_settings_quizzes = learndash_data_upgrades_setting('user-meta-quizzes'); if ( version_compare( $data_settings_quizzes['version'], '2.5', '>=') ) { $sql_str = $wpdb->prepare("SELECT * FROM " . LDLMS_DB::get_table_name( 'user_activity' ) . " WHERE user_id=%d AND course_id=%d AND post_id=%d AND activity_type=%s AND activity_completed=%d LIMIT 1", $args['user_id'], $args['course_id'], $args['post_id'], $args['activity_type'], $args['activity_completed'] ); } else { $sql_str = $wpdb->prepare("SELECT * FROM " . LDLMS_DB::get_table_name( 'user_activity' ) . " WHERE user_id=%d AND post_id=%d AND activity_type=%s AND activity_completed=%d LIMIT 1", $args['user_id'], $args['post_id'], $args['activity_type'], $args['activity_completed'] ); } } else { $data_settings_courses = learndash_data_upgrades_setting('user-meta-courses'); if ( version_compare( $data_settings_courses['version'], '2.5', '>=') ) { $sql_str = $wpdb->prepare("SELECT * FROM " . LDLMS_DB::get_table_name( 'user_activity' ) . " WHERE user_id=%d AND course_id=%d AND post_id=%d AND activity_type=%s LIMIT 1", $args['user_id'], $args['course_id'], $args['post_id'], $args['activity_type'] ); } else { $sql_str = $wpdb->prepare("SELECT * FROM " . LDLMS_DB::get_table_name( 'user_activity' ) . " WHERE user_id=%d AND post_id=%d AND activity_type=%s LIMIT 1", $args['user_id'], $args['post_id'], $args['activity_type'] ); } } //error_log('sql_str['. $sql_str .']'); $activity = $wpdb->get_row( $sql_str ); if ( $activity ) { //error_log('activity
      '. print_r($activity, true) .'
      '); if ( property_exists( $activity, 'activity_status' ) ) { if ( $activity->activity_status == true ) $activity->activity_status = true; else if ( $activity->activity_status == false ) $activity->activity_status = false; } } return $activity; } function learndash_get_user_activity_meta( $activity_id = 0, $activity_meta_key = '', $return_activity_meta_value_only = true ) { global $wpdb; if ( empty( $activity_id ) ) return; if ( !empty( $activity_meta_key ) ) { $meta_sql_str = $wpdb->prepare("SELECT * FROM " . LDLMS_DB::get_table_name( 'user_activity_meta' ) . " WHERE activity_id=%d AND activity_meta_key=%s", $activity_id, $activity_meta_key); $activity_meta = $wpdb->get_row( $meta_sql_str ); if ( !empty($activity_meta ) ) { if ( $return_activity_meta_value_only == true ) { if ( property_exists( $activity_meta, 'activity_meta_value' ) ) { return $activity_meta->activity_meta_value; } } } return $activity_meta; } else { // Here we return ALL meta for the given activity_id $meta_sql_str = $wpdb->prepare( "SELECT * FROM " . LDLMS_DB::get_table_name( 'user_activity_meta' ) . " WHERE activity_id=%d", $activity_id); return $wpdb->get_results( $meta_sql_str ); } } function learndash_update_user_activity_meta( $activity_id = 0, $meta_key = '', $meta_value = null) { global $wpdb; if ( ( empty( $activity_id ) ) || ( empty( $meta_key ) ) || ( $meta_value === null ) ) return; $activity = learndash_get_user_activity_meta( $activity_id, $meta_key, false); if ( null !== $activity ) { $wpdb->update( LDLMS_DB::get_table_name( 'user_activity_meta' ), array( 'activity_id' => $activity_id, 'activity_meta_key' => $meta_key, 'activity_meta_value' => maybe_serialize( $meta_value ) ), array( 'activity_meta_id' => $activity->activity_meta_id ), array( '%d', // activity_id '%s', // meta_key '%s' // meta_value ), array( '%d' // activity_meta_id ) ); } else { $wpdb->insert( LDLMS_DB::get_table_name( 'user_activity_meta' ), array( 'activity_id' => $activity_id, 'activity_meta_key' => $meta_key, 'activity_meta_value' => maybe_serialize( $meta_value ) ), array( '%d', // activity_id '%s', // meta_key '%s' // meta_value ) ); } } function learndash_delete_user_activity( $activity_id = 0 ) { global $wpdb; if ( !empty( $activity_id ) ) { $wpdb->delete( LDLMS_DB::get_table_name( 'user_activity' ), array( 'activity_id' => $activity_id ), array( '%d' ) ); $wpdb->delete( LDLMS_DB::get_table_name( 'user_activity_meta' ), array( 'activity_id' => $activity_id ), array( '%d' ) ); } } /** * Utility function to return all the courses that are price_type: open * Logic for this query was taken from the sfwd_lms_has_access_fn() function * @since 2.3 * * @param bool $bypass_transient Set to true to bypass transient cache. * @return array array of post_ids (course ids) found */ function learndash_get_open_courses( $bypass_transient = false ) { global $wpdb; $transient_key = "learndash_open_courses"; if (!$bypass_transient) { $courses_ids_transient = LDLMS_Transients::get( $transient_key ); } else { $courses_ids_transient = false; } if ( $courses_ids_transient === false ) { $sql_str = "SELECT postmeta.post_id as post_id FROM ". $wpdb->postmeta ." as postmeta INNER JOIN ". $wpdb->posts ." as posts ON posts.ID = postmeta.post_id WHERE posts.post_status='publish' AND posts.post_type='sfwd-courses' AND postmeta.meta_key='_sfwd-courses' AND ( postmeta.meta_value REGEXP '\"sfwd-courses_course_price_type\";s:4:\"open\";' )"; $course_ids = $wpdb->get_col( $sql_str ); LDLMS_Transients::set( $transient_key, $course_ids, MINUTE_IN_SECONDS ); } else { $course_ids = $courses_ids_transient; } return $course_ids; } /** * Utility function to return all the courses that are price_type: paynow with empty price * Logic for this query was taken from the sfwd_lms_has_access_fn() function * @since 2.3 * * @param bool $bypass_transient Set to true to bypass transient cache. * @return array array of post_ids (course ids) found */ function learndash_get_paynow_courses( $bypass_transient = false ) { global $wpdb; $transient_key = "learndash_paynow_courses"; if (!$bypass_transient) { $courses_ids_transient = LDLMS_Transients::get( $transient_key ); } else { $courses_ids_transient = false; } if ( $courses_ids_transient === false ) { $sql_str = "SELECT postmeta.post_id FROM ". $wpdb->postmeta ." as postmeta INNER JOIN ". $wpdb->posts ." as posts ON posts.ID = postmeta.post_id WHERE posts.post_status='publish' AND posts.post_type='sfwd-courses' AND postmeta.meta_key='_sfwd-courses' AND (( postmeta.meta_value REGEXP 's:30:\"sfwd-courses_course_price_type\";s:6:\"paynow\";' ) AND ( postmeta.meta_value REGEXP 's:25:\"sfwd-courses_course_price\";s:0:\"\";' ))"; //error_log('sql_str['. $sql_str .']'); $course_ids = $wpdb->get_col( $sql_str ); LDLMS_Transients::set( $transient_key, $course_ids, MINUTE_IN_SECONDS ); } else { $course_ids = $courses_ids_transient; } return $course_ids; } // Gets ALL users that have access to given course_id. // Optional bool flag to exclude admin roles function learndash_get_users_for_course( $course_id = 0, $query_args = array(), $exclude_admin = true ) { $course_user_ids = array(); if ( empty( $course_id ) ) return $course_user_ids; $defaults = array( // By default WP_User_Query will return ALL users. Strange. 'fields' => 'ID', ); $query_args = wp_parse_args( $query_args, $defaults ); if ( $exclude_admin == true ) { $query_args['role__not_in'] = array('administrator'); } $course_price_type = learndash_get_course_meta_setting( $course_id, 'course_price_type' ); if ($course_price_type == 'open') { $user_query = new WP_User_Query( $query_args ); return $user_query; } else { $course_access_list = learndash_get_course_meta_setting( $course_id, 'course_access_list'); $course_user_ids = array_merge( $course_user_ids, $course_access_list ); $course_access_users = learndash_get_course_users_access_from_meta( $course_id ); $course_user_ids = array_merge( $course_user_ids, $course_access_users ); $course_groups_users = get_course_groups_users_access( $course_id ); $course_user_ids = array_merge( $course_user_ids, $course_groups_users ); if ( !empty( $course_user_ids ) ) $course_user_ids = array_unique( $course_user_ids ); $course_expired_access_users = learndash_get_course_expired_access_from_meta( $course_id ); if ( !empty( $course_expired_access_users ) ) $course_user_ids = array_diff( $course_access_list, $course_expired_access_users ); if ( !empty( $course_user_ids ) ) { $query_args['include'] = $course_user_ids; $user_query = new WP_User_Query( $query_args ); //$course_user_ids = $user_query->get_results(); return $user_query; } } /* if ( !empty( $course_user_ids ) ) { // Finally we spin through this list of user_ids and check for expired access. $course_expire_access = learndash_get_course_meta_setting( $course_id, 'expire_access' ); if ( !empty( $course_expire_access ) ) { $expired_user_ids = array(); foreach( $course_user_ids as $user_id ) { if ( ld_course_access_expired( $course_id, $user_id ) ) $expired_user_ids[] = $user_id; } if ( !empty( $expired_user_ids ) ) { $course_user_ids = array_diff( $course_user_ids, $expired_user_ids ); } } } */ return $course_user_ids; } function learndash_set_users_for_course( $course_id = 0, $course_users_new = array() ) { if (!empty( $course_id ) ) { if ( ! empty( $course_users_new ) ) { $course_users_new = learndash_convert_course_access_list( $course_users_new, true ); } else { $course_users_new = array(); } $course_users_old = learndash_get_course_users_access_from_meta( $course_id ); if ( ! empty( $course_users_old ) ) { $course_users_old = learndash_convert_course_access_list( $course_users_old, true ); } else { $course_users_old = array(); } $course_users_intersect = array_intersect( $course_users_new, $course_users_old ); $course_users_add = array_diff( $course_users_new, $course_users_intersect ); if ( ! empty( $course_users_add ) ) { foreach ( $course_users_add as $user_id ) { ld_update_course_access( $user_id, $course_id, false ); } } $course_users_remove = array_diff( $course_users_old, $course_users_intersect ); if ( ! empty( $course_users_remove ) ) { foreach ( $course_users_remove as $user_id ) { ld_update_course_access( $user_id, $course_id, true ); } } // Finally clear our cache for other services //$transient_key = "learndash_group_courses_" . $group_id; //delete_transient( $transient_key ); } } // Get all users with explicit 'course_XX_access_from' access function learndash_get_course_users_access_from_meta( $course_id = 0 ) { global $wpdb; $course_user_ids = array(); if ( !empty( $course_id ) ) { // We have to do it this was because WP_User_Query cannot handle on meta EXISTS and another 'NOT EXISTS' in the same query. $sql_str = $wpdb->prepare( "SELECT user_id FROM ". $wpdb->usermeta ." as usermeta WHERE meta_key = %s", 'course_'. $course_id .'_access_from'); $course_user_ids = $wpdb->get_col( $sql_str ); } return $course_user_ids; } // Get all the users for a given course_id that have 'learndash_course_expired_XX' user meta records. function learndash_get_course_expired_access_from_meta( $course_id = 0 ) { global $wpdb; $expired_user_ids = array(); if ( !empty( $course_id ) ) { $sql_str = $wpdb->prepare( "SELECT user_id FROM ". $wpdb->usermeta ." as usermeta WHERE meta_key = %s", 'learndash_course_expired_'. $course_id); $expired_user_ids = $wpdb->get_col( $sql_str ); } return $expired_user_ids; } // Utility function to att the course settings in meta. Better than having this over inline over and over again. // @TODO Need to convert all references to get_post_meta for '_sfwd-courses' to use this function. function learndash_get_course_meta_setting( $course_id = 0, $setting_key = '' ) { $course_settings = array(); if ( empty( $course_id ) ) return $course_settings; $meta = get_post_meta( $course_id, '_sfwd-courses', true ); if ( ( is_null( $meta ) ) || ( !is_array( $meta ) ) ) $meta = array(); // we only want/need to reformat the access list of we are returning ALL setting or just the access list if ( ( empty( $setting_key ) ) || ( $setting_key == 'course_access_list' ) ) { if ( !isset( $meta['sfwd-courses_course_access_list'] ) ) { $meta['sfwd-courses_course_access_list'] = ''; } $meta['sfwd-courses_course_access_list'] = array_map( 'intVal', explode( ',', $meta['sfwd-courses_course_access_list'] ) ); // Need to remove the empty '0' items $meta['sfwd-courses_course_access_list'] = array_diff($meta['sfwd-courses_course_access_list'], array(0, '')); } if ( empty( $setting_key ) ) { return $meta; } else if ( isset( $meta['sfwd-courses_'. $setting_key] ) ) { return $meta['sfwd-courses_'. $setting_key]; } } function learndash_get_course_steps_ORG( $course_id = 0, $include_post_types = array( 'sfwd-lessons', 'sfwd-topic' ) ) { $steps = array(); if ( ( !empty( $course_id ) ) && ( !empty( $include_post_types) ) ) { $steps_query_args = array( 'post_type' => $include_post_types, 'posts_per_page' => -1, 'post_status' => 'publish', 'fields' => 'ids', 'meta_query' => array( array( 'key' => 'course_id', 'value' => intval($course_id), 'compare' => '=', 'type' => 'NUMERIC' ) ) ); //error_log('steps_query_args
      '. print_r($steps_query_args, true) .'
      '); $steps_query = new WP_Query( $steps_query_args ); if ($steps_query->have_posts()) $steps = $steps_query->posts; } return $steps; } // Get the total number of Lessons + Topics for a given course_id. For now excludes quizzes at lesson and topic level. function learndash_get_course_steps( $course_id = 0, $include_post_types = array( 'sfwd-lessons', 'sfwd-topic' ) ) { // The steps array will hold all the individual step counts for each post_type. $steps = array(); // This will hold the combined steps post ids once we have run all queries. $steps_all = array(); if ( !empty( $course_id ) ) { if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { foreach( $include_post_types as $post_type ) { $steps[$post_type] = learndash_course_get_steps_by_type( $course_id, $post_type ); } } else { if ( ( in_array( 'sfwd-lessons', $include_post_types ) ) || ( in_array( 'sfwd-topic', $include_post_types ) ) ) { $lesson_steps_query_args = array( 'post_type' => 'sfwd-lessons', 'posts_per_page' => -1, 'post_status' => 'publish', 'fields' => 'ids', 'meta_query' => array( array( 'key' => 'course_id', 'value' => intval($course_id), 'compare' => '=', 'type' => 'NUMERIC' ) ) ); $lesson_steps_query = new WP_Query( $lesson_steps_query_args ); if ($lesson_steps_query->have_posts()) { $steps['sfwd-lessons'] = $lesson_steps_query->posts; } } // For Topics we still require the parent lessons items if ( in_array( 'sfwd-topic', $include_post_types ) ) { if ( !empty( $steps['sfwd-lessons'] ) ) { $topic_steps_query_args = array( 'post_type' => 'sfwd-topic', 'posts_per_page' => -1, 'post_status' => 'publish', 'fields' => 'ids', 'meta_query' => array( array( 'key' => 'course_id', 'value' => intval($course_id), 'compare' => '=', 'type' => 'NUMERIC' ) ) ); if ( ( isset( $steps['sfwd-lessons'] ) ) && ( !empty( $steps['sfwd-lessons'] ) ) ) { $topic_steps_query_args['meta_query'][] = array( 'key' => 'lesson_id', 'value' => $steps['sfwd-lessons'], 'compare' => 'IN', 'type' => 'NUMERIC' ); } $topic_steps_query = new WP_Query( $topic_steps_query_args ); if ($topic_steps_query->have_posts()) { $steps['sfwd-topic'] = $topic_steps_query->posts; } } else { $steps['sfwd-topic'] = array(); } } } } foreach( $include_post_types as $post_type ) { if ( ( isset( $steps[$post_type] ) ) && ( !empty( $steps[$post_type] ) ) ) { $steps_all = array_merge( $steps_all, $steps[$post_type] ); } } return $steps_all; } function learndash_get_course_steps_count( $course_id = 0 ) { $course_steps_count = 0; $course_steps = learndash_get_course_steps( $course_id ); if ( !empty( $course_steps ) ) $course_steps_count = count( $course_steps ); if ( has_global_quizzes( $course_id ) ) $course_steps_count += 1; return $course_steps_count; } // Get total completed steps for a given course_progress array structure. function learndash_course_get_completed_steps( $user_id = 0, $course_id = 0, $course_progress = array() ) { $steps_completed_count = 0; if ( ( !empty( $user_id ) ) && ( !empty( $course_id ) ) ) { if ( empty( $course_progress ) ) { $course_progress_all = get_user_meta( $user_id, '_sfwd-course_progress', true ); if ( isset( $course_progress_all[$course_id] ) ) $course_progress = $course_progress_all[$course_id]; } $course_lessons = learndash_course_get_steps_by_type( $course_id, 'sfwd-lessons' ); if ( !empty( $course_lessons ) ) { if ( isset( $course_progress['lessons'] ) ) { foreach( $course_progress['lessons'] as $lesson_id => $lesson_completed ) { if ( in_array( $lesson_id, $course_lessons ) ) { $steps_completed_count += intval($lesson_completed); } } } } $course_topics = learndash_course_get_steps_by_type( $course_id, 'sfwd-topic' ); if ( isset( $course_progress['topics'] ) ) { foreach( $course_progress['topics'] as $lesson_id => $lesson_topics ) { if ( in_array( $lesson_id, $course_lessons ) ) { if ( ( is_array( $lesson_topics ) ) && ( !empty( $lesson_topics ) ) ) { foreach( $lesson_topics as $topic_id => $topic_completed ) { if ( in_array( $topic_id, $course_topics ) ) { $steps_completed_count += intval($topic_completed); } } } } } } if ( has_global_quizzes( $course_id ) ) { if ( is_all_global_quizzes_complete( $user_id, $course_id ) ) { $steps_completed_count += 1; } } } return $steps_completed_count; } add_filter('sfwd-courses_display_options', function( $options, $location ) { if ( ( !isset( $options[$location.'_course_prerequisite_enabled'] ) ) || ( empty( $options[$location.'_course_prerequisite_enabled'] ) )) { global $post; if ( $post instanceof WP_Post ) { $settings = get_post_meta( $post->ID, '_sfwd-courses', true); if ( ( isset( $settings[$location .'_course_prerequisite'] ) ) && ( !empty( $settings[$location .'_course_prerequisite'] ) ) ) { $options[$location.'_course_prerequisite_enabled'] = 'on'; $settings[$location.'_course_prerequisite_enabled'] = 'on'; update_post_meta( $post->ID, '_sfwd-courses', $settings); } } } return $options; }, 1, 2); function learndash_update_course_users_groups( $user_id, $course_id, $access_list, $remove ) { if ( ( !empty( $user_id ) ) && ( !empty( $course_id ) ) && ( $remove !== true ) ) { $course_groups = learndash_get_course_groups( $course_id, true ); if ( !empty( $course_groups ) ) { foreach( $course_groups as $course_group_id ) { $ld_auto_enroll_group_courses = get_post_meta( $course_group_id, 'ld_auto_enroll_group_courses', true ); if ( $ld_auto_enroll_group_courses == 'yes' ) { ld_update_group_access( $user_id, $course_group_id ); } } } } } add_action( 'learndash_update_course_access', 'learndash_update_course_users_groups', 50, 4 ); function learndash_user_get_course_completed_date( $user_id = 0, $course_id = 0 ) { $completed_on_timestamp = 0; if ( ( ! empty( $user_id ) ) && ( !empty( $course_id ) ) ) { $completed_on_timestamp = get_user_meta( $user_id, 'course_completed_' . $course_id, true ); if ( empty( $completed_on_timestamp ) ) { $activity_query_args = array( 'post_ids' => $course_id, 'user_ids' => $user_id, 'activity_type' => 'course', 'per_page' => 1, ); $activity = learndash_reports_get_activity( $activity_query_args ); if ( ! empty( $activity['results'] ) ) { foreach( $activity['results'] as $activity_item ) { if ( property_exists( $activity_item, 'activity_completed' ) ) { $completed_on_timestamp = $activity_item->activity_completed; // To make the next check easier we update the user meta. update_user_meta( $user_id, 'course_completed_' . $course_id, $completed_on_timestamp ); break; } } } } } return $completed_on_timestamp; } function learndash_course_get_all_parent_step_ids( $course_id = 0, $step_id = 0 ) { $step_parents = array(); if ( ( !empty( $course_id ) ) && ( !empty( $step_id ) ) ) { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $ld_course_steps_object = LDLMS_Factory_Post::course_steps( intval( $course_id ) ); if ( $ld_course_steps_object ) { $step_parents = $ld_course_steps_object->get_item_parent_steps( $step_id ); if ( !empty( $step_parents ) ) { $step_parents_2 = array(); foreach( $step_parents as $step_parent ) { list( $parent_post_type, $parent_post_id ) = explode(':', $step_parent ); $step_parents_2[] = intval( $parent_post_id ); } $step_parents = array_reverse($step_parents_2); } } } else { $parent_step_id = get_post_meta( $step_id, 'lesson_id', true ); if ( ! empty( $parent_step_id ) ) { $step_parents[] = $parent_step_id; if ( 'sfwd-topic' === get_post_type( $parent_step_id ) ) { $parent_step_id = get_post_meta( $parent_step_id, 'lesson_id', true ); if ( ! empty( $parent_step_id ) ) { $step_parents[] = $parent_step_id; } } } if ( ! empty( $step_parents ) ) { $step_parents = array_reverse( $step_parents ); } } } if ( ! empty( $step_parents ) ) { $step_parents = array_map( 'intval', $step_parents ); } return $step_parents; } function learndash_course_get_single_parent_step( $course_id = 0, $step_id = 0, $step_type = '' ) { $parent_step_id = 0; if ( ( !empty( $course_id ) ) && ( !empty( $step_id ) ) ) { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $ld_course_steps_object = LDLMS_Factory_Post::course_steps( intval( $course_id ) ); if ( $ld_course_steps_object ) { $parent_step_id = $ld_course_steps_object->get_parent_step_id( $step_id, $step_type ); } } else { if ( empty( $step_type ) ) { $parent_step_id = get_post_meta( $step_id, 'lesson_id', true ); } else { // We only have two nested post types: Topics and quizzes. $step_id_post_type = get_post_type( $step_id ); // A topic only has one parent, a lesson. if ( $step_id_post_type == 'sfwd-topic' ) { $parent_step_id = get_post_meta( $step_id, 'lesson_id', true ); } else if ( $step_id_post_type == 'sfwd-quiz' ) { $lesson_id = $topic_id = 0; $parent_step_id = get_post_meta( $step_id, 'lesson_id', true ); if ( !empty( $parent_step_id ) ) { $parent_step_id_post_type = get_post_type( $parent_step_id ); if ( $parent_step_id_post_type == 'sfwd-topic' ) { $topic_id = $parent_step_id; $lesson_id = get_post_meta( $topic_id, 'lesson_id', true ); } else if ( $parent_step_id_post_type == 'sfwd-lessons' ) { $lesson_id = $parent_step_id; } if ( $step_type == 'sfwd-lessons' ) { $parent_step_id = $lesson_id; } else if ( $step_type == 'sfwd-topic' ) { $parent_step_id = $topic_id; } else { $parent_step_id = 0; } } } } } } return $parent_step_id; } function learndash_course_get_steps_by_type_ORG1( $course_id = 0, $step_type = '' ) { $course_steps_return = array(); if ( ( !empty( $course_id ) ) && ( !empty( $step_type ) ) ) { $ld_course_steps_object = LDLMS_Factory_Post::course_steps( intval( $course_id ) ); if ( $ld_course_steps_object ) { $course_steps_t = $ld_course_steps_object->get_steps('t'); if ( ( isset( $course_steps_t[$step_type] ) ) && ( !empty( $course_steps_t[$step_type] ) ) ) { $course_steps_return = $course_steps_t[$step_type]; } } } return $course_steps_return; } function learndash_course_get_steps_by_type( $course_id = 0, $step_type = '' ) { $course_steps_return = array(); if ( ( !empty( $course_id ) ) && ( !empty( $step_type ) ) ) { if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $ld_course_steps_object = LDLMS_Factory_Post::course_steps( intval( $course_id ) ); if ( $ld_course_steps_object ) { $course_steps_t = $ld_course_steps_object->get_steps('t'); if ( ( isset( $course_steps_t[$step_type] ) ) && ( !empty( $course_steps_t[$step_type] ) ) ) { $course_steps_return = $course_steps_t[$step_type]; } } } else { $transient_key = "learndash_course_". $course_id .'_'. $step_type; $course_steps_return = LDLMS_Transients::get( $transient_key ); if ( $course_steps_return === false ) { $lesson_order = learndash_get_course_lessons_order( $course_id ); $steps_query_args = array( 'post_type' => $step_type, 'posts_per_page' => -1, 'post_status' => 'publish', 'fields' => 'ids', 'order' => isset( $lesson_order['order'] ) ? $lesson_order['order'] : false, 'orderby' => isset( $lesson_order['orderby'] ) ? $lesson_order['orderby'] : false, 'meta_query' => array( array( 'key' => 'course_id', 'value' => intval( $course_id ), 'compare' => '=', ) ) ); /** * Filter to allow override of query. * * @since 2.6.0 * * @param array $steps_query_args Array of WP_Query args. * @param integer $course_id Course ID to get steps for. * @param string $step_type Steps post type. Could be 'sfwd-lessons', 'sfwd-topics' etc. * * @return Array of query args. */ $steps_query_args = apply_filters( 'learndash_course_steps_by_type', $steps_query_args, $course_id, $step_type ); if ( ! empty( $steps_query_args ) ) { $steps_query = new WP_Query( $steps_query_args ); if ( $steps_query->have_posts() ) { $course_steps_return = $steps_query->posts; } else { $course_steps_return = array(); } LDLMS_Transients::set( $transient_key, $course_steps_return, MINUTE_IN_SECONDS ); } } } } return $course_steps_return; } function learndash_course_get_children_of_step( $course_id = 0, $step_id = 0, $child_type = '' ) { $children_steps = array(); if ( ( !empty( $course_id ) ) && ( !empty( $step_id ) ) ) { $ld_course_steps_object = LDLMS_Factory_Post::course_steps( intval( $course_id ) ); if ( $ld_course_steps_object ) { $children_steps = $ld_course_steps_object->get_children_steps( $step_id, $child_type ); } } return $children_steps; } function learndash_get_courses_for_step( $step_id = 0, $return_flat_array = false ) { global $wpdb; $course_ids = array(); if ( $return_flat_array !== true ) { $course_ids['primary'] = array(); $course_ids['secondary'] = array(); } if ( !empty( $step_id ) ) { $sql_str = $wpdb->prepare( "SELECT postmeta.meta_value as course_id, posts.post_title as course_title FROM ". $wpdb->postmeta ." AS postmeta INNER JOIN ". $wpdb->posts ." AS posts ON postmeta.meta_value = posts.ID WHERE postmeta.post_id = ". $step_id ." AND postmeta.meta_key LIKE %s ORDER BY course_title ASC", 'course_id' ); $course_ids_primary = $wpdb->get_results( $sql_str ); if ( !empty( $course_ids_primary ) ) { foreach( $course_ids_primary as $course_set ) { if ( $return_flat_array === true ) { $course_ids[$course_set->course_id] = $course_set->course_title; } else { $course_ids['primary'][$course_set->course_id] = $course_set->course_title; } } } $sql_str = $wpdb->prepare( "SELECT postmeta.meta_value as course_id, posts.post_title as course_title FROM ". $wpdb->postmeta ." AS postmeta INNER JOIN ". $wpdb->posts ." AS posts ON postmeta.meta_value = posts.ID WHERE postmeta.post_id = ". $step_id ." AND postmeta.meta_key LIKE %s ORDER BY course_title ASC", 'ld_course_%' ); //$sql_str = $wpdb->prepare( "SELECT meta_value as course_id FROM ". $wpdb->postmeta ." WHERE post_id = ". $step_id ." AND meta_key LIKE %s", 'ld_course_%' ); $course_ids_secondary = $wpdb->get_results( $sql_str ); if ( !empty( $course_ids_secondary ) ) { foreach( $course_ids_secondary as $course_set ) { if ( $return_flat_array === true ) { if ( !isset( $course_ids[$course_set->course_id] ) ) { $course_ids[$course_set->course_id] = $course_set->course_title; } } else { if ( ( !isset( $course_ids['primary'][$course_set->course_id] ) ) && ( !isset( $course_ids['secondary'][$course_set->course_id] ) ) ) { $course_ids['secondary'][$course_set->course_id] = $course_set->course_title; } } } } return $course_ids; } } function learndash_filter_lesson_options( $options, $location, $values ) { //error_log('options
      '. print_r($options, true) .'
      '); //error_log('location
      '. print_r($location, true) .'
      '); //error_log('values
      '. print_r($values, true) .'
      '); if ( ( isset( $_GET['course_id'] ) ) && ( !empty( $_GET['course_id'] ) ) ) { $viewed_course_id = intval( $_GET['course_id'] ); if ( ( isset( $values[$location .'_course' ] ) ) && ( !empty( $values[$location .'_course' ] ) ) && ( intval( $values[$location .'_course' ] ) !== intval( $_GET['course_id'] ) ) ) { if ( isset( $options[$location .'_course'] ) ) unset( $options[$location .'_course'] ); if ( isset( $options[$location .'_lesson'] ) ) unset( $options[$location .'_lesson'] ); } } return $options; } //add_filter( 'sfwd-lessons_display_settings', 'learndash_filter_lesson_options', 10, 3 ); //add_filter( 'sfwd-topic_display_settings', 'learndash_filter_lesson_options', 10, 3 ); //add_filter( 'sfwd-quiz_display_settings', 'learndash_filter_lesson_options', 10, 3 ); /** * Action hook called when a post is moved to trash or untrashed. * * @since 2.5.0 * * @param int $post_id */ function learndash_transition_course_step_post_status( $new_status, $old_status, $post ) { global $wpdb; if ( $new_status !== $old_status ) { if ( ( !empty( $post ) ) && ( is_a( $post, 'WP_Post' ) ) && ( in_array( $post->post_type, array( 'sfwd-lessons', 'sfwd-topic', 'sfwd-quiz' ) ) ) === true ) { $sql_str = "SELECT meta_value FROM " . $wpdb->postmeta . " WHERE post_id = " . $post->ID . " AND (meta_key = 'course_id' OR meta_key LIKE 'ld_course_%')"; $course_ids = $wpdb->get_col( $sql_str ); if ( !empty( $course_ids ) ) { $course_ids = array_unique( $course_ids ); foreach( $course_ids as $course_id ) { $course_steps_object = LDLMS_Factory_Post::course_steps( $course_id ); if ( ( is_object( $course_steps_object ) ) && (is_a( $course_steps_object, 'LDLMS_Course_Steps' ) ) ) { $course_steps_object->set_steps_dirty(); } } } } } } add_action( 'transition_post_status', 'learndash_transition_course_step_post_status', 10, 3 ); /** * Need to validate URL requests when Nested URL permalinks are used. * @since 2.5 */ function learndash_check_course_step( $wp ) { if ( is_single() ) { global $post; if ( ( in_array( $post->post_type, array('sfwd-lessons', 'sfwd-topic', 'sfwd-quiz' ) ) === true ) && ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_Permalinks', 'nested_urls' ) == 'yes' ) ) { $course_slug = get_query_var('sfwd-courses'); // Check first if there is an existing course part of the URL. Maybe the student is trying to user a lesson URL part // for a differen course. if ( ! empty( $course_slug ) ) { $course_post = learndash_get_page_by_path( $course_slug, 'sfwd-courses' ); if ( ( ! empty( $course_post ) ) && ( is_a( $course_post, 'WP_Post' ) ) && ( 'sfwd-courses' === $course_post->post_type ) ) { $step_courses = learndash_get_courses_for_step( $post->ID, true ); if ( ( !empty( $step_courses ) ) && ( isset( $step_courses[$course_post->ID] ) ) ) { if ( in_array( $post->post_type, array( 'sfwd-topic', 'sfwd-quiz' ) ) === true ) { $parent_steps = learndash_course_get_all_parent_step_ids( $course_post->ID, $post->ID ); if ( 'sfwd-quiz' === $post->post_type ) { $topic_slug = get_query_var( 'sfwd-topic' ); if ( ! empty( $topic_slug ) ) { $topic_post = learndash_get_page_by_path( $topic_slug, 'sfwd-topic' ); if ( ( ! empty( $topic_post ) ) && ( is_a( $topic_post, 'WP_Post' ) ) && ( 'sfwd-topic' === $topic_post->post_type ) ) { if ( ! in_array( $topic_post->ID, $parent_steps ) ) { $course_link = get_permalink( $course_post->ID ); wp_redirect( $course_link ); die(); } } else { $course_link = get_permalink( $course_post->ID ); wp_redirect( $course_link ); die(); } } $lesson_slug = get_query_var( 'sfwd-lessons' ); if ( ! empty( $lesson_slug ) ) { $lesson_post = learndash_get_page_by_path( $lesson_slug, 'sfwd-lessons' ); if ( ( ! empty( $lesson_post ) ) && ( is_a( $lesson_post, 'WP_Post' ) ) && ( 'sfwd-lessons' === $lesson_post->post_type ) ) { if ( ! in_array( $lesson_post->ID, $parent_steps ) ) { $course_link = get_permalink( $course_post->ID ); wp_redirect( $course_link ); die(); } } else { $course_link = get_permalink( $course_post->ID ); wp_redirect( $course_link ); die(); } } } else if ( 'sfwd-topic' === $post->post_type ) { $lesson_slug = get_query_var( 'sfwd-lessons' ); if ( ! empty( $lesson_slug ) ) { $lesson_post = learndash_get_page_by_path( $lesson_slug, 'sfwd-lessons' ); if ( ( ! empty( $lesson_post ) ) && ( is_a( $lesson_post, 'WP_Post' ) ) && ( 'sfwd-lessons' === $lesson_post->post_type ) ) { if ( ! in_array( $lesson_post->ID, $parent_steps ) ) { $course_link = get_permalink( $course_post->ID ); wp_redirect( $course_link ); die(); } } else { $course_link = get_permalink( $course_post->ID ); wp_redirect( $course_link ); die(); } } } } // All is ok to return. return; } else { //global $wp_query; //$wp_query->is_404 = true; $course_link = get_permalink( $course_post->ID ); wp_redirect( $course_link ); die(); } } else { // If we don't have a valid Course post global $wp_query; $wp_query->set_404(); // 3. Throw 404 //status_header( 404 ); //nocache_headers(); // 4. Show 404 template require get_404_template(); // 5. Stop execution exit; } } else { if ( learndash_is_admin_user() ) { return; } else { // If we don't have a course part of the URL then we check if the step has a primary (legacy) course $step_courses = learndash_get_courses_for_step( $post->ID, false ); // If we do have a primary (legacy) then we redirect the user there. if ( !empty( $step_courses['primary'] ) ) { $primary_courses = array_keys($step_courses['primary'] ); $step_permalink = learndash_get_step_permalink( $post->ID, $primary_courses[0] ); if ( !empty( $step_permalink ) ) { wp_redirect( $step_permalink ); die(); } else { //global $wp_query; //$wp_query->is_404 = true; $courses_archive_link = get_post_type_archive_link( 'sfwd-courses' ); wp_redirect( $courses_archive_link ); die(); } } else { if ( learndash_is_admin_user() ) { // Alow the admin to view the lesson/topic before it is added to a course return; } else if ( ( $post->post_type == 'sfwd-quiz' ) && ( empty( $step_courses['secondary'] ) ) ) { // If here we have a quiz with no primary or secondary courses. So it is standalone and allowed. return; } else { //global $wp_query; //$wp_query->is_404 = true; $courses_archive_link = get_post_type_archive_link( 'sfwd-courses' ); wp_redirect( $courses_archive_link ); die(); } } } } } } } add_action( 'wp', 'learndash_check_course_step' ); function learndash_get_page_by_path( $slug = '', $post_type = '' ) { $course_post = null; if ( ( !empty( $slug ) ) && ( !empty( $post_type ) ) ) { $course_post = get_page_by_path( $slug, OBJECT, $post_type ); if ( ( defined( 'ICL_LANGUAGE_CODE' ) ) && ( ICL_LANGUAGE_CODE != '' ) ) { if ( function_exists( 'icl_object_id' ) ) { $course_post = get_page( icl_object_id( $course_post->ID, $post_type, true, ICL_LANGUAGE_CODE ) ); } } } return $course_post; } /** * Utility function to get the Course Lessons per page setting. This function * will initially source the per_page from the course. But if we are using the * default lessons options setting we will use that. Then if the lessons options * is not set for some reason we use the default system option 'posts_per_page'. * * @param $course_id int the course_id to get the per_page value from * @return $course_lessons_per_page int will be the calculated lessons per page or zero * * @since 2.5.4 */ function learndash_get_course_lessons_per_page( $course_id = 0 ) { $course_lessons_per_page = 0; $lessons_options = learndash_get_option( 'sfwd-lessons' ); if ( isset( $lessons_options['posts_per_page'] ) ) { $course_lessons_per_page = intval( $lessons_options['posts_per_page'] ); } if ( !empty( $course_id ) ) { $course_settings = learndash_get_setting( intval( $course_id ) ); if ( ( isset( $course_settings['course_lesson_per_page'] ) ) && ( $course_settings['course_lesson_per_page'] == 'CUSTOM' ) && ( isset( $course_settings['course_lesson_per_page_custom'] ) ) ) { $course_lessons_per_page = intval( $course_settings['course_lesson_per_page_custom'] ); } else { if ( ( ! isset( $lessons_options['posts_per_page'] ) ) || ( is_null( $lessons_options['posts_per_page'] ) ) ) { $course_lessons_per_page = get_option( 'posts_per_page' ); } else { $course_lessons_per_page = intval( $lessons_options['posts_per_page'] ) ; } } } return $course_lessons_per_page; } /** * When Course Lessons pagnination is enabled we want to advance the page to the next avaailable lesson page. * * For example we have a course with 100 lessons and the course has per page set to 10. The student can completed * up to lesson 73. When the student returns to the course we don't want to default to show the first page * (lessons 1-10). Instead we want to redirect the user to page 7 showing lessons 71-80. * * @since 2.5.4 */ function learndash_course_set_lessons_start_page( ) { // Last minute change to not use this for the v2.5.5 release. return; if ( ( !is_admin() ) && ( is_single() ) ) { $queried_object = get_queried_object(); if ( ( is_a( $queried_object, 'WP_Post' ) ) && ( is_user_logged_in() ) && ( !isset( $_GET['ld-lesson-page'] ) ) ) { if ( $queried_object->post_type == 'sfwd-courses' ) { if ( apply_filters( 'learndash_course_lessons_advance_progress_page', true, $queried_object->ID, get_current_user_id() ) ) { $course_lessons_per_page = learndash_get_course_lessons_per_page( $queried_object->ID ); if ( $course_lessons_per_page > 0 ) { $user_courses = get_user_meta( get_current_user_id(), '_sfwd-course_progress', true ); if ( ( isset( $user_courses[$queried_object->ID]['lessons'] ) ) && ( !empty( $user_courses[$queried_object->ID]['lessons'] ) ) ) { $lesson_paged = ceil( ( count( $user_courses[$queried_object->ID]['lessons'] ) + 1 ) / $course_lessons_per_page ); if ( $lesson_paged > 1 ) { $redirect_url = add_query_arg( 'ld-lesson-page', $lesson_paged ); wp_redirect( $redirect_url ); die(); } } } } } } } } //add_action( 'wp', 'learndash_course_set_lessons_start_page', 1 ); /** * Called from within the Coure Lessons List processing query SFWD_CPT::loop_shortcode. * This action will setup a global pager array to be used in templates. */ $course_pager_results = array( 'pager' => array( ) ); global $course_pager_results; function learndash_course_lessons_list_pager( $query_result = null, $pager_context = '' ) { global $course_pager_results; $course_pager_results['pager']['paged'] = 1; if ( ( isset( $query_result->query_vars['paged'] ) ) && ( $query_result->query_vars['paged'] > 1 ) ) { $course_pager_results['pager']['paged'] = $query_result->query_vars['paged']; } $course_pager_results['pager']['total_items'] = absint( $query_result->found_posts ); $course_pager_results['pager']['total_pages'] = absint( $query_result->max_num_pages ); } add_action( 'learndash_course_lessons_list_pager', 'learndash_course_lessons_list_pager', 10, 2 ); /** * Determine pager settings based on _GET vars */ function learndash_get_lesson_topic_paged_values() { $paged_values = array( 'lesson' => 0, 'paged' => 1 ); if ( ( isset( $_GET['ld-topic-page'] ) ) && ( ! empty( $_GET['ld-topic-page'] ) ) ) { list( $paged_values['lesson'], $paged_values['paged'] ) = explode( '-', $_GET['ld-topic-page'] ); $paged_values['lesson'] = absint( $paged_values['lesson'] ); $paged_values['paged'] = absint( $paged_values['paged'] ); if ( $paged_values['paged'] < 1 ) { $paged_values['paged'] = 1; } if ( ( empty( $paged_values['lesson'] ) ) || ( empty( $paged_values['paged'] ) ) ) { $paged_values = array( 'lesson' => 0, 'paged' => 1 ); } } return $paged_values; } function learndash_process_lesson_topics_pager( $topics = array(), $args = array() ) { global $course_pager_results; $paged_values = learndash_get_lesson_topic_paged_values(); if ( ! empty( $topics ) ) { $topics_per_page = learndash_get_course_topics_per_page( $args['course_id'], $args['lesson_id'] ); if ( ( $topics_per_page > 0 ) && ( count( $topics ) > $topics_per_page ) ) { $topics_chunks = array_chunk( $topics, $topics_per_page ); $course_pager_results[ $args['lesson_id'] ] = array(); $course_pager_results[ $args['lesson_id'] ]['pager'] = array(); $topics_paged = 1; if ( ( ! empty($paged_values['lesson'] ) ) && ( $paged_values['lesson'] == $args['lesson_id'] ) ) { $topics_paged = $paged_values['paged']; } else if ( get_post_type() === learndash_get_post_type_slug( 'topic' ) ) { /** * If we are viewing a Topic and the page is empty we load the * paged set to show the current topic item. */ foreach( $topics_chunks as $topics_chunk_page => $topics_chunk_set ) { $topics_ids = array_values( wp_list_pluck( $topics_chunk_set, 'ID' ) ); if ( ( ! empty( $topics_ids ) ) && ( in_array( get_the_ID(), $topics_ids ) ) ) { $topics_paged = ++$topics_chunk_page; break; } } } $course_pager_results[ $args['lesson_id'] ]['pager']['paged'] = $topics_paged; $course_pager_results[ $args['lesson_id'] ]['pager']['total_items'] = count( $topics ); $course_pager_results[ $args['lesson_id'] ]['pager']['total_pages'] = count( $topics_chunks ); $topics = $topics_chunks[ $topics_paged - 1 ]; } } return $topics; } /** * Utility function to get the Course Lessons order. * The course lessons order can be set in the course or globally defined in * the lesson options. This function will check all logic and return the * correct setting. * * @param $course_id int the course_id to get the per_page value from * @return $course_lessons_order int will be the calculated lessons per page or zero * * @since 2.5.4 */ function learndash_get_course_lessons_order( $course_id = 0 ) { $course_lessons_args = array( 'order' => '', 'orderby' => '' ); if ( LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $course_lessons_args['orderby'] = 'post__in'; return $course_lessons_args; } else { $lessons_options = learndash_get_option( 'sfwd-lessons' ); if ( ( isset( $lessons_options['order'] ) ) && ( !empty( $lessons_options['order'] ) ) ) $course_lessons_args['order'] = $lessons_options['order']; if ( ( isset( $lessons_options['orderby'] ) ) && ( !empty( $lessons_options['orderby'] ) ) ) $course_lessons_args['orderby'] = $lessons_options['orderby']; } if ( !empty( $course_id ) ) { $course_settings = learndash_get_setting( $course_id ); if ( ( isset( $course_settings['course_lesson_order'] ) ) && ( !empty( $course_settings['course_lesson_order'] ) ) ) $course_lessons_args['order'] = $course_settings['course_lesson_order']; if ( ( isset( $course_settings['course_lesson_orderby'] ) ) && ( !empty( $course_settings['course_lesson_orderby'] ) ) ) $course_lessons_args['orderby'] = $course_settings['course_lesson_orderby']; } return apply_filters( 'learndash_course_lessons_order', $course_lessons_args, $course_id ); } /** * Utility function to convert the standard comma separated list of user IDs * used for the course_access_list field. The conversion is to trim and ensure * the values are integer and not empty. * * @since 2.5.9 * @param string $course_access_list_str String of comma separated user IDs. * @param boolean $return_array True/False bool to return string or array. * * @return string $course_access_list_str */ function learndash_convert_course_access_list( $course_access_list = '', $return_array = false ) { if ( ! empty( $course_access_list ) ) { // Convert the comma separated list into an array. if ( is_string( $course_access_list ) ) { $course_access_list = explode( ',', $course_access_list ); } // Now normalize the array elements. if ( is_array( $course_access_list ) ) { $course_access_list = array_map( 'intval', $course_access_list ); $course_access_list = array_unique( $course_access_list, SORT_NUMERIC ); $course_access_list = array_diff( $course_access_list, array( 0 ) ); } // Prepare the return value. if ( true !== $return_array ) { $course_access_list = implode( ',', $course_access_list ); } } else if ( true === $return_array ) { $course_access_list = array(); } return $course_access_list; } /** * Utility function to determine the number of lesson topics to display per page. * * @since 3.0 * @param integer $course_id Parent Course ID. * @param integer $lesson_id Parent Lesson ID. */ function learndash_get_course_topics_per_page( $course_id = 0, $lesson_id = 0 ) { $course_topics_per_page = 0; $lessons_options = learndash_get_option( 'sfwd-lessons' ); if ( isset( $lessons_options['posts_per_page'] ) ) { $course_topics_per_page = intval( $lessons_options['posts_per_page'] ); } if ( !empty( $course_id ) ) { $course_settings = learndash_get_setting( intval( $course_id ) ); if ( ( isset( $course_settings['course_lesson_per_page'] ) ) && ( $course_settings['course_lesson_per_page'] == 'CUSTOM' ) && ( isset( $course_settings['course_topic_per_page_custom'] ) ) ) { $course_topics_per_page = intval( $course_settings['course_topic_per_page_custom'] ); } } return $course_topics_per_page; } /** * Transition the Course steps logic from using Shared Steps to legacy. * * @since 3.0 * @param integer $course_id Course ID to process. */ function learndash_transition_course_shared_steps( $course_id = 0 ) { if ( ! empty( $course_id ) ) { if ( 'yes' !== LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Courses_Builder', 'shared_steps' ) ) { $course_steps = get_post_meta( $course_id, 'ld_course_steps', true ); if ( isset( $course_steps['h'] ) ) { // If here then Shared Steps was enabled $ld_course_steps_object = LDLMS_Factory_Post::course_steps( $course_id ); $ld_course_steps_object->set_steps( $course_steps['h'] ); } } } } function learndash_use_legacy_course_access_list() { $use_legacy_course_access_list = true; $data_course_access_convert = learndash_data_upgrades_setting( 'course-access-lists-convert' ); if ( $data_course_access_convert ) { $use_legacy_course_access_list = false; } return apply_filters( 'learndash_use_legacy_course_access_list', $use_legacy_course_access_list ); } /** * Get the user's last active (last updated) course_id * * @since 2.1.3 * @param interger $user_id User ID. * @return integer Course ID. */ function learndash_get_last_active_course( $user_id = 0 ) { global $wpdb; $last_course_id = 0; if ( empty( $user_id ) ) { $user_id = get_current_user_id(); } if ( ! empty( $user_id ) ) { $query_str = $wpdb->prepare( "SELECT post_id FROM " . LDLMS_DB::get_table_name( 'user_activity' ) . " WHERE user_id=%d AND activity_type='course' AND activity_status = 0 AND activity_completed = '' ORDER BY activity_updated DESC", $user_id); $query_result = $wpdb->get_var( $query_str ); $last_course_id = absint( $query_result ); } return $last_course_id; } /** * Get the user's last active step within a course_id * * @since 2.1.3 * @param interger $user_id User ID. * @param interger $course_id Course ID. * @return integer Course Step ID. */ function learndash_user_course_last_step( $user_id = 0, $course_id = 0 ) { global $wpdb; $last_course_step_id = 0; if ( empty( $user_id ) ) { $user_id = get_current_user_id(); } if ( ! empty( $user_id ) ) { if ( empty( $course_id ) ) { $course_id = learndash_get_last_active_course( $user_id ); } if ( ! empty( $course_id ) ) { $query_str = $wpdb->prepare( "SELECT user_activity_meta.activity_meta_value FROM " . LDLMS_DB::get_table_name( 'user_activity' ) . " as user_activity INNER JOIN " . LDLMS_DB::get_table_name( 'user_activity_meta' ) . " as user_activity_meta ON user_activity.activity_id = user_activity_meta.activity_id WHERE user_activity.user_id=%d AND user_activity.post_id=%d AND user_activity.activity_type='course' AND user_activity_meta.activity_meta_key= 'steps_last_id' ORDER BY activity_updated DESC", $user_id, $course_id ); $query_result = $wpdb->get_var( $query_str ); $last_course_step_id = absint( $query_result ); } } return $last_course_step_id; }PKc\/GG&includes/course/ld-course-progress.phpnuW+AID == intval( $_POST['post'] ) ) { return ''; } $bypass_course_limits_admin_users = false; if ( learndash_is_admin_user( $user_id ) ) { $bypass_course_limits_admin_users = LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_General_Admin_User', 'bypass_course_limits_admin_users' ); if ( 'yes' === $bypass_course_limits_admin_users ) { $bypass_course_limits_admin_users = true; } else { $bypass_course_limits_admin_users = false; } } else { $bypass_course_limits_admin_users = false; } // For logged in users to allow an override filter. $bypass_course_limits_admin_users = apply_filters( 'learndash_prerequities_bypass', $bypass_course_limits_admin_users, $user_id, $post->ID, $post ); $course_id = learndash_get_course_id( $post->ID ); if ( ( learndash_lesson_progression_enabled() ) && ( ! $bypass_course_limits_admin_users ) ) { if ( 'sfwd-lessons' === $post->post_type ) { $progress = learndash_get_course_progress( null, $post->ID ); if ( ! empty( $progress['this']->completed ) ) { if ( ! apply_filters( 'learndash_previous_step_completed', false, $progress['this']->ID, $user_id ) ) { return learndash_show_mark_incomplete($post, $atts ); } } if ( ! empty( $progress['prev'] ) && empty( $progress['prev']->completed ) && learndash_lesson_progression_enabled() ) { if ( ! apply_filters( 'learndash_previous_step_completed', false, $progress['prev']->ID, $user_id ) ) { return ''; } } if ( ! learndash_lesson_topics_completed( $post->ID ) ) { if ( ! apply_filters( 'learndash_previous_step_completed', false, $post->ID, $user_id ) ) { return ''; } } } if ( 'sfwd-topic' === $post->post_type ) { $progress = learndash_get_course_progress( null, $post->ID ); if ( ! empty( $progress['this']->completed ) ) { if ( ! apply_filters( 'learndash_previous_step_completed', false, $progress['this']->ID, $user_id ) ) { return learndash_show_mark_incomplete($post, $atts ); } } if ( ! empty( $progress['prev'] ) && empty( $progress['prev']->completed ) && learndash_lesson_progression_enabled() ) { if ( ! apply_filters( 'learndash_previous_step_completed', false, $progress['prev']->ID, $user_id ) ) { return ''; } } if ( learndash_lesson_progression_enabled() ) { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { // $course_id = learndash_get_course_id( $post->ID ); $lesson_id = learndash_course_get_single_parent_step( $course_id, $post->ID ); } else { $lesson_id = learndash_get_setting( $post, 'lesson' ); } $lesson = get_post( $lesson_id ); if ( ! is_previous_complete( $lesson ) ) { if ( ! apply_filters( 'learndash_previous_step_completed', false, $lesson->ID, $user_id ) ) { return ''; } } } } } else { $progress = learndash_get_course_progress( null, $post->ID ); if ( ! empty( $progress['this']->completed ) ) { return ''; } } if ( lesson_hasassignments( $post ) ) { global $learndash_assignment_upload_message; $ret = SFWD_LMS::get_template( 'learndash_lesson_assignment_upload_form.php', array( 'course_step_post' => $post, 'user_id' => $user_id, 'assignment_upload_error_message' => $learndash_assignment_upload_message, ) ); return $ret; } else { $return = ''; $button_disabled = ''; $time = 0; $timeval = learndash_forced_lesson_time( $post ); if ( ! empty( $timeval ) ) { $time = learndash_convert_lesson_time_time( $timeval ); /* $time_sections = explode( ' ', $timeval ); $h = $m = $s = 0; foreach ( $time_sections as $k => $v ) { $value = trim( $v ); if ( strpos( $value, 'h' ) ) { $h = intVal( $value ); } elseif ( strpos( $value, 'm' ) ) { $m = intVal( $value ); } elseif ( strpos( $value, 's' ) ) { $s = intVal( $value ); } } $time = $h * 60 * 60 + $m * 60 + $s; if ( $time == 0 ) { $time = (int) $timeval; } */ } if ( ( ! learndash_is_admin_user( $user_id ) ) || ( ! $bypass_course_limits_admin_users ) ) { if ( ! empty( $time ) ) { $time_cookie_key = learndash_forced_lesson_time_cookie_key( $post ); // Set the mark complete button disabled. $button_disabled = " disabled='disabled' "; wp_enqueue_script( 'jquery-cookie', plugins_url( 'js/jquery.cookie' . leardash_min_asset() . '.js', WPPROQUIZ_FILE ), array( 'jquery' ), '1.4.0', true ); global $learndash_assets_loaded; $learndash_assets_loaded['scripts']['jquery-cookie'] = __FUNCTION__; } } /** * Allow the outside world to filter the form/button atts array * * @since 3.0 * @param array $atts Arry of form, button, and timer attributes to override id and class. * @param object $post WP_Post object being displayed. */ $atts = apply_filters( 'learndash_mark_complete_form_atts', $atts, $post ); if ( isset( $atts['form']['id'] ) ) { $form_id = ' id="' . esc_attr( $atts['form']['id'] ) . '" '; } else { $form_id = ''; } if ( isset( $atts['form']['class'] ) ) { $form_class = ' class="sfwd-mark-complete ' . esc_attr( $atts['form']['class'] ) . '" '; } else { $form_class = ' class="sfwd-mark-complete" '; } if ( isset( $atts['button']['id'] ) ) { $button_id = ' id="' . esc_attr( $atts['button']['id'] ) . '" '; } else { $button_id = ''; } if ( isset( $atts['button']['class'] ) ) { $button_class = ' class="learndash_mark_complete_button ' . esc_attr( $atts['button']['class'] ) . '" '; } else { $button_class = ' class="learndash_mark_complete_button" '; } $form_fields = ' '; /** * Allow the outside world to filter the form fields. * * @since 3.0 * @param string $form_fields. * @param object $post WP_Post object being displayed. */ $form_fields = apply_filters( 'learndash_mark_complete_form_fields', $form_fields, $post ); $return .= '
      ' . $form_fields . '
      '; if ( ( ! learndash_is_admin_user( $user_id ) ) || ( ! $bypass_course_limits_admin_users ) ) { if ( ! empty( $time ) ) { if ( isset( $atts['timer']['id'] ) ) { $timer_id = ' id="' . esc_attr( $atts['timer']['id'] ) . '" '; } else { $timer_id = ''; } $timer_class = ' class="learndash_timer'; if ( isset( $atts['timer']['class'] ) ) { $timer_class .= ' ' . esc_attr( $atts['timer']['class'] ); } $timer_class .= '" '; $return .= ''; } } } /** * Filter HTML output to mark course complete * * @since 2.1.0 * * @param string $return */ return apply_filters( 'learndash_mark_complete', $return, $post ); } function learndash_ajax_mark_complete( $quiz_id = null, $lesson_id = null ) { if ( empty( $quiz_id ) || empty( $lesson_id ) ) { return; } global $post; $current_user = wp_get_current_user(); $user_id = $current_user->ID; $can_attempt_again = learndash_can_attempt_again( $user_id, $quiz_id ); if ( $can_attempt_again ) { $link = learndash_next_lesson_quiz( false, $user_id, $lesson_id, null ); } else { $link = learndash_next_lesson_quiz( false, $user_id, $lesson_id, array( $quiz_id ) ); } } /** * Are topics completed for lesson * * @since 2.1.0 * * @param int $lesson_id Lesson ID. * @param bool $mark_lesson_complete Should we mark lesson complete. * @return bool */ function learndash_lesson_topics_completed( $lesson_id, $mark_lesson_complete = false ) { $topics = learndash_get_topic_list( $lesson_id ); if ( empty( $topics[0]->ID ) ) { return true; } $progress = learndash_get_course_progress( null, $topics[0]->ID ); if ( empty( $progress['posts'] ) || ! is_array( $progress['posts'] ) ) { return false; } foreach ( $progress['posts'] as $topic ) { if ( empty( $topic->completed ) ) { return false; } } if ( $mark_lesson_complete ) { $user_id = get_current_user_id(); learndash_process_mark_complete( null, $lesson_id ); } // learndash_get_next_lesson_redirect(); . return true; } /** * Process request to mark a course complete * * @since 2.1.0 * * @param int $post WP_Post object. */ function learndash_mark_complete_process( $post = null ) { // This is wrong. This function hooks into the 'wp' action. That action doesn't pass a post object or post_id. // The $post object set hwere is not even used. We only need the _POST[post] (post_id) variable from the form. if ( empty( $post ) ) { global $post; } if ( ( isset( $_POST['sfwd_mark_complete'] ) ) && ( ! empty( $_POST['sfwd_mark_complete'] ) ) && ( isset( $_POST['post'] ) ) && ( ! empty( $_POST['post'] ) ) ) { if ( empty( $post ) || empty( $post->ID ) ) { $post = get_post(); if ( empty( $post ) || empty( $post->ID ) ) { return; } } $post_id = intval( $_POST['post'] ); if ( isset( $_POST['course_id'] ) ) { $course_id = intval( $_POST['course_id'] ); } else { $course_id = learndash_get_course_id( $post_id ); } if ( isset( $_POST['userid'] ) ) { $userid = intval( $_POST['userid'] ); } else { if ( ! is_user_logged_in() ) { return; } $userid = get_current_user_id(); } /** * Verify the form is valid * * @since 2.2.1.2 */ if ( ! wp_verify_nonce( $_POST['sfwd_mark_complete'], 'sfwd_mark_complete_' . $userid . '_' . $post_id ) ) { return; } /** * Added logic to enroll the student in the course if the course price type is open and not a sample. * * @since 2.4.4 */ // $course_id = learndash_get_course_id( $post_id ); // if ( !empty( $course_id ) ) { // $user_course_access_time = get_user_meta( $userid, "course_".$course_id."_access_from", true ); // if ( empty( $user_course_access_time ) ) { // ld_update_course_access( $userid, $course_id ); // } // } $return = learndash_process_mark_complete( $userid, $post_id, false, $course_id ); if ( $return ) { // Remove the lesson/topic timer cookie once the step have been completed. $timer_cookie_key = learndash_forced_lesson_time_cookie_key( $post_id ); if ( ! empty( $timer_cookie_key ) ) { if ( isset( $_COOKIE[ 'learndash_timer_cookie_' . $timer_cookie_key ] ) ) { unset( $_COOKIE[ 'learndash_timer_cookie_' . $timer_cookie_key ] ); } // empty value and expiration one hour before $res = setcookie( 'learndash_timer_cookie_' . $timer_cookie_key, '', time() - 3600); } $nextlessonredirect = learndash_get_next_lesson_redirect(); } else { $nextlessonredirect = get_permalink(); } if ( ! empty( $nextlessonredirect ) ) { /** * Filter url to redirect to on next lesson * * @param string $nextlessonredirect */ $nextlessonredirect = apply_filters( 'learndash_completion_redirect', $nextlessonredirect, $post_id ); wp_redirect( $nextlessonredirect ); exit; } } } add_action( 'wp', 'learndash_mark_complete_process' ); /** * Get a courses permalink * * @since 2.1.0 * * @param int $id course, topic, lesson, quiz, etc. * @return string course permalink */ function learndash_get_course_url( $id = null ) { if ( empty( $id ) ) { $id = learndash_get_course_id(); } return get_permalink( $id ); } /** * Redirect user to next lesson * * @since 2.1.0 * * @param object $post */ function learndash_get_next_lesson_redirect( $post = null ) { if ( empty( $post->ID ) ) { global $post; } $next = learndash_next_post_link( '', true, $post ); if ( ! empty( $next ) ) { $link = $next; } else { if ( 'sfwd-topic' === $post->post_type ) { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $course_id = learndash_get_course_id( $post->ID ); $lesson_id = learndash_course_get_single_parent_step( $course_id, $post->ID ); } else { $lesson_id = learndash_get_setting( $post, 'lesson' ); } $link = get_permalink( $lesson_id ); } else { $course_id = learndash_get_course_id( $post ); $link = learndash_next_global_quiz( true, null, $course_id ); } } if ( ! empty( $link ) ) { /** * Filter where user should be redirected to for next lesson * * @since 2.1.0 * * @var $link redirect url */ $link = apply_filters( 'learndash_completion_redirect', $link, @$post->ID ); wp_redirect( $link ); exit; } else { return ''; } } /** * Redirect user after quiz completion * * @since 2.1.0 */ function learndash_quiz_redirect() { global $post; $current_user = wp_get_current_user(); $user_id = $current_user->ID; if ( ! empty( $_GET['quiz_redirect'] ) && ! empty( $_GET['quiz_id'] ) && ! empty( $_GET['quiz_type'] ) && ! empty( $_GET['course_id'] ) && $_GET['quiz_type'] == 'global' ) { $quiz_id = intval( $_GET['quiz_id'] ); $can_attempt_again = learndash_can_attempt_again( $user_id, $quiz_id ); if ( $can_attempt_again ) { $link = learndash_next_global_quiz(); } else { $link = learndash_next_global_quiz( true, null, null, array( $quiz_id ) ); } learndash_update_completion( $user_id ); /** * Filter where user should be redirected * * @since 2.1.0 * * @var $link redirect url */ $link = apply_filters( 'learndash_completion_redirect', $link, $quiz_id ); wp_redirect( $link ); exit; } else { if ( ! empty( $_GET['quiz_redirect'] ) && ! empty( $_GET['quiz_id'] ) && ! empty( $_GET['quiz_type'] ) && ! empty( $_GET['lesson_id'] ) && $_GET['quiz_type'] == 'lesson' ) { $quiz_id = intval( $_GET['quiz_id'] ); $lesson_id = intval( $_GET['lesson_id'] ); // We don't need to check if the quiz can be retaken because the learndash_next_lesson_quiz() function does that for us. // if ( $can_attempt_again ) { // $link = learndash_next_lesson_quiz( true, $user_id, $lesson_id, null ); // } else { // $link = learndash_next_lesson_quiz( true, $user_id, $lesson_id, array($quiz_id) ); // } $link = learndash_next_lesson_quiz( true, $user_id, $lesson_id, null ); if ( empty( $link ) ) { $link = learndash_next_post_link( '', true ); } if ( empty( $link ) ) { $post = get_post( $lesson_id ); if ( $post->post_type == 'sfwd-topic' ) { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $course_id = learndash_get_course_id( $post->ID ); $lesson = learndash_course_get_single_parent_step( $course_id, $post->ID ); } else { $lesson = learndash_get_setting( $post, 'lesson' ); } $link = get_permalink( $lesson ); } else { $link = learndash_next_global_quiz(); } } // v2.3: Removed this and moved to an earlier step // learndash_update_completion( $user_id ); if ( ! empty( $link ) ) { /** * Filter where user should be redirected * * @since 2.1.0 * * @var $link redirect url */ $link = apply_filters( 'learndash_completion_redirect', $link, $quiz_id ); wp_redirect( $link ); exit; } } } } add_action( 'wp', 'learndash_quiz_redirect' ); /** * Can the user attempt the quiz again * * @since 2.1.0 * * @param int $user_id * @param int $quiz_id * @return bool */ function learndash_can_attempt_again( $user_id, $quiz_id ) { $quizmeta = get_post_meta( $quiz_id, '_sfwd-quiz', true ); if ( isset( $quizmeta['sfwd-quiz_repeats'] ) ) { $repeats = $quizmeta['sfwd-quiz_repeats']; } else { $repeats = ''; } /** * Number of repeats for quiz * * @param int $repeats */ $repeats = apply_filters( 'learndash_allowed_repeats', $repeats, $user_id, $quiz_id ); if ( $repeats == '' ) { return true; } $quiz_results = get_user_meta( $user_id, '_sfwd-quizzes', true ); $count = 0; if ( ! empty( $quiz_results ) ) { foreach ( $quiz_results as $quiz ) { if ( $quiz['quiz'] == $quiz_id ) { $count++; } } } if ( $repeats > $count - 1 ) { return true; } else { return false; } } /** * Is previous topic, lesson complete * * @since 2.1.0 * * @param object $post WP_Post * @return bool */ function is_previous_complete( $post ) { $progress = learndash_get_course_progress( null, $post->ID ); if ( empty( $progress ) ) { return 1; } if ( ! empty( $progress['prev'] ) && empty( $progress['prev']->completed ) ) { return 0; } else { return 1; } } /** * Returns the previous lesson/topic to be completed. * * @since 2.2.1.1 * * @param object $post WP_Post * @return object WP_Post object */ function learndash_get_previous( $post ) { $progress = learndash_get_course_progress( null, $post->ID ); if ( ! empty( $progress['prev'] ) ) { return $progress['prev']; } } /** * Update user meta with completion status for any resource * * @since 2.1.0 * * @param int $user_id * @param int $postid course, lesson, topic * @param boolean $onlycalculate * @return bool if user meta was updated */ function learndash_process_mark_complete( $user_id = null, $postid = null, $onlycalculate = false, $course_id = 0 ) { if ( empty( $user_id ) ) { if ( is_user_logged_in() ) { $current_user = wp_get_current_user(); $user_id = $current_user->ID; } else { return false; } } else { $current_user = get_user_by( 'id', $user_id ); } $post = get_post( $postid ); if ( ! ( $post instanceof WP_Post ) ) { return false; } if ( ! $onlycalculate ) { /** * Filter if this should be marked completed * * @since 2.1.0 * * @param bool */ $process_completion = apply_filters( 'learndash_process_mark_complete', true, $post, $current_user ); if ( ! $process_completion ) { return false; } } if ( $post->post_type == 'sfwd-topic' ) { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { if ( empty( $course_id ) ) { $course_id = learndash_get_course_id( $post->ID ); } $lesson_id = learndash_course_get_single_parent_step( $course_id, $post->ID ); } else { $lesson_id = learndash_get_setting( $post, 'lesson' ); } // $lesson_topics = learndash_get_topic_list( $lesson_id); } if ( empty( $course_id ) ) { $course_id = learndash_get_course_id( $postid ); } if ( empty( $course_id ) ) { return false; } $lessons = learndash_get_lesson_list( $course_id, array( 'num' => 0 ) ); if ( has_global_quizzes( $postid ) ) { $globalquiz = 1; } else { $globalquiz = 0; } if ( $globalquiz && is_all_global_quizzes_complete( $user_id, $postid ) ) { $globalquizcompleted = 1; } else { $globalquizcompleted = 0; } $course_progress = get_user_meta( $user_id, '_sfwd-course_progress', true ); if ( ( empty( $course_progress ) ) || ( ! is_array( $course_progress ) ) ) { $course_progress = array(); } if ( ( ! isset( $course_progress[ $course_id ] ) ) || ( empty( $course_progress[ $course_id ] ) ) ) { $course_progress[ $course_id ] = array( 'lessons' => array(), 'topics' => array(), ); } if ( ( ! isset( $course_progress[ $course_id ]['lessons'] ) ) || ( empty( $course_progress[ $course_id ]['lessons'] ) ) ) { $course_progress[ $course_id ]['lessons'] = array(); } if ( ( ! isset( $course_progress[ $course_id ]['topics'] ) ) || ( empty( $course_progress[ $course_id ]['topics'] ) ) ) { $course_progress[ $course_id ]['topics'] = array(); } if ( $post->post_type == 'sfwd-topic' && empty( $course_progress[ $course_id ]['topics'][ $lesson_id ] ) ) { $course_progress[ $course_id ]['topics'][ $lesson_id ] = array(); } $lesson_completed = false; $topic_completed = false; if ( ! $onlycalculate && $post->post_type == 'sfwd-lessons' && empty( $course_progress[ $course_id ]['lessons'][ $postid ] ) ) { $course_progress[ $course_id ]['lessons'][ $postid ] = 1; $lesson_completed = true; } if ( ! $onlycalculate && $post->post_type == 'sfwd-topic' && empty( $course_progress[ $course_id ]['topics'][ $lesson_id ][ $postid ] ) ) { $course_progress[ $course_id ]['topics'][ $lesson_id ][ $postid ] = 1; $topic_completed = true; } $completed_old = isset( $course_progress[ $course_id ]['completed'] ) ? $course_progress[ $course_id ]['completed'] : 0; // $course_progress[ $course_id ]['completed'] = count( $course_progress[ $course_id ]['lessons'] ) + $globalquizcompleted; $completed = learndash_course_get_completed_steps( $user_id, $course_id, $course_progress[ $course_id ] ); $course_progress[ $course_id ]['completed'] = $completed; // 2016-07-16 v2.3 Changed the logic on the count here. In the previous logic the count of lessons and 1 or 0 for global quiz. // $course_progress[ $course_id ]['total'] = count( $lessons ) + $globalquiz; // New logic includes lessons and topics. $course_progress[ $course_id ]['total'] = learndash_get_course_steps_count( $course_id ); /** * Track the last post_id (Lesson, Topic, Quiz) seen by user. * * @since 2.1.0 */ $course_progress[ $course_id ]['last_id'] = $post->ID; $course_completed_time = time(); // If course is completed if ( ( $course_progress[ $course_id ]['completed'] >= $completed_old ) && ( $course_progress[ $course_id ]['completed'] >= $course_progress[ $course_id ]['total'] ) ) { /** * Run actions before course is completed * * @since 2.1.0 */ do_action( 'learndash_before_course_completed', array( 'user' => $current_user, 'course' => get_post( $course_id ), 'progress' => $course_progress, 'completed_time' => $course_completed_time, ) ); add_user_meta( $current_user->ID, 'course_completed_' . $course_id, $course_completed_time, true ); } else { delete_user_meta( $current_user->ID, 'course_completed_' . $course_id ); } update_user_meta( $user_id, '_sfwd-course_progress', $course_progress ); if ( ! empty( $topic_completed ) ) { /** * Run actions after topic is completed * * @since 2.1.0 */ do_action( 'learndash_topic_completed', array( 'user' => $current_user, 'course' => get_post( $course_id ), 'lesson' => get_post( $lesson_id ), 'topic' => $post, 'progress' => $course_progress, ) ); learndash_update_user_activity( array( 'course_id' => $course_id, 'user_id' => $current_user->ID, 'post_id' => $post->ID, 'activity_type' => 'topic', 'activity_status' => true, 'activity_completed' => time(), 'activity_meta' => array( 'steps_total' => $course_progress[ $course_id ]['total'], 'steps_completed' => $course_progress[ $course_id ]['completed'], ), ) ); $course_args = array( 'course_id' => $course_id, 'user_id' => $current_user->ID, 'post_id' => $course_id, 'activity_type' => 'course', ); $course_activity = learndash_get_user_activity( $course_args ); if ( ! $course_activity ) { learndash_update_user_activity( array( 'course_id' => $course_id, 'user_id' => $current_user->ID, 'post_id' => $course_id, 'activity_type' => 'course', 'activity_status' => false, 'activity_meta' => array( 'steps_total' => $course_progress[ $course_id ]['total'], 'steps_completed' => $course_progress[ $course_id ]['completed'], 'steps_last_id' => $post->ID, ), ) ); } else { learndash_update_user_activity_meta( $course_activity->activity_id, 'steps_total', $course_progress[ $course_id ]['total'] ); learndash_update_user_activity_meta( $course_activity->activity_id, 'steps_completed', $course_progress[ $course_id ]['completed'] ); learndash_update_user_activity_meta( $course_activity->activity_id, 'steps_last_id', $post->ID ); } } if ( ! empty( $lesson_completed ) ) { /** * Run actions lesson is completed * * @since 2.1.0 */ do_action( 'learndash_lesson_completed', array( 'user' => $current_user, 'course' => get_post( $course_id ), 'lesson' => $post, 'progress' => $course_progress, ) ); learndash_update_user_activity( array( 'course_id' => $course_id, 'user_id' => $current_user->ID, 'post_id' => $post->ID, 'activity_type' => 'lesson', 'activity_status' => true, 'activity_completed' => time(), 'activity_meta' => array( 'steps_total' => $course_progress[ $course_id ]['total'], 'steps_completed' => $course_progress[ $course_id ]['completed'], ), ) ); $course_args = array( 'course_id' => $course_id, 'user_id' => $current_user->ID, 'post_id' => $course_id, 'activity_type' => 'course', ); $course_activity = learndash_get_user_activity( $course_args ); if ( ! $course_activity ) { learndash_update_user_activity( array( 'course_id' => $course_id, 'user_id' => $current_user->ID, 'post_id' => $course_id, 'activity_type' => 'course', 'activity_status' => false, 'activity_meta' => array( 'steps_total' => $course_progress[ $course_id ]['total'], 'steps_completed' => $course_progress[ $course_id ]['completed'], 'steps_last_id' => $post->ID, ), ) ); } else { learndash_update_user_activity_meta( $course_activity->activity_id, 'steps_total', $course_progress[ $course_id ]['total'] ); learndash_update_user_activity_meta( $course_activity->activity_id, 'steps_completed', $course_progress[ $course_id ]['completed'] ); learndash_update_user_activity_meta( $course_activity->activity_id, 'steps_last_id', $post->ID ); } } if ( $course_progress[ $course_id ]['completed'] >= $completed_old && $course_progress[ $course_id ]['total'] == $course_progress[ $course_id ]['completed'] ) { $do_course_complete_action = false; $course_args = array( 'course_id' => $course_id, 'user_id' => $current_user->ID, 'post_id' => $course_id, 'activity_type' => 'course', ); $course_activity = learndash_get_user_activity( $course_args ); if ( ! empty( $course_activity ) ) { $course_args = json_decode( json_encode( $course_activity ), true ); if ( $course_activity->activity_status != true ) { $course_args['activity_status'] = true; $course_args['activity_completed'] = time(); $course_args['activity_updated'] = time(); $do_course_complete_action = true; } } else { // If no activity record found. $course_args['activity_status'] = true; $course_args['activity_started'] = time(); $course_args['activity_completed'] = time(); $course_args['activity_updated'] = time(); $do_course_complete_action = true; } $course_args['activity_meta'] = array( 'steps_total' => $course_progress[ $course_id ]['total'], 'steps_completed' => $course_progress[ $course_id ]['completed'], 'steps_last_id' => $post->ID, ); learndash_update_user_activity( $course_args ); if ( $do_course_complete_action == true ) { /** * Run actions after course is completed * * @since 2.1.0 */ do_action( 'learndash_course_completed', array( 'user' => $current_user, 'course' => get_post( $course_id ), 'progress' => $course_progress, 'course_completed' => $course_completed_time, ) ); } } else { $course_args = array( 'course_id' => $course_id, 'user_id' => $current_user->ID, 'post_id' => $course_id, 'activity_type' => 'course', ); $course_activity = learndash_get_user_activity( $course_args ); if ( $course_activity ) { $course_args['activity_completed'] = 0; $course_args['activity_status'] = false; if ( empty( $course_progress[ $course_id ]['completed'] ) ) { $course_args['activity_updated'] = 0; } $course_args['activity_meta'] = array( 'steps_total' => $course_progress[ $course_id ]['total'], 'steps_completed' => $course_progress[ $course_id ]['completed'], 'steps_last_id' => $post->ID, ); learndash_update_user_activity( $course_args ); } } return true; } /** * Helper to update completion resource * * @todo seems redundant, function already exists * * @since 2.1.0 * * @param int $user_id * @param int $postid * @return bool if user meta was updated */ function learndash_update_completion( $user_id = null, $postid = null ) { if ( empty( $postid ) ) { global $post; if ( ( $post ) && ( is_a( $post, 'WP_Post' ) ) ) { $postid = $post->ID; } } if ( ! empty( $postid ) ) { learndash_process_mark_complete( $user_id, $postid, true ); } } /** * Is quiz complete * * @since 2.1.0 * * @param int $user_id * @param int $quiz_id * @return bool */ function learndash_is_quiz_complete( $user_id = null, $quiz_id, $course_id = 0 ) { return ! learndash_is_quiz_notcomplete( $user_id, array( $quiz_id => 1 ), false, $course_id ); } /** * Is quiz not complete * * Checks against quizzes in user meta and passing percentage of the quiz itself * * @since 2.1.0 * * @param int $user_id User ID for quizzes. * @param array $quizes Quiz ID to search user quizzes. * @param bool $return_incomplete_quiz_ids if true will return the array of incomplete quizes. Default is false ( added v2.3.1 ). * @param integer $course_id match course id. If -1 is passed then course match is not performed. * * @return bool true is quiz(es) NOT complete. false is quiz(es) all complete */ function learndash_is_quiz_notcomplete( $user_id = null, $quizes = null, $return_incomplete_quiz_ids = false, $course_id = 0 ) { if ( empty( $user_id ) ) { $current_user = wp_get_current_user(); $user_id = $current_user->ID; } $quiz_results = get_user_meta( $user_id, '_sfwd-quizzes', true ); if ( ! empty( $quiz_results ) && is_array( $quiz_results ) ) { foreach ( $quiz_results as $quiz ) { if ( ! empty( $quizes[ $quiz['quiz'] ] ) ) { if ( ( -1 !== $course_id ) && ( empty( $course_id ) ) ) { $course_id = learndash_get_course_id( intval( $quiz['quiz'] ) ); } if ( ! isset( $quiz['course'] ) ) { $quiz['course'] = $course_id; } $quiz['course'] = intval( $quiz['course'] ); if ( -1 !== $course_id ) { $course_id = intval( $course_id ); } $pass = false; if ( ( -1 === $course_id ) || ( $course_id == $quiz['course'] ) ) { if ( isset( $quiz['pass'] ) ) { $pass = ( $quiz['pass'] == 1 ) ? 1 : 0; } else { $quizmeta = get_post_meta( $quiz['quiz'], '_sfwd-quiz', true ); $passingpercentage = intVal( $quizmeta['sfwd-quiz_passingpercentage'] ); $pass = ( ! empty( $quiz['count'] ) && $quiz['score'] * 100 / $quiz['count'] >= $passingpercentage ) ? 1 : 0; } } if ( $pass ) { unset( $quizes[ $quiz['quiz'] ] ); } } } } if ( empty( $quizes ) ) { return 0; } else { if ( $return_incomplete_quiz_ids == true ) { return $quizes; } else { return 1; } } } /** * Return array of where the user currently is in course * * @since 2.1.0 * * @param int $user_id * @param int $postid * @param int $course_id * @return array list of courses, topics, lessons * current, previous, next */ function learndash_get_course_progress( $user_id = null, $postid = null, $course_id = null ) { if ( empty( $user_id ) ) { $current_user = wp_get_current_user(); if ( empty( $current_user->ID ) ) { return null; } $user_id = $current_user->ID; } $posts = array(); $posts = array(); if ( is_null( $course_id ) ) { $course_id = learndash_get_course_id( $postid ); } $course_progress = get_user_meta( $user_id, '_sfwd-course_progress', true ); $this_post = get_post( $postid ); if ( empty( $course_progress ) ) { // learndash_update_completion( $user_id, $postid ); // $course_progress = get_user_meta( $user_id, '_sfwd-course_progress', true ); $course_progress = array(); } if ( $this_post->post_type == 'sfwd-lessons' ) { $posts = learndash_get_lesson_list( $postid, array( 'num' => 0 ) ); if ( empty( $course_progress ) || empty( $course_progress[ $course_id ]['lessons'] ) ) { $completed_posts = array(); } else { $completed_posts = $course_progress[ $course_id ]['lessons']; } } elseif ( $this_post->post_type == 'sfwd-topic' ) { if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $lesson_id = learndash_course_get_single_parent_step( $course_id, $this_post->ID ); } else { $lesson_id = learndash_get_setting( $this_post, 'lesson' ); } $posts = learndash_get_topic_list( $lesson_id, $course_id ); if ( empty( $course_progress ) || empty( $course_progress[ $course_id ]['topics'][ $lesson_id ] ) ) { $completed_posts = array(); } else { $completed_posts = $course_progress[ $course_id ]['topics'][ $lesson_id ]; } } $temp = $prev_p = $next_p = $this_p = ''; if ( ! empty( $posts ) ) { foreach ( $posts as $k => $post ) { if ( $post instanceof WP_Post ) { if ( ! empty( $completed_posts[ $post->ID ] ) ) { $posts[ $k ]->completed = 1; } else { $posts[ $k ]->completed = 0; } if ( $post->ID == $postid ) { $this_p = $post; $prev_p = $temp; } if ( ! empty( $temp->ID ) && $temp->ID == $postid ) { $next_p = $post; } $temp = $post; } } } else { $posts = array(); } return array( 'posts' => $posts, 'this' => $this_p, 'prev' => $prev_p, 'next' => $next_p, ); } /** * Is lesson complete * * @since 2.1.0 * * @param int $user_id * @param int $lesson_id * @return bool */ function learndash_is_lesson_complete( $user_id = null, $lesson_id, $course_id = 0 ) { return ! learndash_is_lesson_notcomplete( $user_id, array( $lesson_id => 1 ), $course_id ); } /** * Is lesson not complete * * @since 2.1.0 * * @param int $user_id * @param int $lesson_id * @return bool */ function learndash_is_lesson_notcomplete( $user_id = null, $lessons, $course_id = 0 ) { if ( empty( $user_id ) ) { $current_user = wp_get_current_user(); $user_id = $current_user->ID; } $course_progress = get_user_meta( $user_id, '_sfwd-course_progress', true ); if ( ! empty( $lessons ) ) { foreach ( $lessons as $lesson => $v ) { if ( empty( $course_id ) ) { $course_id = learndash_get_course_id( $lesson ); } if ( ! empty( $course_progress[ $course_id ] ) && ! empty( $course_progress[ $course_id ]['lessons'] ) && ! empty( $course_progress[ $course_id ]['lessons'][ $lesson ] ) ) { unset( $lessons[ $lesson ] ); } } } if ( empty( $lessons ) ) { return 0; } else { return 1; } } /** * Is topic complete * * @since 2.3.0.2 * * @param int $user_id * @param int $topic_id * @return bool */ function learndash_is_topic_complete( $user_id = null, $topic_id ) { return ! learndash_is_topic_notcomplete( $user_id, array( $topic_id => 1 ) ); } /** * Is topic not complete * * @since 2.1.0 * * @param int $user_id * @param int $lesson_id * @return bool */ function learndash_is_topic_notcomplete( $user_id = null, $topics ) { if ( empty( $user_id ) ) { $current_user = wp_get_current_user(); $user_id = $current_user->ID; } $course_progress = get_user_meta( $user_id, '_sfwd-course_progress', true ); if ( ! empty( $topics ) ) { foreach ( $topics as $topic_id => $v ) { $course_id = learndash_get_course_id( $topic_id ); $lesson_id = learndash_get_lesson_id( $topic_id ); if ( ( isset( $course_progress[ $course_id ] ) ) && ( ! empty( $course_progress[ $course_id ] ) ) && ( isset( $course_progress[ $course_id ]['topics'] ) ) && ( ! empty( $course_progress[ $course_id ]['topics'] ) ) && ( isset( $course_progress[ $course_id ]['topics'][ $lesson_id ][ $topic_id ] ) ) && ( ! empty( $course_progress[ $course_id ]['topics'][ $lesson_id ][ $topic_id ] ) ) ) { unset( $topics[ $topic_id ] ); } } } if ( empty( $topics ) ) { return 0; } else { return 1; } } /** * Output current status of course * * @since 2.1.0 * @since 2.5.8 added $return_slug parameter * * @param int $id Course ID to get status of * @param int $user_id User ID * @param bool $return_slug If false will return transatable string. If false status slug. * * @return string output of current course status */ function learndash_course_status( $id, $user_id = null, $return_slug = false ) { $course_status_str = ''; if ( empty( $user_id ) ) { if ( ! is_user_logged_in() ) { return $course_status_str; } $user_id = get_current_user_id(); } else { $user_id = intval( $user_id ); } $completed_on = get_user_meta( $user_id, 'course_completed_' . $id, true ); if ( ! empty( $completed_on ) ) { if ( true === $return_slug ) { $course_status_str = 'completed'; } else { $course_status_str = esc_html__( 'Completed', 'learndash' ); } } else { $course_progress = get_user_meta( $user_id, '_sfwd-course_progress', true ); $has_completed_topic = false; if ( ! empty( $course_progress[ $id ] ) && ! empty( $course_progress[ $id ]['topics'] ) && is_array( $course_progress[ $id ]['topics'] ) ) { foreach ( $course_progress[ $id ]['topics'] as $lesson_topics ) { if ( ! empty( $lesson_topics ) && is_array( $lesson_topics ) ) { foreach ( $lesson_topics as $topic ) { if ( ! empty( $topic ) ) { $has_completed_topic = true; break; } } } if ( $has_completed_topic ) { break; } } } $quiz_notstarted = true; $quizzes = learndash_get_global_quiz_list( $id ); if ( ! empty( $quizzes ) ) { foreach ( $quizzes as $quiz ) { if ( ! learndash_is_quiz_notcomplete( $user_id, array( $quiz->ID => 1 ), false, $id ) ) { $quiz_notstarted = false; } } if ( false === $quiz_notstarted ) { $course_progress[ $id ]['completed'] += 1; } } if ( ( empty( $course_progress[ $id ] ) || empty( $course_progress[ $id ]['lessons'] ) && ! $has_completed_topic ) && $quiz_notstarted ) { if ( true === $return_slug ) { $course_status_str = 'not-started'; } else { $course_status_str = esc_html__( 'Not Started', 'learndash' ); } } elseif ( empty( $course_progress[ $id ] ) || @$course_progress[ $id ]['completed'] < @$course_progress[ $id ]['total'] ) { if ( true === $return_slug ) { $course_status_str = 'in-progress'; } else { $course_status_str = esc_html__( 'In Progress', 'learndash' ); } } elseif ( absint( $course_progress[ $id ]['completed'] ) == absint( $course_progress[ $id ]['total'] ) ) { if ( true === $return_slug ) { $course_status_str = 'completed'; } else { $course_status_str = esc_html__( 'Completed', 'learndash' ); } /** * We call the standard mark complete function so it triggers the notifications etc. */ learndash_process_mark_complete( $user_id, $id, false, $id ); } } if ( true === $return_slug ) { return $course_status_str; } else { return apply_filters( 'learndash_course_status', $course_status_str, $id, $user_id, isset( $course_progress[ $id ] ) ? $course_progress[ $id ] : array() ); } } /** * Get the course status idex from the course status label * * In various places with LD the course status is expressed as a string as in 'Not Started', 'In Progress' or 'Complete'. * the problem with using this string is it will be translated depending on the locale(). This means comparative logic can * possible fails. * * The purpose of this function is to help use an internal key to keep track of the course status value * * @since 2.3 * * @uses $learndash_course_statuses * @param string $course_status_label Current translatable text for Course Status * @return string The index/key of the course status string if found in the $learndash_course_statuses array */ function learndash_course_status_idx( $course_status_label = '' ) { global $learndash_course_statuses; return array_search( $course_status_label, $learndash_course_statuses ); } /** * Output HTML template of users course progress * * @since 2.1.0 * * @param array $atts shortcode attributes * @return string shortcode output */ function learndash_course_progress( $atts ) { global $learndash_shortcode_used; $learndash_shortcode_used = true; extract( shortcode_atts( array( 'course_id' => 0, 'user_id' => 0, 'array' => false, ), $atts ) ); if ( empty( $user_id ) ) { // $current_user = wp_get_current_user(); if ( is_user_logged_in() ) { $user_id = get_current_user_id(); } else { $user_id = 0; } } if ( empty( $course_id ) ) { $course_id = learndash_get_course_id(); } if ( empty( $course_id ) ) { return ''; } $completed = 0; $total = false; if ( ! empty( $user_id ) ) { $course_progress = get_user_meta( $user_id, '_sfwd-course_progress', true ); $percentage = 0; $message = ''; if ( ( ! empty( $course_progress ) ) && ( isset( $course_progress[ $course_id ] ) ) && ( ! empty( $course_progress[ $course_id ] ) ) ) { if ( isset( $course_progress[ $course_id ]['completed'] ) ) { $completed = absint( $course_progress[ $course_id ]['completed'] ); } if ( isset( $course_progress[ $course_id ]['total'] ) ) { $total = absint( $course_progress[ $course_id ]['total'] ); } } } // If $total is still false we calculate the total from course steps. if ( false === $total ) { $total = learndash_get_course_steps_count( $course_id ); } if ( $total > 0 ) { $percentage = intval( $completed * 100 / $total ); $percentage = ( $percentage > 100 ) ? 100 : $percentage; } else { $percentage = 0; } // translators: placeholder: completed steps, total steps. $message = sprintf( esc_html_x( '%1$d out of %2$d steps completed', 'placeholder: completed steps, total steps', 'learndash' ), $completed, $total ); if ( $array ) { return array( 'percentage' => isset( $percentage ) ? $percentage : 0, 'completed' => isset( $completed ) ? $completed : 0, 'total' => isset( $total ) ? $total : 0, ); } return SFWD_LMS::get_template( 'course_progress_widget', array( 'user_id' => $user_id, 'course_id' => $course_id, 'message' => $message, 'percentage' => isset( $percentage ) ? $percentage : 0, 'completed' => isset( $completed ) ? $completed : 0, 'total' => isset( $total ) ? $total : 0, ) ); } add_shortcode( 'learndash_course_progress', 'learndash_course_progress' ); /** * Is quiz accessible to user * * @since 2.1.0 * * @param int $user_id $user_id ID of User to check. * @param object $post WP_Post quiz. * @param boolean $return_incomplete default false. true to return last imcomplete step. * @return mixed boolean default. If $return_incomplete is true will return WP_Post object. */ function is_quiz_accessable( $user_id = null, $post = null, $return_incomplete = false, $course_id = 0 ) { // Allow using the legacy function in case of issues with new logic. if ( ( defined( 'LEARNDASH_IS_QUIZ_ACCESSABLE_LEGACY' ) && ( LEARNDASH_IS_QUIZ_ACCESSABLE_LEGACY === true ) ) ) { return is_quiz_accessable_legacy( $user_id, $post, $course_id ); } if ( empty( $user_id ) ) { $current_user = wp_get_current_user(); if ( empty( $current_user->ID ) ) { return 1; } $user_id = $current_user->ID; } if ( learndash_is_admin_user( $user_id ) ) { $bypass_course_limits_admin_users = LearnDash_Settings_Section::get_section_setting('LearnDash_Settings_Section_General_Admin_User', 'bypass_course_limits_admin_users' ); if ( 'yes' === $bypass_course_limits_admin_users ) { return 1; } } if ( ( empty( $post ) ) || ( ! is_a( $post, 'WP_Post' ) ) ) { return; } if ( empty( $course_id ) ) { $course_id = learndash_get_course_id( $post ); } $course_id = absint( $course_id ); // If we have a Quiz but the Quiz is not part of a course then return 1 for valid. if ( empty( $course_id ) ) { return 1; } if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $quiz_parent_id = learndash_course_get_single_parent_step( $course_id, $post->ID ); } else { $quiz_parent_id = learndash_get_setting( $post, 'lesson' ); } $quiz_parent_id = absint( $quiz_parent_id ); if ( ! empty( $quiz_parent_id ) ) { $quiz_parent_post = get_post( $quiz_parent_id ); if ( is_a( $quiz_parent_post, 'WP_Post' ) ) { if ( $quiz_parent_post->post_type == learndash_get_post_type_slug( 'topic' ) ) { $quiz_parent_topic_post = $quiz_parent_post; $quiz_parent_lesson_id = learndash_get_setting( $quiz_parent_topic_post, 'lesson' ); $quiz_parent_lesson_post = get_post( $quiz_parent_lesson_id ); $parent_topic_quizzes = learndash_get_lesson_quiz_list( $quiz_parent_topic_post, $user_id, $course_id ); if ( ! empty( $parent_topic_quizzes ) ) { // loop until we get to the first status == 'notcompleted'. foreach ( $parent_topic_quizzes as $quiz ) { if ( $quiz['post']->ID === $post->ID ) { //return 1; break; } elseif ( 'completed' !== $quiz['status'] ) { if ( true === $return_incomplete ) { return $quiz['post']; } else { return 0; } } } } $lesson_topics_progress = learndash_get_course_progress( null, $quiz_parent_topic_post->ID ); if ( ( isset( $lesson_topics_progress['posts'] ) ) && ( ! empty( $lesson_topics_progress['posts'] ) ) ) { foreach ( $lesson_topics_progress['posts'] as $topic ) { if ( $topic->ID === $quiz_parent_topic_post->ID ) { break; } if ( empty( $topic->completed ) ) { if ( true === $return_incomplete ) { return $topic; } else { return 0; } break; } } } $lesson_progress = learndash_get_course_progress( null, $quiz_parent_lesson_post->ID ); if ( ( isset( $lesson_progress['posts'] ) ) && ( ! empty( $lesson_progress['posts'] ) ) ) { foreach ( $lesson_progress['posts'] as $lesson ) { if ( $lesson->ID === $quiz_parent_lesson_post->ID ) { break; } if ( empty( $lesson->completed ) ) { if ( true === $return_incomplete ) { return $lesson; } else { return 0; } break; } } } return 1; } elseif ( $quiz_parent_post->post_type == learndash_get_post_type_slug( 'lesson' ) ) { $quiz_parent_lesson_post = $quiz_parent_post; $lesson_topics = learndash_get_topic_list( $quiz_parent_lesson_post->ID ); if ( ! empty( $lesson_topics ) ) { $lesson_topics_progress = learndash_get_course_progress( null, $lesson_topics[0]->ID ); if ( ( isset( $lesson_topics_progress['posts'] ) ) && ( ! empty( $lesson_topics_progress['posts'] ) ) ) { foreach ( $lesson_topics_progress['posts'] as $topic ) { if ( empty( $topic->completed ) ) { if ( true === $return_incomplete ) { return $topic; } else { return 0; } break; } } } } $quizzes = learndash_get_lesson_quiz_list( $quiz_parent_lesson_post, $user_id, $course_id ); if ( ! empty( $quizzes ) ) { // loop until we get to the first status == 'notcompleted'. foreach( $quizzes as $quiz ) { if ( $quiz['post']->ID === $post->ID ) { break; } if ( 'completed' !== $quiz['status'] ) { if ( true === $return_incomplete ) { return $quiz['post']; } else { return 0; } } } } //$lessons = learndash_get_course_lessons_list( $course_id, $user_id, array( 'num' => 0 ) ); $lesson_progress = learndash_get_course_progress( null, $quiz_parent_lesson_post->ID ); if ( ( isset( $lesson_progress['posts'] ) ) && ( ! empty( $lesson_progress['posts'] ) ) ) { foreach ( $lesson_progress['posts'] as $lesson ) { if ( $lesson->ID === $quiz_parent_lesson_post->ID ) { break; } if ( empty( $lesson->completed ) ) { if ( true === $return_incomplete ) { return $lesson; } else { return 0; } break; } } } return 1; } } } else { // First we check if all course lessons are completed. $lessons = learndash_get_course_lessons_list( $course_id, $user_id, array( 'num' => 0 ) ); if ( ! empty( $lessons ) ) { foreach ( $lessons as $lesson ) { //if ( ( $lesson['sample'] === 'is_not_sample' ) && ( 'completed' !== $lesson['status'] ) ) { if ( 'completed' !== $lesson['status'] ) { if ( true === $return_incomplete ) { return $lesson['post']; } else { return 0; } } } } // Next we check if other global quizzes are completed. $quizzes = learndash_get_global_quiz_list( $course_id ); if ( ! empty( $quizzes ) ) { // loop until we get to the first status == 'notcompleted'. foreach( $quizzes as $quiz ) { if ( $quiz->ID === $post->ID ) { return 1; } elseif ( ! learndash_is_quiz_complete( $user_id, $quiz->ID, $course_id ) ) { if ( true === $return_incomplete ) { return $quiz; } else { return 0; } } } } } return 0; } function is_quiz_accessable_legacy( $user_id = null, $post = null, $course_id = 0 ) { if ( empty( $user_id ) ) { $current_user = wp_get_current_user(); if ( empty( $current_user->ID ) ) { return 1; } $user_id = $current_user->ID; } if ( ( ! empty( $post ) ) && ( $post instanceof WP_Post ) ) { if ( empty( $course_id ) ) { $course_id = learndash_get_course_id( $post ); } $course_id = absint( $course_id ); if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $quiz_lesson = learndash_course_get_single_parent_step( $course_id, $post->ID ); } else { $quiz_lesson = learndash_get_setting( $post, 'lesson' ); } if ( ! empty( $quiz_lesson ) ) { $quiz_lesson_post = get_post( $quiz_lesson ); if ( ( $quiz_lesson_post instanceof WP_Post ) && ( $quiz_lesson_post->post_type == 'sfwd-topic' ) ) { return 1; } elseif ( learndash_lesson_topics_completed( $quiz_lesson ) ) { return 1; } else { return 0; } } else { $course_progress = get_user_meta( $user_id, '_sfwd-course_progress', true ); if ( ! empty( $course_progress ) && ! empty( $course_progress[ $course_id ] ) && ! empty( $course_progress[ $course_id ]['total'] ) ) { $completed = intVal( $course_progress[ $course_id ]['completed'] ); $total = intVal( $course_progress[ $course_id ]['total'] ); if ( $completed >= $total - 1 ) { return 1; } } $lessons = learndash_get_lesson_list( $course_id, array( 'num' => 0 ) ); if ( empty( $lessons ) ) { return 1; } } } return 0; } /** * Check if all quizzes for course are complete for user * * @since 2.1.0 * * @param int $user_id * @param int $id * @return bool */ function is_all_global_quizzes_complete( $user_id = null, $id = null ) { $quizzes = learndash_get_global_quiz_list( $id ); $return = true; if ( ! empty( $quizzes ) ) { foreach ( $quizzes as $quiz ) { if ( learndash_is_quiz_notcomplete( $user_id, array( $quiz->ID => 1 ), false, $id ) ) { $return = false; } } } return $return; } /** * Get next quiz for course * * @since 2.1.0 * * @param bool $url return a url * @param int $user_id * @param int $id * @param array $exclude excluded quiz id's * @return int|string id of quiz or url of quiz */ function learndash_next_global_quiz( $url = true, $user_id = null, $id = null, $exclude = array() ) { if ( empty( $id ) ) { $id = learndash_get_course_id(); } if ( empty( $user_id ) ) { $current_user = wp_get_current_user(); $user_id = $current_user->ID; } $quizzes = learndash_get_global_quiz_list( $id ); $return = get_permalink( $id ); if ( ! empty( $quizzes ) ) { foreach ( $quizzes as $quiz ) { if ( ! in_array( $quiz->ID, $exclude ) && learndash_is_quiz_notcomplete( $user_id, array( $quiz->ID => 1 ), false, $id ) && learndash_can_attempt_again( $user_id, $quiz->ID ) ) { if ( $url ) { return get_permalink( $quiz->ID ); } else { return $quiz->ID; } } } } /** * Filter return value of next global quiz * * @todo filter name does not seem correct * in context of function * * @since 2.1.0 * * @var id|string $return */ $return = apply_filters( 'learndash_course_completion_url', $return, $id ); return $return; } /** * Get next quiz for current lesson for current user * * @since 2.1.0 * * @param bool $url return a url * @param int $user_id * @param int $lesson_id * @param array $exclude excluded quiz id's * @return int|string id of quiz or url of quiz */ function learndash_next_lesson_quiz( $url = true, $user_id = null, $lesson_id = null, $exclude = array() ) { global $post; $return = false; if ( empty( $lesson_id ) ) { $lesson_id = $post->ID; } if ( empty( $exclude ) ) { $exclude = array(); } if ( empty( $user_id ) ) { $current_user = wp_get_current_user(); $user_id = $current_user->ID; } // Assumption here is the learndash_get_lesson_quiz_list returns the quizzes in the order they should be taken. $quizzes = learndash_get_lesson_quiz_list( $lesson_id, $user_id ); if ( ( ! empty( $quizzes ) ) && ( is_array( $quizzes ) ) ) { foreach ( $quizzes as $quiz ) { // The logic here is we need to check all the quizzes in this lesson. If all the quizzes are complete // (including the current one) then we set the parent (lesson) to complete. if ( $quiz['status'] == 'completed' ) { continue; } // If not complete AND the user CAN take the quiz again... if ( learndash_can_attempt_again( $user_id, $quiz['post']->ID ) ) { $return = ( $url ) ? get_permalink( $quiz['post']->ID ) : $quiz['post']->ID; break; } $return = ( $url ) ? get_permalink( $quiz['post']->ID ) : $quiz['post']->ID; // $return = ( $url ) ? get_permalink( $lesson_id ) : $lesson_id; break; } } if ( empty( $return ) ) { learndash_process_mark_complete( $user_id, $lesson_id ); } else { return $return; } } /** * Does resource have quizzes? * * @since 2.1.0 * * @param int $id * @return bool */ function has_global_quizzes( $id = null ) { $quizzes = learndash_get_global_quiz_list( $id ); return ! empty( $quizzes ); } /** * Course Progress Widget */ class LearnDash_Course_Progress_Widget extends WP_Widget { /** * Set up course project widget */ function __construct() { $widget_ops = array( 'classname' => 'widget_ldcourseprogress', 'description' => sprintf( esc_html_x( 'LearnDash %s progress bar', 'placeholders: course', 'learndash' ), learndash_get_custom_label_lower( 'course' ) ), ); $control_ops = array(); // 'width' => 400, 'height' => 350); parent::__construct( 'ldcourseprogress', sprintf( esc_html_x( '%s Progress Bar', 'Course Progress Bar Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'course' ) ), $widget_ops, $control_ops ); } /** * Displays widget * * @since 2.1.0 * * @param array $args widget arguments * @param array $instance widget instance * @return string widget output */ function widget( $args, $instance ) { global $learndash_shortcode_used; extract( $args ); $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance ); if ( ! is_singular() ) { return; } $progressbar = learndash_course_progress( $args ); if ( empty( $progressbar ) ) { return; } echo $before_widget; if ( ! empty( $title ) ) { echo $before_title . $title . $after_title; } echo $progressbar; echo $after_widget; $learndash_shortcode_used = true; } /** * Handles widget updates in admin * * @since 2.1.0 * * @param array $new_instance * @param array $old_instance * @return array $instance */ function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['title'] = strip_tags( $new_instance['title'] ); return $instance; } /** * Display widget form in admin * * @since 2.1.0 * * @param array $instance widget instance */ function form( $instance ) { $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) ); $title = strip_tags( $instance['title'] ); // $text = format_to_edit( $instance['text'] ); ?>

      post_type, array( learndash_get_post_type_slug( 'lesson' ), learndash_get_post_type_slug( 'topic' ) ) ) ) { return 0; } $meta = get_post_meta( $lesson_topic_post ->ID, '_' . $lesson_topic_post->post_type, true ); if ( ! isset( $meta[ $lesson_topic_post->post_type . '_forced_lesson_time_enabled' ] ) ) { if ( ( isset( $meta[ $lesson_topic_post->post_type . '_forced_lesson_time' ] ) ) && ( ! empty( $meta[ $lesson_topic_post->post_type . '_forced_lesson_time' ] ) ) ) { $meta[ $lesson_topic_post->post_type . '_forced_lesson_time_enabled' ] = 'on'; } else { $meta[ $lesson_topic_post->post_type . '_forced_lesson_time_enabled' ] = ''; } } if ( 'on' === $meta[ $lesson_topic_post->post_type . '_forced_lesson_time_enabled' ] ) { if ( ( isset( $meta[ $lesson_topic_post->post_type . '_forced_lesson_time' ] ) ) && ( ! empty( $meta[ $lesson_topic_post->post_type . '_forced_lesson_time' ] ) ) ) { return $meta[ $lesson_topic_post->post_type . '_forced_lesson_time' ]; } } return 0; } /** * Get lesson time cookie key for lesson/topic * * @since 3.0 * @param WP_Post $lesson_topic_post WP_Post object or post_id. * @return string cookie key value or empty. */ function learndash_forced_lesson_time_cookie_key( $lesson_topic_post = '' ) { if ( empty( $lesson_topic_post ) ) { global $post; $lesson_topic_post = $post; } if ( ! is_a( $lesson_topic_post, 'WP_Post' ) ) { $post_id = absint( $lesson_topic_post ); if ( empty( $post_id ) ) { return 0; } $lesson_topic_post = get_post( $post_id ); if ( ( ! $lesson_topic_post ) || ( ! is_a( $lesson_topic_post, 'WP_Post' ) ) ) { return 0; } } if ( ! in_array( $lesson_topic_post->post_type, array( learndash_get_post_type_slug( 'lesson' ), learndash_get_post_type_slug( 'topic' ) ) ) ) { return 0; } $meta = get_post_meta( $lesson_topic_post ->ID, '_' . $lesson_topic_post->post_type, true ); if ( ! isset( $meta[ $lesson_topic_post->post_type . '_forced_lesson_time_enabled' ] ) ) { if ( ( isset( $meta[ $lesson_topic_post->post_type . '_forced_lesson_time' ] ) ) && ( ! empty( $meta[ $lesson_topic_post->post_type . '_forced_lesson_time' ] ) ) ) { $meta[ $lesson_topic_post->post_type . '_forced_lesson_time_enabled' ] = 'on'; } else { $meta[ $lesson_topic_post->post_type . '_forced_lesson_time_enabled' ] = ''; } } if ( 'on' === $meta[ $lesson_topic_post->post_type . '_forced_lesson_time_enabled' ] ) { if ( ( isset( $meta[ $lesson_topic_post->post_type . '_forced_lesson_time' ] ) ) && ( ! empty( $meta[ $lesson_topic_post->post_type . '_forced_lesson_time' ] ) ) ) { $cookie_key = get_current_user_id() . '_' . learndash_get_course_id( $lesson_topic_post ) . '_' . $lesson_topic_post->ID; if ( ( isset( $meta[ $lesson_topic_post->post_type . '_forced_lesson_time_cookie_key' ] ) ) && ( ! empty( $meta[ $lesson_topic_post->post_type . '_forced_lesson_time_cookie_key' ] ) ) ) { $cookie_key .= '_' . $meta[ $lesson_topic_post->post_type . '_forced_lesson_time_cookie_key' ]; } return $cookie_key; } } return ''; } /** * Is course completed for user * * @since 2.1.0 * * @param int $user_id * @param int $course_id * @return bool */ function learndash_course_completed( $user_id, $course_id ) { if ( learndash_course_status( $course_id, $user_id ) == esc_html__( 'Completed', 'learndash' ) ) { return true; } else { return false; } } /** * Add course completion date to user meta * * @since 2.1.0 * * @param array $data */ function learndash_course_completed_store_time( $data ) { $user_id = $data['user']->ID; $course_id = $data['course']->ID; $meta_key = 'course_completed_' . $course_id; $meta_value = time(); $course_completed = get_user_meta( $user_id, $meta_key ); if ( empty( $course_completed ) ) { update_user_meta( $user_id, $meta_key, $meta_value ); } } add_action( 'learndash_before_course_completed', 'learndash_course_completed_store_time', 10, 1 ); /** * Delete course progress for user * * @since 2.1.0 * * @param int $course_id * @param int $user_id */ function learndash_delete_course_progress( $course_id, $user_id ) { global $wpdb; $usermeta = get_user_meta( $user_id, '_sfwd-course_progress', true ); if ( isset( $usermeta[ $course_id ] ) ) { unset( $usermeta[ $course_id ] ); update_user_meta( $user_id, '_sfwd-course_progress', $usermeta ); } delete_user_meta( $user_id, 'course_completed_' . $course_id ); // The reason we don't use the methods above is we want to ensure all old data is removed // from the quiz attempt history not just for quizzes currently associated with the course. $quizzes = array(); $usermeta_quizzes = get_user_meta( $user_id, '_sfwd-quizzes', true ); if ( ! is_array( $usermeta_quizzes ) ) { $usermeta_quizzes = array(); } if ( ! empty( $usermeta_quizzes ) ) { foreach ( $usermeta_quizzes as $quiz_item ) { if ( ( isset( $quiz_item['course'] ) ) && ( intval( $course_id ) == intval( $quiz_item['course'] ) ) ) { if ( isset( $quiz_item['quiz'] ) ) { $quiz_id = intval( $quiz_item['quiz'] ); $quizzes[ $quiz_id ] = $quiz_id; } } } } if ( ! empty( $quizzes ) ) { foreach ( $quizzes as $quiz_id ) { learndash_delete_quiz_progress( $user_id, $quiz_id ); } } } /** * Delete quiz progress for user * * @since 2.1.0 * * @param int $user_id * @param int $quiz_id */ function learndash_delete_quiz_progress( $user_id, $quiz_id ) { global $wpdb; // Clear User Meta $usermeta = get_user_meta( $user_id, '_sfwd-quizzes', true ); if ( ! empty( $usermeta ) && is_array( $usermeta ) ) { $usermeta_new = array(); foreach ( $usermeta as $key => $quizmeta ) { if ( $quizmeta['quiz'] != $quiz_id ) { $usermeta_new[] = $quizmeta; } } update_user_meta( $user_id, '_sfwd-quizzes', $usermeta_new ); } // Lesson/Topic /* $lesson_id = learndash_get_setting( $quiz_id, "lesson"); if(!empty( $lesson_id )) { $lesson_post = get_post( $lesson_id ); if( $lesson_post->post_type == "sfwd-lessons") learndash_specific_mark_lesson_incomplete( $user_id, $lesson_id ); else if( $lesson_post->post_type == "sfwd-topic") learndash_specific_mark_topic_incomplete( $user_id, $lesson_id ); }*/ // Pro Quiz Data $pro_quiz_id = learndash_get_setting( $quiz_id, 'quiz_pro' ); $ref_ids = $wpdb->get_col( $wpdb->prepare( 'SELECT statistic_ref_id FROM ' . LDLMS_DB::get_table_name( 'quiz_statistic_ref' ) . " WHERE user_id = '%d' AND quiz_id = '%d' ", $user_id, $pro_quiz_id ) ); if ( ! empty( $ref_ids[0] ) ) { $wpdb->delete( LDLMS_DB::get_table_name( 'quiz_statistic_ref' ), array( 'user_id' => $user_id, 'quiz_id' => $pro_quiz_id, ) ); $wpdb->query( 'DELETE FROM ' . LDLMS_DB::get_table_name( 'quiz_statistic' ) . ' WHERE statistic_ref_id IN (' . implode( ',', $ref_ids ) . ')' ); } // $wpdb->query("DELETE FROM ".$wpdb->usermeta." WHERE meta_key LIKE 'completed_%' AND user_id = '".$user->ID."'"); $wpdb->delete( LDLMS_DB::get_table_name( 'quiz_toplist' ), array( 'user_id' => $user_id, 'quiz_id' => $pro_quiz_id, ) ); } function learndash_quiz_remove_user_statistics_by_ref( $ref_id = 0 ) { global $wpdb; if ( ! empty( $ref_id ) ) { $wpdb->delete( LDLMS_DB::get_table_name( 'quiz_statistic_ref' ), array( 'statistic_ref_id' => $ref_id ) ); $wpdb->query( 'DELETE FROM ' . LDLMS_DB::get_table_name( 'quiz_statistic' ) . ' WHERE statistic_ref_id =' . $ref_id ); } } function learndash_quiz_remove_user_toplist( $user_id = 0, $quiz_time = 0, $pro_quizid = 0) { global $wpdb; if ( ( ! empty( $user_id ) ) && ( ! empty( $quiz_time ) ) && ( ! empty( $pro_quizid ) ) ) { return $wpdb->delete( LDLMS_DB::get_table_name( 'quiz_toplist' ), array( 'user_id' => $user_id, 'date' => $quiz_time, 'quiz_id' => $pro_quizid, ), array( '%d', '%d', '%d' ) ); } } // Used to set a Course step ( Lesson or Topic only ) back to NOT complete status function learndash_process_mark_incomplete( $user_id = 0, $course_id = 0, $step_id = 0, $step_complete = false ) { if ( empty( $user_id ) ) { return; } if ( empty( $course_id ) ) { return; } // Ensure the course is not completed // $course_status = learndash_course_status( $course_id, $user_id ); // if ( $course_status == esc_html__( 'Completed', 'learndash' ) ) { // return; // } if ( empty( $step_id ) ) { global $post; if ( ( isset( $post ) ) && ( $post instanceof WP_Post ) && ( ( in_array( $post->post_type, array( 'sfwd-lessons', 'sfwd-topic', 'sfwd-quiz' ) ) ) ) ) { $step_id = $post->ID; } else { return; } } $subtracted_completed_steps = 0; $course_step_parents = learndash_course_get_all_parent_step_ids( $course_id, $step_id ); $user_course_progress = get_user_meta( $user_id, '_sfwd-course_progress', true ); $step_post_type = get_post_type( $step_id ); if ( $step_post_type === 'sfwd-quiz' ) { if ( ! empty( $course_step_parents ) ) { if ( ( sizeof( $course_step_parents ) == 2 ) && ( 'sfwd-lessons' == get_post_type( $course_step_parents[0] ) ) && ( 'sfwd-topic' == get_post_type( $course_step_parents[1] ) ) ) { $lesson_id = $course_step_parents[0]; $topic_id = $course_step_parents[1]; if ( ( isset( $user_course_progress[ $course_id ]['topics'][ $lesson_id ][ $topic_id ] ) ) && ( $user_course_progress[ $course_id ]['topics'][ $lesson_id ][ $topic_id ] == true ) ) { $user_course_progress[ $course_id ]['topics'][ $lesson_id ][ $topic_id ] = 0; $user_course_progress[ $course_id ]['completed'] -= 1; do_action( 'learndash_mark_incomplete_process', $user_id, $course_id, $topic_id ); $topic_args = array( 'course_id' => $course_id, 'user_id' => $user_id, 'post_id' => $topic_id, 'activity_type' => 'topic', ); $topic_activity = learndash_get_user_activity( $topic_args ); if ( $topic_activity ) { $topic_activity = (array) $topic_activity; $topic_activity['activity_status'] = false; $topic_activity['activity_completed'] = false; learndash_update_user_activity( $topic_activity ); } } if ( ( isset( $user_course_progress[ $course_id ]['lessons'][ $lesson_id ] ) ) && ( $user_course_progress[ $course_id ]['lessons'][ $lesson_id ] == true ) ) { $user_course_progress[ $course_id ]['lessons'][ $lesson_id ] = 0; $user_course_progress[ $course_id ]['completed'] -= 1; do_action( 'learndash_mark_incomplete_process', $user_id, $course_id, $lesson_id ); $lesson_args = array( 'course_id' => $course_id, 'user_id' => $user_id, 'post_id' => $lesson_id, 'activity_type' => 'lesson', ); $lesson_activity = learndash_get_user_activity( $lesson_args ); if ( $lesson_args ) { $lesson_args = (array) $lesson_args; $lesson_args['activity_status'] = false; $lesson_args['activity_completed'] = false; learndash_update_user_activity( $lesson_args ); } } } elseif ( ( sizeof( $course_step_parents ) == 1 ) && ( 'sfwd-lessons' == get_post_type( $course_step_parents[0] ) ) ) { $lesson_id = $course_step_parents[0]; if ( ( isset( $user_course_progress[ $course_id ]['lessons'][ $lesson_id ] ) ) && ( $user_course_progress[ $course_id ]['lessons'][ $lesson_id ] == true ) ) { $user_course_progress[ $course_id ]['lessons'][ $lesson_id ] = 0; $user_course_progress[ $course_id ]['completed'] -= 1; do_action( 'learndash_mark_incomplete_process', $user_id, $course_id, $lesson_id ); $lesson_args = array( 'course_id' => $course_id, 'user_id' => $user_id, 'post_id' => $lesson_id, 'activity_type' => 'lesson', ); $lesson_activity = learndash_get_user_activity( $lesson_args ); if ( $lesson_args ) { $lesson_args = (array) $lesson_args; $lesson_args['activity_status'] = false; $lesson_args['activity_completed'] = false; learndash_update_user_activity( $lesson_args ); } } } } } elseif ( $step_post_type === 'sfwd-topic' ) { $step_parent_id = learndash_course_get_single_parent_step( $course_id, $step_id ); if ( ! empty( $step_parent_id ) ) { if ( ( isset( $user_course_progress[ $course_id ]['topics'][ $step_parent_id ][ $step_id ] ) ) && ( $user_course_progress[ $course_id ]['topics'][ $step_parent_id ][ $step_id ] == true ) ) { $user_course_progress[ $course_id ]['topics'][ $step_parent_id ][ $step_id ] = 0; $user_course_progress[ $course_id ]['completed'] -= 1; do_action( 'learndash_mark_incomplete_process', $user_id, $course_id, $topic_id ); $topic_args = array( 'course_id' => $course_id, 'user_id' => $user_id, 'post_id' => $step_id, 'activity_type' => 'topic', ); $topic_activity = learndash_get_user_activity( $topic_args ); if ( $topic_activity ) { $topic_activity = (array) $topic_activity; $topic_activity['activity_status'] = false; $topic_activity['activity_completed'] = false; learndash_update_user_activity( $topic_activity ); } } if ( ( isset( $user_course_progress[ $course_id ]['lessons'][ $step_parent_id ] ) ) && ( $user_course_progress[ $course_id ]['lessons'][ $step_parent_id ] == true ) ) { $user_course_progress[ $course_id ]['lessons'][ $step_parent_id ] = 0; $user_course_progress[ $course_id ]['completed'] -= 1; do_action( 'learndash_mark_incomplete_process', $user_id, $course_id, $step_parent_id ); $lesson_args = array( 'course_id' => $course_id, 'user_id' => $user_id, 'post_id' => $step_parent_id, 'activity_type' => 'topic', ); $lesson_activity = learndash_get_user_activity( $lesson_args ); if ( $lesson_args ) { $lesson_args = (array) $lesson_args; $lesson_args['activity_status'] = false; $lesson_args['activity_completed'] = false; learndash_update_user_activity( $lesson_args ); } } } } elseif ( $step_post_type === 'sfwd-lessons' ) { if ( ( isset( $user_course_progress[ $course_id ]['lessons'][ $step_id ] ) ) && ( $user_course_progress[ $course_id ]['lessons'][ $step_id ] == true ) ) { $user_course_progress[ $course_id ]['lessons'][ $step_id ] = 0; $user_course_progress[ $course_id ]['completed'] -= 1; do_action( 'learndash_mark_incomplete_process', $user_id, $course_id, $step_id ); $lesson_args = array( 'course_id' => $course_id, 'user_id' => $user_id, 'post_id' => $step_id, 'activity_type' => 'lesson', ); $lesson_activity = learndash_get_user_activity( $lesson_args ); if ( $lesson_args ) { $lesson_args = (array) $lesson_args; $lesson_args['activity_status'] = false; $lesson_args['activity_completed'] = false; learndash_update_user_activity( $lesson_args ); } } } $user_course_progress[ $course_id ]['completed'] = absint( $user_course_progress[ $course_id ]['completed'] ); $user_course_progress[ $course_id ]['total'] = absint( $user_course_progress[ $course_id ]['total'] ); if ( $user_course_progress[ $course_id ]['completed'] !== $user_course_progress[ $course_id ]['total'] ) { delete_user_meta( $user_id, 'course_completed_' . $course_id ); do_action( 'learndash_mark_incomplete_process', $user_id, $course_id, $course_id ); $course_args = array( 'course_id' => $course_id, 'user_id' => $user_id, 'post_id' => $course_id, 'activity_type' => 'course', ); $course_activity = learndash_get_user_activity( $course_args ); if ( $course_args ) { $course_args = (array) $course_args; $course_args['activity_status'] = false; $course_args['activity_completed'] = false; learndash_update_user_activity( $course_args ); } } return update_user_meta( $user_id, '_sfwd-course_progress', $user_course_progress ); } /** * Utility function to retreive a specific user quiz meta attempt. * * @param $args array of items to match. * * @since 2.5 */ function learndash_get_user_quiz_attempt( $user_id = 0, $args = array() ) { if ( ( ! empty( $user_id ) ) && ( ! empty( $args ) ) ) { $user_quizzes = get_user_meta( $user_id, '_sfwd-quizzes', true ); if ( ! empty( $user_quizzes ) ) { foreach ( $user_quizzes as $idx => $user_quiz ) { foreach ( $args as $arg_key => $arg_val ) { if ( ( ! isset( $user_quiz[ $arg_key ] ) ) || ( $user_quiz[ $arg_key ] != $arg_val ) ) { unset( $user_quizzes[ $idx ] ); } } } } return $user_quizzes; } } function learndash_remove_user_quiz_attempt( $user_id = 0, $args = array() ) { if ( ( ! empty( $user_id ) ) && ( ! empty( $args ) ) ) { $CHANGES = false; $user_quizzes = get_user_meta( $user_id, '_sfwd-quizzes', true ); if ( ! empty( $user_quizzes ) ) { $changed_user_quizzes = array(); foreach ( $user_quizzes as $idx => $user_quiz ) { $MATCH_FOUND = true; foreach ( $args as $arg_key => $arg_val ) { if ( ( ! isset( $user_quiz[ $arg_key ] ) ) || ( $user_quiz[ $arg_key ] != $arg_val ) ) { $MATCH_FOUND = false; break; } } if ( $MATCH_FOUND === true ) { if ( ( isset( $user_quiz['time'] ) ) && ( ! empty( $user_quiz['time'] ) ) ) { if ( ( isset( $user_quiz['pro_quizid'] ) ) && ( ! empty( $user_quiz['pro_quizid'] ) ) ) { learndash_quiz_remove_user_toplist( $user_id, $user_quiz['time'], $user_quiz['pro_quizid'] ); } } // If we have a statistics reference we need to remove this set of records. if ( ( isset( $user_quiz['statistic_ref_id'] ) ) && ( ! empty( $user_quiz['statistic_ref_id'] ) ) ) { learndash_quiz_remove_user_statistics_by_ref( $user_quiz['statistic_ref_id'] ); } if ( ( ! isset( $user_quiz['course'] ) ) || ( empty( $user_quiz['course'] ) ) ) { $user_quiz['course'] = learndash_get_course_id( $user_quiz['quiz'] ); } // If this quiz has graded items they all need to be moved to trash or deleted. if ( ( isset( $user_quiz['graded'] ) ) && ( ! empty( $user_quiz['graded'] ) ) ) { foreach ( $user_quiz['graded'] as $question_id => $graded_set ) { if ( ( isset( $graded_set['post_id'] ) ) && ( ! empty( $graded_set['post_id'] ) ) ) { wp_delete_post( $graded_set['post_id'], true ); } } } // Remove the user activity record. $quiz_args = array( 'course_id' => $user_quiz['course'], 'user_id' => $user_id, 'post_id' => $user_quiz['quiz'], 'activity_type' => 'quiz', 'activity_completed' => $user_quiz['completed'], ); $quiz_activity = learndash_get_user_activity( $quiz_args ); if ( ! empty( $quiz_activity ) ) { learndash_delete_user_activity( $quiz_activity->activity_id ); } $changed_user_quizzes[] = $user_quiz; unset( $user_quizzes[ $idx ] ); $CHANGES = true; } } if ( true === $CHANGES ) { // If not empty then we reset the keys. if ( ! empty( $user_quizzes ) ) { $user_quizzes = array_values( $user_quizzes ); } update_user_meta( $user_id, '_sfwd-quizzes', $user_quizzes ); if ( ! empty( $changed_user_quizzes ) ) { foreach ( $changed_user_quizzes as $user_quiz ) { if ( ! learndash_is_quiz_complete( $user_id, $user_quiz['quiz'], $user_quiz['course'] ) ) { learndash_process_mark_incomplete( $user_id, $user_quiz['course'], $user_quiz['quiz'], false ); } learndash_process_mark_complete( $user_id, $user_quiz['quiz'], false, $user_quiz['course'] ); } } } } return $user_quizzes; } } /** * Output HTML output to mark a step incomplete * * Must meet requirements of course * * @since 2.1.0 * * @param object $post WP_Post lesson, topic. * @return string HTML output to mark course complete */ function learndash_show_mark_incomplete( $post, $atts = array() ) { if ( ( ! defined( 'LEARNDASH_SHOW_MARK_INCOMPLETE' ) ) || ( true !== LEARNDASH_SHOW_MARK_INCOMPLETE ) ) { return ''; } if ( ! is_user_logged_in() ) { return ''; } $user_id = get_current_user_id(); $course_id = learndash_get_course_id( $post->ID ); if ( ! apply_filters( 'learndash_show_mark_incomplete_form', true, $course_id, $post, $atts ) ) { return ''; } $atts = apply_filters( 'learndash_mark_incomplete_form_atts', $atts, $post ); if ( isset( $atts['form']['id'] ) ) { $form_id = ' id="' . esc_attr( $atts['form']['id'] ) . '" '; } else { $form_id = ''; } if ( isset( $atts['form']['class'] ) ) { $form_class = ' class="sfwd-mark-incomplete sfwd-mark-complete ' . esc_attr( $atts['form']['class'] ) . '" '; } else { $form_class = ' class="sfwd-mark-incomplete sfwd-mark-complete" '; } if ( isset( $atts['button']['id'] ) ) { $button_id = ' id="' . esc_attr( $atts['button']['id'] ) . '" '; } else { $button_id = ''; } $button_disabled = ''; if ( isset( $atts['button']['class'] ) ) { $button_class = ' class="learndash_mark_incomplete_button learndash_mark_complete_button ' . esc_attr( $atts['button']['class'] ) . '" '; } else { $button_class = ' class="learndash_mark_incomplete_button learndash_mark_complete_button" '; } $button_label = LearnDash_Custom_Label::get_label( 'button_mark_incomplete' ); if ( empty( $button_label ) ) { $button_label = 'Mark Incomplete'; } $form_fields = ' '; /** * Allow the outside world to filter the form fields. * * @since 3.0 * @param string $form_fields. * @param object $post WP_Post object being displayed. */ $form_fields = apply_filters( 'learndash_mark_complete_form_fields', $form_fields, $post ); $return = '
      ' . $form_fields . '
      '; return $return; } /** * Process request to mark a course or step incomplete * * @since 2.1.0 * * @param int $post WP_Post object. */ function learndash_mark_incomplete_process( $post = null ) { // This is wrong. This function hooks into the 'wp' action. That action doesn't pass a post object or post_id. // The $post object set here is not even used. We only need the _POST[post] (post_id) variable from the form. if ( empty( $post ) ) { global $post; } if ( ( isset( $_POST['sfwd_mark_incomplete'] ) ) && ( ! empty( $_POST['sfwd_mark_incomplete'] ) ) && ( isset( $_POST['post'] ) ) && ( ! empty( $_POST['post'] ) ) ) { if ( empty( $post ) || empty( $post->ID ) ) { $post = get_post(); if ( empty( $post ) || empty( $post->ID ) ) { return; } } $post_id = intval( $_POST['post'] ); if ( isset( $_POST['course_id'] ) ) { $course_id = intval( $_POST['course_id'] ); } else { $course_id = learndash_get_course_id( $post_id ); } if ( isset( $_POST['userid'] ) ) { $user_id = intval( $_POST['userid'] ); } else { if ( ! is_user_logged_in() ) { return; } $user_id = get_current_user_id(); } /** * Verify the form is valid * * @since 2.2.1.2 */ if ( ! wp_verify_nonce( $_POST['sfwd_mark_incomplete'], 'sfwd_mark_incomplete_' . $user_id . '_' . $post_id ) ) { return; } $return = learndash_process_mark_incomplete( $user_id, $course_id, $post_id, false ); } } add_action( 'wp', 'learndash_mark_incomplete_process' ); PKc\8x8x#includes/course/ld-course-video.phpnuW+A false, 'videos_found_type' => false, 'videos_auto_start' => false, 'videos_show_controls' => false, 'videos_auto_complete' => true, 'videos_auto_complete_delay' => 0, 'videos_auto_complete_delay_message' => '', 'videos_hide_complete_button' => false, 'videos_shown' => false, 'video_debug' => false, ); private $video_content = ''; function __construct() { add_action( 'wp_footer', array( $this, 'action_wp_footer' ), 1 ); add_filter( 'learndash_post_args', array( $this, 'filter_post_args' ) ); add_filter( 'learndash_process_mark_complete', array( $this, 'process_mark_complete' ), 99, 3 ); add_action( 'save_post', array( $this, 'save_post_data') ); } public static function get_instance() { if ( null === self::$instance ) { self::$instance = new static(); } return self::$instance; } function filter_post_args( $post_args = array() ) { if ( isset( $post_args['sfwd-lessons']['fields'] ) ) { $post_args['sfwd-lessons']['fields'] = array_merge( $post_args['sfwd-lessons']['fields'], array( 'lesson_video_enabled' => array( 'name' => esc_html__( 'Enable Video Progression', 'learndash' ), 'type' => 'checkbox', 'help_text' => esc_html__( 'Check this if you want to show a video as part of the progression.', 'learndash' ), 'default' => 0, ), 'lesson_video_url' => array( 'name' => esc_html__( 'Video URL', 'learndash' ), 'type' => 'text', 'help_text' => sprintf( esc_html_x( 'URL to video. The video will be added above the %s content. Use the shortcode %s to position the player within content. Supported URL formats are YouTube (youtu.be, youtube.com), Vimeo (vimeo.com), Wistia (wistia.com), or Local videos. The value for this field can be a simple URL to the video, an iframe or either [video] or [embed] shortcodes.', 'placeholder: Lesson, admin URL to [ld_video] shortcode.', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ), '[ld_video]' ), 'default' => '', ), 'lesson_video_auto_start' => array( 'name' => esc_html__( 'Auto Start Video', 'learndash' ), 'type' => 'checkbox', 'help_text' => esc_html__( 'Check this if you want the video to auto-start on page load.', 'learndash' ), 'default' => 0, ), 'lesson_video_show_controls' => array( 'name' => esc_html__( 'Show Video Controls', 'learndash' ), 'type' => 'checkbox', 'help_text' => esc_html__( 'Show Video Controls. By default controls are disabled. Only used for YouTube and local videos.', 'learndash' ), 'default' => 0, ), 'lesson_video_shown' => array( 'name' => esc_html__( 'When to show video', 'learndash' ), 'type' => 'select', 'initial_options' => array( 'BEFORE' => esc_html__( 'Before (default) - Video is shown before completing sub-steps', 'learndash' ), 'AFTER' => esc_html__( 'After - Video is shown after completing sub-steps', 'learndash' ), ), 'default' => 'BEFORE', 'help_text' => esc_html__( 'Select when to show video in relation to sub-steps.', 'learndash' ) ), 'lesson_video_auto_complete' => array( 'name' => sprintf( esc_html_x( 'Auto Complete %s', 'placeholder: Lesson', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'type' => 'checkbox', 'help_text' => sprintf( esc_html_x( 'Check this if you want the %s to auto-complete after the video completes.', 'placeholder: Lesson', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ), 'default' => 0, ), 'lesson_video_auto_complete_delay' => array( 'name' => esc_html__( 'Auto Complete Delay', 'learndash' ), 'type' => 'number', 'class' => 'small-text', 'min' => '0', 'help_text' => esc_html__( 'Time delay in second between the time the video finishes and the auto complete occurs. Example 0 no delay, 5 for five seconds.', 'learndash' ), 'default' => 0, ), 'lesson_video_hide_complete_button' => array( 'name' => esc_html__( 'Hide Complete Button', 'learndash' ), 'type' => 'checkbox', 'help_text' => esc_html__( 'Check this to hide the complete button.', 'learndash' ), 'default' => 0, ), ) ); } if ( isset( $post_args['sfwd-topic']['fields'] ) ) { $post_args['sfwd-topic']['fields'] = array_merge( $post_args['sfwd-topic']['fields'], array( 'lesson_video_enabled' => array( 'name' => esc_html__( 'Enable Video Progression', 'learndash' ), 'type' => 'checkbox', 'help_text' => esc_html__( 'Check this if you want to show a video as part of the progression.', 'learndash' ), 'default' => 0, ), 'lesson_video_url' => array( 'name' => esc_html__( 'Video URL', 'learndash' ), 'type' => 'text', 'help_text' => sprintf( esc_html_x( 'URL to video. The video will be added above the %s content. Use the shortcode %s to position the player within content. Supported URL formats are YouTube (youtu.be, youtube.com), Vimeo (vimeo.com), Wistia (wistia.com), or Local videos. The value for this field can be a simple URL to the video, an iframe or either [video] or [embed] shortcodes.', 'placeholder: Topic, admin URL to [ld_video] shortcode.', 'learndash' ), LearnDash_Custom_Label::get_label( 'topic' ), '[ld_video]' ), 'default' => '', ), 'lesson_video_auto_start' => array( 'name' => esc_html__( 'Auto Start Video', 'learndash' ), 'type' => 'checkbox', 'help_text' => esc_html__( 'Check this if you want the video to auto-start on page load.', 'learndash' ), 'default' => 0, ), 'lesson_video_show_controls' => array( 'name' => esc_html__( 'Show Video Controls', 'learndash' ), 'type' => 'checkbox', 'help_text' => esc_html__( 'Show Video Controls. By default controls are disabled. Only used for YouTube and local videos.', 'learndash' ), 'default' => 0, ), 'lesson_video_shown' => array( 'name' => esc_html__( 'When to show video', 'learndash' ), 'type' => 'select', 'initial_options' => array( 'AFTER' => esc_html__( 'After (default) - Video is shown after completing sub-steps', 'learndash' ), 'BEFORE' => esc_html__( 'Before - Video is shown before completing sub-steps', 'learndash' ), ), 'default' => '', 'help_text' => esc_html__( 'Select when to show video in relation to sub-steps.', 'learndash' ) ), 'lesson_video_auto_complete' => array( 'name' => sprintf( esc_html_x( 'Auto Complete %s', 'placeholder: Topic', 'learndash' ), LearnDash_Custom_Label::get_label( 'topic' ) ), 'type' => 'checkbox', 'help_text' => sprintf( esc_html_x( 'Check this if you want the %s to auto-complete after the video completes.', 'placeholder: Topic', 'learndash' ), LearnDash_Custom_Label::get_label( 'topic' ) ), 'default' => 0, ), 'lesson_video_auto_complete_delay' => array( 'name' => esc_html__( 'Auto Complete Delay', 'learndash' ), 'type' => 'number', 'class' => 'small-text', 'min' => '0', 'help_text' => esc_html__( 'Time delay in second between the time the video finishes and the auto complete occurs. Example 0 no delay, 5 for five seconds.', 'learndash' ), 'default' => 0, ), 'lesson_video_hide_complete_button' => array( 'name' => esc_html__( 'Hide Complete Button', 'learndash' ), 'type' => 'checkbox', 'help_text' => esc_html__( 'Check this to hide the complete button.', 'learndash' ), 'default' => 0, ), ) ); } return $post_args; } function add_video_to_content( $content = '', $post, $settings = array() ) { if ( is_user_logged_in() ) { $user_id = get_current_user_id(); } else { $user_id = 0; } // Do we show the video. In some cases we do. But in others like when the setting is to show AFTER completing other steps then we set to false. $show_video = false; // In the initial flow we do apply the video restiction logic. But then in other if the user is an admin or the student has completed the lesson // we don't apply the video logic. $logic_video = false; if ( ( isset( $settings['lesson_video_enabled'] ) ) && ( $settings['lesson_video_enabled'] == 'on' ) ) { if ( ( isset( $settings['lesson_video_url'] ) ) && ( !empty( $settings['lesson_video_url'] ) ) ) { // Because some copy/paste can result in leading whitespace. LEARNDASH-3819 $settings['lesson_video_url'] = trim( $settings['lesson_video_url'] ); $settings['lesson_video_url'] = html_entity_decode( $settings['lesson_video_url'] ); // Just to ensure the proper settings are available if ( ( !isset( $settings['lesson_video_shown'] ) ) || ( empty( $settings['lesson_video_shown'] ) ) ) { $settings['lesson_video_shown'] = 'BEFORE'; } $bypass_course_limits_admin_users = false; if ( !empty( $user_id ) ) { if ( learndash_is_admin_user( $user_id ) ) { $bypass_course_limits_admin_users = LearnDash_Settings_Section::get_section_setting('LearnDash_Settings _Section_General_Admin_User', 'bypass_course_limits_admin_users' ); if ( $bypass_course_limits_admin_users == 'yes' ) $bypass_course_limits_admin_users = true; else $bypass_course_limits_admin_users = false; } else { $bypass_course_limits_admin_users = false; } // For logged in users to allow an override filter. $bypass_course_limits_admin_users = apply_filters( 'learndash_prerequities_bypass', $bypass_course_limits_admin_users, $user_id, $post->ID, $post ); } if ( !$bypass_course_limits_admin_users ) { if ( $post->post_type == 'sfwd-lessons' ) { $progress = learndash_get_course_progress( null, $post->ID ); if ( ( !empty( $progress['this'] ) ) && ( $progress['this'] instanceof WP_Post ) && ( $progress['this']->completed == true ) ) { // The student has completes this step so we show the video but don't apply the logic $show_video = true; $logic_video = false; } else { if ( $settings['lesson_video_shown'] == 'BEFORE' ) { $show_video = true; $logic_video = true; $topics = learndash_get_topic_list( $post->ID ); if ( !empty( $topics ) ) { $progress = learndash_get_course_progress( null, $topics[0]->ID ); if ( !empty( $progress ) ) { $topics_completed = 0; foreach ( $progress['posts'] as $topic ) { if ( $topic->completed == true ) { $topics_completed += 1; break; } } if ( !empty( $topics_completed ) ) { $logic_video = false; } } } } else if ( $settings['lesson_video_shown'] == 'AFTER' ) { if ( learndash_lesson_topics_completed( $post->ID ) ) { $quizzes_completed = true; $lesson_quizzes_list = learndash_get_lesson_quiz_list( $post->ID ); if ( !empty( $lesson_quizzes_list ) ) { foreach( $lesson_quizzes_list as $quiz ) { if ( $quiz['status'] != 'completed') { $quizzes_completed = false; break; } } } if ( $quizzes_completed == true ) { $show_video = true; $logic_video = true; } } else { $show_video = false; $logic_video = false; } } } } else if ( $post->post_type == 'sfwd-topic' ) { $progress = learndash_get_course_progress( null, $post->ID ); if ( ( !empty( $progress['this'] ) ) && ( $progress['this'] instanceof WP_Post ) && ( $progress['this']->completed == true ) ) { // The student has completes this step so we show the video but don't apply the logic $show_video = true; $logic_video = false; } else { if ( $settings['lesson_video_shown'] == 'BEFORE' ) { $show_video = true; $logic_video = true; } else if ( $settings['lesson_video_shown'] == 'AFTER' ) { $quizzes_completed = true; $lesson_quizzes_list = learndash_get_lesson_quiz_list( $post->ID ); if ( !empty( $lesson_quizzes_list ) ) { foreach( $lesson_quizzes_list as $quiz ) { if ( $quiz['status'] != 'completed') { $quizzes_completed = false; break; } } } if ( $quizzes_completed == true ) { $show_video = true; $logic_video = true; } } else { $show_video = false; $logic_video = false; } } /* // Lessons are always 'BEFORE' $settings['lesson_video_shown'] = 'AFTER'; $progress = learndash_get_course_progress( null, $post->ID ); if ( ! empty( $progress['this']->completed ) ) { $show_video = true; $logic_video = false; } else { // are we the first item in the list. No prev if ( ( empty( $progress['prev'] ) ) && ( $progress['this']->ID == $progress['posts'][0]->ID ) ) { $show_video = true; $logic_video = true; // Should not be here. } else if ( ( ! empty( $progress['prev'] ) ) && ( $progress['prev']->completed == true ) ) { $show_video = true; $logic_video = true; } } */ } } else { $progress = learndash_get_course_progress( null, $post->ID ); if ( ! empty( $progress['this']->completed ) ) { //return str_replace( '[ld_video]', '', $content ); $show_video = true; $logic_video = false; } } if ( $show_video == true ) { if ( ( isset( $settings['lesson_video_shown'] ) ) && ( !empty( $settings['lesson_video_shown'] ) ) ) { $this->video_data['videos_shown'] = $settings['lesson_video_shown']; } else { $this->video_data['videos_shown'] = 'AFTER'; } if (( strpos( $settings['lesson_video_url'], 'youtu.be' ) !== false ) || ( strpos( $settings['lesson_video_url'], 'youtube.com' ) !== false )) { $this->video_data['videos_found_provider'] = 'youtube'; } else if ( strpos( $settings['lesson_video_url'], 'vimeo.com' ) !== false ) { $this->video_data['videos_found_provider'] = 'vimeo'; } else if ( ( strpos( $settings['lesson_video_url'], 'wistia.com' ) !== false ) || ( strpos( $settings['lesson_video_url'], 'wistia.net' ) !== false ) ) { $this->video_data['videos_found_provider'] = 'wistia'; } else if ( strpos( $settings['lesson_video_url'], 'amazonaws.com' ) !== false ) { $this->video_data['videos_found_provider'] = 'local'; } else if ( strpos( $settings['lesson_video_url'], 'vooplayer' ) !== false ) { $this->video_data['videos_found_provider'] = 'vooplayer'; } else if ( strpos( $settings['lesson_video_url'], trailingslashit( get_home_url() ) ) !== false ) { $this->video_data['videos_found_provider'] = 'local'; } else { $this->video_data['videos_found_provider'] = apply_filters('ld_video_provider', '', $settings ); } if ( ( substr( $settings['lesson_video_url'], 0, strlen('http://') ) == 'http://' ) || ( substr( $settings['lesson_video_url'], 0, strlen('https://') ) == 'https://' ) ) { if ( $this->video_data['videos_found_provider'] == 'local' ) { $this->video_data['videos_found_type'] = 'video_shortcode'; $settings['lesson_video_url'] = '[video src="'. $settings['lesson_video_url'] .'"][/video]'; } else if ( ( $this->video_data['videos_found_provider'] == 'youtube' ) || ( $this->video_data['videos_found_provider'] == 'vimeo' ) ) { $this->video_data['videos_found_type'] = 'embed_shortcode'; $settings['lesson_video_url'] = '[embed]'. $settings['lesson_video_url'] .'[/embed]'; } else if ( $this->video_data['videos_found_provider'] == 'wistia' ) { $this->video_data['videos_found_type'] = 'embed_shortcode'; $settings['lesson_video_url'] = '[embed]'. $settings['lesson_video_url'] .'[/embed]'; } } else if ( substr( $settings['lesson_video_url'], 0, strlen('[embed') ) == '[embed' ) { $this->video_data['videos_found_type'] = 'embed_shortcode'; } else if ( substr( $settings['lesson_video_url'], 0, strlen('[video') ) == '[video' ) { $this->video_data['videos_found_type'] = 'video_shortcode'; } else if ( substr( $settings['lesson_video_url'], 0, strlen('video_data['videos_found_type'] = 'iframe'; } else { if ( $this->video_data['videos_found_provider'] == 'vooplayer' ) { if ( substr( $settings['lesson_video_url'], 0, strlen('[vooplayer') ) == '[vooplayer' ) { $this->video_data['videos_found_type'] = 'vooplayer_shortcode'; } else { $this->video_data['videos_found_type'] = 'iframe'; } } } if ( ( $this->video_data['videos_found_provider'] !== false ) && ( $this->video_data['videos_found_type'] !== false ) ) { if ( $this->video_data['videos_found_provider'] == 'local' ) { if ( $this->video_data['videos_found_type'] == 'video_url' ) { //$this->video_content = wp_video_shortcode( // apply_filters( // 'ld_video_shortcode_args', // array( // 'src' => $settings['lesson_video_url'], // ), // $post->ID, $settings // ) //); } else if ( $this->video_data['videos_found_type'] == 'embed_shortcode' ) { global $wp_embed; $video_content = $wp_embed->run_shortcode( $settings['lesson_video_url'] ); $this->video_content = do_shortcode( $video_content ); } else if ( $this->video_data['videos_found_type'] == 'video_shortcode' ) { $this->video_content = do_shortcode( $settings['lesson_video_url'] ); } else if ( $this->video_data['videos_found_type'] == 'iframe' ) { $this->video_content = $settings['lesson_video_url']; } } else if ( ( $this->video_data['videos_found_provider'] == 'youtube' ) || ( $this->video_data['videos_found_provider'] == 'vimeo' ) || ( $this->video_data['videos_found_provider'] == 'wistia' ) ) { //$this->video_content = wp_oembed_get( $settings['lesson_video_url'], apply_filters( 'learndash_video_oembed_args', array(), $settings['lesson_video_url'], $post->ID, $settings ) ); if ( $this->video_data['videos_found_type'] == 'embed_shortcode' ) { global $wp_embed; $this->video_content = $wp_embed->run_shortcode( $settings['lesson_video_url'] ); } else if ( $this->video_data['videos_found_type'] == 'video_shortcode' ) { $this->video_content = do_shortcode( $settings['lesson_video_url'] ); } else if ( $this->video_data['videos_found_type'] == 'iframe' ) { $this->video_content = $settings['lesson_video_url']; } } else if ( $this->video_data['videos_found_provider'] == 'vooplayer' ) { if ( $this->video_data['videos_found_type'] == 'vooplayer_shortcode' ) { $this->video_content = do_shortcode( $settings['lesson_video_url'] ); } else if ( $this->video_data['videos_found_type'] == 'iframe' ) { //if ( strpos( $settings['lesson_video_url'], '' ) === false ) { // $settings['lesson_video_url'] = '' . $settings['lesson_video_url']; //} $this->video_content = $settings['lesson_video_url']; } } if ( !empty( $this->video_content ) ) { if ( $logic_video ) { if (( isset( $settings['lesson_video_show_controls'] ) ) && ( $settings['lesson_video_show_controls'] == 'on' )) { $this->video_data['videos_show_controls'] = 1; } else { $this->video_data['videos_show_controls'] = 0; } if (( isset( $settings['lesson_video_auto_start'] ) ) && ( $settings['lesson_video_auto_start'] == 'on' )) { $this->video_data['videos_auto_start'] = 1; } else { $this->video_data['videos_auto_start'] = 0; } $video_preg_pattern = ''; if ( strstr( $this->video_content, ' src="' ) ) { $video_preg_pattern = '/<\/iframe>/isU'; } else if ( strstr( $this->video_content, " src='" ) ) { $video_preg_pattern = "/<\/iframe>/isU"; } if ( ! empty( $video_preg_pattern ) ) { preg_match( $video_preg_pattern, $this->video_content, $matches ); if ( ( is_array( $matches ) ) && ( isset( $matches[1] ) ) && ( !empty( $matches[1] ) ) ) { // Next we need to check if the video is YouTube, Vimeo, etc. so we check the matches[1] if ( $this->video_data['videos_found_provider'] == 'youtube' ) { $ld_video_params = apply_filters( 'ld_video_params', array( 'controls' => $this->video_data['videos_show_controls'], 'autoplay' => $this->video_data['videos_auto_start'], 'modestbranding' => 1, 'showinfo' => 0, 'rel' => 0 ), 'youtube', $this->video_content, $post, $settings ); // Regardless of the filter we set this param because we need it! $ld_video_params['enablejsapi'] = '1'; $matches_1_new = add_query_arg( $ld_video_params, $matches[1] ); $this->video_content = str_replace( $matches[1], $matches_1_new, $this->video_content ); //$this->video_content = str_replace('

      rss_sell_posts ) { esc_html_e( 'Something went wrong connecting to www.learndash.com. Please reload the page.', 'learndash' ); } else { echo ''; } ?>

      rss_tips_posts ) { esc_html_e( 'Something went wrong connecting to www.learndash.com. Please reload the page.', 'learndash' ); } else { echo ''; } ?>

      rss_announcements_posts ) { esc_html_e( 'Something went wrong connecting to www.learndash.com. Please reload the page.', 'learndash' ); } else { echo ''; } ?>

      parent_menu_page_url = 'admin.php?page=learndash_lms_settings'; $this->menu_page_capability = LEARNDASH_ADMIN_CAPABILITY_CHECK; $this->settings_page_id = 'learndash_lms_settings_custom_labels'; $this->settings_page_title = esc_html__( 'Custom Labels', 'learndash' ); $this->settings_tab_title = $this->settings_page_title; $this->settings_tab_priority = 20; $this->show_quick_links_meta = false; parent::__construct(); } } } add_action( 'learndash_settings_pages_init', function() { LearnDash_Settings_Page_Custom_Labels::add_page_instance(); } ); PKd\AźKincludes/settings/settings-pages/class-ld-settings-page-quizzes-options.phpnuW+Aparent_menu_page_url = 'edit.php?post_type=sfwd-quiz'; $this->menu_page_capability = LEARNDASH_ADMIN_CAPABILITY_CHECK; $this->settings_page_id = 'quizzes-options'; $this->settings_tab_priority = 10; $this->settings_page_title = esc_html_x( 'Settings', 'Quiz Settings', 'learndash' ); $this->show_submit_meta = true; $this->show_quick_links_meta = true; parent::__construct(); } /** * Action hook to handle admin_tabs processing from LearnDash. * * @param string $admin_menu_section Current admin menu section. */ public function admin_tabs( $admin_menu_section ) { if ( ( $admin_menu_section === $this->parent_menu_page_url ) || ( 'edit.php?post_type=sfwd-essays' ) ) { learndash_add_admin_tab_item( $this->parent_menu_page_url, array( 'id' => $this->settings_screen_id, 'link' => add_query_arg( array( 'page' => $this->settings_page_id ), 'admin.php' ), 'name' => ! empty( $this->settings_tab_title ) ? $this->settings_tab_title : $this->settings_page_title, ), $this->settings_tab_priority ); } } // End of functions. } } add_action( 'learndash_settings_pages_init', function() { LearnDash_Settings_Page_Quizzes_Options::add_page_instance(); } ); PKd\s _ _Nincludes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.phpnuW+Aparent_menu_page_url = 'edit.php?post_type=sfwd-courses'; $this->menu_page_capability = LEARNDASH_ADMIN_CAPABILITY_CHECK; $this->settings_page_id = 'courses-shortcodes'; // translators: Course Shortcodes Label $this->settings_page_title = esc_html_x( 'Shortcodes', 'Course Shortcodes Label', 'learndash' ); $this->settings_columns = 1; $this->show_quick_links_meta = false; parent::__construct(); } /** * Show settiings page output. */ public function show_settings_page() { ?>

      ' . esc_html__( 'Shortcode Options', 'learndash' ) . '

      ' . sprintf( // translators: placeholders: course, lesson, quiz. esc_html_x( 'You may use shortcodes to add information to any page/%1$s/%2$s/%3$s. Here are built-in shortcodes for displaying relavent user information.', 'placeholders: course, lesson, quiz', 'learndash' ), learndash_get_custom_label_lower( 'course' ), learndash_get_custom_label_lower( 'lesson' ), learndash_get_custom_label_lower( 'quiz' ) ) . '

      [ld_profile]

      ' . sprintf( // translators: placeholder: courses, course, quiz. esc_html_x( 'Displays user\'s enrolled %1$s, %2$s progress, %3$s scores, and achieved certificates. This shortcode can take following parameters:', 'placeholder: courses, course, quiz', 'learndash' ), learndash_get_custom_label_lower( 'courses' ), learndash_get_custom_label_lower( 'course' ), learndash_get_custom_label_lower( 'quiz' ) ) . '

      • order: ' . sprintf( wp_kses_post( // translators: placeholders: courses, courses. _x( 'sets order of %1$s. Default value DESC. Possible values: DESC, ASC. Example: [ld_profile order="ASC"] shows %2$s in ascending order.', 'placeholders: courses, courses', 'learndash' ) ), learndash_get_custom_label_lower( 'courses' ), learndash_get_custom_label_lower( 'courses' ) ) . '
      • orderby: ' . sprintf( wp_kses_post( // translators: placeholders: courses. _x( 'sets what the list of ordered by. Default value ID. Possible values: ID, title. Example: [ld_profile orderby="title" order="ASC"] shows %s in ascending order by title.', 'placeholders: courses', 'learndash' ) ), learndash_get_custom_label_lower( 'courses' ) ) . '

      ' . wp_kses_post( __( 'See the full list of available orderby options here.', 'learndash' ) ) . '


      [ld_course_list]

      ' . sprintf( wp_kses_post( // translators: placeholders: courses, courses (URL slug). _x( 'This shortcode shows list of %1$s. You can use this shortcode on any page if you dont want to use the default /%2$s page. This shortcode can take following parameters:', 'placeholders: courses, courses (URL slug)', 'learndash' ) ), learndash_get_custom_label_lower( 'courses' ), LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Section_Permalinks', 'courses' ) ) . '

      • num: ' . sprintf( wp_kses_post( // translators: placeholders: courses, courses. _x( 'limits the number of %1$s displayed. Example: [ld_course_list num="10"] shows 10 %2$s.', 'placeholders: courses, courses', 'learndash' ) ), learndash_get_custom_label_lower( 'courses' ), learndash_get_custom_label_lower( 'courses' ) ) . '
      • order: ' . sprintf( wp_kses_post( // translators: placeholders: courses, courses. _x( 'sets order of %1$s. Possible values: DESC, ASC. Example: [ld_course_list order="ASC"] shows %2$s in ascending order.', 'placeholders: courses, courses', 'learndash' ) ), learndash_get_custom_label_lower( 'courses' ), learndash_get_custom_label_lower( 'courses' ) ) . '
      • orderby: ' . sprintf( wp_kses_post( // translators: placeholders: courses. _x( 'sets what the list of ordered by. Example: [ld_course_list order="ASC" orderby="title"] shows %s in ascending order by title.', 'placeholders: courses', 'learndash' ) ), learndash_get_custom_label_lower( 'courses' ) ) . '
      • mycourses: ' . sprintf( wp_kses_post( // translators: placeholders: courses, courses. _x( 'show current user\'s %1$s. Example: [ld_course_list mycourses="true"] shows %2$s the current user has access to.', 'placeholders: courses, courses', 'learndash' ) ), learndash_get_custom_label_lower( 'courses' ), learndash_get_custom_label_lower( 'courses' ) ) . '
      • col: ' . wp_kses_post( __( 'number of columns to show when using course grid addon. Example: [ld_course_list col="2"] shows 2 columns.', 'learndash' ) ) . '
      • '; if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Taxonomies', 'wp_post_category' ) == 'yes' ) { echo '
      • cat: ' . sprintf( wp_kses_post( // translators: placeholders: courses, courses. _x( 'shows %1$s with mentioned category id. Example: [ld_course_list cat="10"] shows %2$s having category with category id 10.', 'placeholders: courses, courses', 'learndash' ) ), learndash_get_custom_label_lower( 'courses' ), learndash_get_custom_label_lower( 'courses' ) ) . '
      • category_name: ' . sprintf( wp_kses_post( // translators: placeholders: courses, courses. _x( 'shows %1$s with mentioned category slug. Example: [ld_course_list category_name="math"] shows %2$s having category slug math.', 'placeholders: courses, courses', 'learndash' ) ), learndash_get_custom_label_lower( 'courses' ), learndash_get_custom_label_lower( 'courses' ) ) . '
      • '; echo '
      • categoryselector: ' . wp_kses_post( __( 'shows a course category dropdown. Example: [ld_course_list categoryselector="true"].', 'learndash' ) ) . '
      • '; } if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Taxonomies', 'wp_post_tag' ) == 'yes' ) { echo '
      • tag: ' . sprintf( wp_kses_post( // translators: placeholders: courses. _x( 'shows %1$s with mentioned tag. Example: [ld_course_list tag="math"] shows %2$s having tag math.', 'placeholders: courses, courses', 'learndash' ) ), learndash_get_custom_label_lower( 'courses' ), learndash_get_custom_label_lower( 'courses' ) ) . '
      • tag_id: ' . sprintf( wp_kses_post( // translators: placeholders: courses, courses. _x( 'shows %1$s with mentioned tag_id. Example: [ld_course_list tag_id="30"] shows %2$s having tag with tag_id 30.', 'placeholders: courses, courses', 'learndash' ) ), learndash_get_custom_label_lower( 'courses' ), learndash_get_custom_label_lower( 'courses' ) ) . '
      • '; } if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Taxonomies', 'ld_course_category' ) == 'yes' ) { echo '
      • course_cat: ' . sprintf( wp_kses_post( // translators: placeholders: courses, courses. _x( 'shows %1$s with mentioned course category id. Example: [ld_course_list course_cat="10"] shows %2$s having course category with category id 10.', 'placeholders: courses, courses', 'learndash' ) ), learndash_get_custom_label_lower( 'courses' ), learndash_get_custom_label_lower( 'courses' ) ) . '
      • course_category_name: ' . sprintf( wp_kses_post( // translators: placeholders: courses, courses. _x( 'shows %1$s with mentioned course category slug. Example: [ld_course_list course_category_name="math"] shows %2$s having course category slug math.', 'placeholders: courses, courses', 'learndash' ) ), learndash_get_custom_label_lower( 'courses' ), learndash_get_custom_label_lower( 'courses' ) ) . '
      • '; echo '
      • course_categoryselector: ' . wp_kses_post( __( 'shows a category dropdown. Example: [ld_course_list course_categoryselector="true"].', 'learndash' ) ) . '
      • '; } if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Taxonomies', 'ld_course_tag' ) == 'yes' ) { echo '
      • course_tag: ' . sprintf( wp_kses_post( // translators: placeholders: courses, courses _x( 'shows %1$s with mentioned course tag. Example: [ld_course_list course_tag="math"] shows %2$s having course tag math.', 'placeholders: courses, courses', 'learndash' ) ), learndash_get_custom_label_lower( 'courses' ), learndash_get_custom_label_lower( 'courses' ) ) . '
      • course_tag_id: ' . sprintf( wp_kses_post( // translators: placeholders: courses, courses. _x( 'shows %1$s with mentioned course_tag_id. Example: [ld_course_list course_tag_id="30"] shows %2$s having course tag with tag_id 30.', 'placeholders: courses, courses', 'learndash' ) ), learndash_get_custom_label_lower( 'courses' ), learndash_get_custom_label_lower( 'courses' ) ) . '
      • '; } echo '

      ' . wp_kses_post( __( 'See the full list of Category and Tag filtering options.', 'learndash' ) ) . '


      [ld_lesson_list]

      ' . sprintf( wp_kses_post( // translators: placeholders: lessons. _x( 'This shortcode shows list of %s. You can use this shortcode on any page. This shortcode can take following parameters: num, order, orderby, tag, tag_id, cat, category_name lesson_tag, lesson_tag_id, lesson_cat, lesson_category_name, lesson_categoryselector. See [ld_course_list] above details on using the shortcode parameters.', 'placeholders: lessons', 'learndash' ) ), learndash_get_custom_label_lower( 'lessons' ) ) . '


      [ld_topic_list]

      ' . sprintf( wp_kses_post( // translators: placeholders: topics. _x( 'This shortcode shows list of %s. You can use this shortcode on any page. This shortcode can take following parameters: num, order, orderby, tag, tag_id, cat, category_name, topic_tag, topic_tag_id, topic_cat, topic_category_name, topic_categoryselector. See [ld_course_list] above details on using the shortcode parameters.', 'placeholders: topics', 'learndash' ) ), learndash_get_custom_label_lower( 'topics' ) ) . '


      [ld_quiz_list]

      ' . sprintf( wp_kses_post( // translators: placeholders: quizzes. _x( 'This shortcode shows list of %s. You can use this shortcode on any page. This shortcode can take following parameters: num, order, orderby. See [ld_course_list] above details on using the shortcode parameters.', 'placeholders: quizzes', 'learndash' ) ), learndash_get_custom_label_lower( 'quizzes' ) ) . '


      [learndash_course_progress]

      ' . sprintf( wp_kses_post( // translators: placeholders: course, course, lesson, quiz. _x( 'This shortcode displays users progress bar for the %1$s in any %2$s/%3$s/%4$s pages.', 'placeholders: course, course, lesson, quiz', 'learndash' ) ), learndash_get_custom_label_lower( 'course' ), learndash_get_custom_label_lower( 'course' ), learndash_get_custom_label_lower( 'lesson' ), learndash_get_custom_label_lower( 'quiz' ) ) . '


      [visitor]

      ' . sprintf( wp_kses_post( // translators: placeholders: course. _x( 'This shortcode shows the content if the user is not enrolled in the %s. The shortcode can be used on any page or widget area. This shortcode can take following parameters:', 'placeholders: course', 'learndash' ) ), learndash_get_custom_label_lower( 'course' ) ) . '

      • course_id: ' . sprintf( wp_kses_post( // translators: placeholders: courses, courses. _x( 'Optional. Show content if the student does not have access to a specific %s. Example: [visitor course_id="10"]insert any content[/visitor]', 'placeholders: courses, courses', 'learndash' ) ), learndash_get_custom_label_lower( 'course' ) ) . '

      [student]

      ' . sprintf( wp_kses_post( // translators: placeholders: course. _x( 'This shortcode shows the content if the user is enrolled in the %s. The shortcode can be used on any page or widget area. This shortcode can take following parameters:', 'placeholders: course', 'learndash' ) ), learndash_get_custom_label_lower( 'course' ) ) . '

      • course_id: ' . sprintf( wp_kses_post( // translators: placeholders: courses, courses. _x( 'Optional. Show content if the student has access to a specific %s. Example: [student course_id="10"]insert any content[/student]', 'placeholders: courses, courses', 'learndash' ) ), learndash_get_custom_label_lower( 'course' ) ) . '

      [course_complete]

      ' . sprintf( wp_kses_post( // translators: placeholders: course. _x( 'This shortcode shows the content if the user has completed the %s. The shortcode can be used on any page or widget area. This shortcode can take following parameters:', 'placeholders: course', 'learndash' ) ), learndash_get_custom_label_lower( 'course' ) ) . '

      • course_id: ' . sprintf( wp_kses_post( // translators: placeholders: courses, courses. _x( 'Optional. Show content if the student has access to a specific %s. Example: [course_complete course_id="10"]insert any content[/course_complete]', 'placeholders: courses, courses', 'learndash' ) ), learndash_get_custom_label_lower( 'course' ) ) . '
      • user_id: ' . wp_kses_post( __( 'Optional. If not provided will use current logged in user. Example: [course_complete course_id="10" user_id="456"]insert any content[/course_complete]', 'learndash' ) ) . '

      [course_inprogress]

      ' . sprintf( wp_kses_post( // translators: placeholders: course. _x( 'This shortcode shows the content if the user has started but not completed the %s. The shortcode can be used on any page or widget area. This shortcode can take following parameters:', 'placeholders: course', 'learndash' ) ), learndash_get_custom_label_lower( 'course' ) ) . '

      • course_id: ' . sprintf( wp_kses_post( // translators: placeholders: courses, courses. _x( 'Optional. Show content if the student has access to a specific %s. Example: [course_inprogress course_id="10"]insert any content[/course_inprogress]', 'placeholders: courses, courses', 'learndash' ) ), learndash_get_custom_label_lower( 'course' ) ) . '
      • user_id: ' . __( 'Optional. If not provided will use current logged in user. Example: [course_inprogress course_id="10" user_id="456"]insert any content[/course_inprogress]', 'learndash' ) . '

      [course_notstarted]

      ' . sprintf( wp_kses_post( // translators: placeholders: course. _x( 'This shortcode shows the content if the user has access to the %s but not yet started. The shortcode can be used on any page or widget area. This shortcode can take following parameters:', 'placeholders: course', 'learndash' ) ), learndash_get_custom_label_lower( 'course' ) ) . '

      • course_id: ' . sprintf( wp_kses_post( // translators: placeholders: courses, courses. _x( 'Optional. Show content if the student has access to a specific %s. Example: [course_notstarted course_id="10"]insert any content[/course_notstarted]', 'placeholders: courses, courses', 'learndash' ) ), learndash_get_custom_label_lower( 'course' ) ) . '
      • user_id: ' . wp_kses_post( __( 'Optional. If not provided will use current logged in user. Example: [course_notstarted course_id="10" user_id="456"]insert any content[/course_notstarted]', 'learndash' ) ) . '

      [ld_course_info]

      ' . sprintf( wp_kses_post( // translators: placeholders: course, course. _x( 'This shortcode shows the %1$s for the user. This shortcode can take following parameters: user_id if not provided will assume current user. Example usage: [ld_course_info user_id="123"] will show the %2$s for the user 123', 'placeholders: course, course', 'learndash' ) ), learndash_get_custom_label_lower( 'courses' ), learndash_get_custom_label_lower( 'courses' ) ) . '


      [ld_user_course_points]

      ' . sprintf( wp_kses_post( // translators: placeholders: course, course. _x( 'This shortcode shows the earned %s points for the user. This shortcode can take following parameters: user_id if not provided will assume current user. Example usage: [ld_user_course_points]', 'placeholders: course, course', 'learndash' ) ), learndash_get_custom_label_lower( 'course' ) ) . '


      [user_groups]

      ' . esc_html__( 'This shortcode displays the list of groups users are assigned to as users or leaders.', 'learndash' ) . '


      [ld_group]

      ' . __( 'This shortcode shows the content if the user is enrolled in a specific group. Example usage: [ld_group]Welcome to the Group![/ld_group] This shortcode takes the following parameters:', 'learndash' ) . '

      • group_id: ' . wp_kses_post( __( 'Required. Show content if the student has access to a specific group. Example: [ld_group group_id="16"]insert any content[/ld_group]', 'learndash' ) ) . '

      [ld_video]

      ' . sprintf( wp_kses_post( // translators: placeholders: Lessons, Topics _x( 'This shortcode is used on %1$s and %2$s where Video Progression is enabled. The video player will be added above the content. This shortcode allows positioning the player elsewhere within the content. This shortcode does not take any parameters.', 'placeholders: Lessons, Topics', 'learndash' ) ), LearnDash_Custom_Label::get_label( 'lessons' ), LearnDash_Custom_Label::get_label( 'topics' ) ) . '


      [learndash_payment_buttons]

      ' . sprintf( wp_kses_post( // translators: placeholders: course, Courses. _x( 'This shortcode can show the payment buttons on any page. Example: [learndash_payment_buttons course_id="123"] shows the payment buttons for %1$s with %2$s ID: 123', 'placeholders: course, Courses','learndash' ) ), learndash_get_custom_label_lower( 'course' ), LearnDash_Custom_Label::get_label( 'courses' ) ) . '


      [course_content]

      ' . sprintf( wp_kses_post( // translators: placeholders: Course, lessons, topics, quizzes, course, course, course. _x( 'This shortcode displays the %1$s Content table (%2$s, %3$s, and %4$s) when inserted on a page or post. Example: [course_content course_id="123"] shows the %5$s content for %6$s with %7$s ID: 123', 'placeholders: Course, lesson, topics, quizzes, course, course, Course', 'learndash' ) ), LearnDash_Custom_Label::get_label( 'course' ), learndash_get_custom_label_lower( 'lessons' ), learndash_get_custom_label_lower( 'topics' ), learndash_get_custom_label_lower( 'quizzes' ), learndash_get_custom_label_lower( 'course' ), learndash_get_custom_label_lower( 'course' ), LearnDash_Custom_Label::get_label( 'course' ) ) . '


      [ld_course_expire_status]

      ' . sprintf( wp_kses_post( // translators: placeholders: course, Course, Course. _x( 'This shortcode displays the user %1$s access expire date. Example: [ld_course_expire_status course_id="111" user="222" label_before="%2$s access will expire on:" label_after="%3$s access expired on:" format="F j, Y g:i a"].', 'placeholders: course, Course, Course', 'learndash' ) ), learndash_get_custom_label_lower( 'course' ), LearnDash_Custom_Label::get_label( 'course' ), LearnDash_Custom_Label::get_label( 'course' ) ) . '

      • course_id: ' . sprintf( wp_kses_post( // translators: plaeholders: course _x( 'The ID of the %s to check. If not provided will attempt to user current post. Example: [ld_course_expire_status course_id="111"] ', 'plaeholders: course', 'learndash' ) ), LearnDash_Custom_Label::get_label( 'course' ) ) . '
      • user_id: ' . wp_kses_post( __( 'The ID of the user to check. If not provided the current logged in user ID will be used. Example: [ld_course_expire_status user_id="222"]', 'learndash' ) ) . '
      • label_before: ' . sprintf( wp_kses_post( // translators: placeholders: Course, course _x( 'The label prefix shown before the access expires. Default label is "%1$s access will expire on:" Example: [ld_course_expire_status label_before="Your access to this %2$s will expire on:"]', 'placeholders: Course, course', 'learndash' ) ), LearnDash_Custom_Label::get_label( 'course' ), learndash_get_custom_label_lower( 'course' ) ) . '
      • label_after: ' . sprintf( wp_kses_post( // translators: placeholders: Course, course _x( 'The label prefix shown after access has expired. Default label is "%1$s access expired on:" Example: [ld_course_expire_status label_after="Your access to this %2$s expired on:"]', 'placeholders: Course, course', 'learndash' ) ), LearnDash_Custom_Label::get_label( 'course' ), learndash_get_custom_label_lower( 'course' ) ) . '
      • format: ' . wp_kses_post( __( 'This parameter controls the format of the date/time value shown to the user. If not provided the date/time format from your WordPress sytem will be used. Example: [ld_course_expire_status format="F j, Y g:i a"]', 'learndash' ) ) . '
      '; ?>
      $field ) { if ( ( isset( $field['args']['parent_setting'] ) ) && ( ! empty( $field['args']['parent_setting'] ) ) ) { // if we have a 'parent_setting'. Then try and figure out if it was the same as the last one. if ( ( empty( $parents_settings ) ) || ( ! in_array( $field['args']['parent_setting'], $parents_settings ) ) ) { $parent_setting_slug = $field['args']['parent_setting']; if ( ( isset( $section_fields[ $parent_setting_slug ]['args']['child_section_state'] ) ) && ( 'open' === $section_fields[ $parent_setting_slug ]['args']['child_section_state'] ) ) { $child_setting_state = 'open'; } else { $child_setting_state = 'closed'; } $parents_settings[] = $field['args']['parent_setting']; echo '
      '; } else { if ( $parents_settings[ count( $parents_settings ) - 1 ] === $field['args']['parent_setting'] ) { } elseif ( in_array( $field['args']['parent_setting'], $parents_settings ) ) { while ( ! empty( $parents_settings ) ) { $p_set = $parents_settings[ count( $parents_settings ) - 1 ]; if ( $p_set !== $field['args']['parent_setting'] ) { echo '
      '; unset( $parents_settings[ count( $parents_settings ) - 1 ] ); } else { break; } } if ( empty( $parents_settings ) ) { $parents_settings = array(); } else { $parents_settings = array_values( $parents_settings ); } } } } elseif ( ! empty( $parents_settings ) ) { while ( ! empty( $parents_settings ) ) { $p_set = $parents_settings[ count( $parents_settings ) - 1 ]; echo ''; unset( $parents_settings[ count( $parents_settings ) - 1 ] ); } if ( empty( $parents_settings ) ) { $parents_settings = array(); } else { $parents_settings = array_values( $parents_settings ); } } self::show_section_field_row( $field ); } if ( ! empty( $parents_settings ) ) { while ( ! empty( $parents_settings ) ) { $p_set = $parents_settings[ count( $parents_settings ) - 1 ]; echo ''; unset( $parents_settings[ count( $parents_settings ) - 1 ] ); } if ( empty( $parents_settings ) ) { $parents_settings = array(); } } } } /** * Shows the field row * * @since 2.4 * * @param array $field Array of field settings. */ public static function show_section_field_row( $field ) { $field_error_class = ''; if ( ( isset( $field['args']['setting_option_key'] ) ) && ( ! empty( $field['args']['setting_option_key'] ) ) ) { $settings_errors = get_settings_errors( $field['args']['setting_option_key'] ); if ( ! empty( $settings_errors ) ) { foreach ( $settings_errors as $settings_error ) { if ( ( $settings_error['setting'] == $field['args']['setting_option_key'] ) && ( $settings_error['code'] == $field['args']['name'] ) && ( 'error' == $settings_error['type'] ) ) { $field_error_class = 'learndash-settings-field-error'; } } } } $field_class = ''; if ( ( isset( $field['args']['type'] ) ) && ( ! empty( $field['args']['type'] ) ) ) { $field_instance = self::get_field_instance( $field['args']['type'] ); if ( ( ! $field_instance ) || ( 'LearnDash_Settings_Fields' !== get_parent_class( $field_instance ) ) ) { return; } $field_class = 'sfwd_input_type_' . $field['args']['type']; } if ( ( isset( $field['args']['desc_before'] ) ) && ( ! empty( $field['args']['desc_before'] ) ) ) { echo wptexturize( $field['args']['desc_before'] ); } if ( ( isset( $field['args']['row_disabled'] ) ) && ( true === $field['args']['row_disabled'] ) ) { $field_class .= ' learndash-row-disabled'; } if ( ( isset( $field['args']['type'] ) ) && ( 'hidden' !== $field['args']['type'] ) ) { $output = apply_filters( 'learndash_settings_row_outside_before', '', $field['args'] ); if ( ! empty( $output ) ) { echo $output; } ?>
      ' . esc_html( $field['args']['row_description_before'] ) . ''; } ?> style="cursor:pointer;" title="" onclick="toggleVisibility('_tip');" >
      >

      ', $field['args'] ); if ( ! empty( $output ) ) { echo $output; }; ?> ' . esc_html( $field['args']['row_description_after'] ) . ''; } ?>
      '; $field_legend .= '' . $field_args['label'] . ''; $field_legend .= ''; } return $field_legend; } /** * Create the HTML output from the field args 'type' attribute. * * @since 2.4 * * @param array $field_args main field args array. should contain element for 'attrs'. * * @return string of HTML representation of the attrs array attributes. */ public function get_field_attribute_type( $field_args = array() ) { $field_attribute = ''; if ( isset( $field_args['type'] ) ) { $field_attribute .= ' type="' . $field_args['type'] . '" '; } return $field_attribute; } /** * Create the HTML output from the field args 'class' attribute. * * @since 2.4 * * @param array $field_args main field args array. should contain element for 'attrs'. * * @return string of HTML representation of the attrs array attributes. */ public function get_field_attribute_class( $field_args = array(), $wrap = true ) { $field_attribute = ''; if ( true === $wrap ) { $field_attribute .= 'class="'; } $field_attribute .= 'learndash-section-field learndash-section-field-' . $this->field_type; if ( ( isset( $field_args['class'] ) ) && ( ! empty( $field_args['class'] ) ) ) { $field_attribute .= ' ' . $field_args['class']; } if ( true === $wrap ) { $field_attribute .= '" '; } return $field_attribute; } /** * Create the HTML output from the field args 'attrs' attribute. * * @since 2.4 * * @param array $field_args main field args array. should contain element for 'attrs'. * * @return string of HTML representation of the attrs array attributes. */ public function get_field_attribute_misc( $field_args = array() ) { $field_attribute = ''; if ( ( isset( $field_args['attrs'] ) ) && ( ! empty( $field_args['attrs'] ) ) ) { foreach ( $field_args['attrs'] as $key => $val ) { $field_attribute .= ' ' . $key . '="' . $val . '" '; } } return $field_attribute; } /** * Create the HTML output from the field args 'input_label' attribute. * * @since 2.4 * * @param array $field_args main field args array. Should contain element for 'input_label'. * * @return string of HTML representation of the attrs array attributes. */ public function get_field_attribute_input_label( $field_args = array() ) { $field_attribute = ''; if ( ( isset( $field_args['input_label'] ) ) && ( ! empty( $field_args['input_label'] ) ) ) { $field_attribute .= ' ' . $field_args['input_label']; } return $field_attribute; } public function get_field_error_message( $field_args = array() ) { $field_attribute = ''; if ( ( isset( $field_args['input_error'] ) ) && ( ! empty( $field_args['input_error'] ) ) ) { $field_attribute .= ''; } return $field_attribute; } public function get_field_attribute_input_description( $field_args = array() ) { $field_attribute = ''; if ( ( isset( $field_args['input_description'] ) ) && ( ! empty( $field_args['input_description'] ) ) ) { $field_attribute .= '' . $field_args['input_description'] . ''; } return $field_attribute; } public function get_field_sub_trigger( $field_args = array() ) { $field_attribute = ''; if ( ( isset( $field_args['name'] ) ) && ( ! empty( $field_args['name'] ) ) ) { $field_attribute .= ' data-settings-sub-trigger="ld-settings-sub-' . $field_args['name'] . '" '; } return $field_attribute; } public function get_field_inner_trigger( $field_args = array() ) { $field_attribute = ''; if ( ( isset( $field_args['name'] ) ) && ( ! empty( $field_args['name'] ) ) ) { $field_attribute .= ' data-settings-inner-trigger="ld-settings-inner-' . $field_args['name'] . '" '; } return $field_attribute; } /** * Default validation function. Should be overriden in Field subclass. * * @since 2.4 * * @param mixed $val Value to validate. * @param string $key Key of value being validated. * @param array $args Array of field args. * * @return mixed $val validated value. */ public function validate_section_field( $val, $key, $args = array() ) { if ( ! empty( $val ) ) { //if ( isset( $args['field']['type'] ) ) { // switch ( $args['field']['type'] ) { // case 'wpeditor': // case 'html': // //$val = wp_filter_post_kses( $val ); // $val = wp_check_invalid_utf8( $val ); // if ( ! empty( $val ) ) { // //$val = sanitize_post_field( $args['setting_option_key'] . '_' . $key, $val, 0, 'db' ); // $val = sanitize_post_field( 'post_content', $val, 0, 'db' ); // } // break; // // case 'number': // $val = intval( $val ); // break; // // case 'checkbox-switch': // case 'radio': // if ( ( isset( $args['field']['options'] ) ) && ( ! empty( $args['field']['options'] ) ) ) { // if ( ! isset( $args['field']['options'][ $val ] ) ) { // $val = ''; // } // } // break; // // case 'multiselect': // if ( ( is_array( $val ) ) && ( ! empty( $val ) ) ) { // $val = array_map( $args['field']['value_type'], $val ); // } else if ( ! empty( $val ) ) { // $val = call_user_func( $args['field']['value_type'], $val ); // } else { // $val = ''; // } // break; // // default: // //$val = sanitize_text_field( $val ); // if ( ! empty( $val ) ) { // $val = call_user_func( $args['field']['value_type'], $val ); // } // break; //} //} else { //$val = sanitize_text_field( $val ); // if ( ! empty( $val ) ) { $val = call_user_func( $args['field']['value_type'], $val ); // } //} } return $val; } /** * Default validation function. Should be overriden in Field subclass. * * @since 2.4 * * @param mixed $val Value to validate. * @param string $key Key of value being validated. * @param array $args Array of field args. * * @return mixed $val validated value. */ public function value_section_field( $val = '', $key = '', $args = array(), $post_args = array() ) { return $val; } } } PKd\;9SS includes/ld-convert-post-pdf.phpnuW+A'; $tag_end = '

      '; return $tag_begin . $matches[1] . $tag_end; } /** * Callback for images without width and height attribute * * @param array $matches array with strings to search and replace. * @return array $matches */ function post2pdf_conv_img_size( $matches ) { $size = null; if ( strpos( $matches[2], site_url() ) === false ) { return $matches[1] . $matches[5]; } $image_path = ABSPATH . str_replace( site_url() . '/', '', $matches[2] ); if ( file_exists( $image_path ) ) { $size = getimagesize( $image_path ); } else { return $matches[1] . $matches[5]; } return $matches[1] . ' ' . $size[3] . $matches[5]; } $post_id = 0; $target_post_id = $post_id; $get_by_http_request = 0; $filename_type = 'title'; $config_lang = 'eng'; $post2pdf_conv_setting_opt = Array('font_path' => 0); $subsetting_enable = $filters = $header_enable = $footer_enable = $monospaced_font = $font = $font_size = $wrap_title = ''; $ratio = 1.25; $shortcode = 'parse'; ob_start(); if ( ! empty( $_GET['id'] ) ) { $post_id = intval( $_GET['id'] ); } if ( $target_post_id != 0 ) { $post_id = $target_post_id; } $post_data = get_post( $post_id ); if ( ! $post_data ) { wp_die( esc_html__( 'Post does not exist.', 'learndash' ) ); } $title = $post_data->post_title; // For qTranslate if ( function_exists( 'qtrans_use' ) && ! empty( $this->q_config['language'] ) ) { $title = qtrans_use( $this->q_config['language'], $title, false ); } $title = strip_tags( $title ); $permalink = get_permalink( $post_data->ID ); $author_data = get_userdata( $post_data->post_author ); if ( $author_data->display_name ) { $author = $author_data->display_name; } else { $author = $author_data->user_nicename; } $tag = array(); $tags = ''; $tags_data = wp_get_post_tags( $post_data->ID ); if ( $tags_data ) { foreach ( $tags_data as $val ) { $tag[] = $val->name; } $tags = implode( ' ', $tag ); } if ( $get_by_http_request == 1 ) { $permalink_url = get_permalink( $post_id ); $response_data = wp_remote_get( $permalink_url ); $content = preg_replace( '|^.*?(.*?).*?$|is', '$1', $response_data['body'] ); } else { $content = $post_data->post_content; // For qTranslate if ( function_exists( 'qtrans_use' ) && ! empty( $this->q_config['language'] ) ) { $content = qtrans_use( $this->q_config['language'], $content, true ); } } if ( ! empty( $_GET['lang'] ) ) { $config_lang_tmp = substr( esc_html( $_GET['lang'] ), 0, 3 ); //if ( ( strlen( $config_lang_tmp ) == 3 ) && ( file_exists( dirname( __FILE__ ) . '/vendor/tcpdf/config/lang/' . $config_lang_tmp . '.php' ) ) ) { if ( ( strlen( $config_lang_tmp ) == 3 ) && ( file_exists( LEARNDASH_LMS_LIBRARY_DIR . '/tcpdf/config/lang/' . $config_lang_tmp . '.php' ) ) ) { $config_lang = $config_lang_tmp; } } if ( ! empty( $_GET['file'] ) ) { $filename_type = $_GET['file']; } if ( $filename_type == 'title' && $target_post_id == 0 ) { $filename = $post_data->post_title; // For qTranslate if ( function_exists( 'qtrans_use' ) && ! empty( $this->q_config['language'] ) ) { $filename = qtrans_use( $this->q_config['language'], $filename, false ); } } else { $filename = $post_id; } $filename = substr( $filename, 0, 255 ); $chached_filename = ''; if ( $target_post_id != 0 ) { $filename = WP_CONTENT_DIR . '/tcpdf-pdf/' . $filename; } // For qTranslate if ( function_exists( 'qtrans_use' ) && ! empty( $this->q_config['language'] ) ) { $filename = $filename . '_' . $this->q_config['language']; } if ( ! empty( $_GET['font'] ) ) { $font = esc_html( $_GET['font'] ); } if ( ! empty( $_GET['monospaced'] ) ) { $monospaced_font = esc_html( $_GET['monospaced'] ); } if ( ! empty( $_GET['fontsize'] ) ) { $font_size = intval( $_GET['fontsize'] ); } if ( ! empty( $_GET['subsetting'] ) &&( $_GET['subsetting'] == 1 || $_GET['subsetting'] == 0 ) ) { $subsetting_enable = $_GET['subsetting']; } if ( $subsetting_enable == 1 ) { $subsetting = 'true'; } else { $subsetting = 'false'; } if ( ! empty( $_GET['ratio'] ) ) { $ratio = floatval( $_GET['ratio'] ); } if ( ! empty( $_GET['header'] ) ) { $header_enable = $_GET['header']; } if ( ! empty( $_GET['logo'] ) ) { $logo_enable = $_GET['logo']; } if ( ! empty( $_GET['logo_file'] ) ) { $logo_file = esc_html( $_GET['logo_file'] ); } if ( ! empty( $_GET['logo_width'] ) ) { $logo_width = intval( $_GET['logo_width'] ); } if ( ! empty( $_GET['wrap_title'] ) ) { $wrap_title = $_GET['wrap_title']; } if ( ! empty( $_GET['footer'] ) ) { $footer_enable = $_GET['footer']; } if ( ! empty( $_GET['filters'] ) ) { $filters = $_GET['filters']; } if ( ! empty( $_GET['shortcode'] ) ) { $shortcode = esc_html( $_GET['shortcode'] ); } if ( $target_post_id != 0 ) { $destination = 'F'; } else { $destination = 'I'; } // Delete shortcode for POST2PDF Converter $content = preg_replace( '|\[pdf[^\]]*?\].*?\[/pdf\]|i', '', $content ); // For WP-Syntax, WP-CodeBox(GeSHi) and WP-GeSHi-Highlight -- syntax highlighting with clean, small and valid (X)HTML if ( function_exists( 'wp_syntax_highlight' ) || function_exists( 'wp_codebox_before_filter' ) || function_exists( 'wp_geshi_main' ) ) { $content = preg_replace_callback( "/]*?lang=['\"][^>]*?>(.*?)<\/pre>/is", array($this, post2pdf_conv_sourcecode_wrap_pre_and_esc), $content ); } // For CodeColorer(GeSHi) if ( class_exists( 'CodeColorerLoader' ) ) { $content = preg_replace_callback( "/]*?lang=['\"][^>]*?>(.*?)<\/code>/is", array($this, post2pdf_conv_sourcecode_wrap_pre_and_esc), $content ); } // For WP Code Highlight if ( function_exists( 'wp_code_highlight_filter' ) ) { $content = wp_code_highlight_filter( $content ); $content = preg_replace( '/]*?>(.*?)<\/pre>/is', '
      $1
      ', $content ); } // Parse shortcode before applied WP default filters if ( $shortcode == 'parse' && $get_by_http_request != 1 ) { // For WP SyntaxHighlighter if ( function_exists( 'wp_sh_add_extra_bracket' ) ) { $content = wp_sh_add_extra_bracket( $content ); } if ( function_exists( 'wp_sh_do_shortcode' ) ) { $content = wp_sh_do_shortcode( $content ); } // For SyntaxHighlighter Evolved if ( class_exists( 'SyntaxHighlighter' ) ) { global $SyntaxHighlighter; if ( method_exists( 'SyntaxHighlighter', 'parse_shortcodes' ) && method_exists( 'SyntaxHighlighter', 'shortcode_hack' ) ) { $content = $SyntaxHighlighter->parse_shortcodes( $content ); } } // For SyntaxHighlighterPro if ( class_exists( 'GoogleSyntaxHighlighterPro' ) ) { global $googleSyntaxHighlighter; if ( method_exists( 'GoogleSyntaxHighlighterPro', 'bbcode' ) ) { $content = $googleSyntaxHighlighter->bbcode( $content ); } } // For CodeColorer(GeSHi) if ( class_exists( 'CodeColorerLoader' ) ) { $content = preg_replace_callback( "/\[cc[^\]]*?lang=['\"][^\]]*?\](.*?)\[\/cc\]/is", array($this, post2pdf_conv_sourcecode_wrap_pre_and_esc), $content ); } } else if ( $get_by_http_request != 1 ) { // For WP SyntaxHighlighter if ( function_exists( 'wp_sh_strip_shortcodes' ) ) { $content = wp_sh_strip_shortcodes( $content ); } // For SyntaxHighlighterPro if ( class_exists( 'GoogleSyntaxHighlighterPro' ) ) { global $googleSyntaxHighlighter; if ( method_exists( 'GoogleSyntaxHighlighterPro', 'bbcode_strip' ) ) { $content = $googleSyntaxHighlighter->bbcode_strip( $content ); } } // For CodeColorer(GeSHi) if ( class_exists( 'CodeColorerLoader' ) ) { $content = preg_replace_callback( "/\[cc[^\]]*?lang=['\"][^\]]*?\](.*?)\[\/cc\]/is", array($this, post2pdf_conv_sourcecode_esc), $content ); } } // Apply WordPress default filters to title and content if ( $filters == 1 && $get_by_http_request != 1 ) { if ( has_filter( 'the_title', 'wptexturize' ) ) { $title = wptexturize( $title ); } if ( has_filter( 'the_title', 'convert_chars' ) ) { $title = convert_chars( $title ); } if ( has_filter( 'the_title', 'trim' ) ) { $title = trim( $title ); } if ( has_filter( 'the_title', 'capital_P_dangit' ) ) { $title = capital_P_dangit( $title ); } if ( has_filter( 'the_content', 'wptexturize' ) ) { $content = wptexturize( $content ); } if ( has_filter( 'the_content', 'convert_smilies' ) ) { $content = convert_smilies( $content ); } if ( has_filter( 'the_content', 'convert_chars' ) ) { $content = convert_chars( $content ); } if ( has_filter( 'the_content', 'wpautop' ) ) { $content = wpautop( $content ); } if ( has_filter( 'the_content', 'shortcode_unautop' ) ) { $content = shortcode_unautop( $content ); } if ( has_filter( 'the_content', 'prepend_attachment' ) ) { $content = prepend_attachment( $content ); } if ( has_filter( 'the_content', 'capital_P_dangit' ) ) { $content = capital_P_dangit( $content ); } } // Include TCPDF if ( !class_exists( 'TCPDF' ) ) { //require_once dirname( __FILE__ ) . '/vendor/tcpdf/config/lang/' . $config_lang . '.php'; require_once LEARNDASH_LMS_LIBRARY_DIR . '/tcpdf/config/lang/' . $config_lang . '.php'; //require_once dirname( __FILE__ ) . '/vendor/tcpdf/tcpdf.php'; require_once LEARNDASH_LMS_LIBRARY_DIR . '/tcpdf/tcpdf.php'; } $learndash_certificate_options = get_post_meta( $post_data->ID, 'learndash_certificate_options', true); if (!is_array($learndash_certificate_options)) $learndash_certificate_options = array($learndash_certificate_options); if ( !isset( $learndash_certificate_options['pdf_page_format'] ) ) $learndash_certificate_options['pdf_page_format'] = PDF_PAGE_FORMAT; if ( !isset( $learndash_certificate_options['pdf_page_orientation'] ) ) $learndash_certificate_options['pdf_page_orientation'] = PDF_PAGE_ORIENTATION; // Create a new object //$pdf = new TCPDF( PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false, false ); $tcpdf_params = array( 'orientation' => $learndash_certificate_options['pdf_page_orientation'], 'unit' => PDF_UNIT, 'format' => $learndash_certificate_options['pdf_page_format'], 'unicode' => true, 'encoding' => 'UTF-8', 'diskcache' => false, 'pdfa' => false, 'margins' => array( 'top' => PDF_MARGIN_TOP, 'right' => PDF_MARGIN_RIGHT, 'bottom' => PDF_MARGIN_BOTTOM, 'left' => PDF_MARGIN_LEFT ) ); // Added to let external manipulate the TCPDF parameters. // @since 2.4.7 $tcpdf_params = apply_filters('learndash_certificate_params', $tcpdf_params, $post_id ); $pdf = new TCPDF( $tcpdf_params['orientation'], $tcpdf_params['unit'], $tcpdf_params['format'], $tcpdf_params['unicode'], $tcpdf_params['encoding'], $tcpdf_params['diskcache'], $tcpdf_params['pdfa'] ); // Added to let external manipulate the $pdf instance. // @since 2.4.7 do_action( 'learndash_certification_created', $pdf, $post_id ); // Set document information $pdf->SetCreator( PDF_CREATOR ); $pdf->SetAuthor( $author ); $pdf->SetTitle( $title . get_option( 'blogname' ) ); $pdf->SetSubject( strip_tags( get_the_category_list( ',', '', $post_id ) ) ); $pdf->SetKeywords( $tags ); // Set header data if ( mb_strlen( $title, 'UTF-8' ) < 42 ) { $header_title = $title; } else { $header_title = mb_substr( $title, 0, 42, 'UTF-8' ) . '...'; } if ( $header_enable == 1 ) { if ( $logo_enable == 1 && $logo_file ) { $pdf->SetHeaderData( $logo_file, $logo_width, $header_title, 'by ' . $author . ' - ' . $permalink ); } else { $pdf->SetHeaderData( '', 0, $header_title, 'by ' . $author . ' - ' . $permalink ); } } // Set header and footer fonts if ( $header_enable == 1 ) { $pdf->setHeaderFont( Array($font, '', PDF_FONT_SIZE_MAIN) ); } if ( $footer_enable == 1 ) { $pdf->setFooterFont( Array($font, '', PDF_FONT_SIZE_DATA) ); } // Remove header/footer if ( $header_enable == 0 ) { $pdf->setPrintHeader( false ); } if ( $header_enable == 0 ) { $pdf->setPrintFooter( false ); } // Set default monospaced font $pdf->SetDefaultMonospacedFont( $monospaced_font ); // Set margins //$pdf->SetMargins( PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT ); $pdf->SetMargins( $tcpdf_params['margins']['left'], $tcpdf_params['margins']['top'], $tcpdf_params['margins']['right'] ); if ( $header_enable == 1 ) { $pdf->SetHeaderMargin( PDF_MARGIN_HEADER ); } if ( $footer_enable == 1 ) { $pdf->SetFooterMargin( PDF_MARGIN_FOOTER ); } // Set auto page breaks //$pdf->SetAutoPageBreak( true, PDF_MARGIN_BOTTOM ); $pdf->SetAutoPageBreak( true, $tcpdf_params['margins']['bottom'] ); // Set image scale factor $pdf->setImageScale( $ratio ); // Set some language-dependent strings $pdf->setLanguageArray( $l ); // Set fontsubsetting mode $pdf->setFontSubsetting( $subsetting ); // Set font $pdf->SetFont( $font, '', $font_size, true ); // Add a page $pdf->AddPage(); // Added to let external manipulate the $pdf instance. // @since 2.4.7 do_action( 'learndash_certification_after', $pdf, $post_id ); // Create post content to print if ( $wrap_title == 1 ) { if ( mb_strlen( $title, 'UTF-8' ) < 33 ) { $title = $title; } else { $title = mb_substr( $title, 0, 33, 'UTF-8' ) . '
      ' . mb_substr( $title, 33, 222, 'UTF-8' ); } } // Parse shortcode after applied WP default filters if ( $shortcode == 'parse' && $get_by_http_request != 1 ) { // For WP QuickLaTeX if ( function_exists( 'quicklatex_parser' ) ) { $content = quicklatex_parser( $content ); } // For WP shortcode API $content = do_shortcode( $content ); } else if ( $get_by_http_request != 1 ) { // For WP shortcode API $content = strip_shortcodes( $content ); } // Convert relative image path to absolute image path $content = preg_replace( "/]*?)src=['\"]((?!(http:\/\/|https:\/\/|\/))[^'\"]+?)['\"]([^>]*?)>/i", '', $content ); // Set image align to center $content = preg_replace_callback( "/(]*?class=['\"][^'\"]*?aligncenter[^'\"]*?['\"][^>]*?>)/i", 'post2pdf_conv_image_align_center', $content ); // Add width and height into image tag $content = preg_replace_callback( "/(]*?src=['\"]((http:\/\/|https:\/\/|\/)[^'\"]*?(jpg|jpeg|gif|png))['\"])([^>]*?>)/i", 'post2pdf_conv_img_size', $content ); // For WP QuickLaTeX if ( function_exists( 'quicklatex_parser' ) ) { $content = preg_replace_callback( '/(

      )/i', array($this, post2pdf_conv_qlatex_displayed_equation), $content ); $content = str_replace( '

      ', '

        <\/span>   <\/span>', $content ); } // For common SyntaxHighlighter $content = preg_replace( "/]*?class=['\"][^'\"]*?brush:[^'\"]*?['\"][^>]*?>(.*?)<\/pre>/is", '

      $1
      ', $content ); $content = preg_replace( "/]*?type=['\"]syntaxhighlighter['\"][^>]*?>(.*?)<\/script>/is", '
      $1
      ', $content ); $content = preg_replace( "/]*?name=['\"]code['\"][^>]*?>(.*?)<\/pre>/is", '
      $1
      ', $content ); $content = preg_replace( "/]*?name=['\"]code['\"][^>]*?>(.*?)<\/textarea>/is", '
      $1
      ', $content ); $content = preg_replace( '/\n/', '
      ', $content ); //"\n" should be treated as a next line // For WP-SynHighlight(GeSHi) if ( function_exists( 'wp_synhighlight_settings' ) ) { $content = preg_replace( "/]*?class=['\"][^>]*?>(.*?)<\/pre>/is", '
      $1
      ', $content ); $content = preg_replace( '|]*?class="wp-synhighlighter-outer">]*?class="wp-synhighlighter-expanded">]*?>]*?>]*?>]*?class="wp-synhighlighter-title"[^>]*?>[^<]*?]*?>]*?>]*?/>[^<]*?]*?>]*?/>[^<]*?]*?>]*?/>[^<]*?|is', '', $content ); } // For other sourcecode $content = preg_replace( '/]*?>]*?>(.*?)<\/code><\/pre>/is', '
      $1
      ', $content ); // For blockquote $content = preg_replace( '/]*?>(.*?)<\/blockquote>/is', '
      $1
      ', $content ); // Combine title with content $formatted_title = '

      ' . $title . '

      '; //$formatted_post = $formatted_title . '

      ' . $content; (Title will not appear on PDF) $formatted_post = '

      ' . $content; $formatted_post = preg_replace( '/(<[^>]*?font-family[^:]*?:)([^;]*?;[^>]*?>)/is', '$1' . $font . ',$2', $formatted_post ); // get featured image $postid = get_the_id(); //Get current post id $img_file = learndash_get_thumb_path( $postid ); //The same function from theme's[twentytwelve here] function.php //Only print image if it exists if ( $img_file != '' ) { //Print BG image $pdf->setPrintHeader( false ); // get the current page break margin $bMargin = $pdf->getBreakMargin(); // get current auto-page-break mode $auto_page_break = $pdf->getAutoPageBreak(); // disable auto-page-break $pdf->SetAutoPageBreak( false, 0 ); // Get width and height of page for dynamic adjustments $pageH = $pdf->getPageHeight(); $pageW = $pdf->getPageWidth(); //Print the Background $pdf->Image( $img_file, $x = '0', $y = '0', $w = $pageW, $h = $pageH, $type = '', $link = '', $align = '', $resize = false, $dpi = 300, $palign = '', $ismask = false, $imgmask = false, $border = 0, $fitbox = false, $hidden = false, $fitonpage = false, $alt = false, $altimgs = array() ); // restore auto-page-break status $pdf->SetAutoPageBreak( $auto_page_break, $bMargin ); // set the starting point for the page content $pdf->setPageMark(); } // Print post $pdf->writeHTMLCell( $w = 0, $h = 0, $x = '', $y = '', $formatted_post, $border = 0, $ln = 1, $fill = 0, $reseth = true, $align = '', $autopadding = true ); // Set background $pdf->SetFillColor( 255, 255, 127 ); $pdf->setCellPaddings( 0, 0, 0, 0 ); // Print signature ob_clean(); // Output pdf document $pdf->Output( $filename . '.pdf', $destination ); if ( $target_post_id != 0 ) { wp_die( wp_kses_post( __( 'Generating completed successfully.

      Post/Page title: ', 'learndash' ) ) . $title . wp_kses_post( __( '
      Output path: ', 'learndash' ) ) . WP_CONTENT_DIR . '/tcpdf-pdf/' . $target_post_id . '.pdf' . wp_kses_post( __( '

      Go back to ', 'learndash' ) ) . '' . wp_kses_post( __( 'the setting panel.', 'learndash' ) ), esc_html__( 'POST2PDF Converter', 'learndash' ) ); } } } PKd\zs``&includes/class-ld-semper-fi-module.phpnuW+Adisplay_settings_page' actually returns type void. * @since 2.1.0 * * @param string $name * @param array $arguments */ function __call( $name, $arguments ) { if ( strpos( $name, 'display_settings_page_' ) === 0 ) { $location = substr( $name, 22 ); return $this->display_settings_page( $location ); } throw new InvalidArgumentException( sprintf( esc_html_x( "Method %s doesn't exist", 'placeholder: method name', 'learndash' ), $name ) ); } /** * Constructor for the Semper_Fi_Module class */ function __construct() { if ( empty( $this->file ) ) { $this->file = __FILE__; } $this->plugin_path = array(); $this->plugin_path['dir'] = plugin_dir_path( dirname( $this->file ) ); $this->plugin_path['basename'] = plugin_basename( $this->plugin_path['dir'].'/sfwd_lms.php' ); $this->plugin_path['dirname'] = dirname( $this->plugin_path['basename'] ); $this->plugin_path['url'] = plugin_dir_url( dirname( $this->file ) ); $this->plugin_path['images_url'] = $this->plugin_path['url'] . 'assets/images'; } /** * Adds support for getting network options. * * @since 2.1.0 * * @param string $name * @param boolean|string|array $default * @param boolean $use_cache * @return string */ function get_option( $name, $default = false, $use_cache = true ) { if ( $this->network_options ) { return get_site_option( $name, $default, $use_cache ); } else { return get_option( $name, $default ); } } /** * Adds support for updating network options. * * @since 2.1.0 * * @param string $option Option to be changed * @param string $newvalue Value of new option * @return bool */ function update_option( $option, $newvalue ) { if ( $this->network_options ) { return update_site_option( $option, $newvalue ); } else { return update_option( $option, $newvalue ); } } /** * Adds support for deleting network options. * * @since 2.1.0 * * @param string $option * @return bool */ function delete_option( $option ) { if ( $this->network_options ) { return delete_site_option( $option ); } else { return delete_option( $option ); } } /** * Get options for module, stored individually or together. * * @since 2.1.0 * * @return bool|string */ function get_class_option() { $option_name = $this->get_option_name(); if ( $this->store_option ) { return $this->get_option( $option_name ); } else { $option = $this->get_option( $this->parent_option ); if ( isset( $option['modules'] ) && isset( $option['modules'][ $option_name ] ) ) { return $option['modules'][ $option_name ]; } } return false; } /** * Update options for module, stored individually or together. * * @since 2.1.0 * * @param string $option_data * @param bool|string $option_name * @return bool */ function update_class_option( $option_data, $option_name = false ) { if ( $option_name == false ) { $option_name = $this->get_option_name(); } if ( $this->store_option ) { return $this->update_option( $option_name, $option_data ); } else { $option = $this->get_option( $this->parent_option ); if ( ! isset( $option['modules'] ) ) { $option['modules'] = array(); } $option['modules'][ $option_name ] = $option_data; return $this->update_option( $this->parent_option, $option ); } } /** * Delete options for module, stored individually or together. * * @since 2.1.0 * * @param bool $delete * @return bool */ function delete_class_option( $delete = false ) { $option_name = $this->get_option_name(); if ( $this->store_option || $delete ) { $this->delete_option( $option_name ); } else { $option = $this->get_option( $this->parent_option ); if ( isset( $option['modules'] ) && isset( $option['modules'][ $option_name ] ) ) { unset( $option['modules'][ $option_name ] ); return $this->update_option( $this->parent_option, $option ); } } return false; } /** * Get the option name with prefix. * * @since 2.1.0 * * @return string Option Name */ function get_option_name() { if ( ! isset( $this->option_name ) || empty( $this->option_name ) ) { $this->option_name = $this->prefix . 'options'; } return $this->option_name; } /** * Convenience function to see if an option is set. * * @since 2.1.0 * * @param string $option Option for this prefix * @param null|string $location $this->locations array index * @return bool */ function option_isset( $option, $location = null ) { $prefix = $this->get_prefix( $location ); $opt = $prefix . $option; return ( ( isset( $this->options[ $opt ] ) ) && $this->options[ $opt ] ); } /** * Displays tabs for tabbed locations on a settings page. * * @since 2.1.0 * * @param null|string $location $this->locations array index */ function display_tabs( $location ) { if ( ( $location != null ) && isset( $locations[ $location ]['tabs'] ) ) { $tabs = $locations['location']['tabs']; } else { $tabs = $this->tabs; } if ( ! empty( $tabs ) ) { ?>
      $post_types ) ); $export_data = array(); if ( ( $this === $sfp ) || ( $this->locations !== null ) ) { while ( $posts_query->have_posts() ): $posts_query->the_post(); global $post; $guid = $post->guid; $type = $post->post_type; $title = $post->post_title; $date = $post->post_date; $data = ''; /* Add Module Meta Data */ if ( $this->locations !== null ) { foreach ( $this->locations as $k => $v ) { if ( isset( $v['type'] ) && isset( $v['options'] ) && ( $v['type'] === 'metabox' ) ) { $value = $this->get_prefix( $k ) . $k; $post_meta = get_post_meta( $post->ID, '_' . $value, true ); if ( $post_meta ) { $data .= "$value = '" . str_replace( array("'", "\n", "\r"), array("\'", '\n', '\r'), trim( serialize( $post_meta ) ) ) . "'"; } } } } else { /* Add Post Field Data */ $post_custom_fields = get_post_custom( $post->ID ); $has_data = null; if ( is_array( $post_custom_fields ) ) { foreach ( $post_custom_fields as $field_name => $field ) { if ( ( substr( $field_name, 1, 7 ) == 'sfwd' ) && ( $field[0] ) ) { $has_data = true; $data .= $field_name . " = '" . $field[0] . "'\n"; } } } } /* Print post data to file */ if ( $has_data != null ) { $post_info = "\n[post_data]\n\n"; $post_info .= "post_title = '" . $title . "'\n"; $post_info .= "post_guid = '" . $guid . "'\n"; $post_info .= "post_date = '" . $date . "'\n"; $post_info .= "post_type = '" . $type . "'\n"; if ( $data ) { $buf .= $post_info . $data . "\n"; } } endwhile; wp_reset_postdata(); } } /* Add all active settings to settings file */ $name = $this->get_option_name(); $options = $this->get_class_option(); if ( ! empty( $options ) && $general_settings != null ) { $buf .= "\n[ $name]\n\n"; foreach ( $options as $key => $value ) { if ( ( $name == $this->parent_option ) && ( $key == 'modules' ) ) { continue; } // don't re-export all module settings -- pdb if ( is_array( $value ) ) { $value = "'" . str_replace( array("'", "\n", "\r"), array("\'", '\n', '\r'), trim( serialize( $value ) ) ) . "'"; } else { $value = str_replace( array("\n", "\r"), array('\n', '\r'), trim( var_export( $value, true ) ) ); } $buf .= "$key = $value\n"; } } return $buf; } /** * Print a basic error message. * * @since 2.1.0 * * @param string $error Error message * @return bool */ function output_error( $error ) { echo "
      $error
      "; return false; } /** * Helper function to convert csv in key/value pair format to an associative array. * * @since 2.1.0 * * @param string $csv Comma seperated text string * @return array Array representation of comma seperated text */ function csv_to_array( $csv ) { $args = array(); $v = str_getcsv( $csv ); $size = count( $v ); if ( is_array( $v ) && isset( $v[0] ) && $size >= 2 ) { for ( $i = 0; $i < $size; $i += 2 ) { $args[ $v[ $i]] = $v[ $i + 1]; } } return $args; } /** * Crude approximization of whether current user is an admin * * @since 2.1.0 * * @return bool */ function is_admin() { return current_user_can( LEARNDASH_ADMIN_CAPABILITY_CHECK ); } /** * Load styles for module. * * @since 2.1.0 * */ function enqueue_styles() { global $learndash_assets_loaded; wp_enqueue_style( 'thickbox' ); if ( ! empty( $this->pointers) ) { wp_enqueue_style( 'wp-pointer' ); } wp_enqueue_style( 'sfwd-module-style', LEARNDASH_LMS_PLUGIN_URL . 'assets/css/sfwd_module'. leardash_min_asset() .'.css', array(), LEARNDASH_SCRIPT_VERSION_TOKEN ); wp_style_add_data( 'sfwd-module-style', 'rtl', 'replace' ); $learndash_assets_loaded['styles']['sfwd-module-style'] = __FUNCTION__; } /** * Load scripts for module, can pass data to module script. * * @since 2.1.0 * */ function enqueue_scripts() { global $learndash_assets_loaded; wp_enqueue_script( 'jquery' ); if ( is_admin() ) { wp_enqueue_script( 'jquery-ui-core' ); wp_enqueue_script( 'jquery-ui-datepicker' ); wp_enqueue_script( 'media-upload' ); wp_enqueue_script( 'thickbox' ); if ( ! empty( $this->pointers ) ) { wp_enqueue_script( 'wp-pointer', false, array( 'jquery' ) ); $this->script_data['pointers'] = $this->pointers; } } $this->script_data['learndash_categories_lang'] = esc_html__( 'LearnDash Categories', 'learndash' ); $this->script_data['loading_lang'] = esc_html__( 'Loading...', 'learndash' ); $this->script_data['select_a_lesson_lang'] = sprintf( esc_html_x( '-- Select a %s --', 'Select a Lesson Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ) ); $this->script_data['select_a_lesson_or_topic_lang'] = sprintf( esc_html_x( '-- Select a %s or %s --', 'Select a Lesson Topic Label', 'learndash' ), LearnDash_Custom_Label::get_label( 'lesson' ), LearnDash_Custom_Label::get_label( 'topic' ) ); $this->script_data['advanced_quiz_preview_link'] = admin_url( 'admin.php?page=ldAdvQuiz&module=preview&id=' ); $this->script_data['valid_recurring_paypal_day_range'] = esc_html__( 'Valid range is 1 to 90 when the Billing Cycle is set to days.', 'learndash' ); $this->script_data['valid_recurring_paypal_week_range'] = esc_html__( 'Valid range is 1 to 52 when the Billing Cycle is set to weeks.', 'learndash' ); $this->script_data['valid_recurring_paypal_month_range'] = esc_html__( 'Valid range is 1 to 24 when the Billing Cycle is set to months.', 'learndash' ); $this->script_data['valid_recurring_paypal_year_range'] = esc_html__( 'Valid range is 1 to 5 when the Billing Cycle is set to years.', 'learndash' ); global $post; if (($post instanceof WP_Post) && ( $post->post_type == 'sfwd-quiz' )) { $this->script_data['quiz_pro'] = intval( learndash_get_setting( $post->ID, 'quiz_pro' ) ); } wp_enqueue_script( 'sfwd-module-script', LEARNDASH_LMS_PLUGIN_URL . 'assets/js/sfwd_module'. leardash_min_asset() .'.js', array( 'jquery' ), LEARNDASH_SCRIPT_VERSION_TOKEN, true ); $learndash_assets_loaded['scripts']['sfwd-module-script'] = __FUNCTION__; $data = array(); if ( ! empty( $this->script_data ) ) { $data = $this->script_data; } if ( !isset( $data['ajaxurl'] ) ) $data['ajaxurl'] = admin_url('admin-ajax.php'); $data = array( 'json' => json_encode( $data ) ); wp_localize_script( 'sfwd-module-script', 'sfwd_data', $data ); if ( !isset( $learndash_assets_loaded['scripts']['learndash_template_script_js'] ) ) { // First check if the theme has the file learndash/learndash_template_script.js or learndash_template_script.js file $filepath = SFWD_LMS::get_template( 'learndash_template_script.js', null, null, true ); if ( !empty( $filepath ) ) { wp_enqueue_script( 'learndash_template_script_js', learndash_template_url_from_path( $filepath ), array( 'jquery' ), LEARNDASH_SCRIPT_VERSION_TOKEN, true ); $learndash_assets_loaded['scripts']['learndash_template_script_js'] = __FUNCTION__; } } } /** * Override this to run code at the beginning of the settings page. * * @since 2.1.0 * */ function settings_page_init() { } /** * Filter out admin pointers that have already been clicked. * * @since 2.1.0 * */ function filter_pointers() { if ( ! empty( $this->pointers ) ) { $dismissed = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) ); foreach ( $dismissed as $d ) { if ( isset( $this->pointers[ $d ] ) ) { unset( $this->pointers[ $d ] ); } } } } /** * Add basic hooks when on the module's page. */ function add_page_hooks() { $hookname = current_filter(); if ( strpos( $hookname, 'load-' ) === 0 ) { $this->pagehook = substr( $hookname, 5 ); } $this->filter_pointers(); add_action( 'admin_print_scripts', array( $this, 'enqueue_scripts' ) ); add_action( 'admin_print_styles', array( $this, 'enqueue_styles' ) ); add_action( $this->prefix . 'settings_header', array( $this, 'display_tabs' ) ); } /** * Collect metabox data together for tabbed metaboxes. * * @since 2.1.0 * * @param array $args * @return array Merged array */ function filter_return_metaboxes( $args ) { return array_merge( $args, $this->post_metaboxes ); } /** * Add submenu for module, call page hooks, set up metaboxes. * * @since 2.1.0 * * @param string $parent_slug * @return bool */ function add_menu( $parent_slug ) { if ( empty( $parent_slug) ) { $parent_slug = 'options-general.php'; } if ( ! empty( $this->menu_name) ) { $name = $this->menu_name; } else { $name = $this->name; } //$default_options_page = 'sfwd-lms_sfwd_lms.php_post_type_' . $this->post_type; $default_options_page = $this->post_type .'-options'; if ( $this->locations === null ) { $hookname = add_submenu_page( $parent_slug, $name, $name, LEARNDASH_ADMIN_CAPABILITY_CHECK, $default_options_page, array( $this, 'display_settings_page') ); add_action( "load-{$hookname}", array( $this, 'add_page_hooks') ); return true; } foreach ( $this->locations as $k => $v ) { if ( $v['type'] === 'settings' ) { // The following section of code was used to create a Post Type Options submenu and settings. This // Was changed in LD v2.4 to use the new Settings Pages classes. /* if ( $k === 'default' ) { if ( ! empty( $this->menu_name) ) { $name = $this->menu_name; } else { $name = $this->name; } $hookname = add_submenu_page( $parent_slug, $name, $name, LEARNDASH_ADMIN_CAPABILITY_CHECK, $default_options_page, array( $this, 'display_settings_page') ); } else { if ( ! empty( $v['menu_name'] ) ) { $name = $v['menu_name']; } else { $name = $v['name']; } $hookname = add_submenu_page( $parent_slug, $name, $name, LEARNDASH_ADMIN_CAPABILITY_CHECK, $this->get_prefix( $k ) . $k, array( $this, "display_settings_page_$k") ); } add_action( "load-{$hookname}", array( $this, 'add_page_hooks') ); */ } elseif ( $v['type'] === 'metabox' ) { add_action( 'save_post', array( $this, 'save_post_data'), 10, 3 ); if ( isset( $v['display'] ) && ! empty( $v['display'] ) ) { foreach ( $v['display'] as $posttype ) { $v['location'] = $k; $v['posttype'] = $posttype; if ( ! isset( $v['context'] ) ) { //$v['context'] = 'advanced'; $v['context'] = 'normal'; } if ( ! isset( $v['priority'] ) ) { //$v['priority'] = 'default'; $v['priority'] = 'high'; } if ( $this->tabbed_metaboxes ) { $this->post_metaboxes[] = array( 'id' => $v['prefix'] . $k, 'title' => $v['name'], 'callback' => array( $this, 'display_metabox' ), 'post_type' => $posttype, 'context' => $v['context'], 'priority' => $v['priority'], 'callback_args' => $v ); add_filter( 'sfwd_add_post_metabox', array( $this, 'filter_return_metaboxes') ); } else { if ( ( isset( $name ) ) && ( ! empty( $name ) ) ) { $title = $name; } else { $title = $v['name']; if ( $title != $this->plugin_name ) { $title = $this->plugin_name . ' - ' . $title; } } /** * semperfi_metabox_title filter * * Runs the semperfi_metabox_title filter to retrieve a title * * @since 2.1.0 * * @param string $title * @param string $v['prefix'] . $k */ if ( ( 'sfwd-quiz' === $posttype ) && ( apply_filters( 'learndash_settings_metaboxes_legacy_quiz', LEARNDASH_SETTINGS_METABOXES_LEGACY_QUIZ, $posttype ) ) ) { $title = apply_filters( 'semperfi_metabox_title', $title, $v['prefix'] . $k ); add_meta_box( $v['prefix'] . $k, $title, array( $this, 'display_metabox'), $posttype, $v['context'], $v['priority'], $v ); } else if ( apply_filters( 'learndash_settings_metaboxes_legacy', LEARNDASH_SETTINGS_METABOXES_LEGACY, $posttype ) ) { $title = apply_filters( 'semperfi_metabox_title', $title, $v['prefix'] . $k ); add_meta_box( $v['prefix'] . $k, $title, array( $this, 'display_metabox'), $posttype, $v['context'], 'low', $v ); } } /** * enqueue_scripts action add * * Adds 'admin_print_scripts-post.php' to the enqueued scripts hook * * @since 2.1.0 * * @param array array( $this, 'enqueue_scripts') */ add_action( 'admin_print_scripts-post.php', array( $this, 'enqueue_scripts') ); /** * enqueue_scripts action add * * Adds admin_print_scripts-post-new.php to the 'enqueue_scripts' hook * * @since 2.1.0 * * @param array array( $this, 'enqueue_scripts') */ add_action( 'admin_print_scripts-post-new.php', array( $this, 'enqueue_scripts') ); /** * enqueue_styles action add * * Adds admin_print_styles-post.php to the 'enqueue_styles' hook * * @since 2.1.0 * * @param array array( $this, 'enqueue_styles') */ add_action( 'admin_print_styles-post.php', array( $this, 'enqueue_styles') ); /** * enqueue_scripts action add * * Adds the filename 'admin_print_styles-post-new.php' to the 'enqueue_styles' hook * * @since 2.1.0 * * @param array array( $this, 'enqueue_styles') */ add_action( 'admin_print_styles-post-new.php', array( $this, 'enqueue_styles') ); } } } } } /** * Update postmeta for metabox. * * @since 2.1.0 * * @param int $post_id */ function save_post_data( $post_id = 0, $saved_post = null, $update = null ) { if ( $this->locations !== null ) { foreach ( $this->locations as $k => $v ) { if ( isset( $v['type'] ) && ( $v['type'] === 'metabox') ) { $opts = $this->default_options( $k ); $options = array(); $update = false; foreach ( $opts as $l => $o ) { if ( isset( $_POST[ $l] ) ) { $options[ $l] = stripslashes_deep( $_POST[ $l] ); if ( !is_array( $options[ $l] ) ) $options[ $l] = esc_attr( $options[ $l] ); $update = true; } } if ( $update ) { if ( $k == 'sfwd-courses' ) { // If the Course Price Type is 'Buy Now' (paynow) we want to format the price on the course save. We also format the price // in learndash_payment_buttons() just before the price buttons are generated for PayPal, Stripe, 2checkout etc //if ( ( isset( $options['sfwd-courses_course_price_type'] ) ) && ( $options['sfwd-courses_course_price_type'] == 'paynow' ) ) { // if ( ( isset( $options['sfwd-courses_course_price'] ) ) && ( !empty( $options['sfwd-courses_course_price'] ) ) ) { // // format the Course price to be proper XXX.YY no leading dollar signs or other values. // $options['sfwd-courses_course_price'] = preg_replace("/[^0-9.]/", '', $options['sfwd-courses_course_price'] ); // $options['sfwd-courses_course_price'] = number_format( floatval( $options['sfwd-courses_course_price'] ), 2, '.', '' ); // } //} if ( !isset( $options['sfwd-courses_course_prerequisite_enabled'] ) ) { $options['sfwd-courses_course_prerequisite_enabled'] = 'off'; } if ( !isset( $options['sfwd-courses_course_prerequisite'] ) ) { $options['sfwd-courses_course_prerequisite'] = array(); } // IF prereq not enabled then clear out the courses array. if ( $options['sfwd-courses_course_prerequisite_enabled'] != 'on' ) { $options['sfwd-courses_course_prerequisite'] = array(); } else { if (( isset( $options['sfwd-courses_course_prerequisite'] ) ) && ( !empty( $options['sfwd-courses_course_prerequisite'] ) )) { foreach( $options['sfwd-courses_course_prerequisite'] as $c_idx => $c_id ) { $c_id = intval( $c_id ); if (empty( $c_id ) ) unset( $options['sfwd-courses_course_prerequisite'][$c_idx] ); } } } // Or the other way if there are no selected prereq courses set enable off. if ( empty( $options['sfwd-courses_course_prerequisite'] ) ) $options['sfwd-courses_course_prerequisite_enabled'] = 'off'; else $options['sfwd-courses_course_prerequisite'] = array_values( $options['sfwd-courses_course_prerequisite'] ); if (( isset( $options['sfwd-courses_course_points_enabled'] ) ) && ( $options['sfwd-courses_course_points_enabled'] == 'on' )) { if ( isset( $options['sfwd-courses_course_points'] ) ) $course_points = learndash_format_course_points( $options['sfwd-courses_course_points'] ); else $course_points = 0; if ( !empty( $course_points ) ) update_post_meta( $post_id, 'course_points', $course_points ); else delete_post_meta( $post_id, 'course_points' ); } else { delete_post_meta( $post_id, 'course_points' ); } if ( isset( $options['sfwd-courses_course_access_list'] ) ) { $options['sfwd-courses_course_access_list'] = learndash_convert_course_access_list( $options['sfwd-courses_course_access_list'] ); update_post_meta( $post_id, 'course_access_list', $options['sfwd-courses_course_access_list'] ); } } else if ( ( $k == 'sfwd-lessons' ) && ( isset( $options[$k.'_visible_after_specific_date'] ) ) ) { $date = $options[$k .'_visible_after_specific_date']; if ( isset( $date['aa'] ) ) $date['aa'] = intval( $date['aa'] ); else $date['aa'] = 0; if ( isset( $date['mm'] ) ) $date['mm'] = intval( $date['mm'] ); else $date['mm'] = 0; if ( isset( $date['jj'] ) ) $date['jj'] = intval( $date['jj'] ); else $date['jj'] = 0; if ( isset( $date['hh'] ) ) $date['hh'] = intval( $date['hh'] ); else $date['hh'] = 0; if ( isset( $date['mn'] ) ) $date['mn'] = intval( $date['mn'] ); else $date['mn'] = 0; if ( ( !empty( $date['aa'] ) ) && ( !empty( $date['mm'] ) ) && ( !empty( $date['jj'] ) ) ) { $date_string = sprintf( '%04d-%02d-%02d %02d:%02d:00', intval( $date['aa'] ), intval( $date['mm'] ), intval( $date['jj'] ), intval( $date['hh'] ), intval( $date['mn'] ) ); $date_string_gmt = get_gmt_from_date( $date_string, 'Y-m-d H:i:s' ); $options[$k .'_visible_after_specific_date'] = strtotime( $date_string_gmt ); } else { $options[$k .'_visible_after_specific_date'] = 0; } } // LEARNDASH-261: We need to reset the reference to the post meta ‘quiz_pro_id’ when the quiz is saved // in case the ‘Associated Settings’ selector is updated. else if ( ( $k == 'sfwd-quiz' ) && ( isset( $options[$k.'_quiz_pro'] ) ) ) { //error_log('_POST
      '. print_r($_POST, true) .'
      '); $quiz_pro_id_new = absint( $options['sfwd-quiz_quiz_pro'] ); $quiz_pro_id_org = absint( get_post_meta( $post_id, 'quiz_pro_id', true ) ) ; if ( $quiz_pro_id_org !== $quiz_pro_id_new ) { /** * If this quiz was the primary for all shared settings. We need to * delete the primary marker then move the primary marker to another * quiz using the same shared settngs. */ $quiz_id_primary_org = absint( learndash_get_quiz_primary_shared( $quiz_pro_id_org, false ) ); if ( $quiz_id_primary_org === $post_id ) { delete_post_meta( $post_id, 'quiz_pro_primary_'. $quiz_pro_id_org ); $quiz_post_ids = learndash_get_quiz_post_ids( $quiz_pro_id_org ); if ( ! empty( $quiz_post_ids ) ) { foreach( $quiz_post_ids as $quiz_post_id ) { if ( $quiz_post_id !== $post_id ) { update_post_meta( $quiz_post_id, 'quiz_pro_primary_'. $quiz_pro_id_org, $quiz_pro_id_org ); /** * After we move the primary marker we also need to move the questions. */ $ld_quiz_questions_object = LDLMS_Factory_Post::quiz_questions( intval( $post_id ) ); if ( $ld_quiz_questions_object ) { $questions = $ld_quiz_questions_object->get_questions( 'post_ids' ); $questions = get_post_meta( $post_id, 'ld_quiz_questions', true ); update_post_meta( $quiz_post_id, 'ld_quiz_questions', $questions ); } break; } } } } $quiz_id_primary_new = absint( learndash_get_quiz_primary_shared( $quiz_pro_id_new, false ) ); if ( empty( $quiz_id_primary_new ) ) { update_post_meta( $post_id, 'quiz_pro_primary_'. $quiz_pro_id_new, $quiz_pro_id_new ); // trigger to cause reloading of the questions. delete_post_meta( $post_id, 'ld_quiz_questions' ); } //$quiz_id_primary_new = absint( learndash_get_quiz_primary_shared( $quiz_pro_id_new, false ) ); //if ( empty( $quiz_id_primary_new ) ) { // //$quiz_post_ids = learndash_get_quiz_post_ids( $quiz_pro_id ); // $questions = get_post_meta( $quiz_id_primary_org, 'ld_quiz_questions', true ); // update_post_meta( $post_id, 'ld_quiz_questions', $questions ); //} global $wpdb; $sql_str = "DELETE FROM ". $wpdb->postmeta ." WHERE post_id=". $post_id ." AND meta_key like 'quiz_pro_id_%'"; $quiz_query_results = $wpdb->query( $sql_str ); update_post_meta( $post_id, 'quiz_pro_id', $quiz_pro_id_new ); update_post_meta( $post_id, 'quiz_pro_id_'. $quiz_pro_id_new, $quiz_pro_id_new ); } } else if ( $k == 'sfwd-question' ) { if ( isset( $options[ $k . '_quiz' ] ) ) { $quiz_id_new = absint( $options[ $k . '_quiz' ] ); $quiz_id_old = get_post_meta( $post_id, 'quiz_id', true ); $quiz_id_old = absint( $quiz_id_old ); if ( $quiz_id_old !== $quiz_id_new ) { update_post_meta( $post_id, 'quiz_id', $quiz_id_new); if ( ! empty( $quiz_id_old ) ) { learndash_set_quiz_questions_dirty( $quiz_id_old ); } if ( ! empty( $quiz_id_new ) ) { learndash_set_quiz_questions_dirty( $quiz_id_new ); } } } } update_post_meta( $post_id, '_' . $this->get_prefix( $k ) . $k, $options ); learndash_convert_settings_to_single( $post_id, $options, $k ); // Purge the LD transients when we save any of our post types. LDLMS_Transients::purge_all(); } } } } } /** * Outputs radio buttons, checkboxes, selects, multiselects, handles groups. * * @since 2.1.0 * * @param array $args * @return string */ function do_multi_input( $args ) { extract( $args ); $buf1 = ''; $type = $options['type']; if ( ( $type == 'radio' ) || ( $type == 'checkbox' ) ) { $strings = array( 'block' => "%s\n", 'group' => "\t%s
      \n%s\n", 'item' => "\t\n", 'item_args' => array('sel', 'name', 'v', 'attr', 'subopt'), 'selected' => 'checked ', ); } else { $lazy_load_data = ''; $lazy_load_spinner = ''; if ( ( isset( $args['options']['lazy_load'] ) ) && ( $args['options']['lazy_load'] == true ) ) { if ( ( isset( $args['options']['lazy_load_data'] ) ) && ( !empty( $args['options']['lazy_load_data'] ) ) ) { $args['options']['lazy_load_data']['value'] = $args['value']; //$lazy_load_data['nonce'] = $post_type_nonce; $lazy_load_data = ' learndash_lazy_load_data="'. htmlspecialchars( json_encode( $args['options']['lazy_load_data'] ) ) .'" '; $lazy_load_spinner = '
      '; } } $block = ''; $show_required = false; if ( in_array( $args['name'], array( 'sfwd-lessons_course', 'sfwd-topic_course', 'sfwd-topic_lesson') ) === true ) { if ( ( !isset( $args['value'] ) ) || ( empty( $args['value'] ) ) ) { $show_required = true; } } if ( $show_required === true ) { $block .= ''; } $block .= "\n" . $lazy_load_spinner; $strings = array( 'block' => $block, 'group' => "\t\n%s\t\n", 'item' => "\t\n", 'item_args' => array('sel', 'v', 'subopt'), 'selected' => 'selected ', ); } $setsel = $strings['selected']; if ( isset( $options['initial_options'] ) && is_array( $options['initial_options'] ) ) { foreach ( $options['initial_options'] as $l => $option ) { $is_group = is_array( $option ); if ( ! $is_group ) { $option = array( $l => $option ); } $buf2 = ''; foreach ( $option as $v => $subopt ) { $sel = ''; $is_arr = is_array( $value ); if ( is_string( $v ) || is_string( $value ) ) { $cmp = ! strcmp( (string) $v, (string) $value ); } else { $cmp = ( $value == $v ); } if ( ( ! $is_arr && $cmp ) || ( $is_arr && in_array( $v, $value ) ) ) { $sel = $setsel; } $item_arr = array(); foreach ( $strings['item_args'] as $arg ) { $item_arr[] = $$arg; } $buf2 .= vsprintf( $strings['item'], $item_arr ); } if ( $is_group ) { $buf1 .= sprintf( $strings['group'], $l, $buf2 ); } else { $buf1 .= $buf2; } } $buf1 = sprintf( $strings['block'], $buf1 ); } return $buf1; } /** * Outputs a setting item for settings pages and metaboxes. * * @since 2.1.0 * * @param array $args * @return string|array */ function get_option_html( $args) { global $wp_locale; static $n = 0; extract( $args ); if ( $options['type'] == 'custom' ) { /** * Applies the output option filter for this prefix * * @since 2.1.0 * * @param string '' * @param string $args */ return apply_filters( "{$this->prefix}output_option", '', $args ); } if ( in_array( $options['type'], array( 'multiselect', 'select', 'multicheckbox', 'radio', 'checkbox', 'textarea', 'text', 'submit', 'hidden' ) ) ) { if ( is_string( $value ) ) $value = esc_attr( $value ); } $buf = ''; if ( ! empty( $options['count'] ) ) { $n++; $attr .= " onKeyDown='countChars(document.post.$name,document.post.length$n)' onKeyUp='countChars(document.post.$name,document.post.length$n)'"; } switch ( $options['type'] ) { case 'multiselect':$attr .= ' MULTIPLE'; $args['attr'] = $attr; $args['name'] = $name = "{$name}[]"; case 'select':$buf .= $this->do_multi_input( $args ); break; case 'multicheckbox':$args['name'] = $name = "{$name}[]"; $args['options']['type'] = $options['type'] = 'checkbox'; case 'radio':$buf .= $this->do_multi_input( $args ); break; case 'checkbox': if ( ( isset( $options['checked_value'] ) ) && ( !empty( $options['checked_value'] ) ) ) { $attr .= checked( $value, $options['checked_value'], false); } else if ( $value ) { $attr .= ' CHECKED'; } $buf .= "\n"; break; case 'textarea':$buf .= ""; break; case 'image':$buf .= "" . "\n"; break; case 'html':$buf .= $value; break; case 'number': if (isset($options['min'])) { $min = ' min="'. $options['min'] .'" '; } else { $min = ''; } if (isset($options['step'])) { $step = ' step="'. $options['step'] .'" '; } else { if (!empty($min)) { $step = ' step="1" '; } else { $step = ''; } } if (( $name == 'sfwd-courses_course_points' ) || ( $name == 'sfwd-courses_course_points_access' )) $value = learndash_format_course_points( $value ); $buf .= "\n"; break; case 'wp_date_selector': if ( !empty( $value ) ) { if ( !is_numeric( $value ) ) { $value = learndash_get_timestamp_from_date_string( $value ); } else { // If we have a timestamp we assume it is GMT. So we need to convert it to local. $value_ymd = get_date_from_gmt( date('Y-m-d H:i:s', $value), 'Y-m-d H:i:s' ); $value = strtotime( $value_ymd ); } } if ( !empty( $value ) ) { $value_jj = gmdate( 'd', $value ); $value_mm = gmdate( 'm', $value ); $value_aa = gmdate( 'Y', $value ); $value_hh = gmdate( 'H', $value ); $value_mn = gmdate( 'i', $value ); } else { $value_jj = ''; $value_mm = ''; $value_aa = ''; $value_hh = ''; $value_mn = ''; } $month_field = '' . esc_html__( 'Month', 'learndash' ) . ''; $day_field = '' . esc_html__( 'Day', 'learndash' ) . ''; $year_field = '' . esc_html__( 'Year', 'learndash' ) . ''; $hour_field = '' . esc_html__( 'Hour', 'learndash' ) . ''; $minute_field = '' . esc_html__( 'Minute', 'learndash' ) . ''; $buf .= '
      '. sprintf( esc_html__( '%1$s %2$s, %3$s @ %4$s:%5$s', 'default' ), $month_field, $day_field, $year_field, $hour_field, $minute_field ) .'
      '; break; default:$buf .= "\n"; } if ( ! empty( $options['count'] ) ) { $size = 60; if ( isset( $options['size'] ) ) { $size = $options['size']; } elseif ( isset( $options['rows'] ) && isset( $options['cols'] ) ) { $size = $options['rows'] * $options['cols']; } $buf .= "" . sprintf( esc_html__( ' characters. Most search engines use a maximum of %s chars for the %s.', 'learndash' ), $size, strtolower( $options['name'] ) ); } return $buf; } /** * HTML Help Start anchor tag * @const string */ const DISPLAY_HELP_START = ''; /** * HTML Help End anchor label * @const string */ const DISPLAY_HELP_END = ''; /** * HTML Display label span * @const string */ const DISPLAY_LABEL_FORMAT = '%s'; /** * HTML Display top label * @const string */ const DISPLAY_TOP_LABEL = "\n
      \n"; /** * The plugin remote update path * @const string */ const DISPLAY_ROW_TEMPLATE = '
      %s
      %s
      %s

      '; /** * Format a row for an option on a settings page. * * @since 2.1.0 * * @param string $name * @param array $opts * @param array $args * @return string */ function get_option_row( $name, $opts, $args ) { global $post_type; $label_text = $input_attr = $help_text_2 = $id_attr = ''; if ( $opts['label'] == 'top' ) { $align = 'left'; } else { $align = 'right'; } if ( isset( $opts['id'] ) ) { $id_attr .= " id=\"{$opts['id']}\" "; } if ( $opts['label'] != 'none' ) { if ( isset( $opts['help_text'] ) ) { $help_text = sprintf( Semper_Fi_Module::DISPLAY_HELP_START, esc_html__( 'Click for Help!', 'learndash' ), $name, $this->plugin_path['images_url'], $opts['name'] ); $help_text_2 = sprintf( Semper_Fi_Module::DISPLAY_HELP_END, $name, $opts['help_text'] ); } else { $help_text = $opts['name']; } $label_text = sprintf( Semper_Fi_Module::DISPLAY_LABEL_FORMAT, $align, $help_text ); } else { $input_attr .= 'sfwd_no_label '; } if ( $opts['label'] == 'top' ) { $label_text .= Semper_Fi_Module::DISPLAY_TOP_LABEL; } if ( $opts['type'] == 'hidden' ) { $input_attr .= 'sfwd_hidden_type'; } return sprintf( Semper_Fi_Module::DISPLAY_ROW_TEMPLATE, $input_attr, $name, $label_text, $id_attr, $this->get_option_html( $args ), $help_text_2 ); } /** * Display options for settings pages and metaboxes, allows for filtering settings, custom display options. * * @since 2.1.0 * * @param null|string $location $this->locations array index * @param null|array $meta_args */ function display_options( $location = null, $meta_args = null ) { global $sfwd_lms; static $location_settings = array(); $defaults = null; $prefix = $this->get_prefix( $location ); if ( is_array( $meta_args['args'] ) && ! empty( $meta_args['args']['default_options'] ) ) { $defaults = $meta_args['args']['default_options']; } if ( ! isset( $location_settings[ $prefix ] ) ) { /** * Applies the display options filter for this prefix * Filter display options * * @since 2.1.0 * * @param array $this->get_current_options( array(), $location, $defaults ) * @param null|string $location $this->locations array indexs */ $current_options = apply_filters( "{$this->prefix}display_options", $this->get_current_options( array(), $location, $defaults ), $location ); /** * Filter display settings * * @since 2.1.0 * * @param array $this->setting_options( $location, $defaults ) * @param null|string $location * @param array $current_options */ $settings = apply_filters( "{$this->prefix}display_settings", $this->setting_options( $location, $defaults ), $location, $current_options ); $location_settings[ $prefix ]['current_options'] = $current_options; $location_settings[ $prefix ]['settings'] = $settings; } else { $current_options = $location_settings[ $prefix ]['current_options']; $settings = $location_settings[ $prefix ]['settings']; } $container = "
      "; if ( is_array( $meta_args['args'] ) && ! empty( $meta_args['args']['options'] ) ) { $args = array(); $arg_keys = array(); foreach ( $meta_args['args']['options'] as $a ) { if ( ! empty( $location ) ) { $key = $prefix . $location . '_' . $a; if ( ! isset( $settings[ $key ] ) ) { $key = $a; } } else { $key = $prefix . $a; } if ( isset( $settings[ $key ] ) ) { $arg_keys[ $key ] = 1; } } if ( ( is_array( $settings ) ) && ( ! empty( $settings ) ) ) { $setting_keys = array_keys( $settings ); foreach ( $setting_keys as $s ) { if ( ! empty( $arg_keys[ $s ] ) ) { $args[ $s ] = $settings[ $s ]; } } } } else { $args = $settings; } foreach ( $args as $name => $opts ) { $attr_list = array( 'class', 'style', 'readonly', 'disabled', 'size', 'placeholder' ); if ( $opts['type'] == 'textarea' ) { $attr_list = array_merge( $attr_list, array( 'rows', 'cols' ) ); } $attr = ''; foreach ( $attr_list as $a ) { if ( isset( $opts[ $a ] ) ) { $attr .= " $a=\"{$opts[ $a]}\" "; } } $opt = ''; if ( isset( $current_options[ $name] ) ) { $opt = $current_options[ $name]; } if ( $opts['label'] == 'none' && $opts['type'] == 'submit' && $opts['save'] == false ) { $opt = $opts['name']; } if ( $opts['type'] == 'html' && empty( $opt ) && $opts['save'] == false ) { $opt = $opts['default']; } $args = array( 'name' => $name, 'options' => $opts, 'attr' => $attr, 'value' => $opt, 'prefix' => $prefix, ); if ( ! empty( $opts['nowrap'] ) ) { echo $this->get_option_html( $args ); } else { if ( $container ) { echo $container; $container = ''; } echo $this->get_option_row( $name, $opts, $args ); } } if ( ! $container ) { echo '
      '; } } /** * Sanitize options * * @param null|string $location $this->locations array index */ function sanitize_options( $location = null ) { foreach ( $this->setting_options( $location ) as $k => $v ) { if ( isset( $this->options[ $k ] ) ) { if ( ! empty( $v['sanitize'] ) ) { $type = $v['sanitize']; } else { $type = $v['type']; } switch ( $type ) { case 'multiselect': case 'multicheckbox':$this->options[ $k ] = urlencode_deep( $this->options[ $k ] ); break; case 'textarea':$this->options[ $k ] = wp_kses_post( $this->options[ $k ] ); $this->options[ $k ] = esc_textarea( $this->options[ $k ] ); break; case 'filename':$this->options[ $k ] = sanitize_file_name( $this->options[ $k ] ); break; case 'text':$this->options[ $k ] = wp_kses_post( $this->options[ $k ] ); case 'checkbox': case 'radio': case 'select': default:$this->options[ $k ] = esc_attr( $this->options[ $k ] ); } } } } /** * Display metaboxes with display_options() * * @since 2.1.0 * * @param object $post * @param array $metabox */ function display_metabox( $post, $metabox ) { $this->display_options( $metabox['args']['location'], $metabox ); } /** * Handle resetting options to defaults. * * @since 2.1.0 * * @param null|string $location $this->locations array index * @param bool $delete delete options flag * */ function reset_options( $location = null, $delete = false) { if ( $delete === true ) { $this->delete_class_option( $delete ); $this->options = array(); } $default_options = $this->default_options( $location ); foreach ( $default_options as $k => $v ) { $this->options[ $k ] = $v; } $this->update_class_option( $this->options ); } /** * handle option resetting and updating * * @since 2.1.0 * * @param null|string $location $this->locations array index */ function handle_settings_updates( $location = null ) { if ( ( isset( $_POST['action'] ) && $_POST['action'] == 'sfp_update_module' && ( isset( $_POST['Submit_Default'] ) || isset( $_POST['Submit_All_Default'] ) || ! empty( $_POST['Submit'] ) ) ) ) { $nonce = $_POST['nonce-sfwd']; if ( ! wp_verify_nonce( $nonce, 'sfwd-nonce' ) ) { die(__( 'Security Check - If you receive this in error, log out and back in to WordPress', 'learndash' )); } if ( isset( $_POST['Submit_Default'] ) || isset( $_POST['Submit_All_Default'] ) ) { $message = esc_html__( 'Options Reset.', 'learndash' ); if ( isset( $_POST['Submit_All_Default'] ) ) { $this->reset_options( $location, true ); /** * Resets the sfwd options * * @since 2.1.0 */ do_action( 'sfwd_options_reset' ); } else { $this->reset_options( $location ); } } if ( ! empty( $_POST['Submit'] ) ) { $message = esc_html__( 'Options Updated.', 'learndash' ); $default_options = $this->default_options( $location ); foreach ( $default_options as $k => $v ) { if ( isset( $_POST[ $k ] ) ) { $this->options[ $k ] = stripslashes_deep( $_POST[ $k ] ); } else { $this->options[ $k ] = ''; } } $this->sanitize_options( $location ); /** * Updates options of a particular prefix * * @since 2.1.0 * * @param array $this->options * @param null|string $location $this->locations array index * @return array */ $this->options = apply_filters( $this->prefix . 'update_options', $this->options, $location ); $this->update_class_option( $this->options ); wp_cache_flush(); } /** * Runds the settings update for this prefix * * @since 2.1.0 * * @param array $this->options * @param null|string $location $this->locations array index */ do_action( $this->prefix . 'settings_update', $this->options, $location ); } } /** * Update / reset settings, printing options, sanitizing, posting back * * @since 2.1.0 * * @param null|string $location $this->locations array index */ function display_settings_page( $location = null ) { if ( $location != null ) { $location_info = $this->locations[ $location ]; } $name = null; if ( ( $location ) && ( isset( $location_info['name'] ) ) ) { $name = $location_info['name']; } if ( ! $name ) { $name = $this->name; } $message = $this->handle_settings_updates( $location ); $this->settings_page_init(); if ( ! empty( $message ) ) { echo "

      $message

      "; } ?>

      locations array index */ do_action( 'sfwd_global_settings_header', $location ); /** * * Does the settings_header action for this prefix * * @since 2.1.0 * * @param null|string $location $this->locations array index */ do_action( $this->prefix . 'settings_header', $location ); ?>
      get_class_option(); if ( $opts !== false ) { $this->options = $opts; } if ( is_array( $this->layout ) ) { foreach ( $this->layout as $l => $lopts ) { if ( ! isset( $lopts['tab'] ) || ( $this->current_tab == $lopts['tab'] ) ) { add_meta_box( $this->get_prefix( $location ) . $l . '_metabox', $lopts['name'], array( $this, 'display_options' ), "{$this->prefix}settings", 'advanced', 'default', $lopts); } } } else { add_meta_box( $this->get_prefix( $location ) . 'metabox', $name, array( $this, 'display_options'), "{$this->prefix}settings", 'advanced' ); } do_meta_boxes( "{$this->prefix}settings", 'advanced', $location ); ?>

      array( 'type' => 'hidden', 'value' => 'sfp_update_module', ), 'nonce-sfwd' => array( 'type' => 'hidden', 'value' => wp_create_nonce( 'sfwd-nonce' ), ), 'page_options' => array( 'type' => 'hidden', 'value' => 'sfp_home_description', ), 'Submit' => array( 'type' => 'submit', 'class' => 'button-primary', 'value' => esc_html__( 'Update Options', 'learndash' ) . ' »', ), 'Submit_Default' => array( 'type' => 'submit', 'class' => 'button-primary', 'value' => esc_html__( 'Reset to Defaults', 'learndash' ) . ' »', ), ); /** * Applies the filter submit_options for this prefix * * @since 2.1.0 * * @param array $submit_options * @param null|string $location $this->locations array index */ $submit_options = apply_filters( "{$this->prefix}submit_options", $submit_options, $location ); foreach ( $submit_options as $k => $s ) { $class = ''; if ( isset( $s['class'] ) ) { $class = " class='{$s['class']}' "; } echo $this->get_option_html( array( 'name' => $k, 'options' => $s, 'attr' => $class, 'value' => $s['value'] ) ); } ?>

      locations array index */ do_action( $this->prefix . 'settings_footer', $location ); /** * * Does the 'sfwd_global_settings_footer' action * * @since 2.1.0 * * @param null|string $location $this->locations array index */ do_action( 'sfwd_global_settings_footer', $location ); ?>
      locations array index * @return string */ function get_prefix( $location = null ) { if ( ( $location != null ) && isset( $this->locations[ $location ]['prefix'] ) ) { return $this->locations[ $location ]['prefix']; } return $this->prefix; } /** * Sets up initial settings * * @since 2.1.0 * * @param null|string $location $this->locations array index * @param null|array $defaults * @return array */ function setting_options( $location = null, $defaults = null ) { if ( $defaults === null ) { $defaults = $this->default_options; } $prefix = $this->get_prefix( $location ); $opts = array(); if ( $location == null || $this->locations[ $location ]['options'] === null ) { $options = $defaults; } else { $options = array(); $prefix = "{$prefix}{$location}_"; if ( ! empty( $this->locations[ $location ]['default_options'] ) ) { $options = $this->locations[ $location ]['default_options']; } foreach ( $this->locations[ $location ]['options'] as $opt ) { if ( isset( $defaults[ $opt ] ) ) { $options[ $opt ] = $defaults[ $opt ]; } } } if ( ! $prefix ) { $prefix = $this->prefix; } if ( ! empty( $options ) ) { foreach ( $options as $k => $v ) { if ( ! isset( $v['name'] ) ) { $v['name'] = ucwords( strtr( $k, '_', ' ' ) ); } if ( ! isset( $v['type'] ) ) { $v['type'] = 'checkbox'; } if ( ! isset( $v['default'] ) ) { $v['default'] = null; } if ( ! isset( $v['initial_options'] ) ) { $v['initial_options'] = $v['default']; } if ( $v['type'] == 'custom' && ( ! isset( $v['nowrap'] ) ) ) { $v['nowrap'] = true; } elseif ( ! isset( $v['nowrap'] ) ) { $v['nowrap'] = null; } if ( isset( $v['condshow'] ) ) { if ( ! is_array( $this->script_data ) ) { $this->script_data = array(); } if ( ! isset( $this->script_data['condshow'] ) ) { $this->script_data['condshow'] = array(); } $this->script_data['condshow'][ $prefix . $k] = $v['condshow']; } if ( $v['type'] == 'submit' ) { if ( ! isset( $v['save'] ) ) { $v['save'] = false; } if ( ! isset( $v['label'] ) ) { $v['label'] = 'none'; } if ( ! isset( $v['prefix'] ) ) { $v['prefix'] = false; } } else { if ( ! isset( $v['label'] ) ) { $v['label'] = null; } } if ( $v['type'] == 'hidden' ) { if ( ! isset( $v['label'] ) ) { $v['label'] = 'none'; } if ( ! isset( $v['prefix'] ) ) { $v['prefix'] = false; } } if ( $v['type'] == 'text' ) { if ( ! isset( $v['size'] ) ) { $v['size'] = 57; } } if ( $v['type'] == 'textarea' ) { if ( ! isset( $v['cols'] ) ) { $v['cols'] = 57; } if ( ! isset( $v['rows'] ) ) { $v['rows'] = 2; } } if ( ! isset( $v['save'] ) ) { $v['save'] = true; } if ( ! isset( $v['prefix'] ) ) { $v['prefix'] = true; } if ( $v['prefix'] ) { $opts[ $prefix . $k ] = $v; } else { $opts[ $k ] = $v; } } } return $opts; } /** * Generates just the default option names and values * * @since 2.1.0 * * @param null|string $location $this->locations array index * @param null|array $defaults * @return array */ function default_options( $location = null, $defaults = null ) { $options = $this->setting_options( $location, $defaults ); $opts = array(); foreach ( $options as $k => $v ) { if ( $v['save'] ) { $opts[ $k ] = $v['default']; } } return $opts; } /** * Gets the current options stored for a given location. * * @since 2.1.0 * * @param array $opts Array of options * @param null|string $location $this->locations array index * @param null|array $defaults * @param null|object $post * @return array */ function get_current_options( $opts = array(), $location = null, $defaults = null, $post = null ) { $prefix = $this->get_prefix( $location ); $get_opts = ''; if ( empty( $location ) ) { $type = 'settings'; } else { $type = $this->locations[ $location ]['type']; } if ( $type === 'settings' ) { $get_opts = $this->get_class_option(); } elseif ( $type == 'metabox' ) { if ( $post == null ) { global $post; } if ( isset( $post ) ) { $get_opts = '_' . $prefix . $location; $get_opts = get_post_meta( $post->ID, $get_opts, true ); } } $defs = $this->default_options( $location, $defaults ); if ( $get_opts == '' ) { $get_opts = $defs; } else { $get_opts = wp_parse_args( $get_opts, $defs ); } $opts = wp_parse_args( $opts, $get_opts ); /* if ( isset( $opts[$location.'_course'] ) ) { $opts[$location.'_course'] = intval( $opts[$location.'_course'] ); if ( empty( $opts[$location.'_course'] ) ) { $alt_value = get_post_meta( $post->ID, 'course_id', true ); if ( !empty( $alt_value ) ) { $opts[$location.'_course'] = intval( $alt_value ); } } } if ( isset( $opts[$location.'_lesson'] ) ) { $opts[$location.'_lesson'] = intval( $opts[$location.'_lesson'] ); if ( empty( $opts[$location.'_lesson'] ) ) { $alt_value = get_post_meta( $post->ID, 'lesson_id', true ); if ( !empty( $alt_value ) ) { $opts[$location.'_lesson'] = intval( $alt_value ); } } } */ return $opts; } /** * Updates the options array in the module; loads saved settings with get_option() or uses defaults * * @since 2.1.0 * * @param array $opts Array of options * @param null|string $location $this->locations array index * @param null|array $defaults */ function update_options( $opts = array(), $location = null, $defaults = null ) { if ( $location === null ) { $type = 'settings'; } else { $type = $this->locations[ $location ][ $type ]; } if ( $type === 'settings' ) { $get_opts = $this->get_class_option(); } if ( $get_opts === false ) { $get_opts = $this->default_options( $location, $defaults ); } else { $this->setting_options( $location, $defaults ); } // hack -- make sure this runs anyhow, for now -- pdb $this->options = wp_parse_args( $opts, $get_opts ); } } } PKd\M; ; (includes/import/class-ld-import-quiz.phpnuW+AfetchAll( $ld_pro_quiz_id ); if ( !empty( $ld_quiz_questions ) ) { foreach( $ld_quiz_questions as $q_idx => $ld_quiz_question ) { $ld_quiz_questions[$q_idx] = $ld_quiz_question->get_object_as_array(); if ( ( isset( $ld_quiz_questions[$q_idx]['_answerData'] ) ) && ( !empty( $ld_quiz_questions[$q_idx]['_answerData'] ) ) ) { foreach( $ld_quiz_questions[$q_idx]['_answerData'] as $a_idx => $answer_item ) { $ld_quiz_questions[$q_idx]['_answerData'][$a_idx] = $answer_item->get_object_as_array(); } } } return $ld_quiz_questions; } } } } function startQuizSet() { $pro_quiz_import = new WpProQuiz_Model_Quiz(); return $pro_quiz_import->get_object_as_array(); } function saveQuizSet( $quiz_data = array() ) { if ( !empty( $quiz_data ) ) { $quiz_import = new WpProQuiz_Model_Quiz(); $quiz_import->set_array_to_object( $quiz_data ); $quizMapper = new WpProQuiz_Model_QuizMapper(); $quizMapper->save( $quiz_import ); $quiz_id = $quiz_import->getId(); return $quiz_id; } } // End of functions } }PKd\lo1includes/import/class-ld-import-user-progress.phpnuW+Aset_course_prerequisite_enabled( $dest_post_id, true ); $prerequisite_posts = learndash_get_course_prerequisite( $dest_post_id ); $prerequisite_posts[] = $prereq_post_id; $this->set_course_prerequisite( $dest_post_id, $prerequisite_posts ); } } function set_course_prerequisite_enabled( $course_id, $enabled = true ) { if ( $enabled === true ) $enabled = 'on'; if ( $enabled != 'on' ) $enabled = ''; return learndash_update_setting( $course_id, 'course_prerequisite_enabled', $enabled ); } function set_course_prerequisite( $course_id = 0, $course_prerequisites = array() ) { if ( !empty( $course_id ) ) { if ( ( !empty( $course_prerequisites ) ) && ( is_array( $course_prerequisites ) ) ) { $course_prerequisites = array_unique( $course_prerequisites ); } return learndash_update_setting( $course_id, 'course_prerequisite', (array)$course_prerequisites ); } } // End of functions } }PKd\$>(includes/import/class-ld-import-post.phpnuW+A $action, 'post' => $post->ID, 'ld_nonce' => wp_create_nonce( $action .'_'. $post->ID .'_'. $post->post_type .'_'. get_current_user_id() ) ); $url_params = apply_filters( 'ld_sensei_url_params', $url_params ); if ( !empty( $url_params ) ) { $url = add_query_arg( $url_params, admin_url( 'admin.php' ) ); return apply_filters( 'ld_sensei_url_link', $url, $url_params, $post_id, $action ); } } } public function duplicate_post( $source_post_id = 0, $force_copy = false ) { if ( !empty( $source_post_id ) ) { $source_post = get_post( $source_post_id ); if ( ( $source_post ) && ( $source_post->post_type == $this->source_post_type ) && ( is_a( $source_post, 'WP_Post' ) ) ) { $previous_imported_post_id = $this->get_imported( $source_post_id ); // For now set this to true so we don't have to clear all posts after each run. $force_copy = true; if ( ( empty( $previous_imported_post_id ) ) || ( $force_copy == true ) ) { $dest_post = array(); foreach( $source_post as $k => $v ) { if( ! in_array( $k, array( 'ID', 'post_type', 'guid', 'post_parent', 'comment_count', 'to_ping' ) ) ) { $dest_post[ $k ] = $v; } } $dest_post['post_type'] = $this->dest_post_type; // As per wp_update_post() we need to escape the data from the db. $dest_post = wp_slash( $dest_post ); $dest_post = apply_filters( 'learndash_duplicate_post_array', $dest_post, $source_post ); $dest_post_id = wp_insert_post( $dest_post ); if ( !is_wp_error( $dest_post_id ) ) { $dest_post = get_post( $dest_post_id ); add_post_meta( $dest_post->ID, '_ld_import_org', $source_post->ID ); $dest_post_meta = SFWD_CPT_Instance::$instances[ $dest_post->post_type ]->get_settings_values( $dest_post->post_type ); if ( !empty( $dest_post_meta ) ) { $dest_post_meta = wp_list_pluck( $dest_post_meta, 'value' ); } $dest_post_meta = apply_filters( 'learndash_sensei_import_meta', $dest_post_meta, $source_post, $dest_post ); add_post_meta( $dest_post->ID, '_' . $dest_post->post_type, $dest_post_meta ); return $dest_post; } } } } return false; } function duplicate_post_tax_term( $source_term, $create_parents = false ) { if ( ( $source_term ) && ( is_a( $source_term, 'WP_Term' ) ) ) { $terms_to_add = array( ); $ld_parent_term_id = 0; // First we build the parent tree if needed if ( ( !empty( $source_term->parent ) ) && ( is_taxonomy_hierarchical( $source_term->taxonomy ) ) && ( $create_parents == true ) ) { $term_parents = get_ancestors( $source_term->term_id, $source_term->taxonomy ); if ( !empty( $term_parents ) ) { //$terms_to_add = array_merge( array( $source_term->term_id ), $term_parents ); $terms_to_add = $term_parents; if ( !empty( $terms_to_add ) ) { krsort( $terms_to_add ); foreach( $terms_to_add as $s_term_idx => $s_term_id ) { $s_term = get_term_by( 'id', $s_term_id, $source_term->taxonomy ); if ( $s_term ) { $n_term = get_term_by( 'slug', $s_term->slug, $this->dest_taxonomy ); if ( !$n_term ) { $n_term = wp_insert_term( $s_term->name, $this->dest_taxonomy, array( 'slug' => $s_term->slug, 'parent' => $ld_parent_term_id ) ); if ( isset( $n_term['term_id'] ) ) { $ld_parent_term_id = $n_term['term_id']; } } else { $ld_parent_term_id = $n_term->term_id; } } } } } } $new_term = get_term_by( 'slug', $source_term->slug, $this->dest_taxonomy ); if ( !$new_term ) { $n_term = wp_insert_term( $source_term->name, $this->dest_taxonomy, array( 'slug' => $source_term->name, 'parent' => $ld_parent_term_id ) ); if ( !is_wp_error( $n_term ) ) { if ( isset( $n_term['term_id'] ) ) { $new_term = get_term_by( 'id', $n_term['term_id'], $this->dest_taxonomy ); } } } return $new_term; } } function set_post_tax_terms( $dest_post_id, $term_ids, $replace = false ) { if ( ( !empty( $dest_post_id )) && ( !empty( $term_ids ) ) ) { wp_set_object_terms( $dest_post_id, $term_ids, $this->dest_taxonomy, true ); } } function get_imported( $source_post_id = 0 ) { if ( !empty( $source_post_id ) ) { $dest_posts = get_posts( array( 'post_type' => $this->dest_post_type, 'meta_key' => '_ld_import_org', 'meta_value' => intval( $source_post_id ), ) ); if ( ( !empty( $dest_posts ) ) && ( is_array( $dest_posts ) ) ) { $dest_post = $dest_posts[0]; if ( is_a( $dest_post, 'WP_Post' ) ) { return $dest_post->ID; } } } return false; } // End of functions } }PKd\z@O)includes/import/class-ld-import-topic.phpnuW+Aget_object_as_array( ); } function startQuizStatisticsQuestion() { $pro_quiz_statistic_import = new WpProQuiz_Model_Statistic(); return $pro_quiz_statistic_import->get_object_as_array(); } // $quiz_statistic_data should be an array of arrays. Each array item represents a single user question response function saveQuizStatisticSet( $quiz_statistic_header = array(), $quiz_statistic_details = array() ) { if ( ( !empty( $quiz_statistic_header ) ) && ( !empty( $quiz_statistic_details ) ) ) { $statisticRefModel = new WpProQuiz_Model_StatisticRefModel(); $statisticRefModel->set_array_to_object( $quiz_statistic_header ); $statistic_values = array(); foreach( $quiz_statistic_details as $quiz_statistic_details ) { // Called to ensure we have a working Question Set ( WpProQuiz_Model_Question ) $pro_quiz_statistic_import = new WpProQuiz_Model_Statistic(); $pro_quiz_statistic_import->set_array_to_object( $quiz_statistic_details ); $statistic_values[] = $pro_quiz_statistic_import; } $statisticRefMapper = new WpProQuiz_Model_StatisticRefMapper(); $statisticRefMapper_id = $statisticRefMapper->statisticSave( $statisticRefModel, $statistic_values ); return $statisticRefMapper_id; } } // $file_upload_full is the full path to the existin file. // $question_id is needed when building the essay filename function migrate_file_upload_to_essay( $file_upload_full = '', $question_id = 0 ) { if ( !empty( $file_upload_full ) ) { // This logic was copied from LD core includes/quiz/ld-quiz-essay.php learndash_essay_fileupload_process() $filename = learndash_clean_filename( basename( $file_upload_full ) ); //$question_id = $ld_quiz_question['_id']; // get file info // @fixme: wp checks the file extension.... $filetype = wp_check_filetype( basename( $filename ), null ); $filetitle = preg_replace( '/\.[^.]+$/', '', basename( $filename ) ); $filename = sprintf( 'question_%d_%s.%s', $question_id, $filetitle, $filetype['ext'] ); $filename = apply_filters( 'learndash_essay_upload_filename', $filename, $question_id, $filetitle, $filetype['ext'] ); $upload_dir = wp_upload_dir(); $upload_dir_base = $upload_dir['basedir']; $upload_url_base = $upload_dir['baseurl']; $upload_dir_path = $upload_dir_base . apply_filters( 'learndash_essay_upload_dirbase', '/essays', $filename, $upload_dir ); $upload_url_path = $upload_url_base . apply_filters( 'learndash_essay_upload_urlbase', '/essays/', $filename, $upload_dir ); if ( ! file_exists( $upload_dir_path ) ) { mkdir( $upload_dir_path ); } /** * Check if the filename already exist in the directory and rename the * file if necessary */ $i = 0; while ( file_exists( $upload_dir_path . '/' . $filename ) ) { $i++; $filename = sprintf( 'question_%d_%s_%d.%s', $question_id, $filetitle, $i, $filetype['ext'] ); $filename = apply_filters( 'learndash_essay_upload_filename_dup', $filename, $question_id, $filetitle, $i, $filetype['ext'] ); } $filedest = $upload_dir_path . '/' . $filename; $copy_ret = copy( $file_upload_full, $filedest ); if ( $copy_ret === true ) { return $upload_url_path . $filename; //update_post_meta( $essay_post_id, 'upload', $upload_url_path . $filename ); //update_post_meta( $essay_post_id, '_ld_import_org', intval( $sensei_user_question_answers ) ); } } } /* [20-May-2017 16:53:07 UTC] user_quizzes
      Array
      		(
      		    [0] => Array
      		        (
      		            [quiz] => 927
      		            [score] => 5
      		            [count] => 6
      		            [question_show_count] => 6
      		            [pass] => 0
      		            [rank] => -
      		            [time] => 1495293659
      		            [pro_quizid] => 1
      		            [points] => 25
      		            [total_points] => 55
      		            [percentage] => 45.45
      		            [timespent] => 29.681
      		            [has_graded] => 1
      		            [statistic_ref_id] => 1
      		            [started] => 1495293628
      		            [completed] => 1495293658
      		            [graded] => Array
      		                (
      		                    [1] => Array
      		                        (
      		                            [post_id] => 960
      		                            [status] => graded
      		                            [points_awarded] => 12
      		                        )
      
      		                    [2] => Array
      		                        (
      		                            [post_id] => 961
      		                            [status] => not_graded
      		                            [points_awarded] => 0
      		                        )
      
      		                )
      
      		        )
      
      		)
      		
      */ function add_user_quiz_attempt( $user_id = 0, $quiz_attempt = array() ) { if ( ( !empty( $user_id ) ) && ( !empty( $quiz_attempt ) ) ) { $user_quiz_meta = get_user_meta( $user_id, '_sfwd-quizzes', true ); if ( ! is_array( $user_quiz_meta ) ) { $user_quiz_meta = array(); } $user_quiz_meta[] = $quiz_attempt; update_user_meta( $user_id, '_sfwd-quizzes', $user_quiz_meta ); } } // End of functions } }PKd\!includes/import/import-loader.phpnuW+Aget_object_as_array(); } function saveQuizQuestionSet( $quiz_question_data = array() ) { if ( !empty( $quiz_question_data ) ) { // Called to ensure we have a working Question Set ( WpProQuiz_Model_Question ) $pro_quiz_question_import = new WpProQuiz_Model_Question(); $pro_quiz_question_import->set_array_to_object( $quiz_question_data ); $quizQuestionMapper = new WpProQuiz_Model_QuestionMapper(); $new_question = $quizQuestionMapper->save( $pro_quiz_question_import ); if ( is_a( $new_question, 'WpProQuiz_Model_Question' ) ) { return $new_question->getId(); } } } function startQuizQuestionAnswerTypesSet() { $pro_quiz_question_answer_types_import = new WpProQuiz_Model_AnswerTypes(); return $pro_quiz_question_answer_types_import->get_object_as_array(); } // End of functions } }PKd\;j  *includes/import/class-ld-import-course.phpnuW+Aset_course_prerequisite_enabled( $dest_post_id, true ); $prerequisite_posts = learndash_get_course_prerequisite( $dest_post_id ); $prerequisite_posts[] = $prereq_post_id; $this->set_course_prerequisite( $dest_post_id, $prerequisite_posts ); } } function set_course_prerequisite_enabled( $course_id, $enabled = true ) { if ( $enabled === true ) $enabled = 'on'; if ( $enabled != 'on' ) $enabled = ''; return learndash_update_setting( $course_id, 'course_prerequisite_enabled', $enabled ); } function set_course_prerequisite( $course_id = 0, $course_prerequisites = array() ) { if ( !empty( $course_id ) ) { if ( ( !empty( $course_prerequisites ) ) && ( is_array( $course_prerequisites ) ) ) { $course_prerequisites = array_unique( $course_prerequisites ); } return learndash_update_setting( $course_id, 'course_prerequisite', (array)$course_prerequisites ); } } function enroll_user( $user_id = 0, $course_id = 0, $enroll_timestamp_gmt = 0 ) { if ( ( !empty( $user_id ) ) && ( !empty( $course_id ) ) ) { if ( empty( $enroll_timestamp_gmt ) ) $enroll_timestamp_gmt = time(); $user_course_access_time = get_user_meta( $user_id, "course_". $course_id ."_access_from", true ); if ( empty( $user_course_access_time ) ) { update_user_meta( $user_id, "course_".$course_id."_access_from", $enroll_timestamp_gmt ); } } } function add_user_progress( $user_id = 0, $course_id = 0, $args = array(), $force = false ) { if ( ( !empty( $user_id ) ) && ( !empty( $course_id ) ) ) { $user_id = intval( $user_id ); $course_id = intval( $course_id ); $user = get_user_by('ID', $user_id ); if ( is_a( $user, 'WP_User' ) ) { $user_course_meta = get_user_meta( $user_id, '_sfwd-course_progress', true ); if ( ( $user_course_meta === false ) || ( !is_array($user_course_meta) ) ) $user_course_meta = array(); $_CHANGED = false; if ( !isset( $user_course_meta[$course_id] ) ) { $user_course_meta[$course_id] = array(); $_CHANGED = true; } if ( !empty( $args ) ) { foreach( $args as $key => $val ) { if ( ( !isset( $user_course_meta[$course_id][$key] ) ) || ( $force === true ) ) { $user_course_meta[$course_id][$key] = $val; $_CHANGED = true; } } } if ( $_CHANGED === true ) { update_user_meta( $user_id, '_sfwd-course_progress', $user_course_meta ); } } } } // End of functions } }PKd\X*includes/import/class-ld-import-lesson.phpnuW+Aload( $quiz_id ); } // Endof functions. } }PKd\@A-includes/classes/class-ldlms-factory-post.phpnuW+AID ) ) ) { $course_id = absint( $course->ID ); } if ( ! empty( $course_id ) ) { if ( ! isset( self::$instances[ $model ] ) ) { self::$instances[ $model ] = array(); } if ( ( isset( self::$instances[ $model ][ $course_id ] ) ) && ( false === $bypass ) ) { return self::$instances[ $model ][ $course_id ]; } else { try { self::$instances[ $model ][ $course_id ] = new $model( $course_id ); return self::$instances[ $model ][ $course_id ]; } catch ( LDLMS_Exception_NotFound $e ) { return null; } } } } } /** * Get a Course Steps. * * @param mixed $course Either course_id integer or WP_Post instance. * @param boolean $bypass To force reload of instance. * * @return new instance of LDLMS_Model_Course */ public static function course_steps( $course = null, $bypass = false ) { if ( ! empty( $course ) ) { $course_id = 0; $model = 'LDLMS_Course_Steps'; if ( is_numeric( $course ) ) { $course_id = absint( $course ); } elseif ( ( $course instanceof WP_Post ) && ( isset( $course->ID ) ) ) { $course_id = absint( $course->ID ); } if ( ! empty( $course_id ) ) { if ( ! isset( self::$instances[ $model ] ) ) self::$instances[ $model ] = array(); if ( ( isset( self::$instances[ $model ][ $course_id ] ) ) && ( false === $bypass ) ) { return self::$instances[ $model ][ $course_id ]; } else { try { self::$instances[ $model ][ $course_id ] = new $model( $course_id ); return self::$instances[ $model ][ $course_id ]; } catch ( LDLMS_Exception_NotFound $e ) { return null; } } } } } /** * Get a Lesson. * * @param mixed $course Either course_id integer or WP_Post instance. * @param mixed $lesson Either lesson_id integer or WP_Post instance. * * @return new instance of LDLMS_Model_Course. */ public static function get_course_lessons( $course = null, $lesson = null ) { if ( ! empty( $course ) ) { $course = self::get_course( $course ); if ( $course ) { $lesson_id = 0; if ( is_numeric( $lesson ) ) { $lesson_id = absint( $lesson ); } elseif ( ( $lesson instanceof WP_Post ) && ( isset( $lesson->ID ) ) ) { $lesson_id = absint( $lesson->ID ); } $course_lesson = $course->get_lesson( $lesson_id ); return $course_lesson; } } } /** * Get a Quiz Questions. * * @param mixed $quiz Either quiz_id integer or WP_Post instance. * @param boolean $bypass To force reload of instance. * * @return new instance of LDLMS_Model_Course */ public static function quiz_questions( $quiz = null, $bypass = false ) { if ( ! empty( $quiz ) ) { $quiz_id = 0; $model = 'LDLMS_Quiz_Questions'; if ( is_numeric( $quiz ) ) { $quiz_id = absint( $quiz ); } elseif ( ( $quiz instanceof WP_Post ) && ( isset( $quiz->ID ) ) ) { $quiz_id = absint( $quiz->ID ); } if ( ! empty( $quiz_id ) ) { if ( ! isset( self::$instances[ $model ] ) ) { self::$instances[ $model ] = array(); } if ( ( isset( self::$instances[ $model ][ $quiz_id ] ) ) && ( false === $bypass ) ) { return self::$instances[ $model ][ $quiz_id ]; } else { try { self::$instances[ $model ][ $quiz_id ] = new $model( $quiz_id ); return self::$instances[ $model ][ $quiz_id ]; } catch ( LDLMS_Exception_NotFound $e ) { return null; } } } } } } } PKd\B)includes/classes/abstract-ldlms-model.phpnuW+Aquiz_id = absint( $quiz_id ); $this->quiz_post_types = LDLMS_Post_Types::get_post_types( 'quiz_questions' ); } } /** * Iniitialize object vars. */ public function init() { if ( false === $this->init_called ) { $this->init_called = true; $quiz_pro_id = learndash_get_setting( $this->quiz_id, 'quiz_pro' ); $quiz_pro_id = absint( $quiz_pro_id ); $this->quiz_pro_id = $quiz_pro_id; $this->quiz_primary_id = learndash_get_quiz_primary_shared( $this->quiz_pro_id, $this->quiz_id ); $this->quiz_primary_id = absint( $this->quiz_primary_id ); if ( empty( $this->quiz_primary_id ) ) { $this->quiz_primary_id = $this->quiz_id; } } } /** * Load Quiz Questions. */ public function load_questions() { global $pagenow; $this->init(); if ( ( false === $this->questions_loaded ) || ( $this->is_questions_dirty() ) ) { $this->questions_loaded = true; if ( ! is_array( $this->questions ) ) { $this->questions = array(); } // A new Quiz will not yet have questions. if ( ( is_admin() ) && ( 'post-new.php' === $pagenow ) ) { $this->questions['post_ids'] = array(); } else { $this->questions['post_ids'] = get_post_meta( $this->quiz_primary_id, 'ld_quiz_questions', true ); } if ( ! is_array( $this->questions['post_ids'] ) ) { $this->questions_dirty = true; } if ( $this->is_questions_dirty() ) { $this->questions['post_ids'] = $this->build_questions( 'post_ids' ); } if ( $this->is_questions_dirty() ) { update_post_meta( $this->quiz_id, 'ld_quiz_questions', $this->questions['post_ids'] ); $this->clear_questions_dirty(); } } } /** * Build the ProQuiz question objects from the post_ids * * @since 2.6.0 * @param mixed $question_type string or array of question types to build out. * @return array of questions. */ private function build_questions( $question_type = '' ) { $questions = array(); switch ( $question_type ) { case 'post_ids': if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Quizzes_Builder', 'shared_questions' ) === 'yes' ) { $questions_query_meta_query = array( 'relation' => 'OR', array( 'key' => 'quiz_id', 'value' => $this->quiz_primary_id, 'compare' => '=', ), array( 'key' => 'ld_quiz_' . $this->quiz_primary_id, 'value' => $this->quiz_primary_id, 'compare' => '=', ), ); } else { // We clear out the existing questions to force query fresh from question posts. $this->questions['post_ids'] = array(); $questions_query_meta_query = array( array( 'key' => 'quiz_id', 'value' => $this->quiz_primary_id, 'compare' => '=', ), ); } // First validate the existing post meta stored set. if ( ( isset( $this->questions['post_ids'] ) ) && ( ! empty( $this->questions['post_ids'] ) ) ) { $questions_query_args = array( 'post_type' => learndash_get_post_type_slug( 'question' ), 'posts_per_page' => -1, 'post_status' => 'publish', 'fields' => 'ids', 'orderby' => 'post__in', 'post__in' => array_keys( $this->questions['post_ids'] ), 'meta_query' => $questions_query_meta_query, ); $questions_query = new WP_Query( $questions_query_args ); if ( ( is_a( $questions_query, 'WP_Query' ) ) && ( property_exists( $questions_query, 'posts' ) ) && ( ! empty( $questions_query->posts ) ) ) { foreach ( $questions_query->posts as $question_post_id ) { $question_pro_id = get_post_meta( $question_post_id, 'question_pro_id', true ); if ( ! empty( $question_pro_id ) ) { $questions[ $question_post_id ] = (int) $question_pro_id; } } } // We replace the stored post meta with the updated found items. $this->questions['post_ids'] = $questions; } if ( ! empty( $this->quiz_primary_id ) ) { $questions_query_args = array( 'post_type' => learndash_get_post_type_slug( 'question' ), 'posts_per_page' => -1, 'post_status' => 'publish', 'fields' => 'ids', 'orderby' => 'menu_order', 'order' => 'ASC', 'meta_query' => $questions_query_meta_query, ); // Exlude the found items from the first step above. if ( ( isset( $this->questions['post_ids'] ) ) && ( ! empty( $this->questions['post_ids'] ) ) ) { $questions_query_args['post__not_in'] = array_keys( $this->questions['post_ids'] ); } $questions_query = new WP_Query( $questions_query_args ); if ( ( is_a( $questions_query, 'WP_Query' ) ) && ( property_exists( $questions_query, 'posts' ) ) && ( ! empty( $questions_query->posts ) ) ) { foreach ( $questions_query->posts as $question_post_id ) { if ( ! isset( $questions[ $question_post_id ] ) ) { $question_pro_id = get_post_meta( $question_post_id, 'question_pro_id', true ); if ( ! empty( $question_pro_id ) ) { $questions[ $question_post_id ] = (int) $question_pro_id; } } } } } break; case 'pro_objects': if ( ! empty( $this->questions['post_ids'] ) ) { $question_mapper = new WpProQuiz_Model_QuestionMapper(); $_questions_changed = false; foreach ( $this->questions['post_ids'] as $question_post_id => $question_pro_id ) { $question_post_id = absint( $question_post_id ); $question_pro_id = absint( $question_pro_id ); $question_pro_object = $question_mapper->fetchById( $question_pro_id ); if ( is_null( $question_pro_object ) ) { // Changed in LD 3.0.7 we don't trust the $question_pro_id value. $question_pro_id_real = get_post_meta( $question_post_id, 'question_pro_id', true ); $question_pro_id_real = absint( $question_pro_id_real ); if ( ( ! empty( $question_pro_id_real ) ) && ( $question_pro_id_real !== $question_pro_id ) ) { $question_pro_object = $question_mapper->fetchById( $question_pro_id_real ); if ( is_a( $question_pro_object, 'WpProQuiz_Model_Question' ) ) { $_questions_changed = true; $this->questions['post_ids'][ $question_post_id ] = $question_pro_id_real; $question_pro_id = $question_pro_id_real; } } } if ( is_a( $question_pro_object, 'WpProQuiz_Model_Question' ) ) { $question_pro_object->setQuestionPostId( $question_post_id ); $question_pro_object->setQuizId( absint( $this->quiz_pro_id ) ); $question_pro_object->setTitle( get_post_field( 'post_title', $question_post_id, 'raw' ) ); $question_pro_object->setQuestion( get_post_field( 'post_content', $question_post_id, 'raw' ) ); $questions[ $question_post_id ] = $question_pro_object; } else { unset( $this->questions['post_ids'][ $question_post_id ] ); } } if ( true === $_questions_changed ) { update_post_meta( $this->quiz_primary_id, 'ld_quiz_questions', $this->questions['post_ids'] ); } } break; } return $questions; } /** * Sets the Quiz dirty flag and will force the questions to be * reloaded from queries. */ public function set_questions_dirty() { $this->init(); if ( ! empty( $this->quiz_primary_id ) ) { $this->questions_dirty = true; update_post_meta( $this->quiz_primary_id, 'ld_quiz_questions_dirty', $this->quiz_primary_id ); } } /** * Check if the quiz dirty flag is set. */ protected function is_questions_dirty() { // If the questions_dirty boolean has been previously set to try it save a call to postmeta. if ( false === $this->questions_dirty ) { if ( ! empty( $this->quiz_primary_id ) ) { $is_dirty = get_post_meta( $this->quiz_primary_id, 'ld_quiz_questions_dirty', true ); if ( absint( $is_dirty ) === absint( $this->quiz_primary_id ) ) { $this->questions_dirty = true; } } } return $this->questions_dirty; } /** * Clear the quiz dirty flag. */ protected function clear_questions_dirty() { if ( ! empty( $this->quiz_primary_id ) ) { $this->questions_dirty = false; delete_post_meta( $this->quiz_primary_id, 'ld_quiz_questions_dirty' ); } } /** * Get the count of valid questions in quiz. */ public function get_questions_count() { $this->init(); $quiz_questions_count = 0; $this->load_questions(); if ( isset( $this->questions['post_ids'] ) ) { $quiz_questions_count = count( $this->questions['post_ids'] ); } return $quiz_questions_count; } /** * Save Quiz Questions. * * @since 2.6.0 * * @param array $questions Questions array to save. */ public function set_questions( $questions = array() ) { $this->init(); if ( ! empty( $this->quiz_primary_id ) ) { $this->load_questions(); $this->questions['post_ids'] = $questions; if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Quizzes_Builder', 'shared_questions' ) != 'yes' ) { $this->set_questions_to_quiz_legacy(); } else { $this->set_questions_to_quiz(); } /** * Clear the questions loaded flag to force reload of questions on the * next get_questions request. */ $this->questions_loaded = false; update_post_meta( $this->quiz_primary_id, 'ld_quiz_questions', $questions ); } } /** * This function sets a post_meta association for the various questions within the quiz. * The new association is 'ld_quiz_XXX' where 'XXX' is the quiz ID. */ public function set_questions_to_quiz() { global $wpdb; $quiz_questions_new = array(); if ( ( isset( $this->questions['post_ids'] ) ) && ( ! empty( $this->questions['post_ids'] ) ) ) { $quiz_questions_new = array_keys( $this->questions['post_ids'] ); } if ( ! empty( $quiz_questions_new ) ) { sort( $quiz_questions_new, SORT_NUMERIC ); } $sql_str = $wpdb->prepare( "SELECT post_id as post_id FROM ". $wpdb->postmeta ." WHERE meta_key LIKE %s", 'ld_quiz_'. $this->quiz_primary_id ); $quiz_questions_old = $wpdb->get_col( $sql_str ); if ( !empty( $quiz_questions_old ) ) { sort( $quiz_questions_old, SORT_NUMERIC ); } $quiz_questions_intersect = array_intersect( $quiz_questions_new, $quiz_questions_old ); // Add Questions $quiz_questions_add = array_diff( $quiz_questions_new, $quiz_questions_intersect ); if ( !empty( $quiz_questions_add ) ) { $quiz_questions_add_chunks = array_chunk ( $quiz_questions_add, LEARNDASH_LMS_DEFAULT_CB_INSERT_CHUNK_SIZE ); foreach( $quiz_questions_add_chunks as $insert_post_ids ) { $insert_sql_str = ""; foreach( $insert_post_ids as $post_id ) { if ( !empty( $insert_sql_str ) ) $insert_sql_str .= ','; $insert_sql_str .= "(". $post_id .", 'ld_quiz_" . $this->quiz_primary_id . "', ". $this->quiz_primary_id . ")"; } if ( !empty( $insert_sql_str ) ) { $insert_sql_str = "INSERT INTO ". $wpdb->postmeta ." (`post_id`, `meta_key`, `meta_value`) VALUES " . $insert_sql_str; $wpdb->query( $insert_sql_str ); } } } // Remove Steps. $quiz_questions_remove = array_diff( $quiz_questions_old, $quiz_questions_intersect ); if ( ! empty( $quiz_questions_remove ) ) { $delete_sql_str = "DELETE FROM " . $wpdb->postmeta . " WHERE meta_key LIKE 'ld_quiz_" . $this->quiz_primary_id . "' AND post_id IN (" . implode(',', $quiz_questions_remove ) . ")"; $wpdb->query( $delete_sql_str ); } /** * Secondary processing here we need to determine all the primary associations for this course and remove any items no longer associated. * For example prior to v2.5 you may have a course ID #123. The course has a lesson, topic and global quiz. Each of these items will have * a post_meta reference 'course_id'. Now in v2.5 the course steps are stored into a collection or nodes. But if for example the quiz is * remove we need to also remove the legacy 'course_id' association. */ $sql_str = $wpdb->prepare( "SELECT posts.ID as post_id FROM " . $wpdb->posts . " as posts INNER JOIN " . $wpdb->postmeta . " as postmeta ON posts.ID = postmeta.post_id WHERE 1=1 AND posts.post_type = '" . learndash_get_post_type_slug( 'question' ) . "' AND postmeta.meta_key = %s AND postmeta.meta_value = %d", 'quiz_id', $this->quiz_primary_id ); //error_log('sql_str['. $sql_str .']'); $quiz_questions_primary = $wpdb->get_col( $sql_str ); if ( ! empty( $quiz_questions_primary ) ) { $quiz_questions_primary = array_map( 'intval', $quiz_questions_primary ); } $quiz_questions_primary_intersect = array_intersect( $quiz_questions_new, $quiz_questions_primary ); $quiz_questions_primary_remove = array_diff( $quiz_questions_primary, $quiz_questions_primary_intersect ); if ( ! empty( $quiz_questions_primary_remove ) ) { $delete_sql_str = "DELETE FROM " . $wpdb->postmeta . " WHERE meta_key = 'quiz_id' AND post_id IN (". implode(',', $quiz_questions_primary_remove ) . ")"; $wpdb->query( $delete_sql_str ); } } /** * This function sets a post_meta association for the various questions within the quiz. * The new association is 'quiz'. */ public function set_questions_to_quiz_legacy() { global $wpdb; $quiz_questions_new = array(); if ( ( isset( $this->questions['post_ids'] ) ) && ( ! empty( $this->questions['post_ids'] ) ) ) { $this->set_question_to_quiz_order( $this->questions['post_ids'] ); $quiz_questions_new = array_keys( $this->questions['post_ids'] ); } if ( ! empty( $quiz_questions_new ) ) { sort( $quiz_questions_new, SORT_NUMERIC ); } $quiz_questions_query_args = array( 'post_type' => $this->quiz_post_types, 'posts_per_page' => -1, 'post_status' => 'publish', 'fields' => 'ids', 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'quiz_id', 'value' => $this->quiz_primary_id, 'compare' => '=', 'type' => 'NUMERIC' ), ), ); $quiz_questions_query = new WP_Query( $quiz_questions_query_args ); if ( ( $quiz_questions_query instanceof WP_Query ) && ( property_exists( $quiz_questions_query, 'posts' ) ) && ( ! empty( $quiz_questions_query->posts ) ) ) { $quiz_questions_old = $quiz_questions_query->posts; $quiz_questions_old = array_map( 'intval', $quiz_questions_old ); } else { $quiz_questions_old = array(); } $quiz_questions_intersect = array_intersect( $quiz_questions_new, $quiz_questions_old ); // Add Steps. $quiz_questions_add = array_diff( $quiz_questions_new, $quiz_questions_intersect ); if ( ! empty( $quiz_questions_add ) ) { foreach ( $quiz_questions_add as $question_post_id ) { learndash_update_setting( $question_post_id, 'quiz', $this->quiz_primary_id ); } } // Remove Steps. $quiz_questions_remove = array_diff( $quiz_questions_old, $quiz_questions_intersect ); if ( ! empty( $quiz_questions_remove ) ) { foreach ( $quiz_questions_remove as $question_post_id ) { learndash_update_setting( $question_post_id, 'quiz', 0 ); } } } /** * This function updates the postmeta 'question_order' for legacy questions. * * @since 2.6.0 * @param array $questions Array of Question post IDs. */ protected function set_question_to_quiz_order( $questions = array() ) { global $wpdb; if ( ! empty( $questions ) ) { $sql_str = ''; $question_order = (int)0; foreach ( $questions as $question_post_id => $question_pro_id ) { $question_order++; $wpdb->update( $wpdb->posts, array( 'menu_order' => $question_order ), array( 'ID' => $question_post_id ), array( '%d' ), array( '%d' ) ); if ( ! empty( $this->quiz_pro_id ) ) { $answer_fields = array( 'quiz_id' => $this->quiz_pro_id, 'sort' => $question_order ); $answer_types = array( '%d', '%d' ); } else { $answer_fields = array( 'sort' => $question_order ); $answer_types = array( '%d' ); } $wpdb->update( LDLMS_DB::get_table_name( 'quiz_question' ), $answer_fields, array( 'ID' => $question_pro_id ), $answer_types, array( '%d' ) ); } } } /** * Get Quiz Questions set by type. * * @since 2.6.0 * * @param string $question_type Default is 'post_ids' or 'pro_objects'. * @return array of question IDs. */ public function get_questions( $question_type = 'post_ids' ) { $this->load_questions(); if ( 'pro_objects' === $question_type ) { // By default the WPProQuiz object 'pro_objects' are not loaded until needed. $this->questions['pro_objects'] = $this->build_questions( $question_type ); return $this->questions['pro_objects']; } elseif ( isset( $this->questions[ $question_type ] ) ) { return $this->questions[ $question_type ]; } else if ( 'all' === $question_type ) { return $this->questions; } return array(); } /** * Process the _POST data on Quiz save. This function reformats the questions * data array into the internally used format of this class. * * @since 2.6.0 * * @param array $questions_data array of question post IDs. * @return array $questions. */ public static function questions_split_keys( $questions_data = array() ) { $questions = array(); if ( ! empty( $questions_data ) ) { foreach ( $questions_data as $question_set => $question_dummy ) { list( $question_post_type, $question_post_id ) = explode( ':', $question_set ); $question_post_id = absint( $question_post_id ); if ( ( learndash_get_post_type_slug( 'question' ) === $question_post_type ) && ( ! empty( $question_post_id ) ) ) { $question_pro_id = get_post_meta( $question_post_id, 'question_pro_id', true ); if ( ! empty( $question_pro_id ) ) { $questions[ $question_post_id ] = (int) $question_pro_id; } } } } return $questions; } // End of functions. } } PKd\v̟-includes/classes/class-ldlms-model-lesson.phpnuW+Aload( $lesson_id ); } static function get_post_type() { return self::$post_type; } function load( $lesson_id ) { if ( !empty( $lesson_id ) ) { $this->lesson_id = intval( $lesson_id ); //$this->init(); } } static function get_settings() { return sfwd_lms_get_post_options( self::$post_type ); } function load_steps( $query_args = array() ) { $default_query_args = array( 'post_type' => $this->get_post_type(), ); $this->last_query_args = wp_parse_args( $query_args, $default_query_args ); //error_log('query_args
      '. print_r($this->last_query_args, true) .'
      '); $this->last_query = new WP_Query( $this->last_query_args ); //error_log('last_query
      '. print_r($this->last_query, true) .'
      '); if ( ( $this->last_query instanceof WP_Query ) && ( property_exists( $this->last_query, 'posts' ) ) ) { $lessons_ids = $this->last_query->posts; } return $lessons_ids; } } }PKd\MXƆƆ-includes/classes/class-ldlms-course-steps.phpnuW+Acourse_id = absint( $course_id ); $this->steps_post_types = LDLMS_Post_Types::get_post_types( 'course_steps' ); } } /** * Load Quiz Questions. */ public function load_steps() { if ( ! $this->steps_loaded ) { $this->steps_loaded = true; if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) == 'yes' ) { $this->steps = get_post_meta( $this->course_id, 'ld_course_steps', true ); } if ( ! is_array( $this->steps ) ) { $this->steps = array(); } if ( ! empty( $this->steps['h'] ) ) { if ( $this->is_steps_dirty() ) { $this->steps['h'] = $this->validate_steps( $this->steps['h'] ); $this->set_steps( $this->steps['h'] ); $this->clear_steps_dirty(); } } else { // Note here since we are loading the steps via legacy methods we don't need to validate. $this->steps['h'] = $this->load_steps_legacy(); } $this->build_steps(); } } /** * Sets the Course steps dirty flag and will force the steps to be * reloaded from queries. */ public function set_steps_dirty() { if ( ! empty( $this->course_id ) ) { $this->steps_dirty = true; update_post_meta( $this->course_id, 'ld_course_steps_dirty', $this->course_id ); } } /** * Check if the steps dirty flag is set. */ public function is_steps_dirty() { // If the steps_dirty boolean has been previously set to try it save a call to postmeta. if ( false === $this->steps_dirty ) { if ( ! empty( $this->course_id ) ) { $is_dirty = get_post_meta( $this->course_id, 'ld_course_steps_dirty', true ); if ( absint( $is_dirty ) === absint( $this->course_id ) ) { $this->steps_dirty = true; } } } return $this->steps_dirty; } /** * Clear the steps dirty flag. */ public function clear_steps_dirty() { if ( ! empty( $this->course_id ) ) { $this->steps_dirty = false; delete_post_meta( $this->course_id, 'ld_course_steps_dirty' ); } } /** * Get the total steps course for the course. */ public function get_steps_count() { $course_steps_count = 0; $this->get_steps( 't' ); if ( isset( $this->steps['t']['sfwd-lessons'] ) ) { $course_steps_count += count( $this->steps['t']['sfwd-lessons'] ); } if ( isset( $this->steps['t']['sfwd-topic'] ) ) { $course_steps_count += count( $this->steps['t']['sfwd-topic'] ); } if ( ( isset( $this->steps['h']['sfwd-quiz'] ) ) && ( ! empty( $this->steps['h']['sfwd-quiz'] ) ) ) { $course_steps_count++; } return $course_steps_count; } /** * Build Course Steps nodes. */ protected function build_steps() { if ( ! isset( $this->steps['h'] ) ) { $this->steps['h'] = array(); } if ( ! isset( $this->steps['t'] ) ) { $this->steps['t'] = array(); } if ( ! isset( $this->steps['r'] ) ) { $this->steps['r'] = array(); } if ( ! isset( $this->steps['l'] ) ) { $this->steps['l'] = array(); } if ( ! empty( $this->steps['h'] ) ) { if ( empty( $this->steps['t'] ) ) { $this->steps['t'] = $this->steps_grouped_by_type( $this->steps['h'] ); } if ( empty( $this->steps['l'] ) ) { $this->steps['l'] = $this->steps_grouped_linear( $this->steps['h'] ); } if ( empty( $this->steps['r'] ) ) { $this->steps['r'] = $this->steps_grouped_reverse_keys( $this->steps['h'] ); } } } /** * Validate Course Steps nodes and items. * * @since 2.5.0 * @param array $steps Current steps nodes and items. */ protected function validate_steps( $steps = array() ) { if ( ! empty( $steps ) ) { foreach ( $steps as $steps_type => $steps_type_set ) { if ( ( is_array( $steps_type_set ) ) && ( ! empty( $steps_type_set ) ) ) { $steps_query_args = array( 'post_type' => $steps_type, 'post__in' => array_keys( $steps_type_set ), 'posts_per_page' => -1, 'post_status' => 'publish', 'fields' => 'ids', 'orderby' => 'post__in', ); $steps_query = new WP_Query( $steps_query_args ); if ( ( $steps_query instanceof WP_Query ) && ( property_exists( $steps_query, 'posts' ) ) ) { if ( ! is_array( $steps_query->posts ) ) { $steps_query->posts = array(); } $step_ids_diff = array_diff( array_keys( $steps_type_set ), $steps_query->posts ); if ( ! empty( $step_ids_diff ) ) { foreach ( $step_ids_diff as $step_id_diff ) { if ( isset( $steps[ $steps_type ][ $step_id_diff ] ) ) { unset( $steps[ $steps_type ][ $step_id_diff ] ); } if ( isset( $steps_type_set[ $step_id_diff ] ) ) { unset( $steps_type_set[ $step_id_diff ] ); } } } } if ( ! empty( $steps_type_set ) ) { foreach ( $steps_type_set as $step_id => $step_id_set ) { if ( ( is_array( $step_id_set ) ) && ( ! empty( $step_id_set ) ) ) { $steps[ $steps_type ][ $step_id ] = $this->validate_steps( $step_id_set ); } } } } } } return $steps; } /** * This converts the normal hierachy steps into an array groups be the post type. This is easier for search. * * @since 2.5.0 * @param array $steps Array of Course steps nodes and items. * @return array Array of steps by type. */ protected function steps_grouped_by_type( $steps = array() ) { $steps_by_type = array(); if ( ! empty( $steps ) ) { foreach ( $steps as $steps_type => $steps_type_set ) { if ( ! isset( $steps_by_type[ $steps_type ] ) ) { $steps_by_type[ $steps_type ] = array(); } if ( ( is_array( $steps_type_set ) ) && ( ! empty( $steps_type_set ) ) ) { foreach ( $steps_type_set as $step_id => $step_id_set ) { $steps_by_type[ $steps_type ][] = $step_id; if ( ( is_array( $step_id_set ) ) && ( ! empty( $step_id_set ) ) ) { $sub_steps = $this->steps_grouped_by_type( $step_id_set ); if ( ! empty( $sub_steps ) ) { foreach ( $sub_steps as $sub_step_type => $sub_step_ids ) { if ( ! isset( $steps_by_type[ $sub_step_type ] ) ) { $steps_by_type[ $sub_step_type ] = array(); } if ( ! empty( $sub_step_ids ) ) { $steps_by_type[ $sub_step_type ] = array_merge( $steps_by_type[ $sub_step_type ], $sub_step_ids ); } } } } } } } } return $steps_by_type; } /** * Group Steps linear. * * @since 2.5.0 * @param array $steps Array of Course step nodes and items. * @return array Array of steps by linear. */ protected function steps_grouped_linear( $steps = array() ) { $steps_linear = array(); if ( ! empty( $steps ) ) { foreach ( $steps as $steps_type => $steps_type_set ) { if ( ! isset( $steps_by_type[ $steps_type ] ) ) { if ( ( is_array( $steps_type_set ) ) && ( ! empty( $steps_type_set ) ) ) { foreach ( $steps_type_set as $step_id => $step_id_set ) { $steps_linear[] = $steps_type . ':' . $step_id; if ( ( is_array( $step_id_set ) ) && ( ! empty( $step_id_set ) ) ) { $sub_steps = $this->steps_grouped_linear( $step_id_set ); if ( ! empty( $sub_steps ) ) { $steps_linear = array_merge( $steps_linear, $sub_steps ); } } } } } } } return $steps_linear; } /** * Group Steps reversed keys. * * @since 2.5.0 * @param array $steps Array of Course step nodes and items. * @return array Array of steps. */ protected function steps_grouped_reverse_keys( $steps = array() ) { $steps_reversed = $this->_steps_reverse_keys_walk( $steps ); if ( ! empty( $steps_reversed ) ) { foreach ( $steps_reversed as $reversed_key => $reversed_set ) { if ( ! empty( $reversed_set ) ) { $steps_reversed[ $reversed_key ] = $this->_flatten_item_parent_steps( $reversed_set ); } else { $steps_reversed[ $reversed_key ] = array(); } } } return $steps_reversed; } /** * Internal utility function to reverse walk the Course steps nodes and items */ private function _steps_reverse_keys_walk( $steps, $parent_tree = array() ) { $steps_reversed = array(); if ( ! empty( $steps ) ) { foreach ( $steps as $steps_type => $steps_type_set ) { if ( ( is_array( $steps_type_set ) ) && ( ! empty( $steps_type_set ) ) ) { foreach ( $steps_type_set as $step_id => $step_id_set ) { $steps_parents = array(); $steps_parents[ $steps_type . ':' . $step_id ] = $parent_tree; if ( ( is_array( $step_id_set ) ) && ( ! empty( $step_id_set ) ) ) { $sub_steps = $this->_steps_reverse_keys_walk( $step_id_set, $steps_parents ); if ( ! empty( $sub_steps ) ) { $steps_parents = array_merge( $steps_parents, $sub_steps ); } } if ( ! empty( $steps_parents ) ) { $steps_reversed = array_merge( $steps_reversed, $steps_parents ); } } } } } return $steps_reversed; } /** * Internal utility function to reverse parent keys of the Course nodes and items. */ private function _flatten_item_parent_steps( $steps = array() ) { $flattened_steps = array(); if ( ! empty( $steps ) ) { foreach ( $steps as $a_step_key => $a_steps ) { $flattened_steps[] = $a_step_key; $sub_steps = $this->_flatten_item_parent_steps( $a_steps ); if ( !empty( $sub_steps ) ) { $flattened_steps = array_merge( $flattened_steps, $sub_steps ); } } } return $flattened_steps; } /** * Set Course steps. * This is generally called when editing the course and the course steps has been changed. * * @since 2.5.0 * @param array $course_steps Array of Course steps. */ public function set_steps( $course_steps = array() ) { if ( ! empty( $this->course_id ) ) { $this->steps = array(); $this->steps['h'] = $course_steps; $this->build_steps(); if ( LearnDash_Settings_Section::get_section_setting( 'LearnDash_Settings_Courses_Builder', 'shared_steps' ) != 'yes' ) { $this->set_step_to_course_legacy(); $course_steps = get_post_meta( $this->course_id, 'ld_course_steps', true ); if ( ! is_null( $course_steps ) ) { delete_post_meta( $this->course_id, 'ld_course_steps' ); } } else { $this->set_step_to_course(); update_post_meta( $this->course_id, 'ld_course_steps', $this->steps ); } } } /** * Get Course steps by node type. * * @since 2.5.0 * @param string $steps_type Course Steps node type. * @return array of Course Step items found in node. */ function get_steps( $steps_type = 'h' ) { $this->load_steps(); if ( isset( $this->steps[ $steps_type ] ) ) { return $this->steps[ $steps_type ]; } elseif ( 'all' === $steps_type ) { return $this->steps; } return array(); } /** * This function sets a post_meta association for the various steps within the course. * The new association is 'ld_course_XXX' where 'XXX' is the course ID. * * @since 2.5.0 */ function set_step_to_course() { global $wpdb; $course_steps_new = array(); if ( ( isset( $this->steps['t'] ) ) && ( ! empty( $this->steps['t'] ) ) ) { foreach ( $this->steps['t'] as $step_type => $step_type_set ) { if ( ! empty( $step_type_set ) ) { $course_steps_new = array_merge( $course_steps_new, $step_type_set ); } } } if ( ! empty( $course_steps_new ) ) { sort( $course_steps_new, SORT_NUMERIC ); } $sql_str = $wpdb->prepare( "SELECT post_id as post_id FROM " . $wpdb->postmeta . " WHERE meta_key LIKE %s", 'ld_course_' . $this->course_id ); $course_steps_old = $wpdb->get_col( $sql_str ); if ( ! empty( $course_steps_old ) ) { sort( $course_steps_old, SORT_NUMERIC ); } $course_steps_intersect = array_intersect( $course_steps_new, $course_steps_old ); // Add Steps. $course_steps_add = array_diff( $course_steps_new, $course_steps_intersect ); if ( ! empty( $course_steps_add ) ) { $course_steps_add_chunks = array_chunk( $course_steps_add, LEARNDASH_LMS_DEFAULT_CB_INSERT_CHUNK_SIZE ); foreach ( $course_steps_add_chunks as $insert_post_ids ) { $insert_sql_str = ""; foreach ( $insert_post_ids as $post_id ) { if ( ! empty( $insert_sql_str ) ) { $insert_sql_str .= ','; } $insert_sql_str .= "(" . $post_id . ", 'ld_course_" . $this->course_id . "'," . $this->course_id . ")"; } if ( ! empty( $insert_sql_str ) ) { $insert_sql_str = "INSERT INTO " . $wpdb->postmeta . " (`post_id`, `meta_key`, `meta_value`) VALUES " . $insert_sql_str; $wpdb->query( $insert_sql_str ); } } } // Remove Steps. $course_steps_remove = array_diff( $course_steps_old, $course_steps_intersect ); if ( ! empty( $course_steps_remove ) ) { $delete_sql_str = "DELETE FROM " . $wpdb->postmeta . " WHERE meta_key LIKE 'ld_course_" . $this->course_id . "' AND post_id IN (" . implode(',', $course_steps_remove ) . ")"; $wpdb->query( $delete_sql_str ); } /** * Secondary processing here we need to determine all the primary associations for this course and remove any items no longer associated. * For example prior to v2.5 you may have a course ID #123. The course has a lesson, topic and global quiz. Each of these items will have * a post_meta reference 'course_id'. Now in v2.5 the course steps are stored into a collection or nodes. But if for example the quiz is * remove we need to also remove the legacy 'course_id' association. */ $sql_str = $wpdb->prepare( "SELECT posts.ID as post_id FROM " . $wpdb->posts . " as posts INNER JOIN " . $wpdb->postmeta . " as postmeta ON posts.ID = postmeta.post_id WHERE 1=1 AND posts.post_type IN (" . "'" . implode("','", $this->steps_post_types ) . "'" . ") AND postmeta.meta_key = %s AND postmeta.meta_value = %d", 'course_id', $this->course_id ); $course_steps_primary = $wpdb->get_col( $sql_str ); if ( ! empty( $course_steps_primary ) ) { $course_steps_primary = array_map( 'intval', $course_steps_primary ); } $course_steps_primary_intersect = array_intersect( $course_steps_new, $course_steps_primary ); $course_steps_primary_remove = array_diff( $course_steps_primary, $course_steps_primary_intersect ); if ( ! empty( $course_steps_primary_remove ) ) { $delete_sql_str = "DELETE FROM " . $wpdb->postmeta . " WHERE meta_key = 'course_id' AND post_id IN (" . implode(',', $course_steps_primary_remove ) . ")"; $wpdb->query( $delete_sql_str ); } } /** * Set Steps to Course Legacy. * This is used when the Course Option Share Steps is not used. * * @since 2.5.0 */ protected function set_step_to_course_legacy() { global $wpdb; $course_steps_new = array(); if ( ( isset( $this->steps['t'] ) ) && ( ! empty( $this->steps['t'] ) ) ) { foreach ( $this->steps['t'] as $step_type => $step_type_set ) { if ( ! empty( $step_type_set ) ) { $this->set_step_to_course_order( $step_type_set ); $course_steps_new = array_merge( $course_steps_new, $step_type_set ); } } } // Finally we set the Course order to Menu Order/ASC so we can retain te ordering. learndash_update_setting( $this->course_id, 'course_lesson_orderby', 'menu_order' ); learndash_update_setting( $this->course_id, 'course_lesson_order', 'ASC' ); if ( ! empty( $course_steps_new ) ) { sort( $course_steps_new, SORT_NUMERIC ); } $sql_str = $wpdb->prepare( "SELECT posts.ID as post_id FROM " . $wpdb->posts . " as posts INNER JOIN " . $wpdb->postmeta . " as postmeta ON posts.ID = postmeta.post_id WHERE 1=1 AND posts.post_type IN (" . "'" . implode("','", $this->steps_post_types ) . "'" . ") AND postmeta.meta_key = %s AND postmeta.meta_value = %d", 'course_id', $this->course_id ); $course_steps_old = $wpdb->get_col( $sql_str ); if ( ! empty( $course_steps_old ) ) { $course_steps_old = array_map( 'intval', $course_steps_old ); } $course_steps_intersect = array_intersect( $course_steps_new, $course_steps_old ); // Add Steps. $course_steps_add = array_diff( $course_steps_new, $course_steps_intersect ); if ( ! empty( $course_steps_add ) ) { foreach( $course_steps_add as $post_id ) { learndash_update_setting( $post_id, 'course', $this->course_id ); } } // Remove Steps $course_steps_remove = array_diff( $course_steps_old, $course_steps_intersect ); if ( !empty( $course_steps_remove ) ) { foreach( $course_steps_remove as $post_id ) { learndash_update_setting( $post_id, 'course', 0 ); learndash_update_setting( $post_id, 'lesson', 0 ); } } if ( ( isset( $this->steps['h'] ) ) && ( !empty( $this->steps['h'] ) ) ) { $this->set_step_to_course_relationship( $this->steps['h'] ); } } function set_step_to_course_relationship( $steps = array(), $parent_lesson_id = 0 ) { global $wpdb; if ( !empty( $steps ) ) { foreach( $steps as $steps_type => $steps_type_set ) { if ( $steps_type === 'sfwd-lessons' ) { // A note about the queries. These should have been run through WP_Query // but there is more overhead there than we need. $sql_str = $wpdb->prepare( "SELECT DISTINCT posts.ID FROM ". $wpdb->posts ." as posts INNER JOIN ". $wpdb->postmeta ." as postmeta_course ON posts.ID=postmeta_course.post_id WHERE 1=1 AND posts.post_type = %s AND postmeta_course.meta_key = 'course_id' AND postmeta_course.meta_value = %d ", $steps_type, $this->course_id ); } else if ( ( $steps_type === 'sfwd-quiz' ) && ( $parent_lesson_id === 0 ) ) { $sql_str = $wpdb->prepare( "SELECT posts.ID FROM ". $wpdb->posts ." as posts LEFT JOIN ". $wpdb->postmeta ." postmeta ON ( posts.ID = postmeta.post_id ) LEFT JOIN ". $wpdb->postmeta ." AS mt1 ON ( posts.ID = mt1.post_id ) LEFT JOIN ". $wpdb->postmeta ." AS mt2 ON (posts.ID = mt2.post_id AND mt2.meta_key = 'lesson_id' ) WHERE 1=1 AND ( ( postmeta.meta_key = 'course_id' AND CAST(postmeta.meta_value AS SIGNED) = %d ) AND ( ( mt1.meta_key = 'lesson_id' AND CAST(mt1.meta_value AS SIGNED) = '0' ) OR mt2.post_id IS NULL ) ) AND posts.post_type = %s GROUP BY posts.ID ORDER BY posts.post_date DESC ", $this->course_id, $steps_type ); } else if ( !empty( $parent_lesson_id ) ) { $sql_str = $wpdb->prepare( "SELECT DISTINCT posts.ID FROM ". $wpdb->posts ." as posts INNER JOIN ". $wpdb->postmeta ." as postmeta_course ON posts.ID=postmeta_course.post_id INNER JOIN ". $wpdb->postmeta ." as postmeta_lesson ON posts.ID=postmeta_lesson.post_id WHERE 1=1 AND posts.post_type = %s AND postmeta_course.meta_key = 'course_id' AND postmeta_course.meta_value = %d AND postmeta_lesson.meta_key = 'lesson_id' AND postmeta_lesson.meta_value = %d ", $steps_type, $this->course_id, $parent_lesson_id ); } if ( !empty( $sql_str ) ) { if ( ( is_array( $steps_type_set ) ) && (count( $steps_type_set ) ) ) { $step_type_ids_new = array_keys( $steps_type_set ); } else { $step_type_ids_new = array(); } $step_type_ids_old = $wpdb->get_col( $sql_str ); if ( !empty( $step_type_ids_old ) ) { $step_type_ids_old = array_map( 'intval', $step_type_ids_old ); } $step_type_ids_intersect = array_intersect( $step_type_ids_new, $step_type_ids_old ); $step_type_ids_add = array_diff( $step_type_ids_new, $step_type_ids_intersect ); if ( ( !empty( $step_type_ids_add ) ) && ( !empty( $parent_lesson_id ) ) ) { foreach( $step_type_ids_add as $post_id ) { //update_post_meta( $post_id, 'lesson_id', $parent_lesson_id ); learndash_update_setting( $post_id, 'lesson', $parent_lesson_id ); } } $step_type_ids_remove = array_diff( $step_type_ids_old, $step_type_ids_intersect ); if ( !empty( $step_type_ids_remove ) ) { foreach( $step_type_ids_remove as $post_id ) { //delete_post_meta( $post_id, 'lesson_id' ); learndash_update_setting( $post_id, 'lesson', 0 ); } } } foreach( $steps_type_set as $step_id => $step_id_set ) { if ( ( is_array( $step_id_set ) ) && ( !empty( $step_id_set ) ) ) { $this->set_step_to_course_relationship( $step_id_set, $step_id ); } } } } } function set_step_to_course_order( $steps = array() ) { global $wpdb; if ( !empty( $steps ) ) { $sql_str = ''; foreach( $steps as $step_order => $step_id ) { $step_order += 1; $wpdb->update( $wpdb->posts, array( 'menu_order' => $step_order ), array( 'ID' => $step_id ), array( '%d' ), array( '%d' ) ); } } } function load_steps_legacy( ) { $steps = array(); if ( !empty( $this->course_id ) ) { $course_settings = learndash_get_setting( $this->course_id ); if ( !is_array( $course_settings ) ) { if ( !empty( $course_settings ) ) $course_settings = array( $course_settings ); else $course_settings = array(); } $lesson_settings = sfwd_lms_get_post_options( 'sfwd-lessons' ); if ( ( !isset( $course_settings['course_lesson_order'] ) ) || ( empty( $course_settings['course_lesson_order'] ) ) ) { if ( ( isset( $lesson_settings['order'] ) ) && ( !empty( $lesson_settings['order'] ) ) ) { $course_settings['course_lesson_order'] = $lesson_settings['order']; } } if ( ( !isset( $course_settings['course_lesson_orderby'] ) ) || ( empty( $course_settings['course_lesson_orderby'] ) ) ) { if ( ( isset( $lesson_settings['orderby'] ) ) && ( !empty( $lesson_settings['orderby'] ) ) ) { $course_settings['course_lesson_orderby'] = $lesson_settings['orderby']; } } if ( ( !isset( $course_settings['course_lesson_per_page'] ) ) || ( empty( $course_settings['course_lesson_per_page'] ) ) ) { if ( ( isset( $lesson_settings['posts_per_page'] ) ) && ( !empty( $lesson_settings['posts_per_page'] ) ) ) { $course_settings['course_lesson_per_page'] = $lesson_settings['posts_per_page']; } } // Course > Lessons $lesson_steps_query_args = array( 'post_type' => 'sfwd-lessons', 'posts_per_page' => -1, 'post_status' => 'publish', 'fields' => 'ids', 'orderby' => $course_settings['course_lesson_orderby'], 'order' => $course_settings['course_lesson_order'], 'meta_query' => array( array( 'key' => 'course_id', 'value' => intval( $this->course_id ), 'compare' => '=', 'type' => 'NUMERIC' ) ) ); $lesson_steps_query = new WP_Query( $lesson_steps_query_args ); if ( ( $lesson_steps_query instanceof WP_Query ) && ( property_exists( $lesson_steps_query, 'posts' ) ) && ( !empty( $lesson_steps_query->posts) ) ) { foreach( $lesson_steps_query->posts as $lesson_id ) { $steps['sfwd-lessons'][$lesson_id] = array(); $steps['sfwd-lessons'][$lesson_id]['sfwd-topic'] = array(); $steps['sfwd-lessons'][$lesson_id]['sfwd-quiz'] = array(); // Course > Lesson > Topics $topic_steps_query_args = array( 'post_type' => 'sfwd-topic', 'posts_per_page' => -1, 'post_status' => 'publish', 'fields' => 'ids', 'orderby' => $course_settings['course_lesson_orderby'], 'order' => $course_settings['course_lesson_order'], 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'course_id', 'value' => intval( $this->course_id ), 'compare' => '=', 'type' => 'NUMERIC' ), array( 'key' => 'lesson_id', 'value' => intval( $lesson_id ), 'compare' => '=', 'type' => 'NUMERIC' ), ) ); $topic_steps_query = new WP_Query( $topic_steps_query_args ); if ( ( $topic_steps_query instanceof WP_Query ) && ( property_exists( $topic_steps_query, 'posts' ) ) && ( !empty( $topic_steps_query->posts) ) ) { foreach( $topic_steps_query->posts as $topic_id ) { $steps['sfwd-lessons'][$lesson_id]['sfwd-topic'][$topic_id] = array(); $steps['sfwd-lessons'][$lesson_id]['sfwd-topic'][$topic_id]['sfwd-quiz'] = array(); // Course > Lesson > Topic > Quizzes $topic_quiz_steps_query_args = array( 'post_type' => 'sfwd-quiz', 'posts_per_page' => -1, 'post_status' => 'publish', 'fields' => 'ids', 'orderby' => $course_settings['course_lesson_orderby'], 'order' => $course_settings['course_lesson_order'], 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'course_id', 'value' => intval( $this->course_id ), 'compare' => '=', 'type' => 'NUMERIC' ), array( 'key' => 'lesson_id', 'value' => intval( $topic_id ), 'compare' => '=', 'type' => 'NUMERIC' ), ) ); $topic_quiz_steps_query = new WP_Query( $topic_quiz_steps_query_args ); if ( ( $topic_quiz_steps_query instanceof WP_Query ) && ( property_exists( $topic_quiz_steps_query, 'posts' ) ) && ( !empty( $topic_quiz_steps_query->posts) ) ) { foreach( $topic_quiz_steps_query->posts as $quiz_id ) { $steps['sfwd-lessons'][$lesson_id]['sfwd-topic'][$topic_id]['sfwd-quiz'][$quiz_id] = array(); } } } } // Course > Lesson > Quizzes $lesson_quiz_steps_query_args = array( 'post_type' => 'sfwd-quiz', 'posts_per_page' => -1, 'post_status' => 'publish', 'fields' => 'ids', 'orderby' => $course_settings['course_lesson_orderby'], 'order' => $course_settings['course_lesson_order'], 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'course_id', 'value' => intval( $this->course_id ), 'compare' => '=', 'type' => 'NUMERIC' ), array( 'key' => 'lesson_id', 'value' => intval( $lesson_id ), 'compare' => '=', 'type' => 'NUMERIC' ), ) ); $lesson_quiz_steps_query = new WP_Query( $lesson_quiz_steps_query_args ); if ( ( $lesson_quiz_steps_query instanceof WP_Query ) && ( property_exists( $lesson_quiz_steps_query, 'posts' ) ) && ( !empty( $lesson_quiz_steps_query->posts) ) ) { foreach( $lesson_quiz_steps_query->posts as $quiz_id ) { $steps['sfwd-lessons'][$lesson_id]['sfwd-quiz'][$quiz_id] = array(); } } } } else { $steps['sfwd-lessons'] = array(); } // Course > Quizzes (Global Quizzes) $quiz_steps_query_args = array( 'post_type' => 'sfwd-quiz', 'posts_per_page' => -1, 'post_status' => 'publish', 'fields' => 'ids', 'orderby' => $course_settings['course_lesson_orderby'], 'order' => $course_settings['course_lesson_order'], 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'course_id', 'value' => intval( $this->course_id ), 'compare' => '=', 'type' => 'NUMERIC' ), array( 'relation' => 'OR', array( 'key' => 'lesson_id', 'value' => 0, 'compare' => '=', 'type' => 'NUMERIC' ), array( 'key' => 'lesson_id', 'compare' => 'NOT EXISTS', ), ) ) ); $quiz_steps_query = new WP_Query( $quiz_steps_query_args ); if ( ( $quiz_steps_query instanceof WP_Query ) && ( property_exists( $quiz_steps_query, 'posts' ) ) && ( !empty( $quiz_steps_query->posts) ) ) { foreach( $quiz_steps_query->posts as $quiz_id ) { $steps['sfwd-quiz'][$quiz_id] = array(); } } else { $steps['sfwd-quiz'] = array(); } } return $steps; } function get_item_parent_steps( $post_id = 0, $post_type = '' ) { $item_ancestor_steps = array(); if ( !empty( $post_id ) ) { if ( empty( $post_type ) ) { $post_type = get_post_type( $post_id ); } if ( !empty( $post_type ) ) { $this->load_steps(); $steps_key = $post_type .':'. $post_id; if ( isset( $this->steps['r'][$steps_key] ) ) { $item_ancestor_steps = $this->steps['r'][$steps_key]; } } } return $item_ancestor_steps; } function get_parent_step_id( $step_post_id = 0, $ancestor_step_type = '' ) { if ( !empty( $step_post_id ) ) { $step_ancestor_item = $this->get_item_parent_steps( $step_post_id ); if ( !empty( $step_ancestor_item ) ) { foreach( $step_ancestor_item as $parent_steps_value ) { //error_log('parent_steps_value
      '. print_r($parent_steps_value, true) .'
      '); if ( ( is_string( $parent_steps_value ) ) && ( !empty( $parent_steps_value ) ) ) { list( $s_post_type, $s_post_id ) = explode(':', $parent_steps_value ); if ( !empty( $ancestor_step_type ) ) { if ( $ancestor_step_type == $s_post_type ) { return intval( $s_post_id ); } } else { return intval( $s_post_id ); } } } } } } function get_children_steps( $post_id = 0, $post_type = '' ) { $item_children_steps = array(); if ( !empty( $post_id ) ) { $this->load_steps(); $steps_h = $this->get_steps('h'); $ancestor_steps = $this->get_item_parent_steps( $post_id ); if ( !empty( $ancestor_steps ) ) { $ancestor_steps = array_reverse( $ancestor_steps ); } $ancestor_steps[] = get_post_type( $post_id ) .':'. $post_id; foreach( $ancestor_steps as $ancestor_step ) { if ( ( is_string( $ancestor_step ) ) && ( !empty( $ancestor_step ) ) ) { list( $ancestor_step_post_type, $ancestor_step_post_id ) = explode(':', $ancestor_step ); if ( isset( $steps_h[$ancestor_step_post_type][$ancestor_step_post_id] ) ) { $steps_h = $steps_h[$ancestor_step_post_type][$ancestor_step_post_id]; } } } if ( !empty( $steps_h ) ) { foreach( $steps_h as $steps_post_type => $steps_post_set ) { if (( empty( $post_type) ) || ( $post_type == $steps_post_type ) ) { $item_children_steps = array_merge( $item_children_steps, array_keys( $steps_post_set ) ); } } } } return $item_children_steps; } /* function load_lessons_list( ) { $lessons_ids = array(); if ( !empty( $this->course_id ) ) { $this->lessons_query_args = array( 'post_type' => LearnDash_Lesson::get_post_type(), 'orderby' => $this->settings['course_lesson_orderby'], 'order' => $this->settings['course_lesson_order'], 'fields' => 'ids', 'meta_key' => 'course_id', 'meta_value' => $this->course_id, 'nopaging' => true ); error_log('lessons_query
      '. print_r($this->lessons_query_args, true) .'
      '); $this->lessons_query = new WP_Query( $this->lessons_query_args ); //error_log('lessons_query
      '. print_r($lessons_query, true) .'
      '); if ( ( $this->lessons_query instanceof WP_Query ) && ( property_exists( $this->lessons_query, 'posts' ) ) ) { $lessons_ids = $this->lessons_query->posts; } } return $lessons_ids; } */ static function steps_split_keys( $steps, $parent_type = '' ) { if ( $parent_type == 'sfwd-lessons' ) { $course_steps_split_keys = array( 'sfwd-topic' => array(), 'sfwd-quiz' => array() ); } else if ( $parent_type == 'sfwd-topic' ) { $course_steps_split_keys = array( 'sfwd-quiz' => array() ); } else if ( $parent_type == 'sfwd-quiz' ) { $course_steps_split_keys = array(); } else if ( $parent_type == 'section-heading' ) { $course_steps_split_keys = array(); } else if ( empty( $parent_type ) ) { $course_steps_split_keys = array( 'sfwd-lessons' => array(), 'sfwd-quiz' => array() ); } if ( !empty( $steps ) ) { foreach( $steps as $step_idx => $step_set ) { list( $step_post_type, $step_id ) = explode(':', $step_idx ); if ( ( !empty( $step_post_type ) ) && ( !empty( $step_id ) ) ) { if ( !isset( $course_steps_split_keys[$step_post_type] ) ) $course_steps_split_keys[$step_post_type] = array(); $course_steps_split_keys[$step_post_type][$step_id] = self::steps_split_keys( $step_set, $step_post_type ); } } } return $course_steps_split_keys; } } } PKd\S] ] -includes/classes/class-ldlms-model-course.phpnuW+Ainitialize( $course_id ) ) throw new LDLMS_Exception_NotFound(); } else { throw new LDLMS_Exception_NotFound(); } } private function initialize( $course_id ) { if ( ! empty( $course_id ) ) { $course = get_post( $course_id ); if ( ( $course instanceof WP_Post ) && ( $course->post_type === LDLMS_Model_Course::$post_type ) ) { $this->id = $course_id; $this->post = $course; $this->load_settings(); return true; } else { return false; } } } public function load_settings() { if ( !empty( $this->post ) ) { $settings = learndash_get_setting( $this->post ); if ( ! is_array( $settings ) ) { if ( ! empty( $settings ) ) { LDLMS_Model_Course::$settings = array( $settings ); } else { LDLMS_Model_Course::$settings = array(); } } $lesson_settings = LDLMS_Model_Lesson::get_settings(); // We can't do a sinple merge because the keys are different. So hopefuly we can remember to update this with the logic for each mis-matching key. if ( ( isset( $lesson_settings['order'] ) ) && ( ! empty( $lesson_settings['order'] ) ) ) { LDLMS_Model_Course::$settings['course_lesson_order'] = $lesson_settings['order']; } if ( ( isset( $lesson_settings['orderby'] ) ) && ( ! empty( $lesson_settings['orderby'] ) ) ) { LDLMS_Model_Course::$settings['course_lesson_orderby'] = $lesson_settings['orderby']; } if ( ( isset( $lesson_settings['posts_per_page'] ) ) && ( ! empty( $lesson_settings['posts_per_page'] ) ) ) { LDLMS_Model_Course::$settings['course_lesson_per_page'] = $lesson_settings['posts_per_page']; } } } public static function get_setting( $setting_key = '' ) { if ( ( ! empty( $setting_key ) ) && ( isset( self::$settings[ $setting_key ] ) ) ) { return self::$settings[ $setting_key ]; } else { return self::$settings; } } public static function get_post_type() { return self::$post_type; } } } PKd\Dқ--,includes/classes/class-ldlms-topic-model.phpnuW+Aload( $topic_id ); } // Endof functions. } }PKd\J&== sfwd_lms.phpnuW+A esc_html__( 'Not Started', 'learndash' ), 'in_progress' => esc_html__( 'In Progress', 'learndash' ), 'complete' => esc_html__( 'Completed', 'learndash' ), ); $learndash_question_types = array( 'single' => esc_html__( 'Single choice', 'learndash' ), 'multiple' => esc_html__( 'Multiple choice', 'learndash' ), 'free_answer' => esc_html__( '"Free" choice', 'learndash' ), 'sort_answer' => esc_html__( '"Sorting" choice', 'learndash' ), 'matrix_sort_answer' => esc_html__( '"Matrix Sorting" choice', 'learndash' ), 'cloze_answer' => esc_html__( 'Fill in the blank', 'learndash' ), 'assessment_answer' => esc_html__( 'Assessment', 'learndash' ), 'essay' => esc_html__( 'Essay / Open Answer', 'learndash' ), ); // This is a global variable which is set in any of the shortcode handler functions. // The purpose is to let the plugin know when and if the any of the shortcodes were used. global $learndash_shortcode_used; $learndash_shortcode_used = false; global $learndash_shortcode_atts; $learndash_shortcode_atts = array(); /** * Metaboxes registered for settings pages etc. */ global $learndash_metaboxes; $learndash_metaboxes = array(); global $learndash_assets_loaded; $learndash_assets_loaded = array(); $learndash_assets_loaded['styles'] = array(); $learndash_assets_loaded['scripts'] = array(); PKd\|B |B languages/learndash.potnuW+A# Copyright (C) 2020 LearnDash # This file is distributed under the same license as the LearnDash LMS plugin. msgid "" msgstr "" "Project-Id-Version: LearnDash LMS 3.1.6\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/learndash-core-3.1.6.master\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: 2020-03-31T22:24:15+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.4.0\n" "X-Domain: learndash\n" #. Plugin Name of the plugin #: includes/admin/class-learndash-admin-menus-tabs.php:387 #: includes/admin/class-learndash-admin-menus-tabs.php:388 #: includes/settings/settings-sections/class-ld-settings-section-translations-learndash.php:34 msgid "LearnDash LMS" msgstr "" #. Plugin URI of the plugin #. Author URI of the plugin msgid "http://www.learndash.com" msgstr "" #. Description of the plugin msgid "LearnDash LMS Plugin - Turn your WordPress site into a learning management system." msgstr "" #. Author of the plugin #: includes/admin/class-learndash-admin-addons-list-table.php:48 msgid "LearnDash" msgstr "" #: includes/admin/class-learndash-admin-addons-list-table.php:52 msgid "Third Party" msgstr "" #. translators: placeholder: Human relative date time. #: includes/admin/class-learndash-admin-addons-list-table.php:331 msgctxt "placeholder: human relative date time" msgid "%s ago" msgstr "" #: includes/admin/class-learndash-admin-addons-list-table.php:430 msgid "Check Updates" msgstr "" #: includes/admin/class-learndash-admin-binary-selector.php:81 #: includes/admin/class-learndash-admin-binary-selector.php:82 msgid "Search:" msgstr "" #: includes/admin/class-learndash-admin-binary-selector.php:291 msgid "‹ prev" msgstr "" #. translators: placeholder: Page X of Y. #: includes/admin/class-learndash-admin-binary-selector.php:294 msgctxt "placeholder: Page X of Y" msgid "Page %s of %s" msgstr "" #: includes/admin/class-learndash-admin-binary-selector.php:297 msgid "next ›" msgstr "" #: includes/admin/class-learndash-admin-binary-selector.php:314 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:944 #: themes/ld30/templates/shortcodes/profile.php:150 #: themes/ld30/templates/shortcodes/profile/search.php:74 msgid "Search" msgstr "" #. translators: placeholder: Course. #: includes/admin/class-learndash-admin-binary-selector.php:651 msgctxt "Course Users Label" msgid "%s Users" msgstr "" #. translators: placeholder: Course. #: includes/admin/class-learndash-admin-binary-selector.php:654 msgctxt "Course Users label" msgid "%s Users" msgstr "" #. translators: placeholder: Course. #: includes/admin/class-learndash-admin-binary-selector.php:660 msgctxt "Search All Course Users" msgid "Search All %s Users" msgstr "" #. translators: placeholder: Course. #: includes/admin/class-learndash-admin-binary-selector.php:665 msgctxt "Search Assigned Course Users" msgid "Search Assigned %s Users" msgstr "" #: includes/admin/class-learndash-admin-binary-selector.php:696 #: includes/admin/class-learndash-admin-groups-edit.php:266 msgid "Group Users" msgstr "" #: includes/admin/class-learndash-admin-binary-selector.php:700 msgid "Search All Group Users" msgstr "" #: includes/admin/class-learndash-admin-binary-selector.php:701 msgid "Search Assigned Group Users" msgstr "" #: includes/admin/class-learndash-admin-binary-selector.php:730 #: includes/admin/class-learndash-admin-groups-edit.php:260 msgid "Group Leaders" msgstr "" #: includes/admin/class-learndash-admin-binary-selector.php:734 msgid "Search All Group Leaders" msgstr "" #: includes/admin/class-learndash-admin-binary-selector.php:735 msgid "Search Assigned Group Leaders" msgstr "" #. translators: placeholder: courses. #: includes/admin/class-learndash-admin-binary-selector.php:1002 msgctxt "Group Courses label" msgid "Group %s" msgstr "" #. translators: placeholder: courses. #: includes/admin/class-learndash-admin-binary-selector.php:1010 msgctxt "Search All Group Courses Label" msgid "Search All Group %s" msgstr "" #. translators: placeholder: courses. #: includes/admin/class-learndash-admin-binary-selector.php:1015 msgctxt "Search Assigned Group Courses Label" msgid "Search Assigned Group %s" msgstr "" #. translators: placeholder: Course. #: includes/admin/class-learndash-admin-binary-selector.php:1049 msgctxt "Groups Using Course Label" msgid "Groups Using %s" msgstr "" #: includes/admin/class-learndash-admin-binary-selector.php:1055 #: includes/admin/class-learndash-admin-binary-selector.php:1141 #: includes/admin/class-learndash-admin-binary-selector.php:1176 msgid "Search All Groups" msgstr "" #. translators: placeholder: Course. #: includes/admin/class-learndash-admin-binary-selector.php:1058 msgctxt "Search Course Groups Label" msgid "Search %s Groups" msgstr "" #. translators: placeholder: Courses. #: includes/admin/class-learndash-admin-binary-selector.php:1092 msgctxt "User Enrolled in Courses Label" msgid "User Enrolled in %s" msgstr "" #. translators: placeholder: Courses. #: includes/admin/class-learndash-admin-binary-selector.php:1100 msgctxt "Search All Courses Label" msgid "Search All %s" msgstr "" #. translators: placeholder: Courses. #: includes/admin/class-learndash-admin-binary-selector.php:1105 msgctxt "Search Enrolled Courses Label" msgid "Search Enrolled %s" msgstr "" #: includes/admin/class-learndash-admin-binary-selector.php:1137 msgid "User Enrolled in Groups" msgstr "" #: includes/admin/class-learndash-admin-binary-selector.php:1142 msgid "Search Enrolled Groups" msgstr "" #: includes/admin/class-learndash-admin-binary-selector.php:1172 msgid "Leader of Groups" msgstr "" #: includes/admin/class-learndash-admin-binary-selector.php:1177 msgid "Search Leader Groups" msgstr "" #: includes/admin/class-learndash-admin-builder.php:167 #: includes/admin/class-learndash-admin-builder.php:198 #: themes/ld30/templates/course.php:185 #: themes/ld30/templates/course.php:187 #: themes/ld30/templates/shortcodes/course_content_shortcode.php:85 #: themes/ld30/templates/shortcodes/course_content_shortcode.php:87 #: themes/ld30/templates/shortcodes/profile.php:152 #: themes/ld30/templates/shortcodes/profile.php:154 #: themes/ld30/templates/widgets/course-navigation.php:60 #: themes/ld30/templates/widgets/course-navigation.php:62 #: themes/legacy/templates/course.php:137 #: themes/legacy/templates/course_content_shortcode.php:51 #: themes/legacy/templates/profile.php:37 msgid "Expand All" msgstr "" #: includes/admin/class-learndash-admin-builder.php:169 #: includes/admin/class-learndash-admin-builder.php:200 #: themes/ld30/templates/course.php:185 #: themes/ld30/templates/shortcodes/course_content_shortcode.php:85 #: themes/ld30/templates/shortcodes/profile.php:152 #: themes/ld30/templates/widgets/course-navigation.php:60 #: themes/legacy/templates/course.php:137 #: themes/legacy/templates/course_content_shortcode.php:51 #: themes/legacy/templates/profile.php:37 msgid "Collapse All" msgstr "" #. translators: 'placeholders: will be post type labels like Course, Lesson, Topic'. #: includes/admin/class-learndash-admin-builder.php:230 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:180 msgctxt "placeholders: will be post type labels like Course, Lesson, Topic" msgid "Are you sure you want to remove this %1$s from the %2$s? (This will also remove all sub-items)" msgstr "" #. translators: placeholder: will be post type label like Course, Lesson, Topic. #: includes/admin/class-learndash-admin-builder.php:237 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:186 msgctxt "placeholder: will be post type label like Course, Lesson, Topic" msgid "Are you sure you want to move this %s to Trash?" msgstr "" #: includes/admin/class-learndash-admin-builder.php:253 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:592 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:596 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:688 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:716 msgid "Expand/Collape Section" msgstr "" #: includes/admin/class-learndash-admin-builder.php:253 msgid "New" msgstr "" #: includes/admin/class-learndash-admin-builder.php:268 msgid "Search..." msgstr "" #: includes/admin/class-learndash-admin-builder.php:319 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:406 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:346 #: themes/legacy/templates/learndash_pager.php:87 msgid "First Page" msgstr "" #: includes/admin/class-learndash-admin-builder.php:320 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:407 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:347 #: themes/ld30/templates/modules/pagination.php:116 #: themes/legacy/templates/learndash_pager.php:90 msgid "Previous Page" msgstr "" #: includes/admin/class-learndash-admin-builder.php:322 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:409 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:349 #: themes/ld30/templates/modules/pagination.php:136 #: themes/legacy/templates/learndash_pager.php:95 msgid "Next Page" msgstr "" #: includes/admin/class-learndash-admin-builder.php:323 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:410 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:350 #: themes/legacy/templates/learndash_pager.php:99 msgid "Last Page" msgstr "" #. translators: placeholder: link to LearnDash Data Upgrade admin page. #: includes/admin/class-learndash-admin-data-upgrades.php:307 msgctxt "placeholder: link to LearnDash Data Upgrade admin page" msgid "LearnDash Notice: Please perform a %s. This is a required step to ensure accurate reporting." msgstr "" #. translators: placeholder: link to LearnDash Data Upgrade admin page. #: includes/admin/class-learndash-admin-data-upgrades.php:308 msgid "LearnDash Data Upgrade" msgstr "" #: includes/admin/class-learndash-admin-data-upgrades.php:411 msgid "Last run: none" msgstr "" #. translators: placeholders: date/time, user name. #: includes/admin/class-learndash-admin-data-upgrades.php:418 msgctxt "placeholders: date/time, user name" msgid "Last run: %1$s by %2$s" msgstr "" #: includes/admin/class-learndash-admin-groups-edit.php:77 msgid "LearnDash Group Admin" msgstr "" #. translators: placeholder: course. #: includes/admin/class-learndash-admin-groups-edit.php:110 msgctxt "placeholder: course" msgid "Enable automatic group enrollment when a user enrolls into any associated group %s" msgstr "" #. translators: placeholder: Courses. #: includes/admin/class-learndash-admin-groups-edit.php:263 msgctxt "Group Courses" msgid "Group %s" msgstr "" #. translators: placeholder: Group Leaders Count. #: includes/admin/class-learndash-admin-groups-edit.php:290 msgctxt "Group Leaders Count" msgid "Total %d" msgstr "" #. translators: placeholder: Group Users Count. #: includes/admin/class-learndash-admin-groups-edit.php:323 msgctxt "Group Users Count" msgid "Total %d" msgstr "" #. translators: placeholder: Goup Courses Count. #: includes/admin/class-learndash-admin-groups-edit.php:356 msgctxt "Group Courses Count" msgid "Total %d" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list-table.php:54 msgid "Email Group" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list-table.php:79 #: includes/admin/class-learndash-admin-groups-users-list-table.php:148 #: includes/admin/classes-posts-listings/class-learndash-admin-questions-listing.php:171 #: includes/admin/ld-admin.php:577 #: includes/admin/ld-admin.php:636 #: includes/ld-assignment-uploads.php:1078 #: includes/ld-assignment-uploads.php:1109 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizOverall.php:105 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:548 #: includes/quiz/ld-quiz-essays.php:398 #: includes/quiz/ld-quiz-essays.php:426 #: includes/quiz/ld-quiz-essays.php:448 #: includes/quiz/ld-quiz-essays.php:919 #: includes/quiz/ld-quiz-essays.php:932 #: includes/quiz/ld-quiz-essays.php:945 #: themes/legacy/templates/quiz_progress_rows.php:150 msgid "edit" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list-table.php:94 msgid "List Users" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list-table.php:98 #: includes/admin/class-learndash-admin-groups-users-list-table.php:112 msgid "Export Progress" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list-table.php:101 #: includes/admin/class-learndash-admin-groups-users-list-table.php:123 msgid "Export Results" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list-table.php:129 #: includes/ld-groups.php:145 msgid "Edit Group" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list-table.php:167 #: includes/ld-groups.php:377 msgid "Report" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list.php:54 #: includes/admin/class-learndash-admin-groups-users-list.php:55 #: includes/admin/class-learndash-admin-menus-tabs.php:702 #: includes/admin/class-learndash-admin-menus-tabs.php:718 #: includes/admin/class-learndash-admin-menus-tabs.php:1401 #: includes/admin/class-learndash-admin-menus-tabs.php:1410 msgid "Group Administration" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list.php:156 msgid "per Page" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list.php:174 #: includes/ld-groups.php:353 #: includes/ld-groups.php:362 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:303 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:393 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:322 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:26 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:167 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:224 #: themes/ld30/templates/modules/login-modal.php:300 #: themes/legacy/templates/profile.php:65 msgid "Username" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list.php:175 #: includes/ld-groups.php:352 #: includes/ld-groups.php:361 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:516 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:517 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontToplist.php:15 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionOverall.php:41 #: themes/legacy/templates/profile.php:63 msgid "Name" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list.php:176 #: includes/ld-groups.php:354 #: includes/ld-groups.php:363 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1188 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-custom-fields.php:98 #: themes/ld30/templates/modules/login-modal.php:304 #: themes/legacy/templates/profile.php:66 msgid "Email" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list.php:177 #: includes/admin/class-learndash-admin-groups-users-list.php:192 #: includes/class-ld-translations.php:516 #: includes/ld-assignment-uploads.php:1170 msgid "Actions" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list.php:191 msgid "Group Name" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list.php:205 #: includes/ld-groups.php:342 msgid "Please login as a Group Administrator" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list.php:219 msgid "Email Subject:" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list.php:223 msgid "Email Message:" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list.php:240 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:539 msgid "Send" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list.php:241 #: themes/ld30/templates/shortcodes/profile/search-results.php:8 msgid "Reset" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list.php:242 msgid "Both Email Subject and Message are required and cannot be empty." msgstr "" #: includes/admin/class-learndash-admin-groups-users-list.php:243 msgid "Sending..." msgstr "" #: includes/admin/class-learndash-admin-groups-users-list.php:265 msgid "Search Users" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list.php:267 msgid "Search Groups" msgstr "" #: includes/admin/class-learndash-admin-groups-users-list.php:296 msgid "Update User" msgstr "" #. translators: placeholder: Post Type Plural Name. #: includes/admin/class-learndash-admin-menus-tabs.php:164 msgctxt "placeholder: Post Type Plural Name" msgid "All %s" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:312 msgctxt "Certificates Menu Label" msgid "Certificates" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:324 msgctxt "Assignments Menu Label" msgid "Assignments" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:336 msgctxt "Groups Menu Label" msgid "Groups" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:347 msgctxt "Submitted Essays Menu Label" msgid "Submitted Essays" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:451 msgctxt "Settings Menu Label" msgid "Settings" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:565 msgctxt "Quiz Submitted Essays Tab Label" msgid "Submitted Essays" msgstr "" #. translators: placeholder: Edit Quiz Label. #: includes/admin/class-learndash-admin-menus-tabs.php:609 #: includes/class-ld-lms.php:793 msgctxt "Edit Quiz Label" msgid "Edit %s" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:641 msgctxt "Quiz Statistics Tab Label" msgid "Statistics" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:651 msgctxt "Quiz Leaderboard Tab Label" msgid "Leaderboard" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:666 msgctxt "Reports Menu Label" msgid "Reports" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:677 msgctxt "Transactions Tab Label" msgid "Transactions" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:753 msgctxt "LMS License Tab Label" msgid "LMS License" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:975 #: includes/admin/class-learndash-admin-menus-tabs.php:976 msgid "There was an unexpected error while loading. Please try refreshing the page. If the error continues, contact LearnDash support." msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:979 msgid "Section Heading" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:980 msgid "Section Headings" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:981 msgid "answer" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:982 msgid "answers" msgstr "" #. translators: placeholder: Lesson. #: includes/admin/class-learndash-admin-menus-tabs.php:1005 msgctxt "placeholder: Lesson" msgid "Start by adding a %s." msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1037 msgctxt "Link back to the post type overview" msgid "Back to" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1038 msgctxt "Builder actions dropdown" msgid "Actions" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1039 msgctxt "Builder elements" msgid "Expand All" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1040 msgctxt "Builder elements" msgid "Collapse All" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1041 msgid "An error occurred while submitting your request. Please try again." msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1042 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:615 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:685 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:713 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:740 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:618 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:731 msgid "Cancel" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1043 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:72 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionOverall.php:76 #: includes/quiz/ld-quiz-essays.php:862 msgid "Edit" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1044 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-custom-fields.php:137 msgid "Remove" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1045 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:30 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:270 #: includes/settings/settings-sections/class-ld-settings-section-side-submit.php:61 msgid "Save" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1046 #: includes/admin/class-learndash-admin-menus-tabs.php:1325 #: includes/admin/class-learndash-admin-menus-tabs.php:1346 #: includes/admin/class-learndash-admin-menus-tabs.php:1677 #: includes/admin/class-learndash-admin-menus-tabs.php:1711 #: includes/admin/class-learndash-admin-menus-tabs.php:1880 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizOverall.php:90 #: includes/settings/settings-pages/class-ld-settings-page-assignments-options.php:23 #: includes/gutenberg/blocks/ld-certificate/index.js:102 #: includes/gutenberg/blocks/ld-course-complete/index.js:67 #: includes/gutenberg/blocks/ld-course-content/index.js:83 #: includes/gutenberg/blocks/ld-course-expire-status/index.js:99 #: includes/gutenberg/blocks/ld-course-info/index.js:132 #: includes/gutenberg/blocks/ld-course-inprogress/index.js:66 #: includes/gutenberg/blocks/ld-course-list/index.js:206 #: includes/gutenberg/blocks/ld-course-notstarted/index.js:67 #: includes/gutenberg/blocks/ld-course-progress/index.js:89 #: includes/gutenberg/blocks/ld-course-resume/index.js:91 #: includes/gutenberg/blocks/ld-courseinfo/index.js:264 #: includes/gutenberg/blocks/ld-group/index.js:63 #: includes/gutenberg/blocks/ld-lesson-list/index.js:191 #: includes/gutenberg/blocks/ld-payment-buttons/index.js:69 #: includes/gutenberg/blocks/ld-profile/index.js:108 #: includes/gutenberg/blocks/ld-quiz-complete/index.js:67 #: includes/gutenberg/blocks/ld-quiz-list/index.js:195 #: includes/gutenberg/blocks/ld-student/index.js:66 #: includes/gutenberg/blocks/ld-topic-list/index.js:195 #: includes/gutenberg/blocks/ld-user-course-points/index.js:69 #: includes/gutenberg/blocks/ld-user-groups/index.js:68 #: includes/gutenberg/blocks/ld-usermeta/index.js:147 #: includes/gutenberg/blocks/ld-visitor/index.js:63 msgid "Settings" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1047 msgid "Click here to edit the question" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1048 msgid "Message for correct answer - optional" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1049 msgid "Use different message for incorrect answer" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1050 msgid "Currently same message is displayed as above." msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1051 msgid "Message for incorrect answer - optional" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1052 msgid "Solution hint" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1053 #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php:335 #: includes/admin/ld-quiz-builder-helpers.php:111 msgid "points" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1054 msgid "Click here to edit the answer" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1055 msgid "Update Answer" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1056 msgid "Answer is missing" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1057 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:318 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:377 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:383 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:415 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:179 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:236 msgid "Allow HTML" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1058 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1803 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1837 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:312 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:106 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:241 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:28 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:121 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:392 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:772 msgid "Correct" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1059 msgctxt "First sort answer correct" msgid "1st" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1060 msgctxt "Second sort answer correct" msgid "2nd" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1061 msgctxt "Third sort answer correct" msgid "3rd" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1062 msgctxt "nth sort answer correct" msgid "th" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1063 msgid "Answer updated" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1064 msgid "Edit answer settings" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1065 msgid "Answer:" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1066 msgid "Click here to edit the matrix" msgstr "" #. translators: placeholders: Question #: includes/admin/class-learndash-admin-menus-tabs.php:1070 msgctxt "placeholder: Question" msgid "New %1$s" msgstr "" #. translators: placeholders: Quiz #: includes/admin/class-learndash-admin-menus-tabs.php:1075 msgctxt "placeholder: Quiz" msgid "New %1$s" msgstr "" #. translators: placeholders: Topic #: includes/admin/class-learndash-admin-menus-tabs.php:1080 msgctxt "placeholder: Topic" msgid "New %1$s" msgstr "" #. translators: placeholders: Lesson #: includes/admin/class-learndash-admin-menus-tabs.php:1085 msgctxt "placeholder: Lesson" msgid "New %1$s" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1088 msgid "New answer" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1089 msgid "New Section Heading" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1091 msgctxt "Title for the new course, lesson, quiz" msgid "Enter a title" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1092 msgctxt "Answer for a question" msgid "Enter an answer" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1093 msgctxt "Please wait while the form is loading" msgid "Please wait..." msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1094 msgctxt "Add lesson, topic, quiz..." msgid "Add" msgstr "" #. translators: placeholders: Question #: includes/admin/class-learndash-admin-menus-tabs.php:1098 msgctxt "placeholder: Question" msgid "Add %1$s" msgstr "" #. translators: placeholders: Question #: includes/admin/class-learndash-admin-menus-tabs.php:1103 msgctxt "placeholder: Questions" msgid "Add %1$s" msgstr "" #. translators: placeholders: Quiz #: includes/admin/class-learndash-admin-menus-tabs.php:1108 msgctxt "placeholder: Quiz" msgid "Add %1$s" msgstr "" #. translators: placeholders: Topic #: includes/admin/class-learndash-admin-menus-tabs.php:1113 msgctxt "placeholder: Topic" msgid "Add %1$s" msgstr "" #. translators: placeholders: Lesson #: includes/admin/class-learndash-admin-menus-tabs.php:1118 msgctxt "placeholder: Lesson" msgid "Add %1$s" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1121 msgid "Add answer" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1122 msgid "Add Section Heading" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1124 msgctxt "Move the current element up in the builder interface" msgid "Move up" msgstr "" #. translators: placeholders: question #: includes/admin/class-learndash-admin-menus-tabs.php:1127 msgctxt "Warning when no question was entered" msgid "The %s is empty." msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1130 msgctxt "Move the current element down in the builder interface" msgid "Move down" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1131 msgctxt "Rename the current element in the builder interface" msgid "Rename" msgstr "" #. translators: placeholders: lessons #: includes/admin/class-learndash-admin-menus-tabs.php:1135 msgctxt "placeholders: lessons" msgid "Search %1$s" msgstr "" #. translators: placeholders: quizzes #: includes/admin/class-learndash-admin-menus-tabs.php:1140 msgctxt "placeholders: quizzes" msgid "Search %1$s" msgstr "" #. translators: placeholders: topics #: includes/admin/class-learndash-admin-menus-tabs.php:1145 msgctxt "placeholders: topics" msgid "Search %1$s" msgstr "" #. translators: placeholders: questions #: includes/admin/class-learndash-admin-menus-tabs.php:1150 msgctxt "placeholders: questions" msgid "Search %1$s" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1154 msgctxt "List of recent lessons, topics, quizzes or questions" msgid "Recent" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1155 msgctxt "Lesson, Topic, Quiz or Question posts" msgid "View all" msgstr "" #. translators: placeholders: Lesson #: includes/admin/class-learndash-admin-menus-tabs.php:1159 msgctxt "placeholders: Lesson" msgid "Start adding your first %1$s" msgstr "" #. translators: placeholders: Quiz #: includes/admin/class-learndash-admin-menus-tabs.php:1164 msgctxt "placeholders: Quiz" msgid "Start adding your first %1$s" msgstr "" #. translators: placeholders: Topic #: includes/admin/class-learndash-admin-menus-tabs.php:1169 msgctxt "placeholders: Topic" msgid "Start adding your first %1$s" msgstr "" #. translators: placeholders: Question #: includes/admin/class-learndash-admin-menus-tabs.php:1174 msgctxt "placeholders: Question" msgid "Start adding your first %1$s" msgstr "" #. translators: placeholders: Lessons #: includes/admin/class-learndash-admin-menus-tabs.php:1181 msgctxt "placeholders: Lessons" msgid "All available %1$s have been added." msgstr "" #. translators: placeholders: Quizzes #: includes/admin/class-learndash-admin-menus-tabs.php:1186 msgctxt "placeholders: Quizzes" msgid "All available %1$s have been added." msgstr "" #. translators: placeholders: Topics #: includes/admin/class-learndash-admin-menus-tabs.php:1191 msgctxt "placeholders: Topics" msgid "All available %1$s have been added." msgstr "" #. translators: placeholders: Questions #: includes/admin/class-learndash-admin-menus-tabs.php:1196 msgctxt "placeholders: Questions" msgid "All available %1$s have been added." msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1200 msgctxt "Lesson, Topic, Quiz or Question" msgid "Start adding your first" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1201 msgctxt "Builder - Refresh list of Lessons, Topics, Quizzes or Questions" msgid "Refresh" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1202 msgctxt "Builder - Load more Lessons, Topics, Quizzes or Questions" msgid "Load More" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1203 msgctxt "Builder - Add selected Lessons, Topics, Quizzes or Questions" msgid "Add Selected" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1204 msgctxt "Undo action in the builder" msgid "Undo" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1205 msgctxt "Matrix answer Criteroion" msgid "Criterion" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1206 msgctxt "Sort matrix answer element" msgid "Sort element" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1207 msgctxt "Question settings. Placeholder in JavaScript" msgid "Settings" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1208 msgctxt "Select an option" msgid "Select" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1209 msgctxt "No matching Lesson, Topic, Quiz or Question found" msgid "Nothing matches your search" msgstr "" #. translators: placeholders: Lessons #: includes/admin/class-learndash-admin-menus-tabs.php:1212 msgctxt "placeholder: Lessons" msgid "Drop %1$s here" msgstr "" #. translators: placeholders: Question #: includes/admin/class-learndash-admin-menus-tabs.php:1217 msgctxt "placeholder: Question" msgid "Drop %1$s here" msgstr "" #. translators: placeholders: Quizzes #: includes/admin/class-learndash-admin-menus-tabs.php:1222 msgctxt "placeholder: Quizzes" msgid "Drop %1$s here" msgstr "" #. translators: placeholders: %1$s: Topics, %2$s: Quizzes #: includes/admin/class-learndash-admin-menus-tabs.php:1227 msgctxt "placeholder: %1$s: Topics, %2$s: Quizzes" msgid "Drop %1$s or %2$s here" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1231 msgctxt "singular - Amount of steps in a course or quiz" msgid "step" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1232 msgctxt "plural - Amount of steps in a course or quiz" msgid "steps" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1233 msgctxt "Amount of steps in this course or quiz" msgid "in this" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1234 msgctxt "Builder - Final quiz. Placeholder in JavaScript" msgid "Final" msgstr "" #. translators: placeholders: %1$s: Quiz, %2$s: Questions #: includes/admin/class-learndash-admin-menus-tabs.php:1237 msgctxt "This quiz has no questions." msgid "This %1$s has no %2$s yet" msgstr "" #. translators: placeholders: question #: includes/admin/class-learndash-admin-menus-tabs.php:1243 msgctxt "Warning when no question was entered" msgid "The %s is empty, click here to edit it." msgstr "" #. translators: placeholders: Questions #: includes/admin/class-learndash-admin-menus-tabs.php:1249 msgctxt "Manage Questions in builder" msgid "Manage %1$s in builder" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1252 msgctxt "Total points" msgid "TOTAL:" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1253 msgctxt "Displayed when the post type, e.g. course, has no content" msgid "has no content yet." msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1254 msgctxt "Content type, e.g. lesson" msgid "Add a new" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1255 msgctxt "Content type, e.g. lesson" msgid "or add an existing one from the sidebar" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1256 msgctxt "Type of essay answer" msgid "Answer format" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1257 msgctxt "Submit essay answer in a text box" msgid "Text entry" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1258 msgctxt "Submit essay answer as an upload" msgid "File upload" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1259 msgctxt "What grading options should be used after essay submission" msgid "What should happen on quiz submission?" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1260 msgctxt "Essay answer grading option" msgid "Not Graded, No Points Awarded" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1261 msgctxt "Essay answer grading option" msgid "Not Graded, Full Points Awarded" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1262 msgctxt "Essay answer grading option" msgid "Graded, Full Points Awarded" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1263 msgctxt "Essay answer grading option has not been set" msgid "Not set" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1317 #: includes/admin/class-learndash-admin-menus-tabs.php:1664 #: includes/admin/class-learndash-admin-menus-tabs.php:1700 #: includes/admin/classes-posts-listings/class-learndash-admin-courses-listing.php:69 #: includes/admin/classes-posts-listings/class-learndash-admin-quizzes-listing.php:122 #: includes/settings/settings-pages/class-ld-settings-page-courses-builder-single.php:149 #: includes/settings/settings-pages/class-ld-settings-page-quizzes-builder-single.php:179 msgid "Builder" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1338 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:40 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:67 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:54 msgid "Overview" msgstr "" #. translators: placeholder: Essays. #: includes/admin/class-learndash-admin-menus-tabs.php:1353 msgctxt "placeholder: Essays" msgid "%s" msgstr "" #. translators: placeholder: Quizzes. #: includes/admin/class-learndash-admin-menus-tabs.php:1359 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:1027 #: includes/settings/settings-sections/class-ld-settings-section-permalinks.php:159 msgctxt "placeholder: Quizzes" msgid "%s" msgstr "" #. translators: placeholder: Post Type Plural Name. #: includes/admin/class-learndash-admin-menus-tabs.php:1366 msgctxt "placeholder: Post Type Plural Name" msgid "%s" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1373 msgctxt "Quiz Import/Export Tab Label" msgid "Import/Export" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1466 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1944 #: themes/ld30/templates/modules/messages/lesson-progression.php:11 msgid "Back" msgstr "" #. translators: placeholder: Questions. #: includes/admin/class-learndash-admin-menus-tabs.php:1542 msgctxt "placeholder: Questions" msgid "%s" msgstr "" #. translators: placeholders: Quiz, Questions. #: includes/admin/class-learndash-admin-menus-tabs.php:1577 #: includes/admin/class-learndash-admin-menus-tabs.php:1763 msgctxt "placeholders: Quiz, Questions" msgid "Reprocess %1$s %2$s" msgstr "" #. translators: placeholder: Quiz. #: includes/admin/class-learndash-admin-menus-tabs.php:1595 #: includes/admin/class-learndash-admin-menus-tabs.php:1780 #: includes/admin/classes-posts-listings/class-learndash-admin-quizzes-listing.php:229 msgctxt "placeholder: Quiz" msgid "Export %s" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1615 #: includes/admin/class-learndash-admin-menus-tabs.php:1644 #: includes/admin/class-learndash-admin-menus-tabs.php:1800 #: includes/admin/classes-posts-listings/class-learndash-admin-quizzes-listing.php:188 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:162 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:167 #: themes/ld30/templates/shortcodes/profile/quizzes.php:21 #: themes/legacy/templates/profile.php:142 #: themes/legacy/templates/quiz_progress_rows.php:99 msgid "Statistics" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1626 #: includes/admin/class-learndash-admin-menus-tabs.php:1652 #: includes/admin/class-learndash-admin-menus-tabs.php:1811 #: includes/admin/classes-posts-listings/class-learndash-admin-quizzes-listing.php:214 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontToplist.php:8 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:856 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:479 msgid "Leaderboard" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1683 #: includes/admin/ld-admin.php:1924 #: includes/ld-groups.php:141 #: includes/ld-groups.php:147 #: includes/ld-groups.php:155 msgid "Groups" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1726 #: includes/admin/classes-posts-listings/class-learndash-admin-quizzes-listing.php:162 #: includes/class-ld-custom-label.php:63 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:848 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Import.php:73 #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:147 msgid "Questions" msgstr "" #: includes/admin/class-learndash-admin-menus-tabs.php:1749 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:712 msgid "Advanced Settings" msgstr "" #: includes/admin/class-learndash-admin-pointers.php:156 msgid "First time using LearnDash?" msgstr "" #. translators: placeholder: Link to Bootcamp page #: includes/admin/class-learndash-admin-pointers.php:159 msgctxt "placeholder: Link to Bootcamp page" msgid "Go to the LearnDash %s" msgstr "" #. translators: placeholder: Link to Bootcamp page #: includes/admin/class-learndash-admin-pointers.php:160 msgid "mini-Bootcamp" msgstr "" #. translators: placeholders: Post Type singular label. #: includes/admin/class-learndash-admin-posts-edit.php:263 msgctxt "placeholders: Post Type singular label" msgid "Add %s title" msgstr "" #. translators: placeholders: Post Type singular label. #: includes/admin/class-learndash-admin-posts-edit.php:285 msgctxt "placeholders: Post Type singular label" msgid "Add %s content." msgstr "" #: includes/admin/class-learndash-admin-posts-edit.php:366 msgid "Associated Content" msgstr "" #. translators: placeholders: Quiz, Questions. #: includes/admin/class-learndash-admin-posts-edit.php:384 msgctxt "placeholders: Quiz, Questions" msgid "%1$s %2$s %3$s" msgstr "" #. translators: placeholder: Taxonomy singular name. #: includes/admin/class-learndash-admin-posts-listing.php:220 msgctxt "placeholder: Taxonomy singular name." msgid "Filter by %s" msgstr "" #: includes/admin/class-learndash-admin-posts-listing.php:279 #: includes/admin/ld-admin.php:674 msgid "Show more details" msgstr "" #: includes/admin/class-learndash-admin-settings-data-reports.php:14 msgctxt "Learndash Report Menu Label" msgid "Reports" msgstr "" #: includes/admin/class-learndash-admin-settings-data-reports.php:159 #: includes/admin/class-learndash-admin-settings-data-reports.php:165 #: includes/admin/ld-admin.php:278 msgid "User Reports" msgstr "" #: includes/admin/class-learndash-admin-settings-data-reports.php:164 msgid "Click to toggle" msgstr "" #. translators: placeholder: Course. #: includes/admin/class-learndash-admin-user-profile-edit.php:164 msgctxt "Course Info Label" msgid "%s Info" msgstr "" #. translators: placeholder: Course. #: includes/admin/class-learndash-admin-user-profile-edit.php:207 msgctxt "Permanently Delete Course Data Label" msgid "Permanently Delete %s Data" msgstr "" #: includes/admin/class-learndash-admin-user-profile-edit.php:211 msgid "Check and click update profile to permanently delete user's LearnDash course data. This cannot be undone." msgstr "" #: includes/admin/class-learndash-admin-user-profile-edit.php:238 msgid "Remove the Quiz lock(s) for this user." msgstr "" #. translators: placeholder: Courses. #: includes/admin/class-learndash-admin-user-profile-edit.php:402 msgctxt "User Enrolled Courses" msgid "User Enrolled %s" msgstr "" #: includes/admin/class-learndash-admin-user-profile-edit.php:407 msgid "Administrators are automatically enrolled in all Courses." msgstr "" #: includes/admin/class-learndash-admin-user-profile-edit.php:497 #: includes/class-ld-cpt-instance.php:93 #: includes/class-ld-lms.php:1387 #: includes/class-ld-lms.php:1855 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:40 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizOverall.php:89 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:310 #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:342 msgid "Title" msgstr "" #: includes/admin/class-learndash-admin-user-profile-edit.php:498 #: includes/admin/ld-admin.php:425 #: includes/ld-assignment-uploads.php:1117 #: includes/quiz/ld-quiz-essays.php:294 #: themes/ld30/templates/shortcodes/profile/assignments.php:15 #: themes/ld30/templates/shortcodes/profile/quiz-row.php:143 #: themes/legacy/templates/course.php:154 #: themes/legacy/templates/course.php:282 #: themes/legacy/templates/course_content_shortcode.php:59 #: themes/legacy/templates/course_content_shortcode.php:144 #: themes/legacy/templates/lesson.php:124 #: themes/legacy/templates/profile.php:77 #: themes/legacy/templates/quiz_progress_rows.php:147 #: themes/legacy/templates/topic.php:130 msgid "Status" msgstr "" #: includes/admin/class-learndash-admin-user-profile-edit.php:499 msgid "Steps" msgstr "" #: includes/admin/class-learndash-admin-user-profile-edit.php:500 msgid "Started / Completed" msgstr "" #: includes/admin/class-learndash-admin-user-profile-edit.php:532 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:544 #: themes/legacy/templates/quiz_progress_rows.php:152 msgid "view" msgstr "" #. translators: placeholder: Started Date. #: includes/admin/class-learndash-admin-user-profile-edit.php:582 msgctxt "placeholder: Started date" msgid "Started: %s" msgstr "" #. translators: placeholder: Started Group Date. #: includes/admin/class-learndash-admin-user-profile-edit.php:593 msgctxt "placeholder: Started Group date" msgid "Started: %s (Group Access)" msgstr "" #: includes/admin/class-learndash-admin-user-profile-edit.php:607 #: themes/legacy/templates/course_progress_rows.php:59 msgid "(access expired)" msgstr "" #. translators: placeholder: Course Expires Date. #: includes/admin/class-learndash-admin-user-profile-edit.php:616 msgctxt "Course Expires on date" msgid "Expires: %s" msgstr "" #. translators: placeholder: Course Completed Data. #: includes/admin/class-learndash-admin-user-profile-edit.php:630 msgctxt "placeholder: Completed date" msgid "Completed: %s" msgstr "" #. translators: placeholder: Lesson. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:66 msgctxt "placeholder: Lesson" msgid "Click the '+' to add a new %s" msgstr "" #. translators: placeholder: Topic. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:73 msgctxt "placeholder: Topic" msgid "Click the '+' to add a new %s" msgstr "" #. translators: placeholder: Quiz. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:80 msgctxt "placeholder: Quiz" msgid "Click the '+' to add a new %s" msgstr "" #. translators: placeholder: Lessons. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:88 msgctxt "placeholder: Lessons" msgid "Drop %s Here" msgstr "" #. translators: placeholder: Lesson, Topics. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:95 msgctxt "placeholder: Lesson, Topics" msgid "Drop %1$s %2$s Here" msgstr "" #. translators: placeholder: Quizzes. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:103 msgctxt "placeholder: Quizzes" msgid "Drop Global %s Here" msgstr "" #. translators: placeholder: Lesson, Quizzes. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:111 msgctxt "placeholder: Lesson, Quizzes" msgid "Drop %1$s %2$s Here" msgstr "" #. translators: placeholder: Topic, Quizzes. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:118 msgctxt "placeholder: Topic, Quizzes" msgid "Drop %1$s %2$s Here" msgstr "" #. translators: placeholder: number of steps. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:154 msgctxt "placeholder: number of steps" msgid "Total Steps: %s" msgstr "" #. translators: placeholder: will contain post type label. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:562 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:584 msgctxt "placeholder: will contain post type label" msgid "Edit %s Settings (new window)" msgstr "" #. translators: placeholder: will contain post type label. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:568 msgctxt "placeholder: will contain post type label" msgid "View %s (new window)" msgstr "" #. translators: placeholder: will contain post type label. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:576 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:592 msgctxt "placeholder: will contain post type label" msgid "Move %s to Trash" msgstr "" #. translators: placeholders: will contain post type label, Course. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:582 msgctxt "placeholders: will contain post type label, Course" msgid "Remove %1$s from %2$s" msgstr "" #. translators: placeholder: will contain post type label. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:607 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:609 msgctxt "placeholder: will contain post type label" msgid "Move %s" msgstr "" #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:613 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:683 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:711 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:738 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:616 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:729 msgid "Edit Title" msgstr "" #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:614 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:684 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:712 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:739 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:617 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:730 msgid "Ok" msgstr "" #. translators: placeholder: Lesson. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:667 msgctxt "placeholder: Lesson" msgid "Move %s" msgstr "" #. translators: placeholder: Lesson. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:671 msgctxt "placeholder: Lesson" msgid "Edit %s Settings (new window)" msgstr "" #. translators: placeholder: Lesson. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:675 msgctxt "placeholder: Lesson" msgid "View %s (new window)" msgstr "" #. translators: placeholders: Lesson, Course. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:679 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:707 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:734 msgctxt "placeholders: Lesson, Course" msgid "Remove %1$s from %2$s" msgstr "" #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:697 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:724 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:717 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:337 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:392 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:434 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionOverall.php:84 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1209 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-custom-fields.php:54 msgid "Move" msgstr "" #. translators: placeholder: Topic. #. translators: placeholder: placeholder: Topic. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:701 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:728 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:721 msgctxt "placeholder: Topic" msgid "Edit %s Settings (new window)" msgstr "" #. translators: placeholder: Topic. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:704 msgctxt "placeholder: Topic" msgid "View %s (new window)" msgstr "" #. translators: placeholder: placeholder: Quiz. #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:731 msgctxt "placeholder: Quiz" msgid "View %s (new window)" msgstr "" #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:1028 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:1063 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:953 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:989 msgid "#1: Invalid post data" msgstr "" #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:1031 #: includes/admin/classes-builders/class-learndash-admin-course-builder-metabox.php:1066 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:956 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:992 msgid "#2: Invalid post data" msgstr "" #. translators: placeholder: Question. #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:68 msgctxt "placeholder: Question" msgid "Click the '+' to add a new %s" msgstr "" #. translators: placeholder: Questions. #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:75 msgctxt "placeholder: Questions" msgid "Drop %s Here" msgstr "" #. translators: placeholder: Questions label, number of questions. #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:114 msgctxt "placeholder: Questions label, number of questions" msgid "Total %1$s: %2$s" msgstr "" #. translators: placeholders: post type labels like Question, second Quiz. #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:141 msgctxt "placeholders: post type labels like Question, second Quiz" msgid "Are you sure you want to remove this %1$s from the %2$s?" msgstr "" #. translators: placeholders: post type labels like Question. #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:147 msgctxt "placeholders: post type labels like Question" msgid "Are you sure you want to move this %s to Trash?" msgstr "" #. translators: placeholder: Question Type. #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:570 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:702 msgctxt "placeholder: Question Type" msgid "%s" msgstr "" #. translators: placeholder: Question Points. #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:580 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:712 msgctxt "placeholder: Question Points" msgid "(%dpt)" msgid_plural "(%dpts)" msgstr[0] "" msgstr[1] "" #. translators: placeholders: Question, Quiz. #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:598 #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:724 msgctxt "placeholders: Question, Quiz" msgid "Remove %1$s from %2$s" msgstr "" #. translators: placeholder: Total of question points. #: includes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.php:645 msgctxt "placeholder: Total of question points" msgid "Total Points: %s" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-courses.php:46 #: includes/admin/ld-admin.php:283 msgctxt "Export User Course Data Label" msgid "Export User %s Data" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-courses.php:292 #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php:270 msgctxt "placeholders: result count, total count" msgid "%1$d of %2$s Users" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-courses.php:304 #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php:282 msgid "user_id" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-courses.php:309 #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php:287 msgid "name" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-courses.php:315 #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php:293 msgid "email" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-courses.php:321 #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php:366 msgid "course_id" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-courses.php:326 #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php:372 msgid "course_title" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-courses.php:332 msgid "steps_completed" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-courses.php:337 msgid "steps_total" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-courses.php:342 msgid "course_completed" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-courses.php:347 msgid "course_completed_on" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-courses.php:387 #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php:409 msgid "ERROR: Cannot create working folder. Check that the parent folder is writable" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-courses.php:488 msgctxt "Course Complete Report label: NO" msgid "NO" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-courses.php:492 #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-courses.php:495 msgctxt "Course Complete Report label: YES" msgid "YES" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php:46 msgctxt "Export User Quiz Data Label" msgid "Export User %s Data" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php:299 msgid "quiz_id" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php:304 msgid "quiz_title" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php:318 msgid "score" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php:323 msgid "total" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php:328 msgid "date" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php:341 msgid "points_total" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php:347 msgid "percentage" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php:353 msgid "time_spent" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php:359 msgid "passed" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php:360 msgctxt "Quiz Passed Report label: NO" msgid "NO" msgstr "" #: includes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.php:563 msgctxt "Quiz Passed Report label: YES" msgid "YES" msgstr "" #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list-convert.php:36 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list.php:36 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-quiz-questions.php:35 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-rename_wpproquiz-tables.php:122 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-courses.php:35 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-quizzes.php:36 msgid "Upgrade" msgstr "" #. translators: placeholder: Course. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list-convert.php:45 msgctxt "placeholder: Course" msgid "Convert %s Access Lists" msgstr "" #. translators: placeholder: course. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list-convert.php:53 msgctxt "placeholder: course" msgid "This convert the %s access list setting to user meta where it can be managed more efficiently. (Optional)" msgstr "" #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list-convert.php:79 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list.php:79 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-quiz-questions.php:97 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-courses.php:81 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-quizzes.php:82 msgid "Continue previous upgrade processing?" msgstr "" #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list-convert.php:264 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list.php:266 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-quiz-questions.php:448 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-rename_wpproquiz-tables.php:497 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-courses.php:268 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-quizzes.php:269 msgid "Complete" msgstr "" #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list-convert.php:268 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list.php:270 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-quiz-questions.php:452 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-rename_wpproquiz-tables.php:501 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-courses.php:272 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-quizzes.php:273 #: includes/course/ld-course-list-shortcode.php:1530 #: includes/course/ld-course-progress.php:1426 #: includes/settings/shortcodes-sections/ld_course_list.php:81 #: sfwd_lms.php:553 #: includes/gutenberg/blocks/ld-course-list/index.js:288 msgid "In Progress" msgstr "" #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list-convert.php:271 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list.php:273 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-quiz-questions.php:455 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-rename_wpproquiz-tables.php:504 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-courses.php:275 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-quizzes.php:276 msgid "Incomplete" msgstr "" #. translators: placeholders: result count, total count. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list-convert.php:278 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list.php:280 msgctxt "placeholders: progress status, result count, total count" msgid "%1$s: %2$d of %3$d Courses" msgstr "" #. translators: placeholder: Course. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list.php:45 msgctxt "placeholder: Course" msgid "Upgrade %s Meta" msgstr "" #. translators: placeholder: course. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list.php:53 msgctxt "placeholder: course" msgid "This upgrade will upgrade the %s meta elements. (Optional)" msgstr "" #. translators: placeholders: Quiz, Questions. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-quiz-questions.php:44 msgctxt "placeholders: Quiz, Questions" msgid "Upgrade %1$s %2$s" msgstr "" #. translators: placeholders: Quiz questions, Quiz. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-quiz-questions.php:54 msgctxt "placeholders: Quiz questions, Quiz" msgid "This upgrade will convert the %1$s %2$s to WordPress custom post type. This is required before enabling %3$s Builder. (Optional)" msgstr "" #. translators: placeholders: Quiz. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-quiz-questions.php:126 msgctxt "placeholders: Quiz" msgid "Invalid %s ID" msgstr "" #. translators: placeholders: Questions, Quiz, Quiz Title. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-quiz-questions.php:147 msgctxt "placeholders: Questions, Quiz, Quiz Title" msgid "Reprocess %1$s for %2$s: \"%3$s\"" msgstr "" #. translators: placeholders: Questions. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-quiz-questions.php:162 msgctxt "placeholders: Questions" msgid "Process Mismatched %s only?" msgstr "" #. translators: placeholders: result count, total count, Questions label. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-quiz-questions.php:462 msgctxt "placeholders: progress status, result count, total count, Questions label" msgid "%1$s: %2$d of %3$d %4$s" msgstr "" #. translators: placeholder: Number of skipper Questions. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-quiz-questions.php:474 msgctxt "placeholder: Number of skipper Questions" msgid "ProQuiz Questions Skipped %d" msgstr "" #. translators: placeholder: ProQuiz Question ID. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-quiz-questions.php:509 msgctxt "placeholder: ProQuiz Question ID" msgid "[%d] Empty Question ProID given." msgstr "" #. translators: placeholder: ProQuiz Question ID. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-quiz-questions.php:520 msgctxt "placeholder: ProQuiz Question ID" msgid "ProQuestion ID [%d] Model not found." msgstr "" #. translators: placeholder: ProQuiz Question ID, ProQuiz Quiz ID. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-quiz-questions.php:532 msgctxt "placeholder: ProQuiz Question ID, ProQuiz Quiz ID" msgid "ProQuestion ID [%1$d] ProQuiz ID empty [%2$d]." msgstr "" #. translators: placeholder: ProQuiz Question ID, ProQuiz Quiz ID. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-quiz-questions.php:544 msgctxt "placeholder: ProQuiz Question ID, ProQuiz Quiz ID" msgid "ProQuestion ID [%1$d] ProQuiz ID Model not found [%2$d]." msgstr "" #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-rename_wpproquiz-tables.php:127 msgid "Reload" msgstr "" #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-rename_wpproquiz-tables.php:134 msgid "Rename WPProQuiz DB Tables" msgstr "" #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-rename_wpproquiz-tables.php:140 msgid "This upgrade will rename the existing WPProQuiz database tables to a new name inline with LearnDash standards.
      It is recommended you set your site to maintenance mode before performing this upgrade." msgstr "" #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-rename_wpproquiz-tables.php:149 msgctxt "placeholders: default prefix, example table name" msgid "%1$s - Legacy ProQuiz table prefix. Ex. %2$s" msgstr "" #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-rename_wpproquiz-tables.php:155 msgctxt "placeholders: learndash prefix, example table name" msgid "%1$s - LearnDash ProQuiz table prefix. Ex. %2$s" msgstr "" #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-rename_wpproquiz-tables.php:175 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-rename_wpproquiz-tables.php:215 msgid "Source Tables" msgstr "" #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-rename_wpproquiz-tables.php:177 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-rename_wpproquiz-tables.php:217 msgid "Destination Tables" msgstr "" #. translators: placeholders: result count, total count. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-rename_wpproquiz-tables.php:511 msgctxt "placeholders: progress status, result count, total count" msgid "%1$s: %2$d of %3$d ProQuiz Table" msgstr "" #. translators: placeholder: Course. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-courses.php:44 msgctxt "placeholder: Course" msgid "Upgrade User %s Data" msgstr "" #. translators: placeholder: Course, course. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-courses.php:53 msgctxt "placeholder: course" msgid "This upgrade will sync your existing user data for %s into a new database table for better reporting. (Required)" msgstr "" #. translators: placeholders: result count, total count. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-courses.php:282 #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-quizzes.php:283 msgctxt "placeholders: progress status, result count, total count" msgid "%1$s: %2$d of %3$d Users" msgstr "" #. translators: placeholder: Quiz. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-quizzes.php:45 msgctxt "placeholder: Quiz" msgid "Upgrade User %s Data" msgstr "" #. translators: placeholder: quiz. #: includes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-quizzes.php:54 msgctxt "placeholder: quiz" msgid "This upgrade will sync your existing user data for %s into a new database table for better reporting. (Required)" msgstr "" #. translators: placeholder: Course. #: includes/admin/classes-posts-edits/class-learndash-admin-course-edit.php:103 msgctxt "placeholder: Course" msgid "LearnDash %s Builder" msgstr "" #. translators: placeholder: Course. #: includes/admin/classes-posts-edits/class-learndash-admin-course-edit.php:120 msgctxt "LearnDash Course Groups" msgid "LearnDash %s Groups" msgstr "" #. translators: placeholders: Question. #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:223 msgctxt "placeholders: Question" msgid "%s Category" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:225 #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:261 #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:270 #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:279 #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:288 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:40 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:80 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:125 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:142 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:154 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1231 msgid "(optional)" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:234 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:173 msgid "Answer type" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:243 #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:465 #: includes/admin/classes-posts-listings/class-learndash-admin-questions-listing.php:36 #: includes/admin/ld-admin.php:426 #: includes/ld-assignment-uploads.php:1139 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:59 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1813 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1866 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontToplist.php:17 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:49 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:56 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:324 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:362 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:421 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionOverall.php:44 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:105 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:240 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:30 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:120 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:771 #: includes/quiz/ld-quiz-essays.php:295 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:508 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:503 #: includes/settings/shortcodes-sections/quizinfo.php:32 #: themes/ld30/templates/shortcodes/profile.php:110 #: themes/ld30/templates/shortcodes/profile/quiz-row.php:147 #: themes/legacy/templates/quiz_progress_rows.php:147 msgid "Points" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:243 #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:252 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:49 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:110 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:215 msgid "(required)" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:252 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:215 msgid "Answers" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:261 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:535 msgid "Single choice options" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:270 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:125 msgid "Message with the correct answer" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:279 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:142 msgid "Message with the incorrect answer" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:288 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1913 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1958 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:154 msgid "Hint" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:297 msgid "Template" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:387 msgid "Answer Type" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:419 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:83 msgid "You can assign classify category for a question. Categories are e.g. visible in statistics function." msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:422 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:86 msgid "You can manage categories in global settings." msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:426 #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:436 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:90 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:100 msgid "Create new category" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:427 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Statistics.php:58 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Statistics.php:703 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:91 msgid "No category" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:438 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:102 msgid "Create" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:462 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:53 msgid "Points for this question (Standard is 1 point)" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:468 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:59 msgid "This points will be rewarded, only if the user closes the question correctly." msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:474 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:65 msgid "Different points for each answer" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:477 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:68 msgid "If you enable this option, you can enter different points for every answer." msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:483 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:74 msgid "Show reached points in the correct- and incorrect message?" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:507 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:128 msgid "This text will be visible if answered correctly. It can be used as explanation for complex questions. The message \"Right\" or \"Wrong\" is always displayed automatically." msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:511 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:132 msgid "Same text for correct- and incorrect-message?" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:537 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:145 msgid "This text will be visible if answered incorrectly. It can be used as explanation for complex questions. The message \"Right\" or \"Wrong\" is always displayed automatically." msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:559 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:157 msgid "Here you can enter solution hint." msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:563 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:161 msgid "Activate hint for this question?" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:582 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:538 msgid "If \"Different points for each answer\" is activated, you can activate a special mode.
      This changes the calculation of the points" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:586 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:542 msgid "Different points - modus 2 activate" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:590 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:546 msgid "Disables the distinction between correct and incorrect." msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:594 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:550 msgid "Disable correct and incorrect" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:598 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:554 msgid "Explanation of points calculation" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:628 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:222 msgid "Please sort the answers in right order with the \"Move\" - Button. The answers will be displayed randomly." msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:633 #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:639 #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:661 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:227 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:233 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:255 msgid "Add new answer" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:643 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:237 msgid "In this mode, Sort Elements must be assigned to their corresponding Criterion." msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:646 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:240 msgid "Each Sort Element must be unique, and only one-to-one associations are supported." msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:650 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:244 msgid "Percentage width of criteria table column:" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:655 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:249 msgid "Allows adjustment of the left column's width, and the right column will auto-fill the rest of the available space. Increase this to allow accommodate longer criterion text. Defaults to 20%." msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:697 #: includes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.php:515 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:538 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:693 msgid "Use Template" msgstr "" #. translators: Question Title. #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:706 msgctxt "placeholder: Question Title" msgid "Revert: %s" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:710 #: includes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.php:528 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-templates-load.php:107 msgid "Select a Template to load" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:718 #: includes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.php:537 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:33 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:549 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-templates-load.php:130 msgid "load template" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:723 #: includes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.php:542 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:554 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:702 msgid "Save as Template" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:727 #: includes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.php:546 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-templates-save.php:86 msgid "Select a templates to save or new" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:728 #: includes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.php:547 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:275 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:559 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-templates-save.php:88 msgid "Create new template" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:735 #: includes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.php:554 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-templates-save.php:98 msgid "new template name" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:762 #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:766 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:574 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:579 msgid "\"Different points for each answer\" enabled" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:763 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:576 msgid "\"Different points - mode 2\" disable" msgstr "" #: includes/admin/classes-posts-edits/class-learndash-admin-question-edit.php:767 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:581 msgid "\"Different points - mode 2\" enabled" msgstr "" #. translators: placeholder: Quiz. #: includes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.php:223 msgctxt "placeholder: Quiz" msgid "LearnDash %s Builder" msgstr "" #. translators: placeholder: Quiz. #: includes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.php:237 #: includes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.php:309 msgctxt "placeholder: Quiz" msgid "LearnDash %s Advanced Settings" msgstr "" #. translators: placeholder: Quiz. #: includes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.php:325 msgctxt "placeholder: Quiz" msgid "LearnDash %s Question Settings" msgstr "" #. translators: placeholder: Quiz. #: includes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.php:341 msgctxt "placeholder: Quiz" msgid "LearnDash %s Result Settings" msgstr "" #. translators: placeholder: Quiz. #: includes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.php:357 msgctxt "placeholder: Quiz" msgid "LearnDash %s Mode Settings" msgstr "" #. translators: placeholder: Quiz. #: includes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.php:373 msgctxt "placeholder: Quiz" msgid "LearnDash %s Result Text Settings" msgstr "" #. translators: placeholder: Quiz. #: includes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.php:389 msgctxt "placeholder: Quiz" msgid "LearnDash %s Template Settings" msgstr "" #. translators: placeholder: Quiz. #: includes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.php:405 msgctxt "placeholder: Quiz" msgid "LearnDash %s Leaderboard Settings" msgstr "" #. translators: placeholder: Quiz. #: includes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.php:421 msgctxt "placeholder: Quiz" msgid "LearnDash %s Custom Fields Settings" msgstr "" #. translators: Quiz Title. #: includes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.php:524 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-templates-load.php:100 msgctxt "placeholder: Quiz Title" msgid "Revert: %s" msgstr "" #. translators: placeholder: Course. #: includes/admin/classes-posts-listings/class-learndash-admin-courses-listing.php:56 #: includes/settings/settings-pages/class-ld-settings-page-courses-builder-single.php:136 msgctxt "placeholder: Course" msgid "Use %s Builder" msgstr "" #. translators: placeholder: Courses. #: includes/admin/classes-posts-listings/class-learndash-admin-lessons-listing.php:46 #: includes/admin/classes-posts-listings/class-learndash-admin-quizzes-listing.php:48 #: includes/admin/classes-posts-listings/class-learndash-admin-topics-listing.php:46 msgctxt "placeholder: Courses" msgid "Show All %s" msgstr "" #: includes/admin/classes-posts-listings/class-learndash-admin-questions-listing.php:35 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:38 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:57 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionOverall.php:42 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1161 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-custom-fields.php:57 msgid "Type" msgstr "" #. translators: placeholder: Quiz. #: includes/admin/classes-posts-listings/class-learndash-admin-questions-listing.php:39 msgctxt "placeholder: Quiz" msgid "Assigned %s" msgstr "" #. translators: placeholder: Question. #: includes/admin/classes-posts-listings/class-learndash-admin-questions-listing.php:51 #: includes/class-ld-lms.php:1227 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:635 msgctxt "placeholder: Question" msgid "%s Category" msgstr "" #. translators: placeholder: Quizzes. #: includes/admin/classes-posts-listings/class-learndash-admin-questions-listing.php:68 msgctxt "placeholder: Quizzes" msgid "Show All %s" msgstr "" #. translators: placeholder: Quiz. #: includes/admin/classes-posts-listings/class-learndash-admin-questions-listing.php:74 msgctxt "placeholder: Quiz" msgid "-- No %s --" msgstr "" #: includes/admin/classes-posts-listings/class-learndash-admin-questions-listing.php:172 #: includes/admin/ld-admin.php:578 #: includes/admin/ld-admin.php:637 #: includes/quiz/ld-quiz-essays.php:399 #: includes/quiz/ld-quiz-essays.php:427 #: includes/quiz/ld-quiz-essays.php:449 msgid "filter" msgstr "" #. translators: placeholder: Group Leaders Count. #: includes/admin/classes-posts-listings/class-learndash-admin-questions-listing.php:180 msgctxt "Quizzes Count" msgid "Total %d" msgstr "" #. translators: placeholder: Question. #: includes/admin/classes-posts-listings/class-learndash-admin-questions-listing.php:235 msgctxt "placeholder: Question" msgid "Show all %s types" msgstr "" #: includes/admin/classes-posts-listings/class-learndash-admin-questions-listing.php:265 msgid "Show all ProQuiz Categories" msgstr "" #. translators: placeholder: Lessons. #: includes/admin/classes-posts-listings/class-learndash-admin-quizzes-listing.php:71 #: includes/admin/classes-posts-listings/class-learndash-admin-topics-listing.php:68 msgctxt "placeholder: Lessons" msgid "Show All %s" msgstr "" #. translators: placeholder: Quiz. #: includes/admin/classes-posts-listings/class-learndash-admin-quizzes-listing.php:107 #: includes/settings/settings-pages/class-ld-settings-page-quizzes-builder-single.php:166 msgctxt "placeholder: Quiz" msgid "Use %s Builder" msgstr "" #. translators: placeholder: Quiz. #: includes/admin/classes-posts-listings/class-learndash-admin-quizzes-listing.php:154 msgctxt "placeholder: Quiz" msgid "Show %s Questions" msgstr "" #. translators: placeholder: Quiz. #: includes/admin/classes-posts-listings/class-learndash-admin-quizzes-listing.php:180 msgctxt "placeholder: Quiz" msgid "Show %s Statistics" msgstr "" #. translators: placeholder: Quiz. #: includes/admin/classes-posts-listings/class-learndash-admin-quizzes-listing.php:206 msgctxt "placeholder: Quiz" msgid "Show %s Leaderboard" msgstr "" #: includes/admin/classes-posts-listings/class-learndash-admin-quizzes-listing.php:237 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizOverall.php:166 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizOverall.php:171 msgid "Export" msgstr "" #: includes/admin/ld-admin.php:261 #: includes/class-ld-lms.php:768 msgctxt "Edit Topic Label" msgid "Edit %s" msgstr "" #: includes/admin/ld-admin.php:284 msgctxt "Export Quiz Data Label" msgid "Export %s Data" msgstr "" #: includes/admin/ld-admin.php:342 msgid "Shortcode" msgstr "" #: includes/admin/ld-admin.php:364 #: includes/admin/ld-admin.php:370 #: includes/admin/ld-admin.php:401 #: includes/quiz/ld-quiz-essays.php:296 msgctxt "Assigned Course Label" msgid "Assigned %s" msgstr "" #: includes/admin/ld-admin.php:365 #: includes/admin/ld-admin.php:402 msgctxt "Assigned Lesson Label" msgid "Assigned %s" msgstr "" #: includes/admin/ld-admin.php:476 msgctxt "Assignment approval status" msgid "Approved" msgstr "" #: includes/admin/ld-admin.php:479 msgctxt "Assignment approval status" msgid "Not Approved" msgstr "" #: includes/admin/ld-admin.php:486 #: includes/quiz/ld-quiz-essays.php:331 msgid "approve" msgstr "" #: includes/admin/ld-admin.php:510 msgctxt "placeholders: current points / maximum point for assignment" msgid "%1$s / %2$s" msgstr "" #: includes/admin/ld-admin.php:512 msgctxt "Points for assignment not enabled" msgid "Not Enabled" msgstr "" #: includes/admin/ld-admin.php:551 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Quiz.php:342 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizOverall.php:125 msgid "Missing ProQuiz Associated Settings." msgstr "" #: includes/admin/ld-admin.php:586 msgctxt "placeholder: Course" msgid "%s Required" msgstr "" #: includes/admin/ld-admin.php:645 msgctxt "placeholder: Lesson" msgid "%s Required" msgstr "" #: includes/admin/ld-admin.php:750 msgid "Filter by %s" msgstr "" #: includes/admin/ld-admin.php:832 #: includes/admin/ld-admin.php:2075 msgctxt "Show All Courses Option Label" msgid "Show All %s" msgstr "" #: includes/admin/ld-admin.php:839 #: includes/admin/ld-admin.php:2086 #: includes/admin/ld-admin.php:2160 #: includes/class-ld-semper-fi-module.php:1172 msgid "loading" msgstr "" #: includes/admin/ld-admin.php:849 msgctxt "Show All Lessons Option Label" msgid "Show All %s" msgstr "" #: includes/admin/ld-admin.php:939 msgctxt "Show All Topics Option Label" msgid "Show All %s" msgstr "" #: includes/admin/ld-admin.php:1013 #: includes/admin/ld-admin.php:1028 msgctxt "Show All Quizzes Option Label" msgid "Show All %s" msgstr "" #: includes/admin/ld-admin.php:1054 msgid "Approval Status" msgstr "" #: includes/admin/ld-admin.php:1055 #: includes/ld-assignment-uploads.php:1122 #: themes/ld30/templates/assignment/partials/row.php:163 #: themes/ld30/templates/shortcodes/profile/assignment-row.php:112 msgid "Approved" msgstr "" #: includes/admin/ld-admin.php:1056 #: includes/ld-assignment-uploads.php:1126 msgid "Not Approved" msgstr "" #: includes/admin/ld-admin.php:1646 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:1058 msgid "Changelog" msgstr "" #: includes/admin/ld-admin.php:1661 #: includes/settings/shortcodes-sections/quizinfo.php:29 msgid "Count" msgstr "" #: includes/admin/ld-admin.php:1941 #: includes/admin/ld-admin.php:1970 msgid "Total %s" msgstr "" #: includes/admin/ld-admin.php:2148 msgid "Show All Groups" msgstr "" #: includes/admin/ld-admin.php:2168 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:11 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:209 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:288 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:93 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:139 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:200 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:223 msgid "Filter" msgstr "" #: includes/admin/ld-quiz-builder-helpers.php:110 msgid "point" msgstr "" #: includes/admin/ld-quiz-builder-helpers.php:114 msgctxt "Question type description for Free Answers" msgid "correct answers (one per line) (answers will be converted to lower case)" msgstr "" #: includes/admin/ld-quiz-builder-helpers.php:115 msgctxt "Question type description for Sort Answers" msgid "Please sort the answers in the right order with the \"move\" button. The answers will be displayed randomly." msgstr "" #: includes/admin/ld-quiz-builder-helpers.php:117 msgid "Use { } to mark a gap and correct answer:
      I {play} soccer." msgstr "" #: includes/admin/ld-quiz-builder-helpers.php:118 msgid "Use [ ] to mark multiple correct answers:
      I {[love][hate]} soccer." msgstr "" #: includes/admin/ld-quiz-builder-helpers.php:121 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:509 msgid "How should the user submit their answer?" msgstr "" #. translators: placeholders: course #: includes/admin/ld-quiz-builder-helpers.php:124 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:516 msgctxt "placeholders: course" msgid "This is a question that can be graded and potentially prevent a user from progressing to the next step of the %s." msgstr "" #: includes/admin/ld-quiz-builder-helpers.php:127 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:517 msgid "The user can only progress if the essay is marked as \"Graded\" and if the user has enough points to move on." msgstr "" #. translators: placeholders: quiz #: includes/admin/ld-quiz-builder-helpers.php:130 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:518 msgctxt "placeholders: quiz" msgid "How should the answer to this question be marked and graded upon %s submission?" msgstr "" #: includes/admin/ld-quiz-builder-helpers.php:135 msgid "Use { } to mark an assessment:
      Less true { [1] [2] [3] [4] [5] } More true" msgstr "" #: includes/admin/ld-quiz-builder-helpers.php:136 msgid "Use [ ] to mark selectable items:
      Less true { [A] [B] [C] } More true" msgstr "" #: includes/admin/onboarding-templates/onboarding-groups.php:16 msgctxt "Placeholder text when no Groups exist" msgid "You don't have any Groups yet" msgstr "" #: includes/admin/onboarding-templates/onboarding-groups.php:21 msgid "Users can be placed into Groups and assigned a Group Leader who can track the progress and performance of any user in the Group." msgstr "" #: includes/admin/onboarding-templates/onboarding-groups.php:27 msgctxt "Button text to create a new group" msgid "Add your first Group" msgstr "" #: includes/admin/onboarding-templates/onboarding-groups.php:37 msgctxt "Titel of tutorial video" msgid "Creating a Group" msgstr "" #: includes/admin/onboarding-templates/onboarding-groups.php:43 #: includes/admin/onboarding-templates/onboarding-sfwd-certificates.php:49 #: includes/admin/onboarding-templates/onboarding-sfwd-courses.php:53 #: includes/admin/onboarding-templates/onboarding-sfwd-lessons.php:55 #: includes/admin/onboarding-templates/onboarding-sfwd-question.php:44 #: includes/admin/onboarding-templates/onboarding-sfwd-quiz.php:58 #: includes/admin/onboarding-templates/onboarding-sfwd-topic.php:59 msgid "Related help and documentation" msgstr "" #: includes/admin/onboarding-templates/onboarding-sfwd-certificates.php:15 msgctxt "Placeholder text when no certificates have been created" msgid "You don't have any Certificates yet" msgstr "" #. translators: placeholder: %1$s: Quiz, %2$s: Course #: includes/admin/onboarding-templates/onboarding-sfwd-certificates.php:22 msgctxt "placeholder: %1$s: Quiz, %2$s: Course" msgid "Certificates can be awarded based on %1$s performance or at the very end of a %2$s. Once earned, the Certificate is available for PDF download from the user’s LearnDash profile." msgstr "" #: includes/admin/onboarding-templates/onboarding-sfwd-certificates.php:30 msgctxt "Button to add a certificate" msgid "Add your first Certificate" msgstr "" #: includes/admin/onboarding-templates/onboarding-sfwd-certificates.php:35 msgid "Need more help?" msgstr "" #. translators: placeholder: Course. #: includes/admin/onboarding-templates/onboarding-sfwd-certificates.php:41 msgctxt "placeholder: Course" msgid "Creating a Great %1$s Certificate" msgstr "" #. translators: placeholder: Courses. #: includes/admin/onboarding-templates/onboarding-sfwd-courses.php:16 msgctxt "placeholder: Courses" msgid "You don't have any %s yet" msgstr "" #. translators: placeholder: %1$s: Courses, %2$s: Course, %3$s: Lessons, %4$s: Topics, %5$s: Quizzes #: includes/admin/onboarding-templates/onboarding-sfwd-courses.php:22 msgctxt "placeholder: %1$s: Courses, %2$s: Course, %3$s: Lessons, %4$s: Topics, %5$s: Quizzes" msgid "%1$s offer a convenient and organized way for you to deliver training content. Create a %2$s and include %3$s, %4$s, %5$s, Assignments, and more!" msgstr "" #. translators: placeholder: Course. #: includes/admin/onboarding-templates/onboarding-sfwd-courses.php:34 msgctxt "placeholder: Course" msgid "Add your first %s" msgstr "" #. translators: Courses. #: includes/admin/onboarding-templates/onboarding-sfwd-courses.php:45 msgctxt "placeholder: Courses" msgid "Getting started with LearnDash %s" msgstr "" #. translators: placeholder: Lessons. #: includes/admin/onboarding-templates/onboarding-sfwd-lessons.php:16 msgctxt "placeholder: Lessons" msgid "You don't have any %s yet" msgstr "" #. translators: placeholder: %1$s: Lessons, %2$s: Course, %3$s: Lessons, %4$s: Course #: includes/admin/onboarding-templates/onboarding-sfwd-lessons.php:23 msgctxt "placeholder: %1$s: Lessons, %2$s: Course, %3$s: Lessons, %4$s: Course" msgid "%1$s are where you add your content for your %2$s. You can add %3$s using the Course Builder, or you can create them individually and assign them to a %4$s later" msgstr "" #. translators: placeholder: Lesson. #: includes/admin/onboarding-templates/onboarding-sfwd-lessons.php:35 msgctxt "placeholder: Lesson" msgid "Add your first %s" msgstr "" #. translators: placeholder: %1$s: Lessons, %2$s: Course #: includes/admin/onboarding-templates/onboarding-sfwd-lessons.php:46 msgctxt "placeholder: %1$s: Lessons, %2$s: Course" msgid "Creating %1$s for Your %2$s" msgstr "" #: includes/admin/onboarding-templates/onboarding-sfwd-lessons.php:60 msgid "View all docs" msgstr "" #. translators: placeholder: Questions. #: includes/admin/onboarding-templates/onboarding-sfwd-question.php:16 msgctxt "placeholder: Questions" msgid "You don't have any %s yet" msgstr "" #. translators: placeholder: %1$s: Questions, %2$s: Quiz, %3$s: Questions, %4$s: Quiz #: includes/admin/onboarding-templates/onboarding-sfwd-question.php:23 msgctxt "placeholder: %1$s: Questions, %2$s: Quiz, %3$s: Questions, %4$s: Quiz" msgid "You can add %1$s when you create a %2$s, or you can choose to add %3$s at any time and add them to a %4$s later." msgstr "" #. translators: placeholder: Question. #: includes/admin/onboarding-templates/onboarding-sfwd-question.php:35 msgctxt "placeholder: Question" msgid "Add your first %s" msgstr "" #. translators: placeholder: Quizzes. #: includes/admin/onboarding-templates/onboarding-sfwd-quiz.php:16 msgctxt "placeholder: Quizzes" msgid "You don't have any %s yet" msgstr "" #. translators: placeholder: %1$s: Quizzes, %2$s: Course, %3$s: Quiz, %4$s: Course #: includes/admin/onboarding-templates/onboarding-sfwd-quiz.php:23 msgctxt "placeholder: %1$s: Quizzes, %2$s: Course, %3$s: Quiz, %4$s: Course" msgid "%1$s are a great way to check if your learners are understanding the %2$s content. You can have a %3$s in the middle of a %4$s, or you can put it at the end" msgstr "" #. translators: placeholder: Quiz. #: includes/admin/onboarding-templates/onboarding-sfwd-quiz.php:35 msgctxt "placeholder: Quiz" msgid "Add your first %s" msgstr "" #. translators: placeholder: %1$s: Quiz #: includes/admin/onboarding-templates/onboarding-sfwd-quiz.php:46 msgctxt "placeholder: %1$s: Quiz" msgid "Creating a %1$s" msgstr "" #. translators: placeholder: Topics. #: includes/admin/onboarding-templates/onboarding-sfwd-topic.php:16 msgctxt "placeholder: Topics" msgid "You don't have any %s yet" msgstr "" #. translators: placeholder: %1$s: Lessons, %2$s: Course, %3$s: Topics, %4$s: Topics, %5$s: Lesson #: includes/admin/onboarding-templates/onboarding-sfwd-topic.php:23 msgctxt "placeholder: %1$s: Lessons, %2$s: Course, %3$s: Topics, %4$s: Topics, %5$s: Lesson" msgid "When you have %1$s in your %2$s, you can break them up into separate %3$s. You can add %4$s using the Course Builder, or you can create them individually and assign them to a %5$s later." msgstr "" #. translators: placeholder: Topic. #: includes/admin/onboarding-templates/onboarding-sfwd-topic.php:36 msgctxt "placeholder: Topic" msgid "Add your first %s" msgstr "" #. translators: placeholder: %1$s: Topics #: includes/admin/onboarding-templates/onboarding-sfwd-topic.php:49 msgctxt "placeholder: %1$s: Topics" msgid "Creating %1$s" msgstr "" #: includes/class-ld-addons-updater.php:105 #: includes/class-ld-addons-updater.php:137 msgid "Return to LearnDash Add-ons Page" msgstr "" #: includes/class-ld-addons-updater.php:135 msgid "Activate Plugin" msgstr "" #: includes/class-ld-addons-updater.php:307 msgid "Directory successfully renamed." msgstr "" #: includes/class-ld-addons-updater.php:312 msgid "Unable to rename the update to match the existing directory." msgstr "" #. translators: placeholders: Translation Name, Translation Locale. #: includes/class-ld-addons-updater.php:363 msgctxt "placeholders: Translation Name, Translation Locale" msgid "

      Updating translations for %1$s (%2$s)...

      " msgstr "" #. translators: placeholder: plugin title. #: includes/class-ld-addons-updater.php:374 msgctxt "placeholder: plugin title" msgid "%s: Translations" msgstr "" #: includes/class-ld-cpt-instance.php:58 msgid " Options" msgstr "" #: includes/class-ld-cpt-instance.php:89 #: includes/class-ld-lms.php:1852 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:306 #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:336 msgid "Sort By" msgstr "" #: includes/class-ld-cpt-instance.php:90 msgid "select" msgstr "" #: includes/class-ld-cpt-instance.php:92 #: includes/class-ld-cpt-instance.php:104 #: includes/class-ld-lms.php:1854 #: includes/class-ld-lms.php:1865 msgid "Select a choice..." msgstr "" #: includes/class-ld-cpt-instance.php:94 #: includes/class-ld-gdpr.php:395 #: includes/class-ld-gdpr.php:494 #: includes/class-ld-lms.php:1388 #: includes/class-ld-lms.php:1856 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1190 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:323 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:27 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-custom-fields.php:102 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:311 #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:341 #: themes/ld30/templates/shortcodes/profile/assignments.php:16 #: themes/ld30/templates/shortcodes/profile/quizzes.php:25 #: themes/legacy/templates/profile.php:143 msgid "Date" msgstr "" #: includes/class-ld-cpt-instance.php:95 #: includes/class-ld-lms.php:1389 #: includes/class-ld-lms.php:1857 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:312 #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:340 msgid "Menu Order" msgstr "" #: includes/class-ld-cpt-instance.php:98 #: includes/class-ld-cpt-instance.php:109 #: includes/class-ld-lms.php:1860 #: includes/class-ld-lms.php:1870 msgid "Choose the sort order." msgstr "" #: includes/class-ld-cpt-instance.php:101 #: includes/class-ld-lms.php:1863 msgid "Sort Direction" msgstr "" #: includes/class-ld-cpt-instance.php:105 #: includes/class-ld-lms.php:1400 #: includes/class-ld-lms.php:1866 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:324 #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:353 msgid "Ascending" msgstr "" #: includes/class-ld-cpt-instance.php:106 #: includes/class-ld-lms.php:1401 #: includes/class-ld-lms.php:1867 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:325 #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:354 msgid "Descending" msgstr "" #: includes/class-ld-cpt-instance.php:112 msgid "Posts Per Page" msgstr "" #: includes/class-ld-cpt-instance.php:114 msgid "Enter the number of posts to display per page." msgstr "" #: includes/class-ld-cpt-instance.php:811 #: includes/course/ld-course-functions.php:935 #: includes/course/ld-course-list-shortcode.php:1478 #: includes/course/ld-course-progress.php:1378 #: includes/course/ld-course-progress.php:1432 #: includes/course/ld-course-progress.php:2244 #: includes/ld-certificates.php:156 #: includes/settings/shortcodes-sections/ld_course_list.php:82 #: sfwd_lms.php:554 #: themes/ld30/templates/shortcodes/profile.php:96 #: themes/legacy/templates/course_progress_rows.php:99 #: includes/gutenberg/blocks/ld-course-list/index.js:292 msgid "Completed" msgstr "" #: includes/class-ld-cpt-instance.php:909 msgid "Access to certificate page is disallowed." msgstr "" #: includes/class-ld-cpt-widget.php:33 msgctxt "Displays a list of lessons for a course and tracks lesson progress." msgid "Displays a list of %1$s for a %2$s and tracks %3$s progress." msgstr "" #: includes/class-ld-cpt-widget.php:179 #: includes/class-ld-cpt-widget.php:311 #: includes/class-ld-cpt-widget.php:443 #: includes/class-ld-cpt-widget.php:573 #: includes/class-ld-cpt-widget.php:704 #: includes/course/ld-course-info-widget.php:185 #: includes/course/ld-course-info-widget.php:438 #: includes/course/ld-course-progress.php:2081 #: themes/ld30/includes/helpers.php:1251 msgid "Title:" msgstr "" #: includes/class-ld-cpt-widget.php:214 msgctxt "placeholder: Course" msgid "Displays a list of %s" msgstr "" #: includes/class-ld-cpt-widget.php:346 msgctxt "placeholder: Quiz" msgid "Displays a list of %s" msgstr "" #: includes/class-ld-cpt-widget.php:476 msgctxt "placeholder: Transactions" msgid "Displays a list of %s" msgstr "" #: includes/class-ld-cpt-widget.php:607 msgctxt "placeholder: Certificates" msgid "Displays a list of %s" msgstr "" #: includes/class-ld-cpt.php:37 #: includes/ld-groups.php:143 #: includes/quiz/ld-quiz-essays.php:29 msgid "Add New" msgstr "" #: includes/class-ld-cpt.php:39 msgctxt "placeholder: Post Name" msgid "Add New %s" msgstr "" #: includes/class-ld-cpt.php:40 msgctxt "placeholder: Post Name" msgid "Edit %s" msgstr "" #: includes/class-ld-cpt.php:41 msgctxt "placeholder: Post Name" msgid "New %s" msgstr "" #: includes/class-ld-cpt.php:42 msgctxt "placeholder: Post Name" msgid "View %s" msgstr "" #: includes/class-ld-cpt.php:43 msgctxt "placeholder: Post Name" msgid "Search %s" msgstr "" #: includes/class-ld-cpt.php:44 msgctxt "placeholder: Post Name" msgid "No %s found" msgstr "" #: includes/class-ld-cpt.php:45 msgctxt "placeholder: Post Name" msgid "No %s found in Trash" msgstr "" #: includes/class-ld-cpt.php:46 msgctxt "placeholder: Post Name" msgid "Parent %s" msgstr "" #: includes/class-ld-cpt.php:48 msgctxt "placeholder: Post Name" msgid "%s Published" msgstr "" #: includes/class-ld-cpt.php:49 msgctxt "placeholder: Post Name" msgid "%s Published Privately" msgstr "" #: includes/class-ld-cpt.php:50 msgctxt "placeholder: Post Name" msgid "%s Reverted to Draft" msgstr "" #: includes/class-ld-cpt.php:51 msgctxt "placeholder: Post Name" msgid "%s Scheduled" msgstr "" #: includes/class-ld-cpt.php:52 msgctxt "placeholder: Post Name" msgid "%s Updated" msgstr "" #: includes/class-ld-custom-label.php:27 #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:75 msgid "Course" msgstr "" #: includes/class-ld-custom-label.php:31 #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:83 msgid "Courses" msgstr "" #: includes/class-ld-custom-label.php:35 #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:91 msgid "Lesson" msgstr "" #: includes/class-ld-custom-label.php:39 #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:99 msgid "Lessons" msgstr "" #: includes/class-ld-custom-label.php:43 #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:107 msgid "Topic" msgstr "" #: includes/class-ld-custom-label.php:47 #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:115 msgid "Topics" msgstr "" #: includes/class-ld-custom-label.php:51 #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:123 msgid "Quiz" msgstr "" #: includes/class-ld-custom-label.php:55 #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:131 msgid "Quizzes" msgstr "" #: includes/class-ld-custom-label.php:59 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1446 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:110 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:104 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:119 #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:139 msgid "Question" msgstr "" #: includes/class-ld-custom-label.php:67 msgid "Take this Course" msgstr "" #: includes/class-ld-custom-label.php:71 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:151 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:456 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:507 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:569 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:626 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:661 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:715 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:758 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:793 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:826 msgid "Mark Complete" msgstr "" #: includes/class-ld-custom-label.php:75 msgid "Click Here to Continue" msgstr "" #. translators: placeholder: Courses. #: includes/class-ld-custom-label.php:165 msgctxt "placeholder: Courses" msgid "Back to %s" msgstr "" #. translators: placeholder: Course. #: includes/class-ld-custom-label.php:170 msgctxt "placeholder: Course" msgid "Back to %s" msgstr "" #. translators: placeholder: Lessons. #: includes/class-ld-custom-label.php:179 msgctxt "placeholder: Lessons" msgid "Back to %s" msgstr "" #. translators: placeholder: Lesson. #: includes/class-ld-custom-label.php:184 msgctxt "placeholder: Lesson" msgid "Back to %s" msgstr "" #. translators: placeholder: Topics. #: includes/class-ld-custom-label.php:193 msgctxt "placeholder: Topics" msgid "Back to %s" msgstr "" #. translators: placeholder: Topic. #: includes/class-ld-custom-label.php:198 msgctxt "placeholder: Topic" msgid "Back to %s" msgstr "" #. translators: placeholder: Quizzes. #: includes/class-ld-custom-label.php:208 msgctxt "placeholder: Quizzes" msgid "Back to %s" msgstr "" #. translators: placeholder: Quiz. #: includes/class-ld-custom-label.php:213 msgctxt "placeholder: Quiz" msgid "Back to %s" msgstr "" #. translators: placeholder: Questions. #: includes/class-ld-custom-label.php:222 msgctxt "placeholder: Questions" msgid "Back to %s" msgstr "" #. translators: placeholder: Question. #: includes/class-ld-custom-label.php:227 msgctxt "placeholder: Question" msgid "Back to %s" msgstr "" #. translators: placeholder: Transactions. #: includes/class-ld-custom-label.php:237 msgctxt "placeholder: Transactions" msgid "Back to %s" msgstr "" #. translators: placeholder: Transaction. #: includes/class-ld-custom-label.php:242 msgctxt "placeholder: Transaction" msgid "Back to %s" msgstr "" #. translators: placeholder: Groups. #: includes/class-ld-custom-label.php:251 msgctxt "placeholder: Groups" msgid "Back to %s" msgstr "" #. translators: placeholder: Group. #: includes/class-ld-custom-label.php:256 msgctxt "placeholder: Group" msgid "Back to %s" msgstr "" #. translators: placeholder: Assignments. #: includes/class-ld-custom-label.php:265 msgctxt "placeholder: Assignments" msgid "Back to %s" msgstr "" #. translators: placeholder: Assignment. #: includes/class-ld-custom-label.php:270 msgctxt "placeholder: Assignment" msgid "Back to %s" msgstr "" #. translators: placeholder: Essays. #: includes/class-ld-custom-label.php:279 msgctxt "placeholder: Essays" msgid "Back to %s" msgstr "" #. translators: placeholder: Essay. #: includes/class-ld-custom-label.php:284 msgctxt "placeholder: Essay" msgid "Back to %s" msgstr "" #. translators: placeholder: Certificates. #: includes/class-ld-custom-label.php:293 msgctxt "placeholder: Certificates" msgid "Back to %s" msgstr "" #. translators: placeholder: Certificate. #: includes/class-ld-custom-label.php:298 msgctxt "placeholder: Certificate" msgid "Back to %s" msgstr "" #. translators: placeholder: Post Type Plural label. #: includes/class-ld-custom-label.php:307 msgctxt "placeholder: Post Type Plural label" msgid "Back to %s" msgstr "" #. translators: placeholder: Post Type Singular label. #: includes/class-ld-custom-label.php:312 msgctxt "placeholder: Post Type Singular label" msgid "Back to %s" msgstr "" #. translators: placeholder: Post Type slug. #: includes/class-ld-custom-label.php:320 msgctxt "placeholder: Post Type slug" msgid "Back to %s" msgstr "" #. translators: placeholder: Course. #: includes/class-ld-custom-label.php:343 msgctxt "placeholder: Course" msgid "Previous %s" msgstr "" #. translators: placeholder: Lesson. #: includes/class-ld-custom-label.php:350 msgctxt "placeholder: Lesson" msgid "Previous %s" msgstr "" #. translators: placeholder: Topic. #: includes/class-ld-custom-label.php:357 msgctxt "placeholder: Topic" msgid "Previous %s" msgstr "" #. translators: placeholder: Quiz. #: includes/class-ld-custom-label.php:364 msgctxt "placeholder: Quiz" msgid "Previous %s" msgstr "" #. translators: placeholder: Question. #: includes/class-ld-custom-label.php:371 msgctxt "placeholder: Question" msgid "Previous %s" msgstr "" #. translators: placeholder: Transaction. #: includes/class-ld-custom-label.php:378 msgctxt "placeholder: Transaction" msgid "Previous %s" msgstr "" #. translators: placeholder: Group. #: includes/class-ld-custom-label.php:385 msgctxt "placeholder: Group" msgid "Previous %s" msgstr "" #. translators: placeholder: Assignment. #: includes/class-ld-custom-label.php:392 msgctxt "placeholder: Assignment" msgid "Previous %s" msgstr "" #. translators: placeholder: Essay. #: includes/class-ld-custom-label.php:399 msgctxt "placeholder: Essay" msgid "Previous %s" msgstr "" #. translators: placeholder: Certificate. #: includes/class-ld-custom-label.php:406 msgctxt "placeholder: Certificate" msgid "Previous %s" msgstr "" #. translators: placeholder: Post Type Singular label. #: includes/class-ld-custom-label.php:413 msgctxt "placeholder: Post Type Singular label" msgid "Previous %s" msgstr "" #. translators: placeholder: Post Type slug. #: includes/class-ld-custom-label.php:420 msgctxt "placeholder: Post Type slug" msgid "Previous %s" msgstr "" #. translators: placeholder: Course. #: includes/class-ld-custom-label.php:443 msgctxt "placeholder: Course" msgid "Next %s" msgstr "" #. translators: placeholder: Lesson. #: includes/class-ld-custom-label.php:450 msgctxt "placeholder: Lesson" msgid "Next %s" msgstr "" #. translators: placeholder: Topic. #: includes/class-ld-custom-label.php:457 msgctxt "placeholder: Topic" msgid "Next %s" msgstr "" #. translators: placeholder: Quiz. #: includes/class-ld-custom-label.php:464 msgctxt "placeholder: Quiz" msgid "Next %s" msgstr "" #. translators: placeholder: Question. #: includes/class-ld-custom-label.php:471 msgctxt "placeholder: Question" msgid "Next %s" msgstr "" #. translators: placeholder: Transaction. #: includes/class-ld-custom-label.php:478 msgctxt "placeholder: Transaction" msgid "Next %s" msgstr "" #. translators: placeholder: Group. #: includes/class-ld-custom-label.php:485 msgctxt "placeholder: Group" msgid "Next %s" msgstr "" #. translators: placeholder: Assignment. #: includes/class-ld-custom-label.php:492 msgctxt "placeholder: Assignment" msgid "Next %s" msgstr "" #. translators: placeholder: Essay. #: includes/class-ld-custom-label.php:499 msgctxt "placeholder: Essay" msgid "Next %s" msgstr "" #. translators: placeholder: Certificate. #: includes/class-ld-custom-label.php:506 msgctxt "placeholder: Certificate" msgid "Next %s" msgstr "" #. translators: placeholder: Post Type Singular label. #: includes/class-ld-custom-label.php:513 msgctxt "placeholder: Post Type Singular label" msgid "Next %s" msgstr "" #. translators: placeholder: Post Type slug. #: includes/class-ld-custom-label.php:520 msgctxt "placeholder: Post Type slug" msgid "Next %s" msgstr "" #. translators: placeholder: Course. #: includes/class-ld-custom-label.php:544 msgctxt "placeholder: Course" msgid "%s page" msgstr "" #. translators: placeholder: Lesson. #: includes/class-ld-custom-label.php:551 msgctxt "placeholder: Lesson" msgid "%s page" msgstr "" #. translators: placeholder: Topic. #: includes/class-ld-custom-label.php:558 msgctxt "placeholder: Topic" msgid "%s page" msgstr "" #. translators: placeholder: Quiz. #: includes/class-ld-custom-label.php:565 msgctxt "placeholder: Quiz" msgid "%s page" msgstr "" #. translators: placeholder: Question. #: includes/class-ld-custom-label.php:572 msgctxt "placeholder: Question" msgid "%s page" msgstr "" #. translators: placeholder: Transaction. #: includes/class-ld-custom-label.php:579 msgctxt "placeholder: Transaction" msgid "%s page" msgstr "" #. translators: placeholder: Group. #: includes/class-ld-custom-label.php:586 msgctxt "placeholder: Group" msgid "%s page" msgstr "" #. translators: placeholder: Assignment. #: includes/class-ld-custom-label.php:593 msgctxt "placeholder: Assignment" msgid "%s page" msgstr "" #. translators: placeholder: Essay. #: includes/class-ld-custom-label.php:600 msgctxt "placeholder: Essay" msgid "%s page" msgstr "" #. translators: placeholder: Certificate. #: includes/class-ld-custom-label.php:607 msgctxt "placeholder: Certificate" msgid "%s page" msgstr "" #. translators: placeholder: Post Type Singular label. #: includes/class-ld-custom-label.php:616 msgctxt "placeholder: Post Type Singular label" msgid "%s page" msgstr "" #. translators: placeholder: Post Type slug. #: includes/class-ld-custom-label.php:625 msgctxt "placeholder: Post Type slug" msgid "%s page" msgstr "" #: includes/class-ld-gdpr.php:71 #: includes/class-ld-gdpr.php:423 msgctxt "placeholder: Course" msgid "LearnDash LMS %s Assignments" msgstr "" #: includes/class-ld-gdpr.php:76 #: includes/class-ld-gdpr.php:522 msgctxt "placeholder: Quiz" msgid "LearnDash LMS %s Essays" msgstr "" #: includes/class-ld-gdpr.php:128 #: includes/class-ld-gdpr.php:154 #: includes/class-ld-gdpr.php:188 #: includes/class-ld-gdpr.php:255 msgid "Transaction Type" msgstr "" #: includes/class-ld-gdpr.php:129 msgid "Stripe" msgstr "" #: includes/class-ld-gdpr.php:134 #: includes/class-ld-gdpr.php:160 #: includes/class-ld-gdpr.php:198 #: includes/class-ld-gdpr.php:799 msgid "Order Item" msgstr "" #: includes/class-ld-gdpr.php:138 #: includes/class-ld-gdpr.php:164 #: includes/class-ld-gdpr.php:202 #: includes/class-ld-gdpr.php:803 msgid "Order Total" msgstr "" #: includes/class-ld-gdpr.php:142 #: includes/class-ld-gdpr.php:176 #: includes/class-ld-gdpr.php:223 #: includes/class-ld-gdpr.php:261 #: includes/class-ld-gdpr.php:807 msgid "Order Email" msgstr "" #: includes/class-ld-gdpr.php:155 msgid "PayPal" msgstr "" #: includes/class-ld-gdpr.php:168 #: includes/class-ld-gdpr.php:265 msgid "First Name" msgstr "" #: includes/class-ld-gdpr.php:172 #: includes/class-ld-gdpr.php:211 #: includes/class-ld-gdpr.php:219 #: includes/class-ld-gdpr.php:269 msgid "Last Name" msgstr "" #: includes/class-ld-gdpr.php:189 msgid "2Checkout" msgstr "" #: includes/class-ld-gdpr.php:194 msgid "Invoice" msgstr "" #: includes/class-ld-gdpr.php:206 msgid "Cardholder Name" msgstr "" #: includes/class-ld-gdpr.php:215 msgid "Middle Initial" msgstr "" #: includes/class-ld-gdpr.php:227 #: includes/class-ld-gdpr.php:231 msgid "Street Address" msgstr "" #: includes/class-ld-gdpr.php:235 msgid "City" msgstr "" #: includes/class-ld-gdpr.php:239 msgid "State" msgstr "" #: includes/class-ld-gdpr.php:243 msgid "Zip" msgstr "" #: includes/class-ld-gdpr.php:256 msgid "Samcart" msgstr "" #: includes/class-ld-gdpr.php:273 msgid "Phone #" msgstr "" #: includes/class-ld-gdpr.php:277 msgid "IP Address" msgstr "" #: includes/class-ld-gdpr.php:281 msgid "Billing Address" msgstr "" #: includes/class-ld-gdpr.php:285 msgid "Billing City" msgstr "" #: includes/class-ld-gdpr.php:289 msgid "Billing State" msgstr "" #: includes/class-ld-gdpr.php:293 msgid "Billing ZIP" msgstr "" #: includes/class-ld-gdpr.php:303 msgid "Order ID" msgstr "" #: includes/class-ld-gdpr.php:307 msgid "Order Date" msgstr "" #: includes/class-ld-gdpr.php:324 msgid "LearnDash LMS Purchase Transactions" msgstr "" #: includes/class-ld-gdpr.php:390 msgid "Assignment URL" msgstr "" #: includes/class-ld-gdpr.php:404 #: includes/class-ld-gdpr.php:503 msgctxt "placeholder: Course" msgid "%s" msgstr "" #: includes/class-ld-gdpr.php:415 #: includes/class-ld-gdpr.php:514 msgctxt "placeholder: Lesson" msgid "%s" msgstr "" #: includes/class-ld-gdpr.php:488 msgid "Essay URL" msgstr "" #: includes/class-ld-lms.php:766 msgctxt "Add New Topic Label" msgid "Add New" msgstr "" #: includes/class-ld-lms.php:767 msgctxt "Add New Topic Label" msgid "Add New %s" msgstr "" #: includes/class-ld-lms.php:769 msgctxt "New Topic Label" msgid "New %s" msgstr "" #: includes/class-ld-lms.php:771 msgctxt "View Topic Label" msgid "View %s" msgstr "" #: includes/class-ld-lms.php:772 msgctxt "View Topics Label" msgid "View %s" msgstr "" #: includes/class-ld-lms.php:773 msgctxt "Search Topic Label" msgid "Search %s" msgstr "" #: includes/class-ld-lms.php:774 msgctxt "No Topic found Label" msgid "No %s found" msgstr "" #: includes/class-ld-lms.php:775 msgctxt "No Topic found in Trash" msgid "No %s found in Trash" msgstr "" #: includes/class-ld-lms.php:778 msgctxt "Topic Published" msgid "%s Published" msgstr "" #: includes/class-ld-lms.php:779 msgctxt "Topic Published Privately" msgid "%s Published Privately" msgstr "" #: includes/class-ld-lms.php:780 msgctxt "Topic Reverted to Draft" msgid "%s Reverted to Draft" msgstr "" #: includes/class-ld-lms.php:781 msgctxt "Topic Scheduled" msgid "%s Scheduled" msgstr "" #: includes/class-ld-lms.php:782 msgctxt "Topic Updated" msgid "%s Updated" msgstr "" #: includes/class-ld-lms.php:791 msgctxt "Add New Quiz Label" msgid "Add New" msgstr "" #: includes/class-ld-lms.php:792 msgctxt "Add New Quiz Label" msgid "Add New %s" msgstr "" #: includes/class-ld-lms.php:794 msgctxt "New Quiz Label" msgid "New %s" msgstr "" #: includes/class-ld-lms.php:796 msgctxt "View Quiz Label" msgid "View %s" msgstr "" #: includes/class-ld-lms.php:797 msgctxt "View Quizzes Label" msgid "View %s" msgstr "" #: includes/class-ld-lms.php:798 msgctxt "Search Quiz Label" msgid "Search %s" msgstr "" #: includes/class-ld-lms.php:799 msgctxt "No Quiz found Label" msgid "No %s found" msgstr "" #: includes/class-ld-lms.php:800 msgctxt "No Quiz found in Trash Label" msgid "No %s found in Trash" msgstr "" #: includes/class-ld-lms.php:803 msgctxt "Quiz Published" msgid "%s Published" msgstr "" #: includes/class-ld-lms.php:804 msgctxt "Quiz Published Privately" msgid "%s Published Privately" msgstr "" #: includes/class-ld-lms.php:805 msgctxt "Quiz Reverted to Draft" msgid "%s Reverted to Draft" msgstr "" #: includes/class-ld-lms.php:806 msgctxt "Quiz Scheduled" msgid "%s Scheduled" msgstr "" #: includes/class-ld-lms.php:807 msgctxt "Quiz Updated" msgid "%s Updated" msgstr "" #: includes/class-ld-lms.php:816 msgctxt "Add New Question Label" msgid "Add New" msgstr "" #: includes/class-ld-lms.php:817 msgctxt "Add New Question Label" msgid "Add New %s" msgstr "" #: includes/class-ld-lms.php:818 msgctxt "Edit Question Label" msgid "Edit %s" msgstr "" #: includes/class-ld-lms.php:819 msgctxt "New Question Label" msgid "New %s" msgstr "" #: includes/class-ld-lms.php:821 msgctxt "View Question Label" msgid "View %s" msgstr "" #: includes/class-ld-lms.php:822 msgctxt "View Questions Label" msgid "View %s" msgstr "" #: includes/class-ld-lms.php:823 msgctxt "Search Question Label" msgid "Search %s" msgstr "" #: includes/class-ld-lms.php:824 msgctxt "No Question found Label" msgid "No %s found" msgstr "" #: includes/class-ld-lms.php:825 msgctxt "No Question found in Trash Label" msgid "No %s found in Trash" msgstr "" #: includes/class-ld-lms.php:828 msgctxt "Question Published" msgid "%s Published" msgstr "" #: includes/class-ld-lms.php:829 msgctxt "Question Published Privately" msgid "%s Published Privately" msgstr "" #: includes/class-ld-lms.php:830 msgctxt "Question Reverted to Draft" msgid "%s Reverted to Draft" msgstr "" #: includes/class-ld-lms.php:831 msgctxt "Question Scheduled" msgid "%s Scheduled" msgstr "" #: includes/class-ld-lms.php:832 msgctxt "Question Updated" msgid "%s Updated" msgstr "" #: includes/class-ld-lms.php:841 msgctxt "Add New Lesson Label" msgid "Add New" msgstr "" #: includes/class-ld-lms.php:842 msgctxt "Add New Lesson Label" msgid "Add New %s" msgstr "" #: includes/class-ld-lms.php:843 msgctxt "Edit Lesson Label" msgid "Edit %s" msgstr "" #: includes/class-ld-lms.php:844 msgctxt "New Lesson Label" msgid "New %s" msgstr "" #: includes/class-ld-lms.php:846 msgctxt "View Lesson Label" msgid "View %s" msgstr "" #: includes/class-ld-lms.php:847 msgctxt "View Lessons Label" msgid "View %s" msgstr "" #: includes/class-ld-lms.php:848 msgctxt "Search Lesson Label" msgid "Search %s" msgstr "" #: includes/class-ld-lms.php:849 msgctxt "No Lesson found Label" msgid "No %s found" msgstr "" #: includes/class-ld-lms.php:850 msgctxt "No Lesson found in Trash Label" msgid "No %s found in Trash" msgstr "" #: includes/class-ld-lms.php:853 msgctxt "Lesson Published" msgid "%s Published" msgstr "" #: includes/class-ld-lms.php:854 msgctxt "Lesson Published Privately" msgid "%s Published Privately" msgstr "" #: includes/class-ld-lms.php:855 msgctxt "Lesson Reverted to Draft" msgid "%s Reverted to Draft" msgstr "" #: includes/class-ld-lms.php:856 msgctxt "Lesson Scheduled" msgid "%s Scheduled" msgstr "" #: includes/class-ld-lms.php:857 msgctxt "Lesson Updated" msgid "%s Updated" msgstr "" #: includes/class-ld-lms.php:866 msgctxt "Add New Course Label" msgid "Add New" msgstr "" #: includes/class-ld-lms.php:867 msgctxt "Add New Course Label" msgid "Add New %s" msgstr "" #: includes/class-ld-lms.php:868 msgctxt "Edit Course Label" msgid "Edit %s" msgstr "" #: includes/class-ld-lms.php:869 msgctxt "New Course Label" msgid "New %s" msgstr "" #: includes/class-ld-lms.php:871 msgctxt "View Course Label" msgid "View %s" msgstr "" #: includes/class-ld-lms.php:872 msgctxt "View Courses Label" msgid "View %s" msgstr "" #: includes/class-ld-lms.php:873 msgctxt "Search Courses Label" msgid "Search %s" msgstr "" #: includes/class-ld-lms.php:874 msgctxt "No Courses found Label" msgid "No %s found" msgstr "" #: includes/class-ld-lms.php:875 msgctxt "No Courses found in Trash Label" msgid "No %s found in Trash" msgstr "" #: includes/class-ld-lms.php:878 msgctxt "Course Published" msgid "%s Published" msgstr "" #: includes/class-ld-lms.php:879 msgctxt "Course Published Privately" msgid "%s Published Privately" msgstr "" #: includes/class-ld-lms.php:880 msgctxt "Course Reverted to Draft" msgid "%s Reverted to Draft" msgstr "" #: includes/class-ld-lms.php:881 msgctxt "Course Scheduled" msgid "%s Scheduled" msgstr "" #: includes/class-ld-lms.php:882 msgctxt "Course Updated" msgid "%s Updated" msgstr "" #. translators: placeholder: Course. #: includes/class-ld-lms.php:950 #: includes/class-ld-lms.php:960 #: includes/settings/settings-sections/class-ld-settings-section-courses-taxonomies.php:98 msgctxt "placeholder: Course" msgid "%s Categories" msgstr "" #: includes/class-ld-lms.php:951 msgctxt "placeholder: Course" msgid "%s Category" msgstr "" #: includes/class-ld-lms.php:952 msgctxt "placeholder: Course" msgid "Search %s Categories" msgstr "" #: includes/class-ld-lms.php:953 msgctxt "placeholder: Course" msgid "All %s Categories" msgstr "" #: includes/class-ld-lms.php:954 msgctxt "placeholder: Course" msgid "Parent %s Category" msgstr "" #: includes/class-ld-lms.php:955 msgctxt "placeholder: Course" msgid "Parent %s Category:" msgstr "" #: includes/class-ld-lms.php:956 msgctxt "placeholder: Course" msgid "Edit %s Category" msgstr "" #: includes/class-ld-lms.php:957 msgctxt "placeholder: Course" msgid "Update %s Category" msgstr "" #: includes/class-ld-lms.php:958 msgctxt "placeholder: Course" msgid "Add New %s Category" msgstr "" #: includes/class-ld-lms.php:959 msgctxt "placeholder: Course" msgid "New %s Category Name" msgstr "" #. translators: placeholder: Course. #: includes/class-ld-lms.php:978 #: includes/class-ld-lms.php:988 #: includes/settings/settings-sections/class-ld-settings-section-courses-taxonomies.php:116 msgctxt "placeholder: Course" msgid "%s Tags" msgstr "" #: includes/class-ld-lms.php:979 msgctxt "placeholder: Course" msgid "%s Tag" msgstr "" #: includes/class-ld-lms.php:980 msgctxt "placeholder: Course" msgid "Search %s Tag" msgstr "" #: includes/class-ld-lms.php:981 msgctxt "placeholder: Course" msgid "All %s Tags" msgstr "" #: includes/class-ld-lms.php:982 msgctxt "placeholder: Course" msgid "Parent %s Tag" msgstr "" #: includes/class-ld-lms.php:983 msgctxt "placeholder: Course" msgid "Parent %s Tag:" msgstr "" #: includes/class-ld-lms.php:984 msgctxt "placeholder: Course" msgid "Edit %s Tag" msgstr "" #: includes/class-ld-lms.php:985 msgctxt "placeholder: Course" msgid "Update %s Tag" msgstr "" #: includes/class-ld-lms.php:986 msgctxt "placeholder: Course" msgid "Add New %s Tag" msgstr "" #: includes/class-ld-lms.php:987 msgctxt "placeholder: Course" msgid "New %s Tag Name" msgstr "" #. translators: placeholder: Lesson. #: includes/class-ld-lms.php:1021 #: includes/class-ld-lms.php:1031 #: includes/settings/settings-sections/class-ld-settings-section-lessons-taxonomies.php:97 msgctxt "placeholder: Lesson" msgid "%s Categories" msgstr "" #: includes/class-ld-lms.php:1022 msgctxt "placeholder: Lesson" msgid "%s Category" msgstr "" #: includes/class-ld-lms.php:1023 msgctxt "placeholder: Lesson" msgid "Search %s Categories" msgstr "" #: includes/class-ld-lms.php:1024 msgctxt "placeholder: Lesson" msgid "All %s Categories" msgstr "" #: includes/class-ld-lms.php:1025 msgctxt "placeholder: Lesson" msgid "Parent %s Category" msgstr "" #: includes/class-ld-lms.php:1026 msgctxt "placeholder: Lesson" msgid "Parent %s Category:" msgstr "" #: includes/class-ld-lms.php:1027 msgctxt "placeholder: Lesson" msgid "Edit %s Category" msgstr "" #: includes/class-ld-lms.php:1028 msgctxt "placeholder: Lesson" msgid "Update %s Category" msgstr "" #: includes/class-ld-lms.php:1029 msgctxt "placeholder: Lesson" msgid "Add New %s Category" msgstr "" #: includes/class-ld-lms.php:1030 msgctxt "placeholder: Lesson" msgid "New %s Category Name" msgstr "" #. translators: placeholder: Lesson. #: includes/class-ld-lms.php:1049 #: includes/class-ld-lms.php:1059 #: includes/settings/settings-sections/class-ld-settings-section-lessons-taxonomies.php:115 msgctxt "placeholder: Lesson" msgid "%s Tags" msgstr "" #: includes/class-ld-lms.php:1050 msgctxt "placeholder: Lesson" msgid "%s Tag" msgstr "" #: includes/class-ld-lms.php:1051 msgctxt "placeholder: Lesson" msgid "Search %s Tag" msgstr "" #: includes/class-ld-lms.php:1052 msgctxt "placeholder: Lesson" msgid "All %s Tags" msgstr "" #: includes/class-ld-lms.php:1053 msgctxt "placeholder: Lesson" msgid "Parent %s Tag" msgstr "" #: includes/class-ld-lms.php:1054 msgctxt "placeholder: Lesson" msgid "Parent %s Tag:" msgstr "" #: includes/class-ld-lms.php:1055 msgctxt "placeholder: Lesson" msgid "Edit %s Tag" msgstr "" #: includes/class-ld-lms.php:1056 msgctxt "placeholder: Lesson" msgid "Update %s Tag" msgstr "" #: includes/class-ld-lms.php:1057 msgctxt "placeholder: Lesson" msgid "Add New %s Tag" msgstr "" #: includes/class-ld-lms.php:1058 msgctxt "placeholder: Lesson" msgid "New %s Tag Name" msgstr "" #. translators: placeholder: Topic. #: includes/class-ld-lms.php:1092 #: includes/class-ld-lms.php:1102 #: includes/settings/settings-sections/class-ld-settings-section-topics-taxonomies.php:97 msgctxt "placeholder: Topic" msgid "%s Categories" msgstr "" #: includes/class-ld-lms.php:1093 msgctxt "placeholder: Topic" msgid "%s Category" msgstr "" #: includes/class-ld-lms.php:1094 msgctxt "placeholder: Topic" msgid "Search %s Categories" msgstr "" #: includes/class-ld-lms.php:1095 msgctxt "placeholder: Topic" msgid "All %s Categories" msgstr "" #: includes/class-ld-lms.php:1096 msgctxt "placeholder: Topic" msgid "Parent %s Category" msgstr "" #: includes/class-ld-lms.php:1097 msgctxt "placeholder: Topic" msgid "Parent %s Category:" msgstr "" #: includes/class-ld-lms.php:1098 msgctxt "placeholder: Topic" msgid "Edit %s Category" msgstr "" #: includes/class-ld-lms.php:1099 msgctxt "placeholder: Topic" msgid "Update %s Category" msgstr "" #: includes/class-ld-lms.php:1100 msgctxt "placeholder: Topic" msgid "Add New %s Category" msgstr "" #: includes/class-ld-lms.php:1101 msgctxt "placeholder: Topic" msgid "New %s Category Name" msgstr "" #. translators: placeholder: Topic. #: includes/class-ld-lms.php:1120 #: includes/class-ld-lms.php:1130 #: includes/settings/settings-sections/class-ld-settings-section-topics-taxonomies.php:115 msgctxt "placeholder: Topic" msgid "%s Tags" msgstr "" #: includes/class-ld-lms.php:1121 msgctxt "placeholder: Topic" msgid "%s Tag" msgstr "" #: includes/class-ld-lms.php:1122 msgctxt "placeholder: Topic" msgid "Search %s Tag" msgstr "" #: includes/class-ld-lms.php:1123 msgctxt "placeholder: Topic" msgid "All %s Tags" msgstr "" #: includes/class-ld-lms.php:1124 msgctxt "placeholder: Topic" msgid "Parent %s Tag" msgstr "" #: includes/class-ld-lms.php:1125 msgctxt "placeholder: Topic" msgid "Parent %s Tag:" msgstr "" #: includes/class-ld-lms.php:1126 msgctxt "placeholder: Topic" msgid "Edit %s Tag" msgstr "" #: includes/class-ld-lms.php:1127 msgctxt "placeholder: Topic" msgid "Update %s Tag" msgstr "" #: includes/class-ld-lms.php:1128 msgctxt "placeholder: Topic" msgid "Add New %s Tag" msgstr "" #: includes/class-ld-lms.php:1129 msgctxt "placeholder: Topic" msgid "New %s Tag Name" msgstr "" #. translators: placeholder: Quiz. #: includes/class-ld-lms.php:1155 #: includes/class-ld-lms.php:1165 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-taxonomies.php:100 msgctxt "placeholder: Quiz" msgid "%s Categories" msgstr "" #: includes/class-ld-lms.php:1156 msgctxt "placeholder: Quiz" msgid "%s Category" msgstr "" #: includes/class-ld-lms.php:1157 msgctxt "placeholder: Quiz" msgid "Search %s Categories" msgstr "" #: includes/class-ld-lms.php:1158 msgctxt "placeholder: Quiz" msgid "All %s Categories" msgstr "" #: includes/class-ld-lms.php:1159 msgctxt "placeholder: Quiz" msgid "Parent %s Category" msgstr "" #: includes/class-ld-lms.php:1160 msgctxt "placeholder: Quiz" msgid "Parent %s Category:" msgstr "" #: includes/class-ld-lms.php:1161 msgctxt "placeholder: Quiz" msgid "Edit %s Category" msgstr "" #: includes/class-ld-lms.php:1162 msgctxt "placeholder: Quiz" msgid "Update %s Category" msgstr "" #: includes/class-ld-lms.php:1163 msgctxt "placeholder: Quiz" msgid "Add New %s Category" msgstr "" #: includes/class-ld-lms.php:1164 msgctxt "placeholder: Quiz" msgid "New %s Category Name" msgstr "" #. translators: placeholder: Quiz. #: includes/class-ld-lms.php:1183 #: includes/class-ld-lms.php:1193 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-taxonomies.php:118 msgctxt "placeholder: Quiz" msgid "%s Tags" msgstr "" #: includes/class-ld-lms.php:1184 msgctxt "placeholder: Quiz" msgid "%s Tag" msgstr "" #: includes/class-ld-lms.php:1185 msgctxt "placeholder: Quiz" msgid "Search %s Tag" msgstr "" #: includes/class-ld-lms.php:1186 msgctxt "placeholder: Quiz" msgid "All %s Tags" msgstr "" #: includes/class-ld-lms.php:1187 msgctxt "placeholder: Quiz" msgid "Parent %s Tag" msgstr "" #: includes/class-ld-lms.php:1188 msgctxt "placeholder: Quiz" msgid "Parent %s Tag:" msgstr "" #: includes/class-ld-lms.php:1189 msgctxt "placeholder: Quiz" msgid "Edit %s Tag" msgstr "" #: includes/class-ld-lms.php:1190 msgctxt "placeholder: Quiz" msgid "Update %s Tag" msgstr "" #: includes/class-ld-lms.php:1191 msgctxt "placeholder: Quiz" msgid "Add New %s Tag" msgstr "" #: includes/class-ld-lms.php:1192 msgctxt "placeholder: Quiz" msgid "New %s Tag Name" msgstr "" #. translators: placeholder: Question. #: includes/class-ld-lms.php:1226 #: includes/class-ld-lms.php:1236 #: includes/settings/settings-sections/class-ld-settings-section-questions-taxonomies.php:187 msgctxt "placeholder: Question" msgid "%s Categories" msgstr "" #: includes/class-ld-lms.php:1228 msgctxt "placeholder: Question" msgid "Search %s Categories" msgstr "" #: includes/class-ld-lms.php:1229 msgctxt "placeholder: Question" msgid "All %s Categories" msgstr "" #: includes/class-ld-lms.php:1230 msgctxt "placeholder: Question" msgid "Parent %s Category" msgstr "" #: includes/class-ld-lms.php:1231 msgctxt "placeholder: Question" msgid "Parent %s Category:" msgstr "" #: includes/class-ld-lms.php:1232 msgctxt "placeholder: Question" msgid "Edit %s Category" msgstr "" #: includes/class-ld-lms.php:1233 msgctxt "placeholder: Question" msgid "Update %s Category" msgstr "" #: includes/class-ld-lms.php:1234 msgctxt "placeholder: Question" msgid "Add New %s Category" msgstr "" #: includes/class-ld-lms.php:1235 msgctxt "placeholder: Question" msgid "New %s Category Name" msgstr "" #: includes/class-ld-lms.php:1254 #: includes/class-ld-lms.php:1264 msgctxt "placeholder: Question" msgid "%s Tags" msgstr "" #: includes/class-ld-lms.php:1255 msgctxt "placeholder: Question" msgid "%s Tag" msgstr "" #: includes/class-ld-lms.php:1256 msgctxt "placeholder: Question" msgid "Search %s Tag" msgstr "" #: includes/class-ld-lms.php:1257 msgctxt "placeholder: Question" msgid "All %s Tags" msgstr "" #: includes/class-ld-lms.php:1258 msgctxt "placeholder: Question" msgid "Parent %s Tag" msgstr "" #: includes/class-ld-lms.php:1259 msgctxt "placeholder: Question" msgid "Parent %s Tag:" msgstr "" #: includes/class-ld-lms.php:1260 msgctxt "placeholder: Question" msgid "Edit %s Tag" msgstr "" #: includes/class-ld-lms.php:1261 msgctxt "placeholder: Question" msgid "Update %s Tag" msgstr "" #: includes/class-ld-lms.php:1262 msgctxt "placeholder: Question" msgid "Add New %s Tag" msgstr "" #: includes/class-ld-lms.php:1263 msgctxt "placeholder: Question" msgid "New %s Tag Name" msgstr "" #. translators: placeholder: Course. #: includes/class-ld-lms.php:1308 msgctxt "placeholder: Course" msgid "LearnDash %s Settings" msgstr "" #. translators: Course Materials Label. #: includes/class-ld-lms.php:1313 #: themes/legacy/templates/course.php:102 msgctxt "Course Materials Label" msgid "%s Materials" msgstr "" #: includes/class-ld-lms.php:1315 msgctxt "Options for course materials" msgid "Options for %s materials" msgstr "" #: includes/class-ld-lms.php:1324 msgctxt "Course Price Type Label" msgid "%s Price Type" msgstr "" #: includes/class-ld-lms.php:1327 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:287 msgid "Open" msgstr "" #: includes/class-ld-lms.php:1328 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:329 #: themes/ld30/templates/modules/infobar/course.php:130 msgid "Closed" msgstr "" #: includes/class-ld-lms.php:1329 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:295 #: themes/ld30/templates/modules/infobar/course.php:130 msgid "Free" msgstr "" #: includes/class-ld-lms.php:1330 msgid "Buy Now" msgstr "" #: includes/class-ld-lms.php:1331 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:316 msgid "Recurring" msgstr "" #: includes/class-ld-lms.php:1334 msgid "Is it open to all, free join, one time purchase, or a recurring subscription?" msgstr "" #: includes/class-ld-lms.php:1351 msgid "Custom Button Label" msgstr "" #: includes/class-ld-lms.php:1353 #: includes/class-ld-lms.php:1359 msgid "Optional" msgstr "" #: includes/class-ld-lms.php:1357 msgid "Custom Button URL" msgstr "" #: includes/class-ld-lms.php:1360 msgctxt "placeholders: \"Take This Course\" button label" msgid "Entering a URL in this field will enable the \"%s\" button. The button will not display if this field is left empty. Relative URL beginning with a slash is acceptable." msgstr "" #: includes/class-ld-lms.php:1364 msgctxt "Course Price Label" msgid "%s Price" msgstr "" #: includes/class-ld-lms.php:1366 msgctxt "Enter course price here. Leave empty if the course is free." msgid "Enter %s price here. Leave empty if the %s is free." msgstr "" #: includes/class-ld-lms.php:1370 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:223 msgid "Billing Cycle" msgstr "" #: includes/class-ld-lms.php:1373 msgid "Billing Cycle for the recurring payments in case of a subscription." msgstr "" #: includes/class-ld-lms.php:1377 msgctxt "Course Access List Label" msgid "%s Access List" msgstr "" #: includes/class-ld-lms.php:1379 msgid "This field is auto-populated with the UserIDs of those who have access to this course." msgstr "" #: includes/class-ld-lms.php:1383 msgctxt "Sort Lesson By Label" msgid "Sort %s By" msgstr "" #: includes/class-ld-lms.php:1386 #: includes/class-ld-lms.php:1399 #: includes/class-ld-lms.php:1412 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:309 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:323 msgid "Use Default" msgstr "" #: includes/class-ld-lms.php:1392 #: includes/class-ld-lms.php:1404 msgctxt "Choose the sort order of lessons in this course." msgid "Choose the sort order of %1$s in this %2$s." msgstr "" #: includes/class-ld-lms.php:1396 msgctxt "Sort Lesson Direction Label" msgid "Sort %s Direction" msgstr "" #: includes/class-ld-lms.php:1409 msgctxt "placeholder: Lessons" msgid "%s Per Page" msgstr "" #: includes/class-ld-lms.php:1413 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:75 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:350 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:367 msgid "Custom" msgstr "" #: includes/class-ld-lms.php:1416 msgctxt "Choose the per page of lessons in this course." msgid "Choose the per page of %s in this %s." msgstr "" #: includes/class-ld-lms.php:1420 msgctxt "Custom lessons per page" msgid "Custom %s Per Page" msgstr "" #: includes/class-ld-lms.php:1423 msgctxt "Enter lesson per page value. Set to zero for no paging" msgid "Enter %s per page value. Set to zero for no paging" msgstr "" #: includes/class-ld-lms.php:1429 msgctxt "placeholder: Course" msgid "Enable %s Prerequisites" msgstr "" #: includes/class-ld-lms.php:1432 msgid "Leave this field unchecked if prerequisite not used." msgstr "" #: includes/class-ld-lms.php:1442 msgctxt "Course prerequisites Label" msgid "%s Prerequisites" msgstr "" #: includes/class-ld-lms.php:1444 msgctxt "Select one or more course as prerequisites to view this course" msgid "Select one or more %1$s as prerequisites to view this %2$s" msgstr "" #: includes/class-ld-lms.php:1457 msgctxt "Course Prerequisites Compare Label" msgid "%s Prerequisites Compare" msgstr "" #: includes/class-ld-lms.php:1460 msgid "ANY (default) - The student must complete at least one of the prerequisites" msgstr "" #: includes/class-ld-lms.php:1461 msgid "ALL - The student must complete all the prerequisites" msgstr "" #: includes/class-ld-lms.php:1464 msgctxt "pleaceholder: Course" msgid "Select how to compare the selected prerequisite %s." msgstr "" #: includes/class-ld-lms.php:1468 msgctxt "placeholder: Course" msgid "Enable %s Points" msgstr "" #: includes/class-ld-lms.php:1470 msgid "Leave this field unchecked if points not used." msgstr "" #: includes/class-ld-lms.php:1479 msgctxt "Course Points" msgid "%s Points" msgstr "" #: includes/class-ld-lms.php:1483 msgctxt "placeholder: course" msgid "Enter the number of points a user will receive for this %s." msgstr "" #: includes/class-ld-lms.php:1487 msgctxt "Course Points Access" msgid "%s Points Access" msgstr "" #: includes/class-ld-lms.php:1491 msgctxt "placeholder: course" msgid "Enter the number of points a user must have to access this %s." msgstr "" #: includes/class-ld-lms.php:1495 msgctxt "Disable Lesson Progression Label" msgid "Disable %s Progression" msgstr "" #: includes/class-ld-lms.php:1498 msgctxt "Disable the feature that allows attempting lessons only in allowed order." msgid "Disable the feature that allows attempting %s only in allowed order." msgstr "" #: includes/class-ld-lms.php:1502 msgid "Expire Access" msgstr "" #: includes/class-ld-lms.php:1504 msgid "Leave this field unchecked if access never expires." msgstr "" #: includes/class-ld-lms.php:1508 msgid "Expire Access After (days)" msgstr "" #: includes/class-ld-lms.php:1511 msgctxt "Enter the number of days a user has access to this course." msgid "Enter the number of days a user has access to this %s." msgstr "" #: includes/class-ld-lms.php:1515 msgctxt "Delete Course and Quiz Data After Expiration Label" msgid "Delete %1$s and %2$s Data After Expiration" msgstr "" #: includes/class-ld-lms.php:1517 msgctxt "placeholder: course" msgid "Select this option if you want the user's %s progress to be deleted when their access expires." msgstr "" #: includes/class-ld-lms.php:1521 msgctxt "Hide Course Content Table Label" msgid "Hide %s Content Table" msgstr "" #: includes/class-ld-lms.php:1524 msgctxt "Hide Course Content table when user is not enrolled." msgid "Hide %s Content table when user is not enrolled." msgstr "" #: includes/class-ld-lms.php:1529 #: includes/class-ld-lms.php:1955 msgid "Associated Certificate" msgstr "" #: includes/class-ld-lms.php:1531 msgctxt "Select a certificate to be awarded upon course completion (optional)." msgid "Select a certificate to be awarded upon %s completion (optional)." msgstr "" #. translators: placeholder: Lesson. #: includes/class-ld-lms.php:1560 msgctxt "placeholder: Lesson" msgid "LearnDash %s Settings" msgstr "" #: includes/class-ld-lms.php:1565 #: themes/legacy/templates/lesson.php:64 msgctxt "Lesson Materials Label" msgid "%s Materials" msgstr "" #: includes/class-ld-lms.php:1567 msgctxt "Options for lesson materials" msgid "Options for %s materials" msgstr "" #. translators: Associated Course Label. #. translators: placeholders: course. #: includes/class-ld-lms.php:1576 #: includes/class-ld-lms.php:1755 #: includes/class-ld-lms.php:1941 #: includes/ld-assignment-uploads.php:1040 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-access-settings.php:226 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-access-settings.php:148 msgctxt "Associated Course Label" msgid "Associated %s" msgstr "" #: includes/class-ld-lms.php:1579 msgctxt "Associate this lesson with a course." msgid "Associate this %1$s with a %2$s." msgstr "" #. translators: Forced Lesson Timer Label. #: includes/class-ld-lms.php:1585 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:562 msgctxt "Forced Lesson Timer Label" msgid "Forced %s Timer" msgstr "" #: includes/class-ld-lms.php:1587 msgctxt "placeholder: Lesson" msgid "Minimum time a user has to spend on %s page before it can be marked complete. Examples: 40 (for 40 seconds), 20s, 45sec, 2m 30s, 2min 30sec, 1h 5m 10s, 1hr 5min 10sec" msgstr "" #: includes/class-ld-lms.php:1592 #: includes/class-ld-lms.php:1780 #: themes/ld30/templates/assignment/upload.php:79 #: themes/legacy/templates/learndash_lesson_assignment_upload_form.php:51 msgid "Upload Assignment" msgstr "" #: includes/class-ld-lms.php:1594 #: includes/class-ld-lms.php:1782 msgid "Check this if you want to make it mandatory to upload assignment" msgstr "" #: includes/class-ld-lms.php:1599 #: includes/class-ld-lms.php:1787 msgid "Auto Approve Assignment" msgstr "" #: includes/class-ld-lms.php:1601 #: includes/class-ld-lms.php:1789 msgid "Check this if you want to auto-approve the uploaded assignment" msgstr "" #: includes/class-ld-lms.php:1606 #: includes/class-ld-lms.php:1794 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:291 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:283 msgid "Limit number of uploaded files" msgstr "" #: includes/class-ld-lms.php:1608 #: includes/class-ld-lms.php:1796 msgid "Default is 1" msgstr "" #: includes/class-ld-lms.php:1609 #: includes/class-ld-lms.php:1797 msgid "Enter the maximum number of assignment uploads allowed. Default is 1. Use 0 to unlimited." msgstr "" #: includes/class-ld-lms.php:1616 #: includes/class-ld-lms.php:1618 #: includes/class-ld-lms.php:1804 #: includes/class-ld-lms.php:1806 msgid "Allow Student to Delete own Assignment(s)" msgstr "" #: includes/class-ld-lms.php:1624 #: includes/class-ld-lms.php:1811 msgid "Award Points for Assignment" msgstr "" #: includes/class-ld-lms.php:1626 #: includes/class-ld-lms.php:1813 msgid "Allow this assignment to be assigned points when it is approved." msgstr "" #: includes/class-ld-lms.php:1631 #: includes/class-ld-lms.php:1818 msgid "Set Number of Points for Assignment" msgstr "" #: includes/class-ld-lms.php:1634 #: includes/class-ld-lms.php:1821 msgid "Assign the max amount of points someone can earn for this assignment." msgstr "" #: includes/class-ld-lms.php:1639 #: includes/class-ld-lms.php:1827 msgid "Allowed File Extensions" msgstr "" #: includes/class-ld-lms.php:1641 msgid "Example: pdf, xls, zip" msgstr "" #: includes/class-ld-lms.php:1642 msgid "Enter comma-separated list of allowed file extensions: pdf, xls, zip or leave blank for any." msgstr "" #: includes/class-ld-lms.php:1647 #: includes/class-ld-lms.php:1835 msgid "Allowed File Size" msgstr "" #. translators: placeholder: PHP file upload size #: includes/class-ld-lms.php:1649 #: includes/class-ld-lms.php:1837 #: themes/ld30/templates/assignment/upload.php:40 #: themes/legacy/templates/learndash_lesson_assignment_upload_form.php:29 msgctxt "placeholder: PHP file upload size" msgid "Maximum upload file size: %s" msgstr "" #: includes/class-ld-lms.php:1650 #: includes/class-ld-lms.php:1838 msgctxt "placeholder: PHP file upload size" msgid "Enter maximim file upload size. Example: 100KB, 2M, 2MB, 1G. Maximum upload file size: %s" msgstr "" #. translators: placeholder: Lesson. #: includes/class-ld-lms.php:1656 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-access-settings.php:172 msgctxt "placeholder: Lesson" msgid "Sample %s" msgstr "" #: includes/class-ld-lms.php:1658 msgctxt "Check this if you want this lesson and all its topics to be available for free." msgid "Check this if you want this %1$s and all its %2$s to be available for free." msgstr "" #: includes/class-ld-lms.php:1662 msgctxt "Make Lesson Visible X Days After Sign-up" msgid "Make %s visible X Days After Sign-up" msgstr "" #: includes/class-ld-lms.php:1666 msgctxt "Make lesson visible ____ days after sign-up" msgid "Make %s visible ____ days after sign-up" msgstr "" #: includes/class-ld-lms.php:1671 msgctxt "Make Lesson Visible on Specific Date" msgid "Make %s Visible on Specific Date" msgstr "" #: includes/class-ld-lms.php:1674 msgctxt "Set the date that you would like this lesson to become available." msgid "Set the date that you would like this %s to become available." msgstr "" #: includes/class-ld-lms.php:1716 msgctxt "Lesson Topic Label" msgid "%1$s %2$s" msgstr "" #. translators: placeholder: Topic. #: includes/class-ld-lms.php:1738 msgctxt "placeholder: Topic" msgid "LearnDash %s Settings" msgstr "" #: includes/class-ld-lms.php:1743 #: themes/legacy/templates/topic.php:121 msgctxt "Topic Materials Label" msgid "%s Materials" msgstr "" #: includes/class-ld-lms.php:1745 msgctxt "Options for topic materials" msgid "Options for %s materials" msgstr "" #: includes/class-ld-lms.php:1758 msgctxt "placeholders: topic, course" msgid "Associate this %s with a %s." msgstr "" #: includes/class-ld-lms.php:1764 #: includes/class-ld-lms.php:1949 #: includes/ld-assignment-uploads.php:1087 msgctxt "Associated Lesson Label" msgid "Associated %s" msgstr "" #: includes/class-ld-lms.php:1767 msgctxt "Associate this topic with a lesson." msgid "Associate this %1$s with a %2$s." msgstr "" #: includes/class-ld-lms.php:1773 msgctxt "Forced Topic Timer Label" msgid "Forced %s Timer" msgstr "" #: includes/class-ld-lms.php:1775 msgctxt "Minimum time a user has to spend on Topic page Label" msgid "Minimum time a user has to spend on %s page before it can be marked complete. Examples: 40 (for 40 seconds), 20s, 45sec, 2m 30s, 2min 30sec, 1h 5m 10s, 1hr 5min 10sec" msgstr "" #: includes/class-ld-lms.php:1829 msgid "Example: pdf,xls,zip" msgstr "" #: includes/class-ld-lms.php:1830 msgid "Enter comma-separated list of allowed file extensions: pdf,xls,zip or leave blank for any." msgstr "" #. translators: placeholder: Quiz. #: includes/class-ld-lms.php:1904 msgctxt "placeholder: Quiz" msgid "LearnDash %s Settings" msgstr "" #: includes/class-ld-lms.php:1909 #: themes/legacy/templates/quiz.php:76 msgctxt "Quiz Materials Label" msgid "%s Materials" msgstr "" #: includes/class-ld-lms.php:1911 msgctxt "Options for quiz materials" msgid "Options for %s materials" msgstr "" #: includes/class-ld-lms.php:1921 msgid "Repeats" msgstr "" #: includes/class-ld-lms.php:1923 msgctxt "Number of repeats allowed for quiz" msgid "Number of repeats allowed for %s. Blank = unlimited attempts. 0 = 1 attempt, 1 = 2 attempts, etc." msgstr "" #: includes/class-ld-lms.php:1927 msgid "Certificate Threshold" msgstr "" #: includes/class-ld-lms.php:1929 msgid "Minimum score required to award a certificate, between 0 and 1 where 1 = 100%." msgstr "" #: includes/class-ld-lms.php:1934 msgid "Passing Percentage" msgstr "" #: includes/class-ld-lms.php:1936 msgctxt "Passing percentage required to pass the quiz (number only). e.g. 80 for 80%." msgid "Passing percentage required to pass the %s (number only). e.g. 80 for 80%%." msgstr "" #: includes/class-ld-lms.php:1944 msgctxt "Associate this %s with a course." msgid "Associate this %s with a %s." msgstr "" #: includes/class-ld-lms.php:1951 msgctxt "Associate this quiz with a lesson." msgid "Associate this %s with a %s." msgstr "" #: includes/class-ld-lms.php:1957 msgctxt "Optionally associate a quiz with a certificate." msgid "Optionally associate a %s with a certificate." msgstr "" #: includes/class-ld-lms.php:1962 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:744 msgid "Associated Settings" msgstr "" #: includes/class-ld-lms.php:1964 msgctxt "If you imported a quiz, use this field to select it. Otherwise, create new settings below. After saving or publishing, you will be able to add questions." msgid "If you imported a %s, use this field to select it. Otherwise, create new settings below. After saving or publishing, you will be able to add questions." msgstr "" #: includes/class-ld-lms.php:1964 #: includes/gutenberg/blocks/ld-certificate/index.js:148 #: includes/gutenberg/blocks/ld-course-content/index.js:100 #: includes/gutenberg/blocks/ld-course-expire-status/index.js:134 #: includes/gutenberg/blocks/ld-course-info/index.js:352 #: includes/gutenberg/blocks/ld-course-list/index.js:430 #: includes/gutenberg/blocks/ld-course-progress/index.js:105 #: includes/gutenberg/blocks/ld-course-resume/index.js:137 #: includes/gutenberg/blocks/ld-courseinfo/index.js:243 #: includes/gutenberg/blocks/ld-lesson-list/index.js:379 #: includes/gutenberg/blocks/ld-login/index.js:218 #: includes/gutenberg/blocks/ld-payment-buttons/index.js:79 #: includes/gutenberg/blocks/ld-profile/index.js:190 #: includes/gutenberg/blocks/ld-quiz-list/index.js:388 #: includes/gutenberg/blocks/ld-topic-list/index.js:389 #: includes/gutenberg/blocks/ld-user-course-points/index.js:79 #: includes/gutenberg/blocks/ld-user-groups/index.js:78 #: includes/gutenberg/blocks/ld-usermeta/index.js:126 msgid "Preview" msgstr "" #. translators: placeholder: Question #: includes/class-ld-lms.php:2022 msgctxt "placeholder: Question" msgid "LearnDash %s Settings" msgstr "" #: includes/class-ld-lms.php:2027 msgctxt "Associated Quiz Label" msgid "Associated %s" msgstr "" #: includes/class-ld-lms.php:2030 msgctxt "Associate this question with a quiz." msgid "Associate this %1$s with a %2$s." msgstr "" #: includes/class-ld-lms.php:2056 msgctxt "Add New Certificate Label" msgid "Add New" msgstr "" #: includes/class-ld-lms.php:2057 msgctxt "Add New Certificate Label" msgid "Add New %s" msgstr "" #: includes/class-ld-lms.php:2058 msgctxt "Edit Certificate Label" msgid "Edit %s" msgstr "" #: includes/class-ld-lms.php:2059 msgctxt "New Certificate Label" msgid "New %s" msgstr "" #: includes/class-ld-lms.php:2061 msgctxt "View Certificate Label" msgid "View %s" msgstr "" #: includes/class-ld-lms.php:2062 msgctxt "Search Certificate Label" msgid "Search %s" msgstr "" #: includes/class-ld-lms.php:2063 msgctxt "No Certificate found Label" msgid "No %s found" msgstr "" #: includes/class-ld-lms.php:2064 msgctxt "No Certificates found in Trash Label" msgid "No %s found in Trash" msgstr "" #: includes/class-ld-lms.php:2067 msgctxt "Certificate Published" msgid "%s Published" msgstr "" #: includes/class-ld-lms.php:2068 msgctxt "Certificate Published Privately" msgid "%s Published Privately" msgstr "" #: includes/class-ld-lms.php:2069 msgctxt "Certificate Reverted to Draft" msgid "%s Reverted to Draft" msgstr "" #: includes/class-ld-lms.php:2070 msgctxt "Certificate Scheduled" msgid "%s Scheduled" msgstr "" #: includes/class-ld-lms.php:2071 msgctxt "Certificate Updated" msgid "%s Updated" msgstr "" #: includes/class-ld-lms.php:2075 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:1032 #: themes/ld30/templates/shortcodes/profile.php:102 msgid "Certificates" msgstr "" #: includes/class-ld-lms.php:2080 msgid "LearnDash Certificates Options" msgstr "" #: includes/class-ld-lms.php:2100 msgid "Transactions" msgstr "" #: includes/class-ld-lms.php:2104 msgid "LearnDash Transactions Options" msgstr "" #: includes/class-ld-lms.php:2118 msgid "Click the Export button below to export the transaction list." msgstr "" #: includes/class-ld-lms.php:2714 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-access-settings.php:129 msgid "day(s)" msgstr "" #: includes/class-ld-lms.php:2715 msgid "week(s)" msgstr "" #: includes/class-ld-lms.php:2716 msgid "month(s)" msgstr "" #: includes/class-ld-lms.php:2717 msgid "year(s)" msgstr "" #: includes/class-ld-lms.php:2873 #: includes/class-ld-lms.php:2917 #: includes/class-ld-lms.php:3208 #: includes/class-ld-lms.php:3224 msgid "No attempts" msgstr "" #: includes/class-ld-lms.php:2911 #: includes/class-ld-lms.php:2996 #: includes/class-ld-lms.php:3289 #: includes/class-ld-semper-fi-module.php:1722 msgid "Security Check - If you receive this in error, log out and back in to WordPress" msgstr "" #: includes/class-ld-lms.php:2962 msgctxt "Export User Course Data Label" msgid "Export User %s Data »" msgstr "" #: includes/class-ld-lms.php:3264 msgctxt "Export Quiz Data Label" msgid "Export %s Data »" msgstr "" #: includes/class-ld-lms.php:3355 msgid "Export »" msgstr "" #: includes/class-ld-lms.php:3407 #: includes/class-ld-lms.php:3513 #: includes/class-ld-lms.php:4096 msgid "-- Select a Certificate --" msgstr "" #: includes/class-ld-lms.php:3457 #: includes/class-ld-lms.php:4063 #: includes/class-ld-lms.php:4160 #: includes/class-ld-lms.php:4244 #: includes/ld-assignment-uploads.php:1046 msgctxt "Select a Course Label" msgid "-- Select a %s --" msgstr "" #: includes/class-ld-lms.php:3494 msgctxt "Select a Lesson or Topic Label" msgid "-- Select a %s or %s --" msgstr "" #: includes/class-ld-lms.php:3525 msgid "-- Select Settings --" msgstr "" #: includes/class-ld-lms.php:3593 msgctxt "Select a Quiz Label" msgid "-- Select a %s --" msgstr "" #. translators: placeholder: Lesson, Topic Labels. #: includes/class-ld-lms.php:3771 msgctxt "placeholder: Lesson, Topic Labels" msgid "Search or select a %1$s or %2$s…" msgstr "" #. translators: placeholder: Lesson, Topic Labels. #: includes/class-ld-lms.php:3780 msgctxt "placeholder: Lesson, Topic Labels" msgid "Select a %1$s or %2$s" msgstr "" #. translators: placeholder: Lesson Label. #: includes/class-ld-lms.php:3791 msgctxt "placeholder: Lesson Label" msgid "Search or select a %s…" msgstr "" #. translators: placeholder: Lesson Label. #: includes/class-ld-lms.php:3799 msgctxt "placeholder: Lesson Labels" msgid "Select a %s" msgstr "" #. translators: placeholder: Lesson. #: includes/class-ld-lms.php:3915 msgctxt "placeholder: Lesson" msgid "Search or select a %s" msgstr "" #. translators: placeholder: Lesson. #: includes/class-ld-lms.php:3923 msgctxt "placeholder: Lesson" msgid "Select a %s" msgstr "" #: includes/class-ld-lms.php:4282 #: includes/class-ld-semper-fi-module.php:645 #: includes/ld-assignment-uploads.php:1093 msgctxt "Select a Lesson Label" msgid "-- Select a %s --" msgstr "" #: includes/class-ld-semper-fi-module.php:196 msgctxt "placeholder: method name" msgid "Method %s doesn't exist" msgstr "" #: includes/class-ld-semper-fi-module.php:643 msgid "LearnDash Categories" msgstr "" #: includes/class-ld-semper-fi-module.php:644 msgid "Loading..." msgstr "" #: includes/class-ld-semper-fi-module.php:646 msgctxt "Select a Lesson Topic Label" msgid "-- Select a %s or %s --" msgstr "" #: includes/class-ld-semper-fi-module.php:648 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:79 msgid "Valid range is 1 to 90 when the Billing Cycle is set to days." msgstr "" #: includes/class-ld-semper-fi-module.php:649 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:80 msgid "Valid range is 1 to 52 when the Billing Cycle is set to weeks." msgstr "" #: includes/class-ld-semper-fi-module.php:650 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:81 msgid "Valid range is 1 to 24 when the Billing Cycle is set to months." msgstr "" #: includes/class-ld-semper-fi-module.php:651 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:82 msgid "Valid range is 1 to 5 when the Billing Cycle is set to years." msgstr "" #: includes/class-ld-semper-fi-module.php:1186 #: includes/settings/class-ld-settings-fields.php:270 msgid "Required" msgstr "" #: includes/class-ld-semper-fi-module.php:1313 msgid "Upload Image" msgstr "" #: includes/class-ld-semper-fi-module.php:1368 #: includes/settings/settings-fields/class-ld-settings-fields-date-entry.php:70 #: themes/legacy/templates/course_details_admin.php:47 msgid "Month" msgstr "" #. translators: 1: month number (01, 02, etc.), 2: month abbreviation #: includes/class-ld-semper-fi-module.php:1374 #: includes/settings/settings-fields/class-ld-settings-fields-date-entry.php:76 #: themes/legacy/templates/course_details_admin.php:56 msgctxt "placeholder: month number, month text" msgid "%1$s-%2$s" msgstr "" #: includes/class-ld-semper-fi-module.php:1378 #: includes/settings/settings-fields/class-ld-settings-fields-date-entry.php:80 #: themes/legacy/templates/course_details_admin.php:60 msgid "Day" msgstr "" #: includes/class-ld-semper-fi-module.php:1379 #: includes/settings/settings-fields/class-ld-settings-fields-date-entry.php:81 #: themes/legacy/templates/course_details_admin.php:62 msgid "Year" msgstr "" #: includes/class-ld-semper-fi-module.php:1380 #: includes/settings/settings-fields/class-ld-settings-fields-date-entry.php:82 #: includes/settings/settings-fields/class-ld-settings-fields-timer-entry.php:54 #: themes/legacy/templates/course_details_admin.php:64 msgid "Hour" msgstr "" #: includes/class-ld-semper-fi-module.php:1381 #: includes/settings/settings-fields/class-ld-settings-fields-date-entry.php:83 #: includes/settings/settings-fields/class-ld-settings-fields-timer-entry.php:56 #: themes/legacy/templates/course_details_admin.php:66 msgid "Minute" msgstr "" #: includes/class-ld-semper-fi-module.php:1402 msgid " characters. Most search engines use a maximum of %s chars for the %s." msgstr "" #: includes/class-ld-semper-fi-module.php:1466 #: includes/ld-assignment-uploads.php:1040 #: includes/ld-assignment-uploads.php:1087 #: includes/ld-assignment-uploads.php:1117 #: includes/ld-assignment-uploads.php:1139 #: includes/ld-assignment-uploads.php:1170 #: includes/settings/class-ld-settings-fields.php:255 msgid "Click for Help!" msgstr "" #: includes/class-ld-semper-fi-module.php:1726 msgid "Options Reset." msgstr "" #: includes/class-ld-semper-fi-module.php:1743 msgid "Options Updated." msgstr "" #: includes/class-ld-semper-fi-module.php:1883 msgid "Update Options" msgstr "" #: includes/class-ld-semper-fi-module.php:1888 msgid "Reset to Defaults" msgstr "" #. translators: placeholders: Language Name, Language code. #: includes/class-ld-translations.php:237 msgctxt "placeholders: Language Name, Language code" msgid "Translation installed: %1$s (%2$s)" msgstr "" #. translators: placeholders: Language Name, Language code. #: includes/class-ld-translations.php:344 msgctxt "placeholders: Language Name, Language code" msgid "Translation updated: %1$s (%2$s)" msgstr "" #. translators: placeholders: Language Name, Language code. #: includes/class-ld-translations.php:383 msgctxt "placeholders: Language Name, Language code" msgid "Translation removed: %1$s (%2$s)" msgstr "" #: includes/class-ld-translations.php:421 msgid "No translations available for this plugin." msgstr "" #: includes/class-ld-translations.php:501 msgid "Download the original strings (POT) File." msgstr "" #: includes/class-ld-translations.php:503 msgid "Download POT File from your server." msgstr "" #: includes/class-ld-translations.php:503 msgid "POT" msgstr "" #: includes/class-ld-translations.php:510 msgid "Installed Translations" msgstr "" #: includes/class-ld-translations.php:513 msgid "Locale" msgstr "" #: includes/class-ld-translations.php:514 msgid "Name / Native" msgstr "" #: includes/class-ld-translations.php:515 #: includes/ld-assignment-uploads.php:817 #: includes/ld-assignment-uploads.php:1177 #: includes/quiz/ld-quiz-essays.php:500 #: themes/legacy/templates/learndash_lesson_assignment_uploads_list.php:57 msgid "Download" msgstr "" #: includes/class-ld-translations.php:545 msgid "No Translations installed" msgstr "" #. translators: placeholder: Language directory. #: includes/class-ld-translations.php:555 msgctxt "placeholder: Language directory" msgid "All translations are stored into the directory: %s" msgstr "" #: includes/class-ld-translations.php:562 msgid "The language directory is not writable" msgstr "" #: includes/class-ld-translations.php:587 msgid "Not from LearnDash" msgstr "" #: includes/class-ld-translations.php:595 msgid "Download PO File from your server." msgstr "" #: includes/class-ld-translations.php:595 msgid "PO" msgstr "" #: includes/class-ld-translations.php:601 msgid "Remove translation from server" msgstr "" #: includes/class-ld-translations.php:607 msgid "Update translation from LearnDash" msgstr "" #: includes/class-ld-translations.php:607 #: includes/ld-assignment-uploads.php:1149 #: includes/quiz/ld-quiz-essays.php:1009 #: includes/quiz/ld-quiz-essays.php:1010 #: includes/settings/settings-sections/class-ld-settings-section-questions-management-display.php:103 #: includes/settings/settings-sections/class-ld-settings-section-questions-taxonomies.php:217 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:413 msgid "Update" msgstr "" #: includes/class-ld-translations.php:661 msgid "Available Translations" msgstr "" #: includes/class-ld-translations.php:663 msgid "-- Install Translation --" msgstr "" #: includes/class-ld-translations.php:672 msgid "Recommended" msgstr "" #: includes/class-ld-translations.php:690 msgid "Available" msgstr "" #: includes/class-ld-translations.php:706 msgid "Install" msgstr "" #: includes/course/ld-course-functions.php:458 msgctxt "Your access to this course has expired." msgid "Your access to this %s has expired." msgstr "" #: includes/course/ld-course-info-widget.php:25 msgctxt "placeholders: course" msgid "LearnDash - %s attempt and score information of users. Visible only to users logged in." msgstr "" #: includes/course/ld-course-info-widget.php:28 msgctxt "Course Information" msgid "%s Information" msgstr "" #: includes/course/ld-course-info-widget.php:191 #: themes/ld30/includes/helpers.php:1257 msgid "Registered show thumbnail:" msgstr "" #: includes/course/ld-course-info-widget.php:193 #: includes/settings/shortcodes-sections/course_complete.php:88 #: includes/settings/shortcodes-sections/course_inprogress.php:60 #: includes/settings/shortcodes-sections/course_notstarted.php:60 #: includes/settings/shortcodes-sections/ld_course_expire_status.php:71 #: includes/settings/shortcodes-sections/ld_course_info.php:36 #: includes/settings/shortcodes-sections/ld_course_list.php:94 #: includes/settings/shortcodes-sections/ld_course_list.php:106 #: includes/settings/shortcodes-sections/ld_course_resume.php:71 #: includes/settings/shortcodes-sections/ld_group.php:53 #: includes/settings/shortcodes-sections/ld_lesson_list.php:76 #: includes/settings/shortcodes-sections/ld_lesson_list.php:88 #: includes/settings/shortcodes-sections/ld_quiz_complete.php:89 #: includes/settings/shortcodes-sections/ld_quiz_list.php:122 #: includes/settings/shortcodes-sections/ld_quiz_list.php:134 #: includes/settings/shortcodes-sections/ld_topic_list.php:86 #: includes/settings/shortcodes-sections/ld_topic_list.php:98 #: includes/settings/shortcodes-sections/student.php:53 #: includes/settings/shortcodes-sections/visitor.php:44 #: themes/ld30/includes/helpers.php:1259 msgid "Yes (default)" msgstr "" #: includes/course/ld-course-info-widget.php:194 #: includes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_Form.php:100 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:729 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:734 #: includes/quiz/ld-quiz-info-shortcode.php:110 #: includes/settings/settings-sections/class-ld-settings-section-support-database-tables.php:110 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:153 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:344 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:354 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:361 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:372 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:383 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:389 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:437 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:449 #: includes/settings/settings-sections/class-ld-settings-section-support-server.php:166 #: includes/settings/settings-sections/class-ld-settings-section-support-server.php:217 #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress.php:100 #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress.php:113 #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress.php:126 #: includes/settings/shortcodes-sections/course_complete.php:89 #: includes/settings/shortcodes-sections/course_inprogress.php:61 #: includes/settings/shortcodes-sections/course_notstarted.php:61 #: includes/settings/shortcodes-sections/ld_course_expire_status.php:72 #: includes/settings/shortcodes-sections/ld_course_info.php:37 #: includes/settings/shortcodes-sections/ld_course_list.php:95 #: includes/settings/shortcodes-sections/ld_course_list.php:107 #: includes/settings/shortcodes-sections/ld_course_resume.php:72 #: includes/settings/shortcodes-sections/ld_group.php:54 #: includes/settings/shortcodes-sections/ld_lesson_list.php:77 #: includes/settings/shortcodes-sections/ld_lesson_list.php:89 #: includes/settings/shortcodes-sections/ld_profile.php:69 #: includes/settings/shortcodes-sections/ld_profile.php:85 #: includes/settings/shortcodes-sections/ld_profile.php:99 #: includes/settings/shortcodes-sections/ld_profile.php:111 #: includes/settings/shortcodes-sections/ld_profile.php:123 #: includes/settings/shortcodes-sections/ld_profile.php:137 #: includes/settings/shortcodes-sections/ld_quiz_complete.php:90 #: includes/settings/shortcodes-sections/ld_quiz_list.php:123 #: includes/settings/shortcodes-sections/ld_quiz_list.php:135 #: includes/settings/shortcodes-sections/ld_topic_list.php:87 #: includes/settings/shortcodes-sections/ld_topic_list.php:99 #: includes/settings/shortcodes-sections/student.php:54 #: includes/settings/shortcodes-sections/visitor.php:45 #: themes/ld30/includes/helpers.php:1260 #: includes/gutenberg/blocks/ld-course-resume/index.js:115 msgid "No" msgstr "" #: includes/course/ld-course-info-widget.php:199 #: themes/ld30/includes/helpers.php:1265 msgid "Registered per page:" msgstr "" #. translators: placeholders: Default amount shown per page #: includes/course/ld-course-info-widget.php:201 #: includes/course/ld-course-info-widget.php:225 #: includes/course/ld-course-info-widget.php:247 #: themes/ld30/includes/helpers.php:1271 msgctxt "placeholders: default per page" msgid "Default is %d. Set to zero for no pagination." msgstr "" #: includes/course/ld-course-info-widget.php:205 #: themes/ld30/includes/helpers.php:1279 msgid "Registered order by:" msgstr "" #: includes/course/ld-course-info-widget.php:207 #: includes/course/ld-course-info-widget.php:230 #: includes/settings/shortcodes-sections/ld_course_info.php:62 #: includes/settings/shortcodes-sections/ld_course_info.php:102 #: themes/ld30/includes/helpers.php:1281 msgid "Title (default) - Order by post title" msgstr "" #: includes/course/ld-course-info-widget.php:208 #: includes/course/ld-course-info-widget.php:231 #: includes/course/ld-course-info-widget.php:254 #: includes/settings/shortcodes-sections/ld_course_info.php:63 #: includes/settings/shortcodes-sections/ld_course_info.php:103 #: includes/settings/shortcodes-sections/ld_course_info.php:145 #: themes/ld30/includes/helpers.php:1282 msgid "ID - Order by post id" msgstr "" #: includes/course/ld-course-info-widget.php:209 #: includes/course/ld-course-info-widget.php:232 #: includes/course/ld-course-info-widget.php:255 #: includes/settings/shortcodes-sections/ld_course_info.php:64 #: includes/settings/shortcodes-sections/ld_course_info.php:104 #: includes/settings/shortcodes-sections/ld_course_info.php:146 #: includes/settings/shortcodes-sections/ld_course_list.php:28 #: includes/settings/shortcodes-sections/ld_lesson_list.php:38 #: includes/settings/shortcodes-sections/ld_profile.php:43 #: includes/settings/shortcodes-sections/ld_quiz_list.php:84 #: includes/settings/shortcodes-sections/ld_topic_list.php:48 #: themes/ld30/includes/helpers.php:1283 #: includes/gutenberg/blocks/ld-course-info/index.js:193 #: includes/gutenberg/blocks/ld-course-info/index.js:252 #: includes/gutenberg/blocks/ld-course-info/index.js:314 #: includes/gutenberg/blocks/ld-course-list/index.js:222 #: includes/gutenberg/blocks/ld-lesson-list/index.js:214 #: includes/gutenberg/blocks/ld-profile/index.js:131 #: includes/gutenberg/blocks/ld-quiz-list/index.js:223 #: includes/gutenberg/blocks/ld-topic-list/index.js:224 msgid "Date - Order by post date" msgstr "" #: includes/course/ld-course-info-widget.php:210 #: includes/course/ld-course-info-widget.php:233 #: includes/course/ld-course-info-widget.php:256 #: includes/settings/shortcodes-sections/ld_course_info.php:65 #: includes/settings/shortcodes-sections/ld_course_info.php:105 #: includes/settings/shortcodes-sections/ld_course_info.php:147 #: includes/settings/shortcodes-sections/ld_course_list.php:29 #: includes/settings/shortcodes-sections/ld_lesson_list.php:39 #: includes/settings/shortcodes-sections/ld_profile.php:44 #: includes/settings/shortcodes-sections/ld_quiz_list.php:85 #: includes/settings/shortcodes-sections/ld_topic_list.php:49 #: themes/ld30/includes/helpers.php:1284 #: includes/gutenberg/blocks/ld-course-info/index.js:197 #: includes/gutenberg/blocks/ld-course-info/index.js:256 #: includes/gutenberg/blocks/ld-course-info/index.js:318 #: includes/gutenberg/blocks/ld-course-list/index.js:226 #: includes/gutenberg/blocks/ld-lesson-list/index.js:218 #: includes/gutenberg/blocks/ld-profile/index.js:135 #: includes/gutenberg/blocks/ld-quiz-list/index.js:227 #: includes/gutenberg/blocks/ld-topic-list/index.js:228 msgid "Menu - Order by Page Order Value" msgstr "" #: includes/course/ld-course-info-widget.php:214 #: themes/ld30/includes/helpers.php:1288 msgid "Registered order:" msgstr "" #: includes/course/ld-course-info-widget.php:216 #: includes/course/ld-course-info-widget.php:239 #: includes/settings/shortcodes-sections/ld_course_info.php:76 #: includes/settings/shortcodes-sections/ld_course_info.php:116 #: themes/ld30/includes/helpers.php:1290 msgid "ASC (default) - lowest to highest values" msgstr "" #: includes/course/ld-course-info-widget.php:217 #: includes/course/ld-course-info-widget.php:240 #: includes/settings/shortcodes-sections/ld_course_info.php:77 #: includes/settings/shortcodes-sections/ld_course_info.php:117 #: includes/settings/shortcodes-sections/ld_lesson_list.php:51 #: includes/settings/shortcodes-sections/ld_quiz_list.php:97 #: includes/settings/shortcodes-sections/ld_topic_list.php:61 #: themes/ld30/includes/helpers.php:1291 msgid "DESC - highest to lowest values" msgstr "" #: includes/course/ld-course-info-widget.php:223 msgctxt "placeholder: course" msgid "%s progress per page:" msgstr "" #: includes/course/ld-course-info-widget.php:228 msgid "Progress order by:" msgstr "" #: includes/course/ld-course-info-widget.php:237 msgid "Progress order:" msgstr "" #: includes/course/ld-course-info-widget.php:245 msgctxt "placeholder: quizzes" msgid "%s per page:" msgstr "" #: includes/course/ld-course-info-widget.php:250 msgctxt "placeholder: quizzes" msgid "%s order by:" msgstr "" #: includes/course/ld-course-info-widget.php:252 #: includes/settings/shortcodes-sections/ld_course_info.php:143 #: includes/gutenberg/blocks/ld-course-info/index.js:303 msgid "Date Taken (default) - Order by date taken" msgstr "" #: includes/course/ld-course-info-widget.php:253 #: includes/settings/shortcodes-sections/ld_course_info.php:144 #: includes/settings/shortcodes-sections/ld_course_list.php:27 #: includes/settings/shortcodes-sections/ld_lesson_list.php:37 #: includes/settings/shortcodes-sections/ld_profile.php:42 #: includes/settings/shortcodes-sections/ld_quiz_list.php:83 #: includes/settings/shortcodes-sections/ld_topic_list.php:47 #: includes/gutenberg/blocks/ld-course-info/index.js:189 #: includes/gutenberg/blocks/ld-course-info/index.js:248 #: includes/gutenberg/blocks/ld-course-info/index.js:307 #: includes/gutenberg/blocks/ld-course-list/index.js:218 #: includes/gutenberg/blocks/ld-lesson-list/index.js:210 #: includes/gutenberg/blocks/ld-profile/index.js:127 #: includes/gutenberg/blocks/ld-quiz-list/index.js:219 #: includes/gutenberg/blocks/ld-topic-list/index.js:220 msgid "Title - Order by post title" msgstr "" #: includes/course/ld-course-info-widget.php:260 msgctxt "placeholder: quizzes" msgid "%s order:" msgstr "" #: includes/course/ld-course-info-widget.php:262 #: includes/settings/shortcodes-sections/ld_course_info.php:158 msgid "DESC (default) - highest to lowest values" msgstr "" #: includes/course/ld-course-info-widget.php:263 #: includes/settings/shortcodes-sections/ld_course_info.php:159 #: includes/settings/shortcodes-sections/ld_course_list.php:41 #: includes/settings/shortcodes-sections/ld_lesson_list.php:52 #: includes/settings/shortcodes-sections/ld_profile.php:56 #: includes/settings/shortcodes-sections/ld_quiz_list.php:98 #: includes/settings/shortcodes-sections/ld_topic_list.php:62 #: includes/gutenberg/blocks/ld-course-info/index.js:213 #: includes/gutenberg/blocks/ld-course-info/index.js:272 #: includes/gutenberg/blocks/ld-course-info/index.js:334 #: includes/gutenberg/blocks/ld-course-list/index.js:242 #: includes/gutenberg/blocks/ld-lesson-list/index.js:234 #: includes/gutenberg/blocks/ld-profile/index.js:151 #: includes/gutenberg/blocks/ld-quiz-list/index.js:243 #: includes/gutenberg/blocks/ld-topic-list/index.js:244 msgid "ASC - lowest to highest values" msgstr "" #: includes/course/ld-course-info-widget.php:284 msgctxt "LearnDash - Course Navigation. Shows lessons and topics on the current course." msgid "LearnDash - %s Navigation. Shows lessons and topics on the current course." msgstr "" #: includes/course/ld-course-info-widget.php:287 msgctxt "Course Navigation Label" msgid "%s Navigation" msgstr "" #: includes/course/ld-course-info-widget.php:443 msgctxt "Show Course Quizzes?" msgid "Show %1$s %2$s?" msgstr "" #: includes/course/ld-course-info-widget.php:447 msgctxt "Show Lesson Quizzes" msgid "Show %1$s %2$s?" msgstr "" #: includes/course/ld-course-info-widget.php:451 msgctxt "Show Topic Quizzes?" msgid "Show %1$s %2$s?" msgstr "" #. translators: placeholders: Course. #: includes/course/ld-course-info-widget.php:742 msgctxt "placeholder: Course" msgid "No associated %s" msgstr "" #: includes/course/ld-course-list-shortcode.php:916 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1261 #: themes/ld30/templates/shortcodes/course-listing.php:865 #: themes/legacy/templates/quiz_result_categories_email.php:15 msgid "Categories" msgstr "" #: includes/course/ld-course-list-shortcode.php:918 #: themes/ld30/templates/shortcodes/course-listing.php:867 msgid "Select category" msgstr "" #. translators: placeholder Category label #: includes/course/ld-course-list-shortcode.php:947 #: themes/ld30/templates/shortcodes/course-listing.php:898 msgctxt "placeholder: LD Category label" msgid "Select %s" msgstr "" #: includes/course/ld-course-list-shortcode.php:1583 #: includes/course/ld-course-progress.php:1420 #: includes/settings/shortcodes-sections/ld_course_list.php:80 #: sfwd_lms.php:552 #: includes/gutenberg/blocks/ld-course-list/index.js:284 msgid "Not Started" msgstr "" #: includes/course/ld-course-list-shortcode.php:1615 msgctxt "Course access will expire on:" msgid "%s access will expire on:" msgstr "" #: includes/course/ld-course-list-shortcode.php:1616 msgctxt "Course access expired on:" msgid "%s access expired on:" msgstr "" #. translators: placeholder: completed steps, total steps. #: includes/course/ld-course-progress.php:1550 #: themes/legacy/templates/course_progress_widget.php:11 #: themes/legacy/templates/profile.php:125 msgctxt "placeholder: completed steps, total steps" msgid "%1$d out of %2$d steps completed" msgstr "" #: includes/course/ld-course-progress.php:2005 msgctxt "placeholders: course" msgid "LearnDash %s progress bar" msgstr "" #: includes/course/ld-course-progress.php:2008 msgctxt "Course Progress Bar Label" msgid "%s Progress Bar" msgstr "" #: includes/course/ld-course-video.php:44 #: includes/course/ld-course-video.php:106 msgid "Enable Video Progression" msgstr "" #: includes/course/ld-course-video.php:46 #: includes/course/ld-course-video.php:108 msgid "Check this if you want to show a video as part of the progression." msgstr "" #: includes/course/ld-course-video.php:50 #: includes/course/ld-course-video.php:112 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:390 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:382 msgid "Video URL" msgstr "" #: includes/course/ld-course-video.php:52 msgctxt "placeholder: Lesson, admin URL to [ld_video] shortcode." msgid "URL to video. The video will be added above the %s content. Use the shortcode %s to position the player within content. Supported URL formats are YouTube (youtu.be, youtube.com), Vimeo (vimeo.com), Wistia (wistia.com), or Local videos. The value for this field can be a simple URL to the video, an iframe or either [video] or [embed] shortcodes." msgstr "" #: includes/course/ld-course-video.php:56 #: includes/course/ld-course-video.php:118 msgid "Auto Start Video" msgstr "" #: includes/course/ld-course-video.php:58 #: includes/course/ld-course-video.php:120 msgid "Check this if you want the video to auto-start on page load." msgstr "" #: includes/course/ld-course-video.php:62 #: includes/course/ld-course-video.php:124 msgid "Show Video Controls" msgstr "" #: includes/course/ld-course-video.php:64 #: includes/course/ld-course-video.php:126 msgid "Show Video Controls. By default controls are disabled. Only used for YouTube and local videos." msgstr "" #: includes/course/ld-course-video.php:68 #: includes/course/ld-course-video.php:130 msgid "When to show video" msgstr "" #: includes/course/ld-course-video.php:71 msgid "Before (default) - Video is shown before completing sub-steps" msgstr "" #: includes/course/ld-course-video.php:72 msgid "After - Video is shown after completing sub-steps" msgstr "" #: includes/course/ld-course-video.php:75 #: includes/course/ld-course-video.php:137 msgid "Select when to show video in relation to sub-steps." msgstr "" #: includes/course/ld-course-video.php:78 msgctxt "placeholder: Lesson" msgid "Auto Complete %s" msgstr "" #: includes/course/ld-course-video.php:80 msgctxt "placeholder: Lesson" msgid "Check this if you want the %s to auto-complete after the video completes." msgstr "" #: includes/course/ld-course-video.php:84 #: includes/course/ld-course-video.php:147 msgid "Auto Complete Delay" msgstr "" #: includes/course/ld-course-video.php:88 #: includes/course/ld-course-video.php:151 msgid "Time delay in second between the time the video finishes and the auto complete occurs. Example 0 no delay, 5 for five seconds." msgstr "" #: includes/course/ld-course-video.php:92 #: includes/course/ld-course-video.php:155 msgid "Hide Complete Button" msgstr "" #: includes/course/ld-course-video.php:94 #: includes/course/ld-course-video.php:157 msgid "Check this to hide the complete button." msgstr "" #: includes/course/ld-course-video.php:114 msgctxt "placeholder: Topic, admin URL to [ld_video] shortcode." msgid "URL to video. The video will be added above the %s content. Use the shortcode %s to position the player within content. Supported URL formats are YouTube (youtu.be, youtube.com), Vimeo (vimeo.com), Wistia (wistia.com), or Local videos. The value for this field can be a simple URL to the video, an iframe or either [video] or [embed] shortcodes." msgstr "" #: includes/course/ld-course-video.php:133 msgid "After (default) - Video is shown after completing sub-steps" msgstr "" #: includes/course/ld-course-video.php:134 msgid "Before - Video is shown before completing sub-steps" msgstr "" #: includes/course/ld-course-video.php:141 msgctxt "placeholder: Topic" msgid "Auto Complete %s" msgstr "" #: includes/course/ld-course-video.php:143 msgctxt "placeholder: Topic" msgid "Check this if you want the %s to auto-complete after the video completes." msgstr "" #: includes/course/ld-course-video.php:541 msgctxt "placeholders: 1. Lesson or Topic label, 2. span for counter" msgid "

      %s will auto complete in %s seconds

      " msgstr "" #. translators: placeholder: Course, Quiz, Course. #: includes/gutenberg/blocks/ld-certificate/index.php:107 msgctxt "placeholder: Course, Quiz, Course" msgid "%1$s ID or %2$s ID is required when not used within a %3$s." msgstr "" #. translators: placeholder: Course, Course. #: includes/gutenberg/blocks/ld-course-content/index.php:84 #: includes/gutenberg/blocks/ld-course-expire-status/index.php:115 #: includes/gutenberg/blocks/ld-course-progress/index.php:90 #: includes/gutenberg/blocks/ld-courseinfo/index.php:85 #: includes/gutenberg/blocks/ld-payment-buttons/index.php:76 msgctxt "placeholder: Course, Course" msgid "%1$s ID is required when not used within a %2$s." msgstr "" #. translators: placeholder: Course. #: includes/gutenberg/blocks/ld-course-content/index.php:94 #: includes/gutenberg/blocks/ld-course-expire-status/index.php:125 #: includes/gutenberg/blocks/ld-course-progress/index.php:100 #: includes/gutenberg/blocks/ld-courseinfo/index.php:95 #: includes/gutenberg/blocks/ld-payment-buttons/index.php:87 msgctxt "placeholder: Course" msgid "Invalid %1$s ID." msgstr "" #: includes/gutenberg/blocks/ld-course-info/index.php:170 msgid "Please enable one or more 'Show' options within the Block Settings." msgstr "" #. translators: placeholder: Course, Course. #: includes/gutenberg/blocks/ld-course-resume/index.php:102 msgctxt "placeholder: Course, QCourse" msgid "%1$s ID is required when not used within a %2$s." msgstr "" #. translators: placeholder: Course. #: includes/gutenberg/blocks/ld-payment-buttons/index.php:100 msgctxt "placeholder: Course" msgid "%s Price Type must be Free, PayNow or Subscribe." msgstr "" #. translators: placeholder: Quiz, Quiz. #: includes/gutenberg/blocks/ld-quiz-complete/index.php:95 msgctxt "placeholder: Quiz, Quiz" msgid "%1$s ID is required when not used within a %2$s." msgstr "" #: includes/gutenberg/lib/class-ld-rest-gutenberg-posts-controller.php:30 #: includes/rest-api/v1/class-ld-rest-courses-controller.php:27 #: includes/rest-api/v1/class-ld-rest-courses-enroll-controller.php:25 #: includes/rest-api/v1/class-ld-rest-courses-groups-controller.php:39 #: includes/rest-api/v1/class-ld-rest-courses-steps-controller.php:31 #: includes/rest-api/v1/class-ld-rest-courses-users-controller.php:35 #: includes/rest-api/v1/class-ld-rest-groups-controller.php:27 #: includes/rest-api/v1/class-ld-rest-groups-courses-controller.php:39 #: includes/rest-api/v1/class-ld-rest-groups-leaders-controller.php:33 #: includes/rest-api/v1/class-ld-rest-groups-users-controller.php:34 #: includes/rest-api/v1/class-ld-rest-lessons-controller.php:46 #: includes/rest-api/v1/class-ld-rest-quizzes-controller.php:27 #: includes/rest-api/v1/class-ld-rest-topics-controller.php:46 msgid "The password for the post if it is password protected." msgstr "" #: includes/gutenberg/lib/class-ld-rest-gutenberg-posts-controller.php:38 #: includes/rest-api/v1/class-ld-rest-courses-controller.php:58 #: includes/rest-api/v1/class-ld-rest-groups-controller.php:58 #: includes/rest-api/v1/class-ld-rest-lessons-controller.php:56 #: includes/rest-api/v1/class-ld-rest-topics-controller.php:56 msgid "Unique identifier for the object." msgstr "" #: includes/gutenberg/lib/class-ld-rest-gutenberg-posts-controller.php:62 #: includes/rest-api/v1/class-ld-rest-courses-controller.php:83 #: includes/rest-api/v1/class-ld-rest-groups-controller.php:83 #: includes/rest-api/v1/class-ld-rest-lessons-controller.php:80 #: includes/rest-api/v1/class-ld-rest-quizzes-controller.php:83 #: includes/rest-api/v1/class-ld-rest-topics-controller.php:80 msgid "Whether to bypass trash and force deletion." msgstr "" #: includes/gutenberg/lib/enqueue-scripts.php:242 #: includes/gutenberg/lib/enqueue-scripts.php:251 msgid "LearnDash LMS Blocks" msgstr "" #: includes/ld-assignment-uploads.php:81 msgid "Assignment successfully deleted." msgstr "" #: includes/ld-assignment-uploads.php:378 msgid "Assignment successfully uploaded." msgstr "" #: includes/ld-assignment-uploads.php:514 #: includes/quiz/ld-quiz-essays.php:1581 msgid "Unable to write to UPLOADS directory. Is this directory writable by the server?" msgstr "" #: includes/ld-assignment-uploads.php:543 #: includes/quiz/ld-quiz-essays.php:1612 msgid "Unable to write to directory. Is this directory writable by the server?" msgstr "" #: includes/ld-assignment-uploads.php:606 #: includes/ld-assignment-uploads.php:823 #: includes/ld-assignment-uploads.php:1129 #: includes/ld-assignment-uploads.php:1221 #: includes/quiz/ld-quiz-essays.php:471 msgid "Approve" msgstr "" #: includes/ld-assignment-uploads.php:1017 #: includes/ld-assignment-uploads.php:1292 msgid "Assignment" msgstr "" #: includes/ld-assignment-uploads.php:1082 msgctxt "Associate with a course." msgid "Associate with a %s." msgstr "" #: includes/ld-assignment-uploads.php:1112 #: includes/ld-assignment-uploads.php:1134 msgctxt "Associate with a lesson." msgid "Associate with a %s." msgstr "" #: includes/ld-assignment-uploads.php:1149 msgid "Update & Approve" msgstr "" #: includes/ld-assignment-uploads.php:1152 msgid "Awarded Points (Out of %d):" msgstr "" #: includes/ld-assignment-uploads.php:1157 msgid "Points not enabled" msgstr "" #: includes/ld-assignment-uploads.php:1161 msgid "Assignment Points." msgstr "" #: includes/ld-assignment-uploads.php:1179 msgid "Assignment download." msgstr "" #: includes/ld-assignment-uploads.php:1291 #: includes/ld-assignment-uploads.php:1300 #: themes/ld30/templates/assignment/listing.php:131 #: themes/ld30/templates/shortcodes/profile/assignments.php:7 msgid "Assignments" msgstr "" #: includes/ld-assignment-uploads.php:1293 msgid "Edit Assignment" msgstr "" #: includes/ld-assignment-uploads.php:1294 msgid "View Assignment" msgstr "" #: includes/ld-assignment-uploads.php:1295 msgid "View Assignments" msgstr "" #: includes/ld-assignment-uploads.php:1296 msgid "Search Assignments" msgstr "" #: includes/ld-assignment-uploads.php:1297 msgid "No assignment found" msgstr "" #: includes/ld-assignment-uploads.php:1298 msgid "No assignment found in Trash" msgstr "" #: includes/ld-assignment-uploads.php:1299 msgid "Parent:" msgstr "" #. translators: placeholdeR: points awarded values (30/100) 30%. #: includes/ld-assignment-uploads.php:1448 msgctxt "placeholder: points awarded values (30/100) 30%" msgid "Points Awarded: %s" msgstr "" #: includes/ld-assignment-uploads.php:1473 msgctxt "Assignment upload default value for points" msgid "Pending" msgstr "" #: includes/ld-assignment-uploads.php:1579 msgid "Uploaded file size exceeds allowed limit." msgstr "" #: includes/ld-assignment-uploads.php:1620 msgid "The uploaded file type is not allowed." msgstr "" #: includes/ld-assignment-uploads.php:1639 msgid "Number of allowed assignment uploads reached." msgstr "" #. translators: placeholders: Plugin name. Plugin update link. #: includes/ld-autoupdate.php:231 msgctxt "placeholders: Plugin name. Plugin update link." msgid "License of your plugin %1$s is invalid or incomplete. Please click %2$s and update your license." msgstr "" #: includes/ld-autoupdate.php:233 msgid "here" msgstr "" #: includes/ld-autoupdate.php:664 #: includes/settings/settings-pages/class-ld-settings-page-license.php:22 msgid "License Settings" msgstr "" #: includes/ld-autoupdate.php:670 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:405 msgid "Your license is valid." msgstr "" #. translators: placeholder: link to purchase LearnDash. #: includes/ld-autoupdate.php:680 msgctxt "placeholder: link to purchase LearnDash" msgid "Please enter a valid license or %s one now." msgstr "" #. translators: placeholder: link to purchase LearnDash. #. translators: placeholder: Link to purchase LearnDash. #: includes/ld-autoupdate.php:681 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:277 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:400 msgid "buy" msgstr "" #: includes/ld-autoupdate.php:689 msgid "Email:" msgstr "" #: includes/ld-autoupdate.php:702 msgid "License Key:" msgstr "" #: includes/ld-autoupdate.php:706 msgid "Update License" msgstr "" #: includes/ld-certificates.php:117 #: includes/ld-certificates.php:218 #: includes/quiz/ld-quiz-pro.php:1288 #: themes/legacy/templates/course.php:69 msgid "PRINT YOUR CERTIFICATE" msgstr "" #: includes/ld-certificates.php:281 msgid "LearnDash Certificate Options" msgstr "" #: includes/ld-certificates.php:311 msgid "Letter / USLetter (default)" msgstr "" #: includes/ld-certificates.php:312 msgid "A4" msgstr "" #: includes/ld-certificates.php:317 msgid "Landscape (default)" msgstr "" #: includes/ld-certificates.php:318 msgid "Portrait" msgstr "" #: includes/ld-certificates.php:324 msgid "PDF Page Size" msgstr "" #: includes/ld-certificates.php:339 msgid "PDF Page Orientation" msgstr "" #: includes/ld-certificates.php:406 msgid "" "Certificate published.

      \r\n" "\tTo view the certificate, you must assign it to a quiz or course.
      \r\n" "\tOnce you complete the assigned milestone, you can generate the certificate.

      \r\n" "\tClick here to read more about this topic: Previewing Certificates." msgstr "" #: includes/ld-certificates.php:411 msgid "" "Certificate updated.

      \r\n" "\tTo view the certificate, you must assign it to a quiz or course.
      \r\n" "\tOnce you complete the assigned milestone, you can generate the certificate.

      \t\r\n" "\tClick here to read more about this topic: Previewing Certificates." msgstr "" #: includes/ld-certificates.php:419 #: includes/ld-misc-functions.php:1276 msgid "Custom field updated." msgstr "" #: includes/ld-certificates.php:420 #: includes/ld-misc-functions.php:1277 msgid "Custom field deleted." msgstr "" #. translators: %s: date and time of the revision #: includes/ld-certificates.php:423 msgid "Certificate restored to revision from %s" msgstr "" #: includes/ld-certificates.php:425 msgid "Certificate saved." msgstr "" #: includes/ld-certificates.php:426 msgid "Certificate submitted." msgstr "" #: includes/ld-certificates.php:428 msgid "Certificate scheduled for: %1$s." msgstr "" #: includes/ld-certificates.php:432 msgid "Certificate draft updated." msgstr "" #: includes/ld-convert-post-pdf.php:106 msgid "Post does not exist." msgstr "" #: includes/ld-convert-post-pdf.php:616 msgid "Generating completed successfully.

      Post/Page title: " msgstr "" #: includes/ld-convert-post-pdf.php:616 msgid "
      Output path: " msgstr "" #: includes/ld-convert-post-pdf.php:616 msgid "

      Go back to " msgstr "" #: includes/ld-convert-post-pdf.php:616 msgid "the setting panel." msgstr "" #: includes/ld-convert-post-pdf.php:616 msgid "POST2PDF Converter" msgstr "" #: includes/ld-groups.php:101 msgid "Error: Email(s) not sent. Please try again or check with your hosting provider.
      wp_mail() returned %d.
      Error: %s
      " msgstr "" #: includes/ld-groups.php:107 msgid "Success: Email sent to %d group users." msgstr "" #: includes/ld-groups.php:114 msgid "Mail Args empty. Unepected condition from filter: ld_group_email_users_args" msgstr "" #: includes/ld-groups.php:121 msgid "No users in group." msgstr "" #: includes/ld-groups.php:142 #: includes/settings/shortcodes-sections/ld_group.php:9 msgid "Group" msgstr "" #: includes/ld-groups.php:144 msgid "Add New Group" msgstr "" #: includes/ld-groups.php:146 msgid "New Group" msgstr "" #: includes/ld-groups.php:148 msgid "Group Updated." msgstr "" #: includes/ld-groups.php:149 msgid "View Group" msgstr "" #: includes/ld-groups.php:150 msgid "View Groups" msgstr "" #: includes/ld-groups.php:151 msgid "Search Group" msgstr "" #: includes/ld-groups.php:152 msgid "No Group found" msgstr "" #: includes/ld-groups.php:153 msgid "No Group found in the Trash" msgstr "" #: includes/ld-groups.php:156 msgid "Group Published" msgstr "" #: includes/ld-groups.php:157 msgid "Group Published Privately" msgstr "" #: includes/ld-groups.php:158 msgid "Group Reverted to Draft" msgstr "" #: includes/ld-groups.php:159 msgid "Group Scheduled" msgstr "" #: includes/ld-groups.php:160 msgid "Group Updated" msgstr "" #: includes/ld-groups.php:189 msgid "Holds LearnDash user Groups" msgstr "" #: includes/ld-groups.php:351 #: includes/ld-groups.php:360 msgid "S. No." msgstr "" #: includes/ld-groups.php:355 #: includes/ld-groups.php:364 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:99 msgid "Action" msgstr "" #: includes/ld-groups.php:386 msgid "No users." msgstr "" #: includes/ld-misc-functions.php:404 #: includes/ld-misc-functions.php:414 #: includes/lib/paypal/enhanced-paypal-shortcodes.php:266 msgid "Complete Your Purchase" msgstr "" #: includes/ld-misc-functions.php:449 msgid "Use Paypal" msgstr "" #: includes/ld-misc-functions.php:1275 #: includes/ld-misc-functions.php:1278 msgctxt "placeholder: Post Type Singlular Label" msgid "%s updated." msgstr "" #. translators: %s: date and time of the revision #: includes/ld-misc-functions.php:1280 msgctxt "placeholder: Post Type Singular Label, Revision Title" msgid "%1$s restored to revision from %2$s." msgstr "" #: includes/ld-misc-functions.php:1281 msgctxt "placeholder: Post Type Singlular Label" msgid "%s published." msgstr "" #: includes/ld-misc-functions.php:1282 msgctxt "placeholder: Post Type Singlular Label" msgid "%s saved." msgstr "" #: includes/ld-misc-functions.php:1283 msgctxt "placeholder: Post Type Singlular Label" msgid "%s submitted." msgstr "" #: includes/ld-misc-functions.php:1284 msgctxt "placeholder: Post Type Singlular Label, scheduled date" msgid "%1$s scheduled for: %2$s." msgstr "" #: includes/ld-misc-functions.php:1285 msgctxt "placeholder: Post Type Singlular Label" msgid "%s draft updated." msgstr "" #: includes/ld-misc-functions.php:1571 #: themes/ld30/includes/shortcodes.php:38 #: themes/ld30/includes/shortcodes.php:85 #: themes/ld30/templates/focus/masthead.php:176 #: includes/gutenberg/blocks/ld-login/index.js:236 msgid "Logout" msgstr "" #: includes/ld-misc-functions.php:1583 #: themes/ld30/includes/shortcodes.php:31 #: themes/ld30/includes/shortcodes.php:152 #: themes/ld30/templates/modules/infobar/course.php:199 #: themes/ld30/templates/modules/login-modal.php:39 #: includes/gutenberg/blocks/ld-login/index.js:232 msgid "Login" msgstr "" #: includes/ld-users.php:966 #: includes/gutenberg/blocks/ld-usermeta/index.js:75 msgid "User Login" msgstr "" #: includes/ld-users.php:967 #: includes/gutenberg/blocks/ld-usermeta/index.js:79 msgid "User Display Name" msgstr "" #: includes/ld-users.php:968 #: includes/gutenberg/blocks/ld-usermeta/index.js:83 msgid "User Nicename" msgstr "" #: includes/ld-users.php:969 #: includes/gutenberg/blocks/ld-usermeta/index.js:87 msgid "User First Name" msgstr "" #: includes/ld-users.php:970 #: includes/gutenberg/blocks/ld-usermeta/index.js:91 msgid "User Last Name" msgstr "" #: includes/ld-users.php:971 #: includes/gutenberg/blocks/ld-usermeta/index.js:95 msgid "User Nickname" msgstr "" #: includes/ld-users.php:972 #: includes/gutenberg/blocks/ld-usermeta/index.js:99 msgid "User Email" msgstr "" #: includes/ld-users.php:973 #: includes/gutenberg/blocks/ld-usermeta/index.js:103 msgid "User URL" msgstr "" #: includes/ld-users.php:974 #: includes/gutenberg/blocks/ld-usermeta/index.js:107 msgid "User Description" msgstr "" #: includes/lib/paypal/enhanced-paypal-shortcodes.php:543 #: includes/lib/paypal/enhanced-paypal-shortcodes.php:737 msgid "PayPal - The safer, easier way to pay online." msgstr "" #: includes/lib/tcpdf/config/tcpdf_config.php:41 msgid "You are not allowed to access this file." msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:122 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Toplist.php:185 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Toplist.php:204 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Toplist.php:249 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Toplist.php:253 msgid "An error has occurred." msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:174 msgctxt "Do you really want to delete the quiz/question?" msgid "Do you really want to delete the %s/question?" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:175 msgid "Title is not filled!" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:176 msgid "No question deposited!" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:177 msgid "Correct answer was not selected!" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:178 msgid "No answer deposited!" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:179 msgctxt "No quiz description filled!" msgid "No %s description filled!" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:180 msgid "The percent values in result text are incorrect." msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:181 msgid "No number in the field \"Points\" or less than 1" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:182 msgid "No number in the field \"Points\" or less than 0" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:183 msgctxt "No quiz selected" msgid "No %s selected" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:184 msgid "Do you really want to reset the statistic?" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:185 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontToplist.php:26 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionOverall.php:107 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizOverall.php:135 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:37 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:782 msgid "No data available" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:186 msgid "No sort element in the criterion" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:187 msgid "\"Different points for every answer\" is not possible at \"Free\" choice" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:188 msgid "You must specify a name." msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:189 msgid "This entry should really be deleted?" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:190 msgid "Not all fields completed." msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:191 msgid "You must specify a template name." msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:192 msgid "Cannot delete only answer" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:195 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:180 #: includes/quiz/ld-quiz-pro.php:1511 msgid "Close" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:196 msgid "Today" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.php:228 msgctxt "Advanced Quiz" msgid "Advanced %s" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Front.php:58 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Front.php:89 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Preview.php:17 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:47 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:511 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionOverall.php:140 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:46 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:72 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:148 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:186 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:232 #: includes/quiz/ld-quiz-pro.php:1517 msgid "Loading" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Front.php:59 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Front.php:90 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Preview.php:18 msgid "You must answer this question." msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Front.php:60 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Front.php:91 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Preview.php:19 msgctxt "You must answer all questions before you can complete the quiz." msgid "You must answer all questions before you can complete the %s." msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Front.php:61 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Front.php:92 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Preview.php:20 msgid "All fields have to be filled." msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_ImportExport.php:92 #: includes/lib/wp-pro-quiz/lib/helper/WpProQuiz_Helper_Import.php:61 #: includes/lib/wp-pro-quiz/lib/helper/WpProQuiz_Helper_Import.php:70 #: includes/lib/wp-pro-quiz/lib/helper/WpProQuiz_Helper_Import.php:77 msgid "File cannot be processed" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Question.php:10 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Question.php:21 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Quiz.php:81 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Quiz.php:221 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Quiz.php:649 msgctxt "Quiz not found" msgid "%s not found" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Question.php:67 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Question.php:71 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Question.php:204 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Question.php:283 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Question.php:298 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Question.php:371 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Question.php:543 msgid "You do not have sufficient permissions to access this page." msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Question.php:81 msgid "Question not found" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Question.php:104 msgid "Click here to add another question." msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Question.php:127 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Question.php:311 msgid "Edit question" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Question.php:127 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Question.php:385 msgid "New question" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Question.php:173 msgctxt "placeholder: question count" msgid "Question: %d" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Question.php:339 msgid "Question: %d" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Quiz.php:181 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Quiz.php:388 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Quiz.php:642 msgctxt "Edit quiz" msgid "Edit %s" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Quiz.php:181 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Quiz.php:388 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Quiz.php:720 msgctxt "Create quiz" msgid "Create %s" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Quiz.php:1262 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_QuizCompleted.php:249 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1276 msgid "Not categorized" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Statistics.php:576 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Statistics.php:627 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Statistics.php:809 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:791 msgid "Anonymous" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Statistics.php:629 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Statistics.php:817 msgid "Deleted user" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Statistics.php:785 #: includes/quiz/ld-quiz-essays.php:828 msgid "Graded" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Statistics.php:788 msgid "Ungraded" msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Toplist.php:84 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Toplist.php:284 msgid "No name or e-mail entered." msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Toplist.php:177 msgid "You signed up successfully." msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Toplist.php:271 #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Toplist.php:280 msgid "You can not enter again." msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Toplist.php:288 msgid "Your name can not exceed 15 characters." msgstr "" #: includes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Toplist.php:296 msgid "You entered wrong captcha code." msgstr "" #: includes/lib/wp-pro-quiz/lib/helper/WpProQuiz_Helper_Import.php:11 #: includes/lib/wp-pro-quiz/lib/helper/WpProQuiz_Helper_ImportXml.php:9 msgid "File was not uploaded" msgstr "" #: includes/lib/wp-pro-quiz/lib/helper/WpProQuiz_Helper_Import.php:42 msgid "File have wrong format" msgstr "" #: includes/lib/wp-pro-quiz/lib/helper/WpProQuiz_Helper_Import.php:47 msgid "File is not compatible with the current version" msgstr "" #: includes/lib/wp-pro-quiz/lib/helper/WpProQuiz_Helper_ImportXml.php:32 #: includes/lib/wp-pro-quiz/lib/helper/WpProQuiz_Helper_ImportXml.php:45 msgid "XML could not be loaded." msgstr "" #: includes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_Form.php:96 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:731 msgid "ticked" msgstr "" #: includes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_Form.php:96 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:731 msgid "not ticked" msgstr "" #: includes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_Form.php:100 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:724 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:734 #: includes/quiz/ld-quiz-info-shortcode.php:110 #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:160 #: includes/settings/settings-sections/class-ld-settings-section-permalinks.php:201 #: includes/settings/settings-sections/class-ld-settings-section-questions-taxonomies.php:192 #: includes/settings/settings-sections/class-ld-settings-section-support-database-tables.php:107 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:142 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:344 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:354 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:361 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:372 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:383 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:389 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:437 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:449 #: includes/settings/settings-sections/class-ld-settings-section-support-server.php:170 #: includes/settings/settings-sections/class-ld-settings-section-support-server.php:217 #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress.php:100 #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress.php:110 #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress.php:126 #: includes/settings/shortcodes-sections/ld_course_list.php:154 #: includes/settings/shortcodes-sections/ld_course_list.php:209 #: includes/settings/shortcodes-sections/ld_lesson_list.php:152 #: includes/settings/shortcodes-sections/ld_lesson_list.php:207 #: includes/settings/shortcodes-sections/ld_profile.php:68 #: includes/settings/shortcodes-sections/ld_profile.php:84 #: includes/settings/shortcodes-sections/ld_profile.php:98 #: includes/settings/shortcodes-sections/ld_profile.php:110 #: includes/settings/shortcodes-sections/ld_profile.php:122 #: includes/settings/shortcodes-sections/ld_profile.php:138 #: includes/settings/shortcodes-sections/ld_quiz_list.php:194 #: includes/settings/shortcodes-sections/ld_quiz_list.php:248 #: includes/settings/shortcodes-sections/ld_topic_list.php:162 #: includes/settings/shortcodes-sections/ld_topic_list.php:218 #: includes/gutenberg/blocks/ld-course-resume/index.js:111 msgid "Yes" msgstr "" #: includes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_GlobalSettingsMapper.php:67 #: includes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_GlobalSettingsMapper.php:99 msgctxt "LearnDash Quiz: One user completed a quiz" msgid "LearnDash %1$s: One user completed a %2$s" msgstr "" #: includes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_GlobalSettingsMapper.php:69 msgctxt "placeholders: Quiz, quiz" msgid "" "LearnDash %s\n" "\n" "The user \"$username\" has completed \"$quizname\" the %s.\n" "\n" "Points: $points\n" "Result: $result\n" "\n" "" msgstr "" #: includes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_GlobalSettingsMapper.php:101 msgctxt "placeholders: Quiz, quiz" msgid "" "LearnDash %s\n" "\t\t\t\n" "You have completed the %s \"$quizname\".\n" "\n" "Points: $points\n" "Result: $result\n" "\n" "" msgstr "" #: includes/lib/wp-pro-quiz/lib/plugin/WpProQuiz_Plugin_BpAchievementsV2.php:33 #: includes/lib/wp-pro-quiz/lib/plugin/WpProQuiz_Plugin_BpAchievementsV3.php:6 msgctxt "The user completed a quiz." msgid "The user completed a %s." msgstr "" #: includes/lib/wp-pro-quiz/lib/plugin/WpProQuiz_Plugin_BpAchievementsV3.php:7 msgctxt "The user completed a quiz with 100 percent." msgid "The user completed a %s with 100 percent." msgstr "" #: includes/lib/wp-pro-quiz/lib/plugin/WpProQuiz_Plugin_BpAchievementsV3.php:18 msgctxt "A powerful and beautiful quiz plugin for WordPress." msgid "A powerful and beautiful %s plugin for WordPress." msgstr "" #: includes/lib/wp-pro-quiz/lib/plugin/WpProQuiz_Plugin_BpAchievementsV3.php:21 msgid "WP-Pro-Quiz" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:16 msgid "Sort by:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:18 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:936 msgid "best user" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:19 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:940 msgid "newest entry" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:20 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:944 msgid "oldest entry" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:26 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:220 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:303 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:119 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:211 msgid "How many entries should be shown on one page:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:38 msgid "UR = unregistered user, R = registered user" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:55 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:239 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:770 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:106 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:666 msgid "User" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:56 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:523 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:524 msgid "E-Mail" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:58 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontToplist.php:16 msgid "Entered on" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:60 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1097 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1122 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:111 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:245 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:324 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:31 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:126 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:776 msgid "Results" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:75 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:100 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:139 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:170 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:203 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionOverall.php:80 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1208 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:47 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:816 #: includes/settings/settings-sections/class-ld-settings-section-questions-management-display.php:102 #: includes/settings/settings-sections/class-ld-settings-section-questions-taxonomies.php:216 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:412 msgid "Delete" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:80 msgid "save" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:81 msgid "cancel" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:102 msgid "Apply" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.php:103 msgid "Delete all entries" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:238 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:372 msgid "Uploading" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:246 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:380 msgid "Success" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:254 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:389 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:828 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1081 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:2016 msgctxt "Quiz Summary" msgid "%s Summary" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:261 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:396 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:879 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:908 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:2028 msgctxt "Finish Quiz Button Label" msgid "Finish %s" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:503 msgid "Would you like to submit your quiz result to the leaderboard?" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:532 msgid "Captcha" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:639 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:738 msgid "You must fill out this field." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:642 msgid "You must specify a number." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:643 msgid "You must specify a text." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:644 msgid "You must specify an email address." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:645 msgid "You must specify a date." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:766 msgctxt "You have already completed the quiz before. Hence you can not start it again." msgid "You have already completed the %s before. Hence you can not start it again." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:788 msgctxt "You must sign in or sign up to start the quiz." msgid "You must sign in or sign up to start the %s." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:811 msgid "You must first complete the following:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:843 msgctxt "placeholders: quiz count completed, quiz count total" msgid "%1$s of %2$s questions completed" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:865 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:890 msgid "Information" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:936 msgctxt "Start Quiz Button Label" msgid "Start %s" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:979 msgctxt "Start Quiz Statistics Button Label" msgid "View %s Statistics" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1009 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:126 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:131 msgid "Time limit" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1040 msgid "Answered" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1053 msgid "Review" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1069 msgid "Review question" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1107 msgctxt "Quiz complete. Results are being recorded." msgid "%s complete. Results are being recorded." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1131 msgctxt "placeholder: correct answer, question count" msgid "%1$s of %2$s questions answered correctly" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1146 msgctxt "placeholder: quiz time." msgid "Your time: %s" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1160 msgid "Time has elapsed" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1174 msgctxt "placeholder: points earned, points total" msgid "You have reached %1$s of %2$s point(s), (%3$s)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1187 msgctxt "placeholder: points earned, points total, points percentage" msgid "Earned Point(s): %1$s of %2$s, (%3$s)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1198 msgctxt "placeholder: number of essays, possible points " msgid "%1$s Essay(s) Pending (Possible Point(s): %2$s)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1224 msgid "Average score" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1240 msgid "Your score" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1330 msgctxt "Restart Quiz Button Label" msgid "Restart %s" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1343 msgctxt "View Questions Button Label" msgid "View %s" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1356 msgid "Show leaderboard" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1433 msgctxt "placeholder: question number, questions total" msgid "Question %1$s of %2$s" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1462 msgctxt "placeholder: total quiz points" msgid "%s point(s)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1479 msgctxt "placeholder: Quiz Category" msgid "Category: %s" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1513 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:354 msgid "Sort elements" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1717 msgid "Type your response here" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1729 msgid "Upload your answer to this question." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1736 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:512 #: themes/ld30/templates/assignment/upload.php:100 #: themes/legacy/templates/learndash_lesson_assignment_upload_form.php:60 msgid "Upload" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1742 msgid "Essay type not found" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1753 msgid "This response will be awarded full points automatically, but it can be reviewed and adjusted after submission." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1764 msgid "This response will be awarded full points automatically, but it will be reviewed and possibly adjusted after submission." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1775 msgid "This response will be reviewed and graded after submission." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1826 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1880 msgid "Grading can be reviewed and adjusted." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1855 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1892 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:107 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:242 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:29 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:122 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:773 msgid "Incorrect" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1930 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:414 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:419 msgid "Skip question" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1972 msgid "Check" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:1985 msgid "Next" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:2003 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:2006 msgid "Page %d" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.php:2050 msgctxt "quiz is loading... Label" msgid "%s is loading..." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontToplist.php:11 msgid "maximum of %s points" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontToplist.php:14 msgid "Pos." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontToplist.php:18 msgid "Result" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontToplist.php:23 msgid "Table is loading" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:7 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:12 msgctxt "Quiz Options" msgid "%s Options" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:9 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:29 msgid "back to overview" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:13 msgid "E-Mail settings" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:14 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:427 msgid "Settings in case of problems" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:42 msgid "Global settings" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:48 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:53 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:376 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:377 msgid "Leaderboard time format" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:79 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:113 msgid "Documentation on date and time formatting" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:87 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:92 msgid "Statistic time format" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:96 msgid "Select example:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:109 msgid "Time format:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:122 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:127 msgid "Question Category management" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:130 msgid "Select Question Category" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:139 msgid "Delete selected Question Category" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:140 msgid "Save changed to selected Question Category" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:140 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:171 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:204 #: includes/settings/class-ld-settings-pages.php:400 msgid "Save Changes" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:142 msgid "Question Category Saved" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:143 msgid "Question Category Deleted" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:152 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:157 msgctxt "Quiz template management" msgid "%s template management" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:160 msgctxt "Select Quiz template" msgid "Select %s template" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:170 msgctxt "Delete selected Quiz template" msgid "Delete selected %s template" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:171 msgctxt "Save changed to selected Quiz template" msgid "Save changed to selected %s template" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:173 msgctxt "Quiz template Saved" msgid "%s template Saved" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:174 msgctxt "Quiz template Deleted" msgid "%s template Deleted" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:184 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:189 msgid "Question template management" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:192 msgid "Select Question template" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:203 msgid "Delete selected Question template" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:204 msgid "Save changed to selected Question template" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:206 msgid "Question template Saved" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:207 msgid "Question template Deleted" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:224 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:552 msgid "Admin e-mail settings" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:230 msgid "To:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:237 msgid "Separate multiple email addresses with a comma, e.g. wp@test.com, test@test.com" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:243 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:331 msgid "From Name:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:249 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:338 msgid "This is the email name of the sender. If not provided will default to the system email name." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:254 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:344 msgid "From Email:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:259 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:349 msgid "The value entered is not a valid email address" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:266 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:356 msgid "This is the email address of the sender. If not provided the admin email (%s) will be used." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:272 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:362 msgid "Subject:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:282 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:372 msgid "HTML" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:286 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:376 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:442 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:464 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:511 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:27 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:46 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:65 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:84 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:100 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:116 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:171 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:210 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:233 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:291 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:320 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:381 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:472 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:494 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:513 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:592 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:611 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:630 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:649 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:668 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:698 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:717 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:736 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:774 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:794 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:813 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:832 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:861 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:894 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:908 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:956 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1032 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1033 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1034 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1035 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1117 msgid "Activate" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:292 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:382 msgid "Message body:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:300 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:390 msgid "Allowed variables" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:302 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:392 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:166 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:223 msgid "User-ID" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:304 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:394 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:168 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:225 msgid "Quiz-Name" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:305 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:395 msgid "Result in precent" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:306 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:396 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:170 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:227 msgid "Reached points" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:307 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:397 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:171 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:228 msgid "IP-address of the user" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:308 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:398 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:172 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:229 msgid "Category-Overview" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:325 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:553 msgid "User e-mail settings" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:413 msgid "to activate" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:415 msgid "not to activate" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:421 msgid "Please note" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:423 msgid "These settings should only be set in cases of problems with LD Advanced Quiz." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:433 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:438 msgid "Automatically add [raw] shortcode" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:442 msgid "It is recommended %s this option on your system." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:445 msgid "If this option is activated, a [raw] shortcode is automatically set around LDAdvQuiz shortcode ( [LDAdvQuiz X] ) into [raw] [LDAdvQuiz X] [/raw]" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:448 msgid "Own themes changes internal order of filters, what causes the problems. With additional shortcode [raw] this is prevented." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:455 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:460 msgid "Do not load the Javascript-files in the footer" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:467 msgid "Generally all LDAdvQuiz-Javascript files are loaded in the footer and only when they are really needed." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:470 msgid "In very old Wordpress themes this can lead to problems." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:473 msgid "If you activate this option, all LDAdvQuiz-Javascript files are loaded in the header even if they are not needed." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:480 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:485 msgid "Touch Library" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:489 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:404 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:423 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:442 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:755 msgid "Deactivate" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:492 msgid "In Version 0.13 a new Touch Library was added for mobile devices." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:495 msgid "If you have any problems with the Touch Library, please deactivate it." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:502 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:507 msgid "jQuery support cors" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:514 msgid "Is required only in rare cases." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:517 msgid "If you have problems with the front ajax, please activate it." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:520 msgid "e.g. Domain with special characters in combination with IE" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:527 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:532 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:534 msgid "Repair database" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.php:536 msgid "No data will be deleted. Only LDAdvQuiz tables will be repaired." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Import.php:21 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizOverall.php:164 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizOverall.php:186 msgid "Import" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Import.php:25 msgid "Error" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Import.php:32 msgid "Successfully" msgstr "" #. translators: placeholder: Quiz Title. #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Import.php:40 msgctxt "placeholder: Quiz Title" msgid "%s" msgstr "" #. translators: placeholder: link to Imported Quiz #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Import.php:48 msgctxt "placeholder: link to Imported Quiz." msgid "Import completed successfully: %s" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Import.php:72 msgctxt "Quiz name" msgid "%s name" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Import.php:98 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizOverall.php:197 msgid "Start import" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:24 msgid "Return to Questions Overview" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:43 msgctxt "placeholders: quiz" msgid "The title is used for overview, it is not visible in %s. If you leave the title field empty, a title will be generated." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:80 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionOverall.php:43 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:124 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:138 msgid "Category" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:118 msgid "Message with the correct / incorrect answer" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:120 msgctxt "Deactivated in quiz settings." msgid "Deactivated in %s settings." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:181 #: sfwd_lms.php:558 msgid "Single choice" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:185 #: sfwd_lms.php:559 msgid "Multiple choice" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:189 #: sfwd_lms.php:560 msgid "\"Free\" choice" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:193 #: sfwd_lms.php:561 msgid "\"Sorting\" choice" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:197 #: sfwd_lms.php:562 msgid "\"Matrix Sorting\" choice" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:201 #: sfwd_lms.php:563 msgid "Fill in the blank" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:205 #: sfwd_lms.php:564 msgid "Assessment" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:209 #: sfwd_lms.php:565 msgid "Essay / Open Answer" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:273 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:557 msgid "template name" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:283 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:567 msgid "Save as template" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:302 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:352 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:405 msgid "Options" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:303 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:406 msgid "Answer" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:335 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:390 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:432 msgid "Delete answer" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:336 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:391 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:433 msgid "Add Media" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:353 msgid "Criterion" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:445 msgid "correct answers (one per line) (answers will be converted to lower case)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:458 msgid "Enclose the searched words with { } e.g. \"I {play} soccer\". Capital and small letters will be ignored." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:461 msgid "You can specify multiple options for a search word. Enclose the word with [ ] e.g. \"I {[play][love][hate]} soccer\" . In this case answers play, love OR hate are correct." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:464 msgid "If mode \"Different points for every answer\" is activated, you can assign points with |POINTS. Otherwise 1 point will be awarded for every answer." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:467 msgid "e.g. \"I {play} soccer, with a {ball|3}\" - \"play\" gives 1 point and \"ball\" 3 points." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:479 msgid "Here you can create an assessment question." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:482 msgid "Enclose a assesment with {}. The individual assessments are marked with []." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:484 msgid "The number of options in the maximum score." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:487 msgid "Examples:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:489 msgid "less true { [1] [2] [3] [4] [5] } more true" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:493 msgid "less true { [a] [b] [c] } more true" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:511 msgid "Text Box" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:521 msgid "-- Select --" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:522 msgid "Not Graded, No Points Awarded" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:523 msgid "Not Graded, Full Points Awarded" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.php:524 msgid "Graded, Full Points Awarded" msgstr "" #. translators: placeholder: Questions. #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionOverall.php:21 msgctxt "placeholder: Questions" msgid "%s sorted" msgstr "" #. translators: placeholder: Question. #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionOverall.php:31 msgctxt "placeholder: Question" msgid "Add %s" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionOverall.php:116 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:169 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:298 msgid "Total" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionOverall.php:126 msgid "Add question" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionOverall.php:127 msgid "Save order" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionOverall.php:128 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionOverall.php:135 msgctxt "Copy questions from another Quiz" msgid "Copy questions from another %s" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionOverall.php:136 msgctxt "placeholders: quiz, quiz" msgid "Here you can copy questions from another %s into this %s. (Multiple selection enabled)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionOverall.php:148 msgid "Copy questions" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:18 msgctxt "Hide quiz title" msgid "Hide %s title" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:23 msgid "Hide title" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:30 msgctxt "The title serves as quiz heading." msgid "The title serves as %s heading." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:37 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:42 msgctxt "Hide \"Restart quiz\" button" msgid "Hide \"Restart %s\" button" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:49 msgctxt "Hide the \"Restart quiz\" button in the Frontend." msgid "Hide the \"Restart %s\" button in the Frontend." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:56 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:61 msgid "Hide \"View question\" button" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:68 msgid "Hide the \"View question\" button in the Frontend." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:75 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:80 msgid "Display question randomly" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:91 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:96 msgid "Display answers randomly" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:107 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:112 msgid "Sort questions by category" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:119 msgid "Also works in conjunction with the \"display randomly question\" option." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:134 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:152 #: includes/settings/settings-fields/class-ld-settings-fields-timer-entry.php:58 msgid "Seconds" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:137 msgid "0 = no limit" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:144 msgctxt "Protect Quiz Answers in Browser Cookie" msgid "Protect %s Answers in Browser Cookie" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:149 msgctxt "Use cookies for Quiz Answers" msgid "Use cookies for %s Answers" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:155 msgctxt "placeholders: Quiz" msgid "0 = Don't save answers. This option will save the user's answers into a browser cookie until the %s is submitted." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:174 msgctxt "placeholders: quiz" msgid "Statistics about right or wrong answers. Statistics will be saved by completed %s, not after every question. The statistics is only visible over administration menu. (internal statistics)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:181 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:186 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:623 msgid "Statistics IP-lock" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:190 msgid "in minutes (recommended 1440 minutes = 1 day)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:193 msgid "Protect the statistics from spam. Result will only be saved every X minutes from same IP. (0 = deactivated)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:201 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:206 msgid "View Profile Statistics" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:213 msgctxt "placeholders: quiz" msgid "Enable user to view statistics for this %s on their profile." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:222 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:228 msgctxt "Execute quiz only once" msgid "Execute %s only once" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:236 msgctxt "placeholders: quiz, quiz" msgid "If you activate this option, the user can complete the %1$s only once. Afterwards the %2$s is blocked for this user." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:240 msgid "This option applies to:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:248 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:872 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:101 msgid "all users" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:252 msgid "registered useres only" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:256 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:880 msgid "anonymous users only" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:262 msgid "user identification by cookie" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:265 msgid "If you activate this option, a cookie is set additionally for unregistrated (anonymous) users. This ensures a longer assignment of the user than the simple assignment by the IP address." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:270 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:340 msgid "Reset the user identification" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:271 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:340 msgid "User identification has been reset." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:273 msgid "Resets user identification for all users." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:282 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:287 msgid "Show only specific number of questions" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:294 msgid "If you enable this option, maximum number of displayed questions will be X from X questions. (The output of questions is random)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:298 msgid "How many questions should be displayed simultaneously:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:303 msgid "in percent" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:311 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:316 msgid "Prerequisites" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:323 msgctxt "placeholders: quiz, quiz" msgid "If you enable this option, you can choose %1$s, which user have to finish before he can start this %2$s." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:326 msgctxt "placeholders: quizzes" msgid "In all selected %s statistic function have to be active. If it is not it will be activated automatically." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:331 msgctxt "Quiz" msgid "%s" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:333 msgctxt "Prerequisites (This quiz has to be finished)" msgid "Prerequisites (This %s has to be finished)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:372 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:377 msgid "Question overview" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:384 msgid "Add at the top of the quiz a question overview, which allows easy navigation. Additional questions can be marked \"to review\"." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:387 msgctxt "placeholders: quiz, quiz" msgid "Additional %s overview will be displayed, before %s is finished." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:395 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:400 msgctxt "Quiz-summary" msgid "%s-summary" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:407 msgctxt "placeholders: quiz, quiz" msgid "If you enable this option, no %1$s overview will be displayed, before finishing %2$s." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:426 msgid "If you enable this option, user won't be able to skip question. (only in \"Overview -> next\" mode). User still will be able to navigate over \"Question-Overview\"" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:433 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:438 msgid "Admin e-mail notification" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:446 msgid "for registered users only" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:450 msgid "for all users" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:453 msgctxt "placeholders: quiz" msgid "If you enable this option, you will be informed if a user completes this %s." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:456 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:478 msgid "E-Mail settings can be edited in global settings." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:463 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:468 msgid "User e-mail notification" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:475 msgctxt "placeholders: quiz" msgid "If you enable this option, an email is sent with his %s result to the user. (only registered users)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:485 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:490 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:435 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:430 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:427 msgid "Autostart" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:497 msgctxt "placeholders: quiz" msgid "If you enable this option, the %s will start automatically after the page is loaded." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:504 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:509 msgctxt "placeholders: quiz" msgid "Only registered users are allowed to start the %s" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:516 msgctxt "placeholders: quiz" msgid "If you enable this option, only registered users allowed start the %s." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:542 msgid "Select Template" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:583 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:588 msgid "Show average points" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:595 msgid "Statistics-function must be enabled." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:602 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:607 msgid "Show category score" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:614 msgid "If you enable this option, the results of each category is displayed on the results page." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:621 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:626 msgid "Hide correct questions - display" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:633 msgid "If you select this option, no longer the number of correctly answered questions are displayed on the results page." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:640 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:645 msgctxt "Hide quiz time - display" msgid "Hide %s time - display" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:652 msgctxt "placeholders: quiz" msgid "If you enable this option, the time for finishing the %s won't be displayed on the results page anymore." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:659 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:664 msgid "Hide score - display" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:671 msgid "If you enable this option, final score won't be displayed on the results page anymore." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:689 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:694 msgid "Show points" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:701 msgctxt "placeholders: quiz" msgid "Shows in %s, how many points are reachable for respective question." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:708 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:713 msgid "Number answers" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:720 msgid "If this option is activated, all answers are numbered (only single and multiple choice)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:727 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:732 msgid "Hide correct- and incorrect message" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:739 msgid "If you enable this option, no correct- or incorrect message will be displayed." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:746 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:751 msgid "Correct and incorrect answer mark" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:758 msgid "If you enable this option, answers won't be color highlighted as correct or incorrect. " msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:765 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:770 msgid "Force user to answer each question" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:777 msgid "If you enable this option, the user is forced to answer each question." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:778 msgid "If the option \"Question overview\" is activated, this notification will appear after end of the quiz, otherwise after each question." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:785 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:790 msgid "Hide question position overview" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:797 msgid "If you enable this option, the question position overview is hidden." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:804 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:809 msgid "Hide question numbering" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:816 msgid "If you enable this option, the question numbering is hidden." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:823 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:828 msgid "Display category" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:835 msgid "If you enable this option, category will be displayed in the question." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:850 msgid "The leaderboard allows users to enter results in public list and to share the result this way." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:851 msgid "The leaderboard works independent from internal statistics function." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:867 msgid "Who can sign up to the list" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:876 msgid "registered users only" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:883 msgid "Not registered users have to enter name and e-mail (e-mail won't be displayed)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:889 msgid "insert automatically" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:897 msgid "If you enable this option, logged in users will be automatically entered into leaderboard" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:903 msgid "display captcha" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:911 msgid "If you enable this option, additional captcha will be displayed for users who are not registered." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:914 msgid "This option requires additional plugin:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:919 msgid "Plugin has been detected." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:923 msgid "Plugin is not installed." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:931 msgid "Sort list by" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:950 msgid "Users can apply multiple times" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:961 msgid "User can apply after:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:963 msgid "minute" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:970 msgid "How many entries should be displayed" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:976 msgid "Entries" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:983 msgctxt "Automatically display leaderboard in quiz result" msgid "Automatically display leaderboard in %s result" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:987 msgid "Where should leaderboard be displayed:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:990 msgid "don't display" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:994 msgid "below the \"result text\"" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:999 msgid "in a button" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1024 msgid "Normal" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1025 msgid "Normal + Back-Button" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1026 msgid "Check -> continue" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1027 msgid "Questions below each other" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1039 msgctxt "placeholders: quiz" msgid "Displays all questions sequentially, \"right\" or \"false\" will be displayed at the end of the %s." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1042 msgid "Allows to use the back button in a question." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1045 msgid "Shows \"right or wrong\" after each question." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1048 msgid "If this option is activated, all answers are displayed below each other, i.e. all questions are on a single page." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1070 msgid "How many questions to be displayed on a page:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1073 msgid "(0 = All on one page)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1098 msgid "You can create custom fields, e.g. to request the name or the e-mail address of the users." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1101 msgid "The statistic function have to be enabled." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1108 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1113 msgid "Custom fields enable" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1120 msgid "If you enable this option, custom fields are enabled." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1127 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1132 msgid "Display position" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1134 msgid "Where should the fields be displayed:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1137 msgctxt "On the quiz startpage" msgid "On the %s startpage" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1144 msgctxt "At the end of the quiz (before the quiz result)" msgid "At the end of the %s (before the %s result)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1160 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-custom-fields.php:56 msgid "Field name" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1162 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-custom-fields.php:58 msgid "Required?" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1182 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-custom-fields.php:86 msgid "Text" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1183 msgid "TextArea" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1184 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-custom-fields.php:90 msgid "Checkbox" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1185 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-custom-fields.php:92 msgid "Drop-Down menu" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1186 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-custom-fields.php:94 msgid "Radio" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1187 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-custom-fields.php:96 msgid "Number" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1189 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-custom-fields.php:100 msgid "Yes/No" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1193 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-custom-fields.php:105 msgid "Edit list" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1196 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-custom-fields.php:108 msgid "One entry per line" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1201 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-custom-fields.php:120 msgid "OK" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1220 #: includes/settings/settings-fields/class-ld-settings-fields-quiz-custom-fields.php:150 msgid "Add field" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1231 msgid "Results text" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1234 msgctxt "placeholders: quiz" msgid "This text will be displayed at the end of the %s (in results). (this text is optional)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1238 msgid "Activate graduation" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1244 msgid "Hint:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1246 msgid "Maximal 15 levels" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1248 msgctxt "placeholders: quiz, question points, question count" msgid "Percentages refer to the total score of the %1$s. (Current total %2d points in %3$d questions.)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1250 msgid "Values can also be mixed up" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1251 msgid "10,15% or 10.15% allowed (max. two digits after the decimal point)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1267 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1278 msgid "from:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1267 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1278 msgid "percent" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1267 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1278 msgid "(Will be displayed, when result-percent is >= %s%%)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1268 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1279 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:559 msgid "Delete graduation" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.php:1286 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:581 msgid "Add graduation" msgstr "" #. translators: placeholder: Quiz. #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizOverall.php:39 msgctxt "placeholder: Quiz" msgid "%s Import/Export" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizOverall.php:172 msgid "Choose the respective Quiz, which you would like to export and press on \"Start export\"" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizOverall.php:176 msgid "Format:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizOverall.php:177 msgid "*.wpq" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizOverall.php:178 #: themes/ld30/templates/modules/infobar/course.php:197 msgid "or" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizOverall.php:179 msgid "*.xml" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizOverall.php:181 msgid "Start export" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizOverall.php:187 msgid "Import only *.wpq or *.xml files from known and trusted sources." msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizOverall.php:195 msgid "Maximal %d MiB" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:28 msgctxt "placeholders: Quiz, Quiz Name/Title" msgid "%1$s: %2$s - Statistics" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:33 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:60 msgid "Stats not enabled" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:34 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:61 msgid "Activate statistics" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:39 msgid "Users" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:41 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:364 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:705 msgid "Custom fields" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:68 msgid "Please select user name:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:72 msgid "Select a test:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:82 msgid "Anonymous user" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:91 msgid "average" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:108 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:243 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:123 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:774 msgid "Hints used" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:109 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:244 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:124 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:775 msgid "Time" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:110 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:125 msgid "Points scored" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:148 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:266 msgid "Sub-Total: " msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:183 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:268 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:343 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:312 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:162 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:246 #: includes/settings/settings-sections/class-ld-settings-section-translations-refresh.php:58 msgid "Refresh" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:187 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:316 msgid "Reset statistics" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:188 msgid "Reset user statistics" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:189 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:270 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:345 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:164 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:248 msgid "Reset entire statistic" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:214 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:205 msgctxt "Show only users, who solved the quiz:" msgid "Show only users, who solved the %s:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:293 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:98 msgid "Which users should be displayed:" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:295 msgid "all" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:296 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:102 msgid "only registered users" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.php:297 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:103 msgid "only anonymous users" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:89 msgctxt "placeholder: user name" msgid "User statistics: %s" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:178 #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:189 msgid "(view)" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:538 msgid "Status: Graded" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.php:540 msgid "Status: Not Graded" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:66 msgid "History" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:100 msgid "special filter" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.php:135 msgid "Search to date limit from %s to %s" msgstr "" #: includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StyleManager.php:15 msgid "Front" msgstr "" #: includes/quiz/ld-quiz-essays.php:22 msgctxt "Post Type General Name" msgid "Submitted Essays" msgstr "" #: includes/quiz/ld-quiz-essays.php:23 msgctxt "Post Type Singular Name" msgid "Submitted Essay" msgstr "" #: includes/quiz/ld-quiz-essays.php:24 #: includes/quiz/ld-quiz-essays.php:25 msgid "Submitted Essays" msgstr "" #: includes/quiz/ld-quiz-essays.php:26 msgid "Parent Submitted Essay:" msgstr "" #: includes/quiz/ld-quiz-essays.php:27 msgid "All Submitted Essays" msgstr "" #: includes/quiz/ld-quiz-essays.php:28 msgid "Add New Submitted Essay" msgstr "" #: includes/quiz/ld-quiz-essays.php:30 msgid "New Submitted Essay" msgstr "" #: includes/quiz/ld-quiz-essays.php:31 msgid "Edit Submitted Essay" msgstr "" #: includes/quiz/ld-quiz-essays.php:32 msgid "Update Submitted Essay" msgstr "" #: includes/quiz/ld-quiz-essays.php:33 msgid "View Submitted Essay" msgstr "" #: includes/quiz/ld-quiz-essays.php:34 msgid "View Submitted Essays" msgstr "" #: includes/quiz/ld-quiz-essays.php:35 msgid "Search Submitted Essays" msgstr "" #: includes/quiz/ld-quiz-essays.php:36 msgid "Submitted Essay Not found" msgstr "" #: includes/quiz/ld-quiz-essays.php:37 msgid "Submitted Essay Not found in Trash" msgstr "" #: includes/quiz/ld-quiz-essays.php:38 msgid "Submitted Essay Published" msgstr "" #: includes/quiz/ld-quiz-essays.php:39 msgid "Submitted Essay Published Privately" msgstr "" #: includes/quiz/ld-quiz-essays.php:40 msgid "Submitted Essay Reverted to Draft" msgstr "" #: includes/quiz/ld-quiz-essays.php:41 msgid "Submitted Essay Scheduled" msgstr "" #: includes/quiz/ld-quiz-essays.php:42 msgid "Submitted Essay Updated" msgstr "" #: includes/quiz/ld-quiz-essays.php:65 msgid "sfwd-essays" msgstr "" #: includes/quiz/ld-quiz-essays.php:66 msgid "Submitted essays via a quiz question." msgstr "" #: includes/quiz/ld-quiz-essays.php:217 msgctxt "Custom Essay post type status: Graded" msgid "Graded" msgstr "" #: includes/quiz/ld-quiz-essays.php:222 msgid "Graded (%s)" msgid_plural "Graded (%s)" msgstr[0] "" msgstr[1] "" #: includes/quiz/ld-quiz-essays.php:226 msgctxt "Custom Essay post type status: Not Graded" msgid "Not Graded" msgstr "" #: includes/quiz/ld-quiz-essays.php:231 msgid "Not Graded (%s)" msgid_plural "Not Graded (%s)" msgstr[0] "" msgstr[1] "" #: includes/quiz/ld-quiz-essays.php:262 msgid "View uploaded file" msgstr "" #: includes/quiz/ld-quiz-essays.php:289 msgid "Essay Question Title" msgstr "" #: includes/quiz/ld-quiz-essays.php:291 msgid "Submitted By" msgstr "" #: includes/quiz/ld-quiz-essays.php:297 msgctxt "Assigned Lesson" msgid "Assigned %s" msgstr "" #: includes/quiz/ld-quiz-essays.php:298 msgctxt "Assigned Quiz" msgid "Assigned %s" msgstr "" #: includes/quiz/ld-quiz-essays.php:355 msgctxt "placeholders: input points / maximum point for essay" msgid "%1$s / %2$d" msgstr "" #: includes/quiz/ld-quiz-essays.php:357 msgctxt "placeholders: current awarded points / maximum point for essay" msgid "%1$d / %2$d" msgstr "" #: includes/quiz/ld-quiz-essays.php:590 msgid "See upload below." msgstr "" #: includes/quiz/ld-quiz-essays.php:657 msgid "Essay Upload" msgstr "" #: includes/quiz/ld-quiz-essays.php:666 #: includes/settings/settings-sections/class-ld-settings-section-courses-cpt.php:167 #: includes/settings/settings-sections/class-ld-settings-section-lessons-cpt.php:167 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-cpt.php:166 #: includes/settings/settings-sections/class-ld-settings-section-topics-cpt.php:167 #: themes/ld30/templates/shortcodes/profile/quiz-row.php:139 msgid "Comments" msgstr "" #: includes/quiz/ld-quiz-essays.php:685 msgid "Upload was not provided for this question" msgstr "" #: includes/quiz/ld-quiz-essays.php:701 msgid "Your Response to Submitted Essay (optional)" msgstr "" #: includes/quiz/ld-quiz-essays.php:778 msgid "Essay Grading Status" msgstr "" #: includes/quiz/ld-quiz-essays.php:826 msgid "Not Graded" msgstr "" #: includes/quiz/ld-quiz-essays.php:838 msgid "Essay Question" msgstr "" #: includes/quiz/ld-quiz-essays.php:864 msgid "Points available" msgstr "" #: includes/quiz/ld-quiz-essays.php:866 msgid "Points awarded" msgstr "" #: includes/quiz/ld-quiz-essays.php:873 msgid "We could not find the essay question for this response" msgstr "" #: includes/quiz/ld-quiz-essays.php:897 #: includes/quiz/ld-quiz-essays.php:917 msgctxt "Essay Quiz" msgid "Essay %s" msgstr "" #: includes/quiz/ld-quiz-essays.php:899 msgctxt "No Quiz" msgid "No %s" msgstr "" #: includes/quiz/ld-quiz-essays.php:930 msgctxt "Essay Course" msgid "Essay %s" msgstr "" #: includes/quiz/ld-quiz-essays.php:943 msgctxt "Essay Lesson" msgid "Essay %s" msgstr "" #: includes/quiz/ld-quiz-essays.php:961 msgid "Submitted on: %1$s" msgstr "" #: includes/quiz/ld-quiz-essays.php:996 msgid "Delete Permanently" msgstr "" #: includes/quiz/ld-quiz-essays.php:998 msgid "Move to Trash" msgstr "" #: includes/quiz/ld-quiz-essays.php:1562 msgid "Invalid essay uploaded file type." msgstr "" #. translators: placeholders: Questions. #: includes/quiz/ld-quiz-functions.php:478 #: includes/quiz/ld-quiz-functions.php:573 msgctxt "placeholder: Questions" msgid "No associated %s" msgstr "" #: includes/quiz/ld-quiz-pro.php:1209 msgid "Certificate Pending - Questions still need to be graded, please check your profile for the status." msgstr "" #: includes/quiz/ld-quiz-pro.php:1558 msgctxt "Previous Quiz Button Label" msgid "View Previous Answers" msgstr "" #: includes/rest-api/v1/class-ld-rest-courses-enroll-controller.php:36 #: includes/rest-api/v1/class-ld-rest-courses-steps-controller.php:42 msgid "Course ID to enroll user into." msgstr "" #: includes/rest-api/v1/class-ld-rest-courses-enroll-controller.php:65 #: includes/rest-api/v1/class-ld-rest-courses-enroll-controller.php:97 #: includes/rest-api/v1/class-ld-rest-courses-steps-controller.php:118 #: includes/rest-api/v1/class-ld-rest-courses-steps-controller.php:149 msgid "You are not currently logged in." msgstr "" #: includes/rest-api/v1/class-ld-rest-courses-groups-controller.php:51 msgid "Course ID to enroll into." msgstr "" #: includes/rest-api/v1/class-ld-rest-courses-groups-controller.php:68 msgid "Group IDs to enroll into Course." msgstr "" #: includes/rest-api/v1/class-ld-rest-courses-groups-controller.php:83 msgid "Group IDs to remove from Course." msgstr "" #: includes/rest-api/v1/class-ld-rest-courses-groups-controller.php:118 #: includes/rest-api/v1/class-ld-rest-courses-groups-controller.php:147 #: includes/rest-api/v1/class-ld-rest-courses-groups-controller.php:175 #: includes/rest-api/v1/class-ld-rest-courses-users-controller.php:113 #: includes/rest-api/v1/class-ld-rest-courses-users-controller.php:141 #: includes/rest-api/v1/class-ld-rest-courses-users-controller.php:170 #: includes/rest-api/v1/class-ld-rest-lessons-controller.php:140 #: includes/rest-api/v1/class-ld-rest-lessons-controller.php:173 #: includes/rest-api/v1/class-ld-rest-lessons-controller.php:179 #: includes/rest-api/v1/class-ld-rest-quizzes-controller.php:171 #: includes/rest-api/v1/class-ld-rest-quizzes-controller.php:205 #: includes/rest-api/v1/class-ld-rest-quizzes-controller.php:229 #: includes/rest-api/v1/class-ld-rest-quizzes-controller.php:233 #: includes/rest-api/v1/class-ld-rest-quizzes-controller.php:238 #: includes/rest-api/v1/class-ld-rest-topics-controller.php:152 #: includes/rest-api/v1/class-ld-rest-topics-controller.php:185 #: includes/rest-api/v1/class-ld-rest-topics-controller.php:199 msgid "Invalid Course ID." msgstr "" #: includes/rest-api/v1/class-ld-rest-courses-groups-controller.php:123 #: includes/rest-api/v1/class-ld-rest-courses-groups-controller.php:152 #: includes/rest-api/v1/class-ld-rest-users-groups-controller.php:125 #: includes/rest-api/v1/class-ld-rest-users-groups-controller.php:153 msgid "Missing Group IDs." msgstr "" #: includes/rest-api/v1/class-ld-rest-courses-groups-controller.php:186 #: includes/rest-api/v1/class-ld-rest-groups-courses-controller.php:182 #: includes/rest-api/v1/class-ld-rest-users-course-progress-controller.php:127 #: includes/rest-api/v1/class-ld-rest-users-courses-controller.php:188 #: includes/rest-api/v1/class-ld-rest-users-groups-controller.php:187 msgid "You need to define a search term to order by relevance." msgstr "" #: includes/rest-api/v1/class-ld-rest-courses-groups-controller.php:191 #: includes/rest-api/v1/class-ld-rest-groups-courses-controller.php:187 #: includes/rest-api/v1/class-ld-rest-users-course-progress-controller.php:132 #: includes/rest-api/v1/class-ld-rest-users-courses-controller.php:193 #: includes/rest-api/v1/class-ld-rest-users-groups-controller.php:192 msgid "You need to define an include parameter to order by include." msgstr "" #: includes/rest-api/v1/class-ld-rest-courses-groups-controller.php:305 #: includes/rest-api/v1/class-ld-rest-groups-courses-controller.php:299 #: includes/rest-api/v1/class-ld-rest-users-course-progress-controller.php:323 #: includes/rest-api/v1/class-ld-rest-users-courses-controller.php:307 #: includes/rest-api/v1/class-ld-rest-users-groups-controller.php:306 msgid "The page number requested is larger than the number of pages available." msgstr "" #: includes/rest-api/v1/class-ld-rest-courses-groups-controller.php:344 #: includes/rest-api/v1/class-ld-rest-courses-users-controller.php:312 #: includes/rest-api/v1/class-ld-rest-groups-courses-controller.php:335 #: includes/rest-api/v1/class-ld-rest-groups-leaders-controller.php:307 #: includes/rest-api/v1/class-ld-rest-groups-users-controller.php:319 #: includes/rest-api/v1/class-ld-rest-users-courses-controller.php:345 #: includes/rest-api/v1/class-ld-rest-users-groups-controller.php:344 msgid "Returned values." msgstr "" #: includes/rest-api/v1/class-ld-rest-courses-steps-controller.php:71 msgid "Filter returned results by step type." msgstr "" #: includes/rest-api/v1/class-ld-rest-courses-users-controller.php:46 msgid "Course ID." msgstr "" #: includes/rest-api/v1/class-ld-rest-courses-users-controller.php:63 msgid "User IDs to enroll into Course. Limit 50 per request." msgstr "" #: includes/rest-api/v1/class-ld-rest-courses-users-controller.php:78 msgid "User IDs to remove from Group. Limit 50 per request." msgstr "" #: includes/rest-api/v1/class-ld-rest-courses-users-controller.php:118 #: includes/rest-api/v1/class-ld-rest-courses-users-controller.php:146 #: includes/rest-api/v1/class-ld-rest-groups-users-controller.php:262 #: includes/rest-api/v1/class-ld-rest-groups-users-controller.php:290 msgid "Missing User IDs." msgstr "" #: includes/rest-api/v1/class-ld-rest-groups-courses-controller.php:50 msgid "Group ID to enroll into." msgstr "" #: includes/rest-api/v1/class-ld-rest-groups-courses-controller.php:67 msgid "Course IDs to enroll into Group." msgstr "" #: includes/rest-api/v1/class-ld-rest-groups-courses-controller.php:82 msgid "Course IDs to remove from Group." msgstr "" #: includes/rest-api/v1/class-ld-rest-groups-courses-controller.php:110 #: includes/rest-api/v1/class-ld-rest-groups-courses-controller.php:144 #: includes/rest-api/v1/class-ld-rest-groups-courses-controller.php:172 #: includes/rest-api/v1/class-ld-rest-groups-leaders-controller.php:110 #: includes/rest-api/v1/class-ld-rest-groups-leaders-controller.php:138 #: includes/rest-api/v1/class-ld-rest-groups-leaders-controller.php:167 #: includes/rest-api/v1/class-ld-rest-groups-users-controller.php:110 #: includes/rest-api/v1/class-ld-rest-groups-users-controller.php:257 #: includes/rest-api/v1/class-ld-rest-groups-users-controller.php:285 msgid "Invalid group ID." msgstr "" #: includes/rest-api/v1/class-ld-rest-groups-courses-controller.php:115 #: includes/rest-api/v1/class-ld-rest-users-courses-controller.php:126 #: includes/rest-api/v1/class-ld-rest-users-courses-controller.php:154 msgid "Missing Course IDs." msgstr "" #: includes/rest-api/v1/class-ld-rest-groups-courses-controller.php:149 msgid "Missing Course ID." msgstr "" #: includes/rest-api/v1/class-ld-rest-groups-leaders-controller.php:44 #: includes/rest-api/v1/class-ld-rest-groups-users-controller.php:45 msgid "Group ID to enroll group leader into." msgstr "" #: includes/rest-api/v1/class-ld-rest-groups-leaders-controller.php:61 msgid "Group Leader User IDs to enroll into Group." msgstr "" #: includes/rest-api/v1/class-ld-rest-groups-leaders-controller.php:76 msgid "Group Leader User IDs to remove from Group." msgstr "" #: includes/rest-api/v1/class-ld-rest-groups-leaders-controller.php:115 #: includes/rest-api/v1/class-ld-rest-groups-leaders-controller.php:143 msgid "Missing Group Leader User IDs." msgstr "" #: includes/rest-api/v1/class-ld-rest-groups-users-controller.php:62 msgid "User IDs to enroll into Group." msgstr "" #: includes/rest-api/v1/class-ld-rest-groups-users-controller.php:77 msgid "User IDs to remove from Group." msgstr "" #. translators: placeholder: course. #: includes/rest-api/v1/class-ld-rest-lessons-controller.php:96 #: includes/rest-api/v1/class-ld-rest-quizzes-controller.php:99 #: includes/rest-api/v1/class-ld-rest-topics-controller.php:96 msgctxt "placeholder: course" msgid "Limit results to be within a specific %s. Required for non-admin users." msgstr "" #: includes/rest-api/v1/class-ld-rest-lessons-controller.php:121 #: includes/rest-api/v1/class-ld-rest-lessons-controller.php:126 #: includes/rest-api/v1/class-ld-rest-lessons-controller.php:131 #: includes/rest-api/v1/class-ld-rest-lessons-controller.php:144 #: includes/rest-api/v1/class-ld-rest-lessons-controller.php:150 #: includes/rest-api/v1/class-ld-rest-lessons-controller.php:154 #: includes/rest-api/v1/class-ld-rest-lessons-controller.php:181 #: includes/rest-api/v1/class-ld-rest-quizzes-controller.php:154 #: includes/rest-api/v1/class-ld-rest-quizzes-controller.php:159 #: includes/rest-api/v1/class-ld-rest-quizzes-controller.php:164 #: includes/rest-api/v1/class-ld-rest-quizzes-controller.php:175 #: includes/rest-api/v1/class-ld-rest-quizzes-controller.php:181 #: includes/rest-api/v1/class-ld-rest-quizzes-controller.php:185 #: includes/rest-api/v1/class-ld-rest-quizzes-controller.php:243 #: includes/rest-api/v1/class-ld-rest-topics-controller.php:135 #: includes/rest-api/v1/class-ld-rest-topics-controller.php:140 #: includes/rest-api/v1/class-ld-rest-topics-controller.php:145 #: includes/rest-api/v1/class-ld-rest-topics-controller.php:156 #: includes/rest-api/v1/class-ld-rest-topics-controller.php:162 #: includes/rest-api/v1/class-ld-rest-topics-controller.php:166 #: includes/rest-api/v1/class-ld-rest-topics-controller.php:201 msgid "Sorry, you are not allowed to view this item." msgstr "" #. translators: placeholder: Question label. #: includes/rest-api/v1/class-ld-rest-questions-controller.php:137 msgctxt "placeholder: Question label" msgid "Could not delete the %s." msgstr "" #: includes/rest-api/v1/class-ld-rest-questions-controller.php:185 msgid "Could not update the %s." msgstr "" #: includes/rest-api/v1/class-ld-rest-quizzes-controller.php:59 msgid "Unique identifier for the Quiz object." msgstr "" #. translators: placeholder: lesson, course, quizzes. #: includes/rest-api/v1/class-ld-rest-quizzes-controller.php:113 msgctxt "placeholder: lesson, course, quizzes" msgid "Limit results to be within a specific %1$s. Pass zero to show global %2$s %3$s. Must be used with course parameter." msgstr "" #. translators: placeholder: topic. #: includes/rest-api/v1/class-ld-rest-quizzes-controller.php:129 msgctxt "placeholder: topic" msgid "Limit results to be within a specific %s. Must be used with course parameter." msgstr "" #: includes/rest-api/v1/class-ld-rest-quizzes-controller.php:213 #: includes/rest-api/v1/class-ld-rest-topics-controller.php:193 msgid "Invalid Lesson ID." msgstr "" #: includes/rest-api/v1/class-ld-rest-quizzes-controller.php:221 msgid "Invalid Topic ID." msgstr "" #. translators: placeholder: lesson. #: includes/rest-api/v1/class-ld-rest-topics-controller.php:110 msgctxt "placeholder: lesson" msgid "Limit results to be within a specific %s. Must be used with course parameter." msgstr "" #: includes/rest-api/v1/class-ld-rest-users-course-progress-controller.php:36 #: includes/rest-api/v1/class-ld-rest-users-quiz-attempts-controller.php:45 msgid "User ID to show course progress" msgstr "" #: includes/rest-api/v1/class-ld-rest-users-course-progress-controller.php:94 #: includes/rest-api/v1/class-ld-rest-users-courses-controller.php:177 #: includes/rest-api/v1/class-ld-rest-users-groups-controller.php:176 #: includes/rest-api/v1/class-ld-rest-users-quiz-attempts-controller.php:89 #: includes/rest-api/v1/class-ld-rest-users-quiz-attempts-controller.php:116 msgid "Invalid user ID. #1" msgstr "" #: includes/rest-api/v1/class-ld-rest-users-courses-controller.php:48 msgid "User ID to enroll user into." msgstr "" #: includes/rest-api/v1/class-ld-rest-users-courses-controller.php:65 msgid "Courses IDs to add to User." msgstr "" #: includes/rest-api/v1/class-ld-rest-users-courses-controller.php:80 msgid "Course IDs to remove from User." msgstr "" #: includes/rest-api/v1/class-ld-rest-users-courses-controller.php:121 #: includes/rest-api/v1/class-ld-rest-users-courses-controller.php:149 #: includes/rest-api/v1/class-ld-rest-users-groups-controller.php:120 #: includes/rest-api/v1/class-ld-rest-users-groups-controller.php:148 msgid "Invalid User ID." msgstr "" #: includes/rest-api/v1/class-ld-rest-users-groups-controller.php:48 #: includes/settings/shortcodes-sections/courseinfo.php:138 #: includes/settings/shortcodes-sections/course_complete.php:75 #: includes/settings/shortcodes-sections/course_inprogress.php:47 #: includes/settings/shortcodes-sections/course_notstarted.php:47 #: includes/settings/shortcodes-sections/ld_certificate.php:59 #: includes/settings/shortcodes-sections/ld_course_expire_status.php:40 #: includes/settings/shortcodes-sections/ld_course_info.php:22 #: includes/settings/shortcodes-sections/ld_course_resume.php:50 #: includes/settings/shortcodes-sections/ld_group.php:40 #: includes/settings/shortcodes-sections/ld_quiz_complete.php:76 #: includes/settings/shortcodes-sections/ld_user_course_points.php:22 #: includes/settings/shortcodes-sections/learndash_course_progress.php:31 #: includes/settings/shortcodes-sections/quizinfo.php:79 #: includes/settings/shortcodes-sections/student.php:40 #: includes/settings/shortcodes-sections/usermeta.php:31 #: includes/settings/shortcodes-sections/user_groups.php:22 #: includes/gutenberg/blocks/ld-certificate/index.js:117 #: includes/gutenberg/blocks/ld-certificate/index.js:171 #: includes/gutenberg/blocks/ld-course-complete/index.js:76 #: includes/gutenberg/blocks/ld-course-expire-status/index.js:108 #: includes/gutenberg/blocks/ld-course-expire-status/index.js:150 #: includes/gutenberg/blocks/ld-course-info/index.js:135 #: includes/gutenberg/blocks/ld-course-info/index.js:361 #: includes/gutenberg/blocks/ld-course-inprogress/index.js:75 #: includes/gutenberg/blocks/ld-course-list/index.js:439 #: includes/gutenberg/blocks/ld-course-notstarted/index.js:76 #: includes/gutenberg/blocks/ld-course-progress/index.js:98 #: includes/gutenberg/blocks/ld-course-progress/index.js:121 #: includes/gutenberg/blocks/ld-course-resume/index.js:100 #: includes/gutenberg/blocks/ld-course-resume/index.js:153 #: includes/gutenberg/blocks/ld-courseinfo/index.js:187 #: includes/gutenberg/blocks/ld-courseinfo/index.js:252 #: includes/gutenberg/blocks/ld-group/index.js:72 #: includes/gutenberg/blocks/ld-profile/index.js:199 #: includes/gutenberg/blocks/ld-quiz-complete/index.js:83 #: includes/gutenberg/blocks/ld-student/index.js:75 #: includes/gutenberg/blocks/ld-user-course-points/index.js:72 #: includes/gutenberg/blocks/ld-user-groups/index.js:71 #: includes/gutenberg/blocks/ld-user-groups/index.js:87 #: includes/gutenberg/blocks/ld-usermeta/index.js:117 #: includes/gutenberg/blocks/ld-usermeta/index.js:135 msgid "User ID" msgstr "" #: includes/rest-api/v1/class-ld-rest-users-groups-controller.php:65 msgid "Group IDs to add to User." msgstr "" #: includes/rest-api/v1/class-ld-rest-users-groups-controller.php:80 msgid "Group IDs to remove from User." msgstr "" #: includes/rest-api/v1/class-ld-rest-users-quiz-attempts-controller.php:99 msgid "Invalid user ID." msgstr "" #: includes/rest-api/v1/class-ld-rest-users-quiz-attempts-controller.php:105 msgid "Sorry, you are not allowed to edit this user." msgstr "" #: includes/settings/class-ld-settings-pages.php:504 msgid "You have errors on the following settings" msgstr "" #: includes/settings/class-ld-settings-sections.php:430 msgid "Reset Settings" msgstr "" #: includes/settings/class-ld-shortcodes-sections.php:163 msgid "Insert Shortcode" msgstr "" #: includes/settings/settings-fields/class-ld-settings-fields-date-entry.php:70 msgid "MM" msgstr "" #: includes/settings/settings-fields/class-ld-settings-fields-media-upload.php:69 msgid "remove image" msgstr "" #: includes/settings/settings-fields/class-ld-settings-fields-media-upload.php:69 msgctxt "placeholder: clear image" msgid "X" msgstr "" #: includes/settings/settings-fields/class-ld-settings-fields-media-upload.php:70 msgid "Select/upload image" msgstr "" #: includes/settings/settings-fields/class-ld-settings-fields-media-upload.php:70 msgid "Select image" msgstr "" #: includes/settings/settings-fields/class-ld-settings-fields-quiz-custom-fields.php:55 msgid "ID" msgstr "" #: includes/settings/settings-fields/class-ld-settings-fields-quiz-custom-fields.php:88 msgid "Textarea" msgstr "" #: includes/settings/settings-fields/class-ld-settings-fields-quiz-templates-load.php:105 msgid "Search or select a template…" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:28 msgctxt "placeholder: Course" msgid "%s Access Settings" msgstr "" #. translators: placeholder: course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:34 msgctxt "placeholder: course" msgid "Controls how users will gain access to the %s" msgstr "" #. translators: placeholder: course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:172 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-access-settings.php:106 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-access-settings.php:136 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-access-settings.php:94 msgctxt "placeholder: course" msgid "Search or select a %s…" msgstr "" #. translators: placeholder: course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:179 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-access-settings.php:114 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-access-settings.php:144 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-access-settings.php:102 msgctxt "placeholder: course" msgid "Select %s" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:196 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:213 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:247 #: includes/settings/shortcodes-sections/courseinfo.php:48 #: includes/gutenberg/blocks/ld-courseinfo/index.js:106 msgctxt "placeholder: Course" msgid "%s Price" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:257 msgid "Button URL" msgstr "" #. translators: placeholder: "Take this Course" button label #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:263 msgctxt "placeholder: \"Take this Course\" button label" msgid "Redirect the \"%s\" button to a specific URL." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:281 msgid "Access Mode" msgstr "" #. translators: placeholder: course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:290 msgctxt "placeholder: course" msgid "The %s is not protected. Any user can access its content without the need to be logged-in or enrolled." msgstr "" #. translators: placeholder: course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:298 msgctxt "placeholder: course" msgid "The %s is protected. Registration and enrollment are required in order to access the content." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:303 msgid "Buy now" msgstr "" #. translators: placeholder: course, course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:306 msgctxt "placeholder: course, course" msgid "The %1$s is protected via the LearnDash built-in PayPal and/or Stripe. Users need to purchase the %2$s (one-time fee) in order to gain access." msgstr "" #. translators: placeholder: course, course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:319 msgctxt "placeholder: course, course" msgid "The %1$s is protected via the LearnDash built-in PayPal and/or Stripe. Users need to purchase the %2$s (recurring fee) in order to gain access." msgstr "" #. translators: placeholder: course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:332 msgctxt "placeholder: course" msgid "The %s can only be accessed through admin enrollment (manual), group enrollment, or integration (shopping cart or membership) enrollment. No enrollment button will be displayed, unless a URL is set (optional)." msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:346 msgctxt "placeholder: Course" msgid "%s Prerequisites" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:359 msgid "Compare Mode" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:365 msgid "Any Selected" msgstr "" #. translators: placeholder: courses, course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:368 msgctxt "placeholder: course, course" msgid "The user must complete any one of the selected %1$s in order to access this %2$s" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:374 msgid "All Selected" msgstr "" #. translators: placeholder: course, course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:377 msgctxt "placeholder: course, course" msgid "The user must complete all selected %1$s in order to access this %2$s" msgstr "" #. translators: placeholder: Courses. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:395 msgctxt "placeholder: courses" msgid "%s to Complete" msgstr "" #. translators: placeholder: Course #. translators: placeholder: Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:405 #: includes/settings/shortcodes-sections/courseinfo.php:42 #: includes/gutenberg/blocks/ld-courseinfo/index.js:102 msgctxt "placeholder: Course" msgid "%s Points" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:417 msgid "Required for Access" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:422 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:447 msgid "point(s)" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:423 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:454 msgid "Value should be zero or greater with up to 2 decimal places." msgstr "" #. translators: placeholder: course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:434 msgctxt "placeholder: course." msgid "Number of points required in order to gain access to this %s." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:440 msgid "Awarded on Completion" msgstr "" #. translators: placeholder: course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:451 msgctxt "placeholder: course." msgid "Number of points awarded for completing this %s." msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:468 msgctxt "placeholder: Course" msgid "%s Access Expiration" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:480 msgid "Access Period" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:485 msgid "days" msgstr "" #. translators: placeholder: course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:489 msgctxt "placeholder: course." msgid "Set the number of days a user will have access to the %s from enrollment date." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:495 msgid "Data Deletion" msgstr "" #. translators: placeholder: course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:500 msgctxt "placeholder: course." msgid "All user %s data will be deleted upon access expiration" msgstr "" #. translators: placeholder: course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:509 msgctxt "placeholder: course, quiz, course." msgid "Delete the user's %1$s and %2$s data when the %3$s access expires." msgstr "" #. translators: placeholder: Course #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:519 msgctxt "placeholder: Course" msgid "Alter %s Access List" msgstr "" #. translators: placeholder: Course #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:526 msgctxt "placeholder: Course" msgid "You can change the LD-%s enrollees by user ID (Proceed with caution)" msgstr "" #. translators: placeholder: course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:536 msgctxt "placeholder: course." msgid "Displays a list of %s enrollees by user ID. Note that not all enrollees may be reflected. We do not recommend editing this field." msgstr "" #. translators: placeholder: course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.php:548 msgctxt "placeholder: course" msgid "Add a comma-list of user IDs to grant access to this %s" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:26 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:26 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:32 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:26 msgid "Display and Content Options" msgstr "" #. translators: placeholder: course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:31 msgctxt "placeholder: course" msgid "Controls the look and feel of the %s and optional content settings" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:131 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:157 msgid "Search or select a certificate…" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:135 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:161 msgid "Select Certificate" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:151 msgctxt "placeholder: Course" msgid "%s Materials" msgstr "" #. translators: placeholder: course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:156 msgctxt "placeholder: course" msgid "List and display support materials for the %s. This is visible to all users (including non-enrollees) by default." msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:164 msgctxt "placeholder: Course" msgid "Any content added below is displayed on the main %s page" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:178 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:352 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:420 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:344 msgid "Add a list of needed documents or URLs. This field supports HTML." msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:189 msgctxt "placeholder: Course" msgid "%s Certificate" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:200 #: includes/settings/shortcodes-sections/course_content.php:11 msgctxt "placeholder: Course" msgid "%s Content" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:207 msgctxt "placeholder: Course" msgid "Choose whether to display the %s content table to ALL users or only enrollees" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:211 msgid "Always visible" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:212 msgid "Only visible to enrollees" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:219 msgid "Custom Pagination" msgstr "" #. translators: placeholders: course, course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:223 msgctxt "placeholders: course, course" msgid "Customize the pagination options for this %1$s content table and %2$s navigation widget." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:228 msgid "Currently showing default pagination" msgstr "" #. translators: placeholder: Lessons per page. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:240 msgctxt "placeholder: Lessons per page" msgid "%s" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:243 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:261 #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:185 #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:268 #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:285 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:207 #: includes/gutenberg/blocks/ld-course-info/index.js:172 #: includes/gutenberg/blocks/ld-course-info/index.js:231 #: includes/gutenberg/blocks/ld-course-info/index.js:290 msgid "per page" msgstr "" #. translators: placeholder: Topics per page. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:258 msgctxt "placeholder: Topics per page" msgid "%s" msgstr "" #. translators: placeholder: Lesson. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:275 msgctxt "placeholder: Lesson" msgid "Custom %s Order" msgstr "" #. translators: placeholders: lessons, topics. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:281 msgctxt "placeholders: lessons, topics" msgid "Customize the display order of %1$s and %2$s." msgstr "" #. translators: placeholder: lesson order by, lesson order direction labels. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:288 msgctxt "placeholder: lesson order by, lesson order direction labels" msgid "Using default sorting by %1$s in %2$s order" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.php:320 #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:349 msgid "Order Direction" msgstr "" #. translators: placeholder: course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-navigation-settings.php:28 msgctxt "placeholder: course" msgid "%s Navigation Settings" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-navigation-settings.php:32 msgid "Controls how users interact with the content and their navigational experience" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-navigation-settings.php:64 msgctxt "placeholder: Course" msgid "%s Progression" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-navigation-settings.php:70 msgid "Linear" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-navigation-settings.php:73 msgctxt "placeholder: Course" msgid "Requires the user to progress through the %s in the designated step sequence" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-navigation-settings.php:78 msgid "Free form" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-navigation-settings.php:81 msgctxt "placeholder: Course" msgid "Allows the user to move freely through the %s without following the designated step sequence" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-users.php:28 msgctxt "placeholder: Course" msgid "%s Users" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-users.php:99 msgctxt "placeholder: Course" msgid "Users enrolled via Groups using this %s are excluded from the listings below and should be manage via the Group admin screen." msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-course-users.php:119 msgctxt "placeholder: Course" msgid "The %s price type is set to \"open\". This means ALL are automatically enrolled." msgstr "" #. translators: placeholder: Lesson. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-access-settings.php:28 msgctxt "placeholder: Lesson" msgid "%s Access Settings" msgstr "" #. translators: placeholder: lessons. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-access-settings.php:34 msgctxt "placeholder: lessons" msgid "Controls the timing and way %s can be accessed." msgstr "" #. Translators: placeholder: Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-access-settings.php:158 msgctxt "placeholder: Course" msgid "Associated %s" msgstr "" #. Translators: placeholder: lesson, course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-access-settings.php:180 msgctxt "placeholder: lesson, course" msgid "This %1$s is accessible to all visitors regardless of %2$s enrollment" msgstr "" #. Translators: placeholder: Lesson. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-access-settings.php:191 msgctxt "placeholder: Lessons" msgid "%s Release Schedule" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-access-settings.php:198 msgid "Immediately" msgstr "" #. translators: placeholder: lesson, course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-access-settings.php:201 msgctxt "placeholder: lesson, course" msgid "The %1$s is made available on %2$s enrollment." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-access-settings.php:207 msgid "Enrollment-based" msgstr "" #. translators: placeholder: lesson, course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-access-settings.php:210 msgctxt "placeholder: lesson, course." msgid "The %1$s will be available X days after %2$s enrollment." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-access-settings.php:220 msgid "Specific date" msgstr "" #. translators: placeholders: lesson. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-access-settings.php:223 msgctxt "placeholders: lesson" msgid "The %s will be available on a specific date." msgstr "" #. translators: placeholder: lesson. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:31 msgctxt "placeholder: lesson" msgid "Controls the look and feel of the %s and optional content settings" msgstr "" #. translators: placeholder: Lesson. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:235 msgctxt "placeholder: Lesson" msgid "%s auto-completion" msgstr "" #. translators: placeholder: lesson. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:246 msgctxt "placeholder: lesson" msgid " Automatically mark the %s as completed once the user has watched the full video." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:252 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:244 msgid "Completion delay" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:261 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:397 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:253 msgid "seconds" msgstr "" #. translators: placeholder: lesson. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:264 msgctxt "placeholder: lesson" msgid "Specify a delay between video completion and %s completion." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:271 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:263 msgid "Mark Complete Button" msgstr "" #. translators: placeholder: lesson. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:276 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:267 msgctxt "placeholder: lesson" msgid "Display the Mark Complete button on a %s even if not yet clickable." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:296 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:288 msgid "file(s) maximum" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:301 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:293 msgid "Specify the maximum number of files a user can upload for this assignment." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:305 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:297 msgid "Allow file deletion" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:309 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:301 msgid "Allow the user to delete their own uploaded files. This is only possible up until the assignment has been approved." msgstr "" #. translators: placeholder: Lesson. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:325 msgctxt "placeholder: Lesson" msgid "%s Materials" msgstr "" #. translators: placeholder: lesson, lesson. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:330 msgctxt "placeholder: lesson, lesson" msgid "List and display support materials for the %1$s. This is visible to any user having access to the %2$s." msgstr "" #. translators: placeholder: Lesson. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:339 msgctxt "placeholder: Lesson" msgid "Any content added below is displayed on the %s page" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:361 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:353 msgid "Video Progression" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:365 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:357 msgctxt "placeholder: Course" msgid "Require users to watch the full video as part of the %s progression. Use shortcode [ld_video] to move within the post content." msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:376 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:367 msgctxt "placeholder: Course" msgid "The below video is tied to %s progression" msgstr "" #. translators: placeholder: Lesson. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:381 msgctxt "placeholder: Lesson" msgid "Cannot be enabled while %s timer or Assignments are enabled" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:395 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:387 msgid "Input URL, iFrame, or shortcode here." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:404 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:396 msgid "Display Timing" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:411 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:403 msgid "Before completed sub-steps" msgstr "" #. translators: placeholder: Lesson. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:414 msgctxt "placeholder: Lesson" msgid "The video will be shown and must be fully watched before the user can access the %s’s associated steps." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:419 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:411 msgid "After completing sub-steps" msgstr "" #. translators: placeholder: Lesson, Lesson. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:422 msgctxt "placeholder: Lesson, Lesson" msgid "The video will be visible after the user has completed the %1$s’s associated steps. The full video must be watched in order to complete the %2$s." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:438 msgid "Video may not autostart for mobile users. Check with the video provider for details." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:441 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:432 msgid "The video now starts automatically on page load" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:448 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:439 msgid "Video Controls Display" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:450 msgid "Only available for YouTube and local videos. Vimeo supported if autostart is enabled." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:455 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:446 msgid "Users can pause, move backward and forward within the video" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:462 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:453 msgid "Assignment Uploads" msgstr "" #. translators: placeholder: Lesson. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:472 msgctxt "placeholder: Lesson" msgid "Cannot be enabled while %s timer or Video progression are enabled" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:481 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:472 msgid "File Extensions" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:483 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:474 msgid "pdf, xls, zip" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:484 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:475 msgid "Specify the type of files users can upload. Leave blank for any." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:492 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:483 msgid "File Size Limit" msgstr "" #. translators: placeholder: PHP file upload size. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:497 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:488 msgctxt "placeholder: PHP file upload size" msgid "%s" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:500 msgid "Default maximum file size supported is controlled by your host." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:513 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:508 msgid "Award points for submitting assignments" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:529 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:524 msgid "available point(s)" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:535 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:530 msgid "Grading Type" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:540 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:536 msgid "Auto-approve" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:541 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:537 msgid "No grading or approval needed. The assignment will be automatically approved and full points will be awarded." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:544 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:540 msgid "Manually grade" msgstr "" #. translators: placeholder: lesson. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:547 msgctxt "placeholder: lesson" msgid "Admin or group leader approval and grading required. The %s cannot be completed until the assignment is approved." msgstr "" #. translators: placeholder: topic. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:570 msgctxt "placeholder: Lesson" msgid "The %s cannot be marked as completed until the set time has elapsed." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.php:577 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:573 msgid "Cannot be enabled while Video progression or Assignments are enabled" msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-access-settings.php:28 msgctxt "placeholder: Quiz" msgid "%s Access Settings" msgstr "" #. translators: placeholder: quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-access-settings.php:34 msgctxt "placeholder: quiz" msgid "Controls the requirements for accessing the %s" msgstr "" #. translators: placeholder: Lesson, Topic. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-access-settings.php:155 msgctxt "placeholder: Lesson, Topic" msgid "Search or select a %1$s or %2$s…" msgstr "" #. translators: placeholder: Lesson, Topic. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-access-settings.php:164 msgctxt "placeholder: Lesson, Topic" msgid "Select a %1$s or %2$s" msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-access-settings.php:191 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-access-settings.php:199 msgctxt "placeholder: Quiz." msgid "No previous %s required" msgstr "" #. translators: placeholder: Lesson. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-access-settings.php:242 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-access-settings.php:171 msgctxt "placeholder: Lesson" msgid "Associated %s" msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-access-settings.php:261 msgctxt "placeholder: Quiz" msgid "%s Prerequisites" msgstr "" #. translators: placeholderss: quizzes, quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-access-settings.php:266 msgctxt "placeholderss: Quizzes Quiz" msgid "Select one or more %1$s that must be completed prior to taking this %2$s." msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-access-settings.php:272 msgctxt "placeholder: Quiz" msgid "No previous %s required" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-access-settings.php:283 msgid "Allowed Users" msgstr "" #. translators: placeholders: quizzes, courses, quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-access-settings.php:287 msgctxt "placeholders: quizzes, courses, quiz." msgid "This option is especially useful if administering %1$s via shortcodes on non-course pages, or if your %2$s are open but you wish only authenticated users to take the %3$s." msgstr "" #. translators: placeholder: quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-access-settings.php:296 msgctxt "placeholder: quiz" msgid "Only registered users can take this quiz" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:27 msgid "Administrative and Data Handling Settings" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:29 msgid "Controls data handling options, notifications and templates." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:299 msgid "Select a ProQuiz association" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:300 msgid "New ProQuiz association" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:307 msgid "Re-apply after" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:312 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:349 msgid "minutes" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:331 msgid "Below the result text" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:332 msgid "In a button" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:343 msgid "IP-lock time limit" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:344 msgid "Protect the statistics from spam. Results will only be saved every X minutes." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:363 msgid "Email trigger" msgstr "" #. translators: placeholder: quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:367 msgctxt "placeholder: quiz" msgid "The admin will receive an email notification when the following users have taken the %s." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:375 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:319 msgid "All users" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:376 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:495 #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:320 msgid "Registered users only" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:387 msgid "Cookie time limit" msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:390 msgctxt "placeholder: Quiz" msgid "Save the user’s answers into a browser cookie until the %s is submitted" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:414 msgid "Associated Quiz Database Table" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:431 #: includes/settings/settings-sections/class-ld-settings-section-courses-cpt.php:168 #: includes/settings/settings-sections/class-ld-settings-section-lessons-cpt.php:168 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-cpt.php:167 #: includes/settings/settings-sections/class-ld-settings-section-topics-cpt.php:168 msgid "Custom Fields" msgstr "" #. translators: placeholder: quiz, Quiz #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:436 msgctxt "placeholder: quiz, Quiz" msgid "Enable this option to gather data from your users before or after the %1$s. All data is stored in the %2$s Statistics." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:457 msgid "Display Position" msgstr "" #. translators: placeholder: quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:464 msgctxt "placeholder: quiz." msgid "On the %s startpage" msgstr "" #. translators: placeholder: quiz, quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:469 msgctxt "placeholder: quiz, quiz" msgid "At the end of the %1$s (before the %2$s result)" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:491 msgid "Who can apply?" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:494 msgid "All user" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:496 msgid "Anonymous users only" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:504 msgid "Multiple Applications per user" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:510 msgid "Users can apply more than once to the leaderboard" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:521 msgid "Automatic user entry" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:532 msgid "Number of displayed entries" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:547 msgid "Sort list by?" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:552 msgid "Best user" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:553 msgid "Newest entry" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:554 msgid "Oldest entry" msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:562 msgctxt "placeholder: Quiz." msgid "Display on %s results page" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:580 msgid "Really Simple CAPTCHA" msgstr "" #. translators: placeholder: links to Real Simple CAPTCHA. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:583 msgctxt "placeholder: links to Real Simple CAPTCHA" msgid "This option requires additional plugin: %s" msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:599 msgctxt "placeholder: Quiz." msgid "%s Statistics" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:612 msgid "Front-end Profile Display" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:639 msgid "Email Notifications" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:651 msgid "Admin" msgstr "" #. translators: placeholder: Quiz #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:680 msgctxt "placeholder: Quiz" msgid "%s Templates" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:723 msgid "Browser Cookie Answer Protection" msgstr "" #. translators: placeholder: quizzes #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.php:727 msgctxt "placeholder: quizzes" msgid "Browser cookies have limited memory. This may not work with large %s." msgstr "" #. translators: placeholder: quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:37 msgctxt "placeholder: quiz" msgid "Controls how the %s will look and what will be displayed" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:307 msgid "Display Back button" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:324 msgid "Display results at the end only" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:331 msgid "Display results after each submitted answer" msgstr "" #. translators: placeholder: questions. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:348 msgctxt "placeholder: questions" msgid "%s per page (0 = all)" msgstr "" #. translators: placeholder: questions. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:371 msgctxt "placeholder: count of questions, questions label." msgid "out of %1$d %2$s." msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:393 msgctxt "placeholder: Quiz" msgid "%s Materials" msgstr "" #. translators: placeholder: quiz, quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:398 msgctxt "placeholder: quiz, quiz" msgid "List and display support materials for the %1$s. This is visible to any user having access to the %2$s." msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:407 msgctxt "placeholder: Quiz" msgid "Any content added below is displayed on the %s page" msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:436 msgctxt "placeholder: Quiz" msgid "Start automatically, without the \"Start %s\" button" msgstr "" #. translators: placeholder: Question. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:446 msgctxt "placeholder: Question" msgid "%s Display" msgstr "" #. translators: placeholder: question. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:456 msgctxt "placeholder: question" msgid "One %s at a time" msgstr "" #. translators: placeholder: questions. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:467 msgctxt "placeholder: questions" msgid "All %s at once (or paginated)" msgstr "" #. translators: placeholder: Question. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:483 msgctxt "placeholder: Question" msgid "%s Overview Table" msgstr "" #. translators: placeholder: Quiz, Questions. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:492 msgctxt "placeholder: Questions" msgid "An overview table will be shown for all %s." msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:503 msgctxt "placeholder: Quiz" msgid "%s Summary" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:510 msgid "Display a summary table before submission" msgstr "" #. translators: placeholder: Question. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:519 msgctxt "placeholder: Question" msgid "Skip %s" msgstr "" #. translators: placeholder: Question. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:535 msgctxt "placeholder: Question" msgid "Custom %s Ordering" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:548 msgid "Sort by Category" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:559 msgid "Randomize Order" msgstr "" #. translators: placeholder: questions. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:579 msgctxt "placeholder: questions" msgid "Display all %s" msgstr "" #. translators: placeholder: questions. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:586 msgctxt "placeholder: questions" msgid "Display subset of %s" msgstr "" #. translators: placeholder: Question. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:603 msgctxt "placeholder: Question" msgid "Additional %s Options" msgstr "" #. translators: placeholder: Question. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:612 msgctxt "placeholder: Question" msgid "Any enabled elements below will be displayed in each %s" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:622 msgid "Point Value" msgstr "" #. translators: placeholder: Question. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:650 msgctxt "placeholder: Question" msgid "%s Position" msgstr "" #. translators: placeholder: Question. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:666 msgctxt "placeholder: Question" msgid "%s Numbering" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:679 msgid "Number Answers" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:690 msgid "Randomize Answers" msgstr "" #. translators: placeholder: question. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:693 msgctxt "placeholder: question." msgid "Answer display will be randomized within any given %s." msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:709 #: includes/settings/shortcodes-sections/quizinfo.php:35 #: includes/settings/shortcodes-sections/quizinfo.php:36 msgctxt "placeholder: Quiz" msgid "%s Title" msgstr "" #. translators: placeholder: quiz, Quiz, Quizzes. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:716 msgctxt "placeholder: quiz, Quiz, Quizzes." msgid "A second %1$s title will be displayed on the %2$s Post. This option is recommended if displaying %3$s via Shortcode." msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:724 msgctxt "placeholder: Quiz" msgid "Only the %s Post title is shown" msgstr "" #. translators: placeholder: Quiz, Quiz, quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.php:729 msgctxt "placeholder: Quiz, Quiz, quiz" msgid "The %1$s Title is displayed in addition to the %2$s Post title. Recommended for %3$s shortcode usage." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:27 msgid "Progression and Restriction Settings" msgstr "" #. translators: placeholder: quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:31 msgctxt "placeholder: quiz" msgid "Controls the requirement for accessing and completing the %s" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:235 msgid "Passing Score" msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:252 msgctxt "placeholder: Quiz" msgid " %s Certificate" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:262 msgid "Certificate Awarded for" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:267 msgid "Set the score needed to receive a certificate. This can be different from the \"Passing Score\"." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:268 msgid "% score" msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:283 msgctxt "placeholder: Quiz" msgid "Restrict %s Retakes" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:296 msgid "Number of Retries Allowed" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:297 msgid "You must input a whole number value or leave blank to default to 0." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:314 msgid "Retries Applicable to" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:321 msgid "Anonymous user only" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:330 msgid "Use a cookie to restrict ALL users, including anonymous visitors" msgstr "" #. translators: placeholder: Question. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:349 msgctxt "placeholder: Question" msgid "%s Completion" msgstr "" #. translators: placeholder: Questions. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:356 msgctxt "placeholder: Questions" msgid "All %s required to complete" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:365 msgid "Time Limit" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:377 msgid "Automatically Submit After" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.php:380 msgid "e.g. 0" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:27 msgid "Results Page Display" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:29 msgid "Controls how the results page will look" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:208 msgid "Result Message(s)" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:211 msgid "When enabled, the first message will be diplayed to ALL users. To customize the message based on earned score, add new Graduation Levels and set the 'From' field to the desired grade." msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:216 msgctxt "placeholder: Quiz" msgid "The message below is displayed on the %s results page." msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:237 msgctxt "placeholder: Quiz" msgid "Restart %s button" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:250 msgid "Custom Results Display" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:255 msgid "Enable the items you wish to display on the Result Page" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:263 msgid "Average Score" msgstr "" #. translators: placeholder: quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:266 msgctxt "placeholder: quiz" msgid "Display the average score of all users who took the %s" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:280 msgid "Category Score" msgstr "" #. translators: placeholder: Question. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:283 msgctxt "placeholder: Question" msgid "Display the score achieved for each %s Category" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:297 msgid "Overall Score" msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:305 msgctxt "placeholder: Quiz" msgid "The achieved %s score is NOT be displayed on the Results page" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:313 msgid "No. of Correct Answers" msgstr "" #. translators: placeholder: Questions. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:321 msgctxt "placeholder: Questions" msgid "The number of correctly answered %s is NOT displayed on the Results page." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:330 #: includes/settings/shortcodes-sections/quizinfo.php:37 msgid "Time Spent" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:342 msgid "Custom Answer Feedback" msgstr "" #. translators: placeholder: questions. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:345 msgctxt "placeholder: questions" msgid "Select which data users should be able to view when reviewing their submitted %s." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:359 msgid "Correct / Incorrect Messages" msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:370 msgid "Correct / Incorrect Answer Marks" msgstr "" #. translators: placeholder: Questions. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:383 msgctxt "placeholder: Questions" msgid "View %s Button" msgstr "" #. translators: placeholder: input form field. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.php:551 msgctxt "placeholder: input form field" msgid "From %s %% score, display this message:" msgstr "" #. translators: placeholder: Topic. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-access-settings.php:28 msgctxt "placeholder: Topic" msgid "%s Access Settings" msgstr "" #. translators: placeholder: topic. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-access-settings.php:34 msgctxt "placeholder: topic" msgid "Controls how, where, and when the %s can be accessed." msgstr "" #. translators: placeholder: Lesson. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-access-settings.php:113 msgctxt "placeholder: Lesson" msgid "Search or select a %s…" msgstr "" #. translators: placeholder: Lesson. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-access-settings.php:121 msgctxt "placeholder: Lesson" msgid "Select %s" msgstr "" #. translators: placeholders: Topic, Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-access-settings.php:155 msgctxt "placeholder: Topic, Course." msgid "Associate this %1$s with a %2$s." msgstr "" #. translators: placeholders: Lesson, Course. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-access-settings.php:178 msgctxt "placeholders: Lesson, Course" msgid "Associate this %1$s with a %2$s." msgstr "" #. translators: placeholder: topic. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:31 msgctxt "placeholder: topic" msgid "Controls the look and feel of the %s and optional content settings" msgstr "" #. translators: placeholder: Topic. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:227 msgctxt "placeholder: Topic" msgid "%s auto-completion" msgstr "" #. translators: placeholder: topic. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:238 msgctxt "placeholder: topic" msgid " Automatically mark the %s as completed once the user has watched the full video." msgstr "" #. translators: placeholder: topic. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:256 msgctxt "placeholder: topic" msgid "Specify a delay between video completion and %s completion." msgstr "" #. translators: placeholder: Topic. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:317 msgctxt "placeholder: Topic" msgid "%s Materials" msgstr "" #. translators: placeholder: topic, topic. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:322 msgctxt "placeholder: topic, topic" msgid "List and display support materials for the %1$s. This is visible to any user having access to the %2$s." msgstr "" #. translators: placeholder: topic. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:331 msgctxt "placeholder: topic" msgid "Any content added below is displayed on the %s page" msgstr "" #. translators: placeholder: Topic. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:373 msgctxt "placeholder: Topic" msgid "Cannot be enabled while %s timer or Assignments are enabled" msgstr "" #. translators: placeholder: topic. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:406 msgctxt "placeholder: topic" msgid "The video will be shown and must be fully watched before the user can access the %s’s associated steps." msgstr "" #. translators: placeholder: topic, topic. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:414 msgctxt "placeholder: topic, topic" msgid "The video will be visible after the user has completed the %1$s’s associated steps. The full video must be watched in order to complete the %2$s." msgstr "" #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:441 msgid "Only available for YouTube and local videos." msgstr "" #. translators: placeholder: topic. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:463 msgctxt "placeholder: toic" msgid "Cannot be enabled while %s timer or Video progression are enabled" msgstr "" #. translators: placeholder: PHP file upload size. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:493 msgctxt "placeholder: PHP file upload size" msgid "Default maximum file size supported is: %s" msgstr "" #. translators: placeholder: topic. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:543 msgctxt "placeholder: topic" msgid "Admin or group leader approval and grading required. The %s cannot be completed until the assignment is approved." msgstr "" #. translators: placeholder: Topic. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:558 msgctxt "placeholder: Topic" msgid "%s Timer" msgstr "" #. translators: placeholder: topic. #: includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.php:566 msgctxt "placeholder: topic" msgid "The %s cannot be marked as completed until the set time has elapsed." msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-addons.php:24 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:964 msgid "LearnDash Add-ons" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-addons.php:25 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:1041 msgid "Add-ons" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-addons.php:251 msgctxt "Plugin installer section title" msgid "Description" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-addons.php:252 msgctxt "Plugin installer section title" msgid "Installation" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-addons.php:253 msgctxt "Plugin installer section title" msgid "FAQ" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-addons.php:254 msgctxt "Plugin installer section title" msgid "Screenshots" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-addons.php:255 msgctxt "Plugin installer section title" msgid "Changelog" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-addons.php:256 msgctxt "Plugin installer section title" msgid "Reviews" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-addons.php:257 msgctxt "Plugin installer section title" msgid "Other Notes" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-addons.php:290 msgid "Plugin Installation" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-addons.php:346 msgid "Version:" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-addons.php:348 msgid "Author:" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-addons.php:350 msgid "Last Updated:" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-certificate-shortcodes.php:22 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:1038 msgid "Shortcodes" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-certificate-shortcodes.php:79 msgid "Certificate Shortcodes" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-certificate-shortcodes.php:84 msgid "" "Shortcode Options

      You may use shortcodes to customize the display of your certificates. Provided is a built-in shortcode for displaying user information.


      \n" "\t\t\t\t\t\t\t

      [usermeta]

      \n" "\t\t\t\t\t\t

      This shortcode takes a parameter named field, which is the name of the user meta data field to be displayed.

      Example: [usermeta field=\"display_name\"] would display the user's Display Name.

      See the full list of available fields here." msgstr "" #. translators: placeholder: quiz. #: includes/settings/settings-pages/class-ld-settings-page-certificate-shortcodes.php:91 #: includes/settings/shortcodes-sections/quizinfo.php:11 msgctxt "placeholders: quiz" msgid "This shortcode displays information regarding %s attempts on the certificate. This shortcode can use the following parameters:" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-certificate-shortcodes.php:95 msgctxt "placeholder: quiz" msgid "" "This parameter determines the information to be shown by the shortcode. Possible values are:\n" "\t\t\t\t\t\t\t\t\t

        " msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-certificate-shortcodes.php:98 msgid "This can be used to change the timestamp format. Default: \"F j, Y, g:i a\" shows as March 10, 2001, 5:16 pm.
        Example: [quizinfo show=\"timestamp\" format=\"Y-m-d H:i:s\"] will show as 2001-03-10 17:16:18" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-certificate-shortcodes.php:100 #: includes/settings/settings-pages/class-ld-settings-page-certificate-shortcodes.php:113 msgid "See the full list of available date formatting strings here." msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-certificate-shortcodes.php:103 msgid "This shortcode displays course related information on the certificate. This shortcode can use the following parameters:" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-certificate-shortcodes.php:105 msgctxt "placeholders: quizzes, course, quizzes, course" msgid "" "This parameter determines the information to be shown by the shortcode. Possible values are:\n" "\t\t\t\t\t\t\t\t\t\t\t
          " msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-certificate-shortcodes.php:111 msgid "This can be used to change the date format. Default: \"F j, Y, g:i a\" shows as March 10, 2001, 5:16 pm.
          Example: [courseinfo show=\"completed_on\" format=\"Y-m-d H:i:s\"] will show as 2001-03-10 17:16:18" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-pages/class-ld-settings-page-courses-builder-single.php:31 #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:162 msgctxt "placeholder: Course" msgid "%s Builder" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-courses-builder-single.php:109 #: includes/settings/settings-pages/class-ld-settings-page-quizzes-builder-single.php:139 msgid "Settings saved." msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-courses-builder-single.php:111 #: includes/settings/settings-pages/class-ld-settings-page-quizzes-builder-single.php:141 #: includes/settings/settings-pages/class-ld-settings-page-translations.php:88 #: includes/settings/settings-pages/class-ld-settings-page-translations.php:97 msgid "Dismiss this notice." msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-courses-options.php:23 msgctxt "Course Settings" msgid "Settings" msgstr "" #. translators: Course Shortcodes Label #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:25 msgctxt "Course Shortcodes Label" msgid "Shortcodes" msgstr "" #. translators: placeholder: Course Label. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:43 msgctxt "placeholder: Course Label" msgid "%s Shortcodes" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:52 msgid "Shortcode Options" msgstr "" #. translators: placeholders: course, lesson, quiz. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:55 msgctxt "placeholders: course, lesson, quiz" msgid "You may use shortcodes to add information to any page/%1$s/%2$s/%3$s. Here are built-in shortcodes for displaying relavent user information." msgstr "" #. translators: placeholder: courses, course, quiz. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:60 msgctxt "placeholder: courses, course, quiz" msgid "Displays user's enrolled %1$s, %2$s progress, %3$s scores, and achieved certificates. This shortcode can take following parameters:" msgstr "" #. translators: placeholders: courses, courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:64 msgctxt "placeholders: courses, courses" msgid "sets order of %1$s. Default value DESC. Possible values: DESC, ASC. Example: [ld_profile order=\"ASC\"] shows %2$s in ascending order." msgstr "" #. translators: placeholders: courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:67 msgctxt "placeholders: courses" msgid "sets what the list of ordered by. Default value ID. Possible values: ID, title. Example: [ld_profile orderby=\"title\" order=\"ASC\"] shows %s in ascending order by title." msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:70 #: includes/settings/shortcodes-sections/ld_course_info.php:59 #: includes/settings/shortcodes-sections/ld_course_info.php:99 #: includes/settings/shortcodes-sections/ld_course_list.php:23 #: includes/settings/shortcodes-sections/ld_lesson_list.php:32 #: includes/settings/shortcodes-sections/ld_profile.php:38 #: includes/settings/shortcodes-sections/ld_quiz_list.php:78 #: includes/settings/shortcodes-sections/ld_topic_list.php:42 msgid "See the full list of available orderby options here." msgstr "" #. translators: placeholders: courses, courses (URL slug). #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:76 msgctxt "placeholders: courses, courses (URL slug)" msgid "This shortcode shows list of %1$s. You can use this shortcode on any page if you dont want to use the default /%2$s page. This shortcode can take following parameters:" msgstr "" #. translators: placeholders: courses, courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:83 msgctxt "placeholders: courses, courses" msgid "limits the number of %1$s displayed. Example: [ld_course_list num=\"10\"] shows 10 %2$s." msgstr "" #. translators: placeholders: courses, courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:86 msgctxt "placeholders: courses, courses" msgid "sets order of %1$s. Possible values: DESC, ASC. Example: [ld_course_list order=\"ASC\"] shows %2$s in ascending order." msgstr "" #. translators: placeholders: courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:89 msgctxt "placeholders: courses" msgid "sets what the list of ordered by. Example: [ld_course_list order=\"ASC\" orderby=\"title\"] shows %s in ascending order by title." msgstr "" #. translators: placeholders: courses, courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:92 msgctxt "placeholders: courses, courses" msgid "show current user's %1$s. Example: [ld_course_list mycourses=\"true\"] shows %2$s the current user has access to." msgstr "" #. translators: placeholders: courses, courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:93 msgid "number of columns to show when using course grid addon. Example: [ld_course_list col=\"2\"] shows 2 columns." msgstr "" #. translators: placeholders: courses, courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:98 msgctxt "placeholders: courses, courses" msgid "shows %1$s with mentioned category id. Example: [ld_course_list cat=\"10\"] shows %2$s having category with category id 10." msgstr "" #. translators: placeholders: courses, courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:102 msgctxt "placeholders: courses, courses" msgid "shows %1$s with mentioned category slug. Example: [ld_course_list category_name=\"math\"] shows %2$s having category slug math." msgstr "" #. translators: placeholders: courses, courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:103 msgid "shows a course category dropdown. Example: [ld_course_list categoryselector=\"true\"]." msgstr "" #. translators: placeholders: courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:109 msgctxt "placeholders: courses, courses" msgid "shows %1$s with mentioned tag. Example: [ld_course_list tag=\"math\"] shows %2$s having tag math." msgstr "" #. translators: placeholders: courses, courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:112 msgctxt "placeholders: courses, courses" msgid "shows %1$s with mentioned tag_id. Example: [ld_course_list tag_id=\"30\"] shows %2$s having tag with tag_id 30." msgstr "" #. translators: placeholders: courses, courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:118 msgctxt "placeholders: courses, courses" msgid "shows %1$s with mentioned course category id. Example: [ld_course_list course_cat=\"10\"] shows %2$s having course category with category id 10." msgstr "" #. translators: placeholders: courses, courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:122 msgctxt "placeholders: courses, courses" msgid "shows %1$s with mentioned course category slug. Example: [ld_course_list course_category_name=\"math\"] shows %2$s having course category slug math." msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:124 msgid "shows a category dropdown. Example: [ld_course_list course_categoryselector=\"true\"]." msgstr "" #. translators: placeholders: courses, courses #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:130 msgctxt "placeholders: courses, courses" msgid "shows %1$s with mentioned course tag. Example: [ld_course_list course_tag=\"math\"] shows %2$s having course tag math." msgstr "" #. translators: placeholders: courses, courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:133 msgctxt "placeholders: courses, courses" msgid "shows %1$s with mentioned course_tag_id. Example: [ld_course_list course_tag_id=\"30\"] shows %2$s having course tag with tag_id 30." msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:136 msgid "See the full list of Category and Tag filtering options." msgstr "" #. translators: placeholders: lessons. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:142 msgctxt "placeholders: lessons" msgid "This shortcode shows list of %s. You can use this shortcode on any page. This shortcode can take following parameters: num, order, orderby, tag, tag_id, cat, category_name lesson_tag, lesson_tag_id, lesson_cat, lesson_category_name, lesson_categoryselector. See [ld_course_list] above details on using the shortcode parameters." msgstr "" #. translators: placeholders: topics. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:147 msgctxt "placeholders: topics" msgid "This shortcode shows list of %s. You can use this shortcode on any page. This shortcode can take following parameters: num, order, orderby, tag, tag_id, cat, category_name, topic_tag, topic_tag_id, topic_cat, topic_category_name, topic_categoryselector. See [ld_course_list] above details on using the shortcode parameters." msgstr "" #. translators: placeholders: quizzes. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:152 msgctxt "placeholders: quizzes" msgid "This shortcode shows list of %s. You can use this shortcode on any page. This shortcode can take following parameters: num, order, orderby. See [ld_course_list] above details on using the shortcode parameters." msgstr "" #. translators: placeholders: course, course, lesson, quiz. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:156 #: includes/settings/shortcodes-sections/learndash_course_progress.php:11 msgctxt "placeholders: course, course, lesson, quiz" msgid "This shortcode displays users progress bar for the %1$s in any %2$s/%3$s/%4$s pages." msgstr "" #. translators: placeholders: course. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:161 msgctxt "placeholders: course" msgid "This shortcode shows the content if the user is not enrolled in the %s. The shortcode can be used on any page or widget area. This shortcode can take following parameters:" msgstr "" #. translators: placeholders: courses, courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:165 msgctxt "placeholders: courses, courses" msgid "Optional. Show content if the student does not have access to a specific %s. Example: [visitor course_id=\"10\"]insert any content[/visitor]" msgstr "" #. translators: placeholders: course. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:171 msgctxt "placeholders: course" msgid "This shortcode shows the content if the user is enrolled in the %s. The shortcode can be used on any page or widget area. This shortcode can take following parameters:" msgstr "" #. translators: placeholders: courses, courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:175 msgctxt "placeholders: courses, courses" msgid "Optional. Show content if the student has access to a specific %s. Example: [student course_id=\"10\"]insert any content[/student]" msgstr "" #. translators: placeholders: course. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:180 msgctxt "placeholders: course" msgid "This shortcode shows the content if the user has completed the %s. The shortcode can be used on any page or widget area. This shortcode can take following parameters:" msgstr "" #. translators: placeholders: courses, courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:184 msgctxt "placeholders: courses, courses" msgid "Optional. Show content if the student has access to a specific %s. Example: [course_complete course_id=\"10\"]insert any content[/course_complete]" msgstr "" #. translators: placeholders: courses, courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:185 msgid "Optional. If not provided will use current logged in user. Example: [course_complete course_id=\"10\" user_id=\"456\"]insert any content[/course_complete]" msgstr "" #. translators: placeholders: course. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:192 msgctxt "placeholders: course" msgid "This shortcode shows the content if the user has started but not completed the %s. The shortcode can be used on any page or widget area. This shortcode can take following parameters:" msgstr "" #. translators: placeholders: courses, courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:196 msgctxt "placeholders: courses, courses" msgid "Optional. Show content if the student has access to a specific %s. Example: [course_inprogress course_id=\"10\"]insert any content[/course_inprogress]" msgstr "" #. translators: placeholders: courses, courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:197 msgid "Optional. If not provided will use current logged in user. Example: [course_inprogress course_id=\"10\" user_id=\"456\"]insert any content[/course_inprogress]" msgstr "" #. translators: placeholders: course. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:203 msgctxt "placeholders: course" msgid "This shortcode shows the content if the user has access to the %s but not yet started. The shortcode can be used on any page or widget area. This shortcode can take following parameters:" msgstr "" #. translators: placeholders: courses, courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:207 msgctxt "placeholders: courses, courses" msgid "Optional. Show content if the student has access to a specific %s. Example: [course_notstarted course_id=\"10\"]insert any content[/course_notstarted]" msgstr "" #. translators: placeholders: courses, courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:208 msgid "Optional. If not provided will use current logged in user. Example: [course_notstarted course_id=\"10\" user_id=\"456\"]insert any content[/course_notstarted]" msgstr "" #. translators: placeholders: course, course. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:214 msgctxt "placeholders: course, course" msgid "This shortcode shows the %1$s for the user. This shortcode can take following parameters: user_id if not provided will assume current user. Example usage: [ld_course_info user_id=\"123\"] will show the %2$s for the user 123" msgstr "" #. translators: placeholders: course, course. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:219 msgctxt "placeholders: course, course" msgid "This shortcode shows the earned %s points for the user. This shortcode can take following parameters: user_id if not provided will assume current user. Example usage: [ld_user_course_points]" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:222 #: includes/settings/shortcodes-sections/user_groups.php:11 msgid "This shortcode displays the list of groups users are assigned to as users or leaders." msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:224 msgid "This shortcode shows the content if the user is enrolled in a specific group. Example usage: [ld_group]Welcome to the Group![/ld_group] This shortcode takes the following parameters:" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:226 msgid "Required. Show content if the student has access to a specific group. Example: [ld_group group_id=\"16\"]insert any content[/ld_group]" msgstr "" #. translators: placeholders: Lessons, Topics #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:231 #: includes/settings/shortcodes-sections/ld_video.php:12 msgctxt "placeholders: Lessons, Topics" msgid "This shortcode is used on %1$s and %2$s where Video Progression is enabled. The video player will be added above the content. This shortcode allows positioning the player elsewhere within the content. This shortcode does not take any parameters." msgstr "" #. translators: placeholders: course, Courses. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:237 msgctxt "placeholders: course, Courses" msgid "This shortcode can show the payment buttons on any page. Example: [learndash_payment_buttons course_id=\"123\"] shows the payment buttons for %1$s with %2$s ID: 123" msgstr "" #. translators: placeholders: Course, lessons, topics, quizzes, course, course, course. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:242 msgctxt "placeholders: Course, lesson, topics, quizzes, course, course, Course" msgid "This shortcode displays the %1$s Content table (%2$s, %3$s, and %4$s) when inserted on a page or post. Example: [course_content course_id=\"123\"] shows the %5$s content for %6$s with %7$s ID: 123" msgstr "" #. translators: placeholders: course, Course, Course. #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:248 msgctxt "placeholders: course, Course, Course" msgid "This shortcode displays the user %1$s access expire date. Example: [ld_course_expire_status course_id=\"111\" user=\"222\" label_before=\"%2$s access will expire on:\" label_after=\"%3$s access expired on:\" format=\"F j, Y g:i a\"]." msgstr "" #. translators: plaeholders: course #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:252 msgctxt "plaeholders: course" msgid "The ID of the %s to check. If not provided will attempt to user current post. Example: [ld_course_expire_status course_id=\"111\"] " msgstr "" #. translators: plaeholders: course #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:253 msgid "The ID of the user to check. If not provided the current logged in user ID will be used. Example: [ld_course_expire_status user_id=\"222\"]" msgstr "" #. translators: placeholders: Course, course #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:256 msgctxt "placeholders: Course, course" msgid "The label prefix shown before the access expires. Default label is \"%1$s access will expire on:\" Example: [ld_course_expire_status label_before=\"Your access to this %2$s will expire on:\"]" msgstr "" #. translators: placeholders: Course, course #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:259 msgctxt "placeholders: Course, course" msgid "The label prefix shown after access has expired. Default label is \"%1$s access expired on:\" Example: [ld_course_expire_status label_after=\"Your access to this %2$s expired on:\"]" msgstr "" #. translators: placeholders: Course, course #: includes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.php:260 msgid "This parameter controls the format of the date/time value shown to the user. If not provided the date/time format from your WordPress sytem will be used. Example: [ld_course_expire_status format=\"F j, Y g:i a\"]" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-custom-labels.php:22 #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:31 msgid "Custom Labels" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-data-upgrades.php:21 #: includes/settings/settings-sections/class-ld-settings-section-data-upgrades.php:31 msgid "Data Upgrades" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-general.php:21 msgid "General" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-import-export.php:24 msgid "LearnDash Import/Export" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-import-export.php:25 msgid "Import/Export" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-lessons-options.php:23 msgctxt "Lesson Settings" msgid "Settings" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-license.php:23 msgid "LMS License" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:53 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:434 msgid "LearnDash Overview" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:152 msgid "Mark Incomplete" msgstr "" #. translators: placeholder: Link to purchase LearnDash. #: includes/settings/settings-pages/class-ld-settings-page-overview.php:276 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:399 msgctxt "placeholder: link to purchase LearnDash" msgid "Please enter your email and a valid license or %s a license now." msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:357 msgctxt "LearnDash Bootcamp Title" msgid "LearnDash Bootcamp" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:358 msgid "Hide LearnDash Bootcamp" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:367 msgctxt "Bootcamp headline" msgid "Enter Your License" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:373 msgid "Welcome to LearnDash!" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:374 msgid "We know you are excited to get started, but before you do it is very important that you first add your license details below!" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:376 msgid "Your active license gives you access to product support and updates that we push out." msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:377 msgid "Your license details were emailed to you after purchase." msgstr "" #. translators: placeholder: Link to the license page on the LearnDash website. #: includes/settings/settings-pages/class-ld-settings-page-overview.php:381 msgctxt "Link to the license page on the LearnDash website" msgid "You can also find them listed %1$s" msgstr "" #. translators: placeholder: Link to the license page on the LearnDash website. #: includes/settings/settings-pages/class-ld-settings-page-overview.php:382 msgid "on your account." msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:411 msgctxt "License email" msgid "Enter your Email here" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:415 msgctxt "License key" msgid "Enter your license key here" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:419 msgid "Save license" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:425 msgid "You do not have sufficient permissions to change the license information." msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:441 msgid "In this video we will briefly explain the layout of LearnDash, our free add-ons, and where you can go to read more details about our features." msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:448 msgid "Additional Resources" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:450 msgid "LearnDash Documentation" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:451 msgid "Getting Started [Guide]" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:452 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:1053 msgid "Contact Support" msgstr "" #. translators: placeholder: Courses, Course. #: includes/settings/settings-pages/class-ld-settings-page-overview.php:469 msgctxt "placeholder: Courses, Course" msgid "Creating %1$s with the %2$s Builder" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-pages/class-ld-settings-page-overview.php:483 msgctxt "placeholder: Course." msgid "In this video we will demonstrate how you can create a course using the LearnDash %s Builder." msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:493 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:546 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:613 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:655 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:700 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:752 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:787 msgid "Additional Resources:" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-pages/class-ld-settings-page-overview.php:499 msgctxt "placeholder: Course" msgid "%s Builder [Article]" msgstr "" #. translators: placeholders: Lessons, Topics #: includes/settings/settings-pages/class-ld-settings-page-overview.php:520 msgctxt "placeholders: Lessons, Topics" msgid "Adding Content Using %1$s & %2$s" msgstr "" #. translators: placeholders: Course, Lessons, Topics #: includes/settings/settings-pages/class-ld-settings-page-overview.php:534 msgctxt "placeholders: Course, Lessons, Topics" msgid "Now that you have your %1$s created, it is time to start adding content via %2$s and %3$s. In this video we will show how to do this and explain the various settings." msgstr "" #. translators: placeholder: Lessons. #: includes/settings/settings-pages/class-ld-settings-page-overview.php:552 msgctxt "placeholder: Lessons" msgid "%s Documentation" msgstr "" #. translators: placeholder: Topics. #: includes/settings/settings-pages/class-ld-settings-page-overview.php:561 msgctxt "placeholder: Topics" msgid "%s Documentation" msgstr "" #. translators: placeholder: Quizzes #: includes/settings/settings-pages/class-ld-settings-page-overview.php:582 msgctxt "placeholder: Quizzes" msgid "Creating %s" msgstr "" #. translators: placeholder: Quizzes, course, quizzes, course, Quiz, Questions #: includes/settings/settings-pages/class-ld-settings-page-overview.php:595 msgctxt "placeholder: Quizzes, course, quizzes, course, Quiz, Questions" msgid "%1$s are a great way to check if your learners are understanding the %2$s content. You can have one or more %3$s throughout a %4$s, or you can put it at the end. In this video we demonstrate how to create a %5$s and how to add %6$s." msgstr "" #. translators: placeholder: Quizzes. #: includes/settings/settings-pages/class-ld-settings-page-overview.php:618 msgctxt "placeholder: Quizzes." msgid "%s Documentation" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:622 msgid "Certificate Documentation" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:635 msgid "Setting-up User Registration" msgstr "" #. translators: placeholder: Courses #: includes/settings/settings-pages/class-ld-settings-page-overview.php:645 msgctxt "placeholder: Courses" msgid "Once you have finished creating your %s it is time to configure user registration so that people can access them! In this video we explain how to create an attractive login and registration form." msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:657 msgid "LearnDash Login & Registration [Guide]" msgstr "" #. translators: placeholder: Courses. #: includes/settings/settings-pages/class-ld-settings-page-overview.php:673 msgctxt "placeholder: Courses." msgid "Selling Your %s" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:686 msgctxt "placeholders: Courses, courses" msgid "If you are selling your %1$s then you have many options available to you! In the first video we demonstrate how you can quickly start accepting payments with PayPal and Stripe. In the second video we will show you how to sell %2$s using the popular WordPress shopping cart WooCommerce." msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-pages/class-ld-settings-page-overview.php:705 msgctxt "placeholder: Course." msgid "%s Access Settings [Article]" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:709 msgid "PayPal Settings [Article]" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:710 msgid "Stripe Integration [Article]" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:711 msgid "WooCommerce Integration [Article]" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-pages/class-ld-settings-page-overview.php:727 msgctxt "placeholder: Course" msgid "Creating a %s Listing" msgstr "" #. translators: placeholder: Course, Courses, Course. #: includes/settings/settings-pages/class-ld-settings-page-overview.php:740 msgctxt "placeholder: Course, Courses, Course" msgid "Your %1$s is created and you have also configured registration/login and how you will accept payment (in the event that you are selling your %2$s). It is now time to create a %3$s Listing which is easy to do using the Course Grid Add-on." msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:754 msgid "Course Grid Add-on [Article]" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:767 msgid "Adding a User Profile Page" msgstr "" #. translators: placeholder: courses. #: includes/settings/settings-pages/class-ld-settings-page-overview.php:777 msgctxt "placeholder: courses" msgid "The final step is to create a User Profile so that your users can instantly see which %s they have access to, their progress, performance, and earned certificates!" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:789 msgid "User Profiles [Guide]" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:802 msgid "Important Resources" msgstr "" #. translators: placeholder: courses #: includes/settings/settings-pages/class-ld-settings-page-overview.php:812 msgctxt "placeholder: courses" msgid "Setting up a learning site is no small task – but you are not alone! Below are some resources available to you so that you can get the most out of your LearnDash powered %s!" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:820 msgid "LearnDash Community Facebook Group" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:821 msgid "LearnDash YouTube Channel" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:822 msgid "How to Get Help [Article]" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:839 msgid "Tips and Tricks" msgstr "" #. translators: placeholder: Courses. #: includes/settings/settings-pages/class-ld-settings-page-overview.php:855 msgctxt "placeholder: Courses" msgid "Sell Online %s" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:863 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:890 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:921 msgid "Something went wrong connecting to www.learndash.com. Please reload the page." msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:873 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:901 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:931 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:967 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:981 #: includes/settings/settings-pages/class-ld-settings-page-overview.php:994 msgid "View more" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:885 msgid "LearnDash Tips" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:908 msgid "LearnDash News" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:916 msgid "Announcements" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:938 msgid "Documentation" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:942 msgid "Search the Documentation website. A new tab will be opened on submission." msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:943 msgid "Search documentation" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:950 msgid "Getting Started" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:953 msgid "Getting Started Guide" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:954 msgid "LearnDash Core Docs" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-pages/class-ld-settings-page-overview.php:959 msgctxt "placeholder: Course." msgid "%s Builder" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:972 msgid "Popular Articles" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:975 msgid "Registration & Login" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:976 #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:151 msgid "Focus Mode" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:977 msgid "User Profiles" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:978 msgid "Course Grid Add-on" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:986 msgid "FAQ" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:988 msgid "Recommended WordPress Themes" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:989 msgid "Invalid License Notice" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:990 msgid "Hiding Post Meta Data" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:991 msgid "404 Error on LearnDash Content" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:1000 msgid "Popular Support Topics" msgstr "" #. translators: placeholder: Courses. #: includes/settings/settings-pages/class-ld-settings-page-overview.php:1009 #: includes/settings/settings-sections/class-ld-settings-section-permalinks.php:126 msgctxt "placeholder: Courses" msgid "%s" msgstr "" #. translators: placeholder: Lessons. #. translators: placeholder: Lessons #: includes/settings/settings-pages/class-ld-settings-page-overview.php:1018 #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:263 #: includes/settings/settings-sections/class-ld-settings-section-permalinks.php:137 msgctxt "placeholder: Lessons" msgid "%s" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:1039 msgid "Reporting" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:1040 msgid "Users & Groups" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:1049 #: includes/settings/settings-pages/class-ld-settings-page-support.php:29 msgid "Support" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:1051 msgid "Have some questions or need a helping hand? The LearnDash support team is standing by, ready to assist you!" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:1056 msgid "LearnDash Facebook Group" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:1057 msgid "LearnDash YouTube" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-overview.php:1059 msgctxt "Toggles visibility of the LearnDash Bootcamp section" msgid "Show LearnDash Bootcamp" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-paypal.php:22 #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:31 msgid "PayPal Settings" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-questions-options.php:25 msgctxt "Question Settings" msgid "Settings" msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-pages/class-ld-settings-page-quizzes-builder-single.php:38 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:177 msgctxt "placeholder: Quiz" msgid "%s Builder" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-quizzes-builder-single.php:69 msgid "Permalink:" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-quizzes-builder-single.php:70 msgid "Edit:" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-quizzes-options.php:25 msgctxt "Quiz Settings" msgid "Settings" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-topics-options.php:22 msgctxt "Topic Settings" msgid "Settings" msgstr "" #: includes/settings/settings-pages/class-ld-settings-page-translations.php:23 msgid "Translations" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-assignments-cpt.php:36 msgid "Assignment Custom Post Type Options" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-assignments-cpt.php:39 msgid "Control the LearnDash Assignment Custom Post Type Options." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-assignments-cpt.php:70 #: includes/settings/settings-sections/class-ld-settings-section-assignments-cpt.php:71 #: includes/settings/settings-sections/class-ld-settings-section-questions-cpt.php:61 #: includes/settings/settings-sections/class-ld-settings-section-questions-cpt.php:62 msgid "Exclude From Search" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-assignments-cpt.php:74 #: includes/settings/settings-sections/class-ld-settings-section-questions-cpt.php:65 msgid "Exclude" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-assignments-cpt.php:80 msgid "Publicly Viewable" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-assignments-cpt.php:81 msgid "Controls access to view single Assignments on the front-end." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-assignments-cpt.php:84 msgid "Public" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-assignments-cpt.php:90 msgid "Comments enabled" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-assignments-cpt.php:91 msgid "Controls if comments are enabled." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-assignments-cpt.php:94 msgid "Enabled" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-sections/class-ld-settings-section-courses-cpt.php:38 msgctxt "Course Custom Post Type Options" msgid "%s Custom Post Type Options" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-sections/class-ld-settings-section-courses-cpt.php:45 msgctxt "placeholder: Course" msgid "Control the LearnDash %s Custom Post Type Options." msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-sections/class-ld-settings-section-courses-cpt.php:105 msgctxt "placeholder: Course" msgid "%s Search" msgstr "" #. translators: placeholder: course. #: includes/settings/settings-sections/class-ld-settings-section-courses-cpt.php:110 msgctxt "placeholder: course" msgid "Includes the %s post type in front end search results" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-courses-cpt.php:121 #: includes/settings/settings-sections/class-ld-settings-section-lessons-cpt.php:121 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-cpt.php:120 #: includes/settings/settings-sections/class-ld-settings-section-topics-cpt.php:121 msgid "Archive Page" msgstr "" #. translators: placeholders: courses, link to WP Permalins page. #: includes/settings/settings-sections/class-ld-settings-section-courses-cpt.php:124 msgctxt "placeholders: courses, link to WP Permalins page" msgid "Enables the front end archive page where all %1$s are listed. You must %2$s for the change to take effect." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-courses-cpt.php:126 #: includes/settings/settings-sections/class-ld-settings-section-lessons-cpt.php:126 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-cpt.php:125 #: includes/settings/settings-sections/class-ld-settings-section-topics-cpt.php:126 msgid "re-save your permalinks" msgstr "" #. translators: placeholder: URL for CPT Archive. #: includes/settings/settings-sections/class-ld-settings-section-courses-cpt.php:133 #: includes/settings/settings-sections/class-ld-settings-section-lessons-cpt.php:133 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-cpt.php:132 #: includes/settings/settings-sections/class-ld-settings-section-topics-cpt.php:133 msgctxt "placeholder: URL for CPT Archive" msgid "Archive URL: %s" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-courses-cpt.php:142 #: includes/settings/settings-sections/class-ld-settings-section-lessons-cpt.php:142 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-cpt.php:141 #: includes/settings/settings-sections/class-ld-settings-section-topics-cpt.php:142 msgid "RSS/Atom Feed" msgstr "" #. translators: placeholder: course #: includes/settings/settings-sections/class-ld-settings-section-courses-cpt.php:145 msgctxt "placeholder: course" msgid "Enables an RSS feed for all %1$s posts." msgstr "" #. translators: placeholder: URL for CPT Archive. #: includes/settings/settings-sections/class-ld-settings-section-courses-cpt.php:153 #: includes/settings/settings-sections/class-ld-settings-section-lessons-cpt.php:153 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-cpt.php:152 #: includes/settings/settings-sections/class-ld-settings-section-topics-cpt.php:153 msgctxt "placeholder: URL for RSS Feed" msgid "RSS Feed URL: %s" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-courses-cpt.php:162 #: includes/settings/settings-sections/class-ld-settings-section-lessons-cpt.php:162 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-cpt.php:161 #: includes/settings/settings-sections/class-ld-settings-section-topics-cpt.php:162 msgid "Editor Supported Settings" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-courses-cpt.php:163 #: includes/settings/settings-sections/class-ld-settings-section-lessons-cpt.php:163 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-cpt.php:162 #: includes/settings/settings-sections/class-ld-settings-section-topics-cpt.php:163 msgid "Enables WordPress supported settings within the editor and theme." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-courses-cpt.php:166 #: includes/settings/settings-sections/class-ld-settings-section-lessons-cpt.php:166 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-cpt.php:165 #: includes/settings/settings-sections/class-ld-settings-section-topics-cpt.php:166 msgid "Featured image" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-courses-cpt.php:169 #: includes/settings/settings-sections/class-ld-settings-section-lessons-cpt.php:169 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-cpt.php:168 #: includes/settings/settings-sections/class-ld-settings-section-topics-cpt.php:169 msgid "Revisions" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:38 msgctxt "placeholder: Course" msgid "Global %s Management & Display Settings" msgstr "" #. translators: placeholder: course. #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:45 msgctxt "placeholder: course" msgid "Control settings for %s creation, and visual organization" msgstr "" #. translators: placeholder: Lesson, Topic, Quiz, Course. #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:167 msgctxt "placeholder: Lesson, Topic, Quiz, Course." msgid "Manage all %1$s, %2$s, and %3$s associations within the %4$s Builder." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:182 msgid "Steps Displayed" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:197 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:379 msgctxt "placeholder: Course" msgid "Shared %s Steps" msgstr "" #. translators: placeholder: lessons, topics, quizzes, courses, course, URL to admin Permalinks. #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:203 msgctxt "placeholder: lessons, topics, quizzes, courses, course, URL to admin Permalinks." msgid "Share steps (%1$s, %2$s, %3$s) across multiple %4$s. Progress is maintained on a per-%5$s basis.

          Note: Enabling this option will also enable the nested permalinks setting." msgstr "" #. translators: placeholders: Lesson, topics and quizzes, courses. #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:217 msgctxt "placeholders: Lesson, topics and quizzes, courses" msgid "%1$s, %2$s and %3$s can be shared across multiple %4$s" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:238 msgctxt "placeholder: Course" msgid "%s Table Pagination" msgstr "" #. translators: placeholder: course, course. #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:243 msgctxt "placeholder: course, course" msgid "Customize the pagination options for ALL %1$s content tables and %2$s navigation widgets." msgstr "" #. translators: placeholder: default per page number. #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:251 msgctxt "placeholder: default per page number" msgid "Currently showing default pagination %d" msgstr "" #. translators: placeholder: Topics #. translators: placeholder: Topics. #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:280 #: includes/settings/settings-sections/class-ld-settings-section-permalinks.php:148 msgctxt "placeholder: Topics" msgid "%s" msgstr "" #. translators: placeholder: Lesson, Topic. #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:305 msgctxt "placeholder: Lesson, Topic" msgid "%1$s and %2$s Order" msgstr "" #. translators: placeholder: lessons, topics. #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:311 msgctxt "placeholder: lessons, topics" msgid "Customize the display order of %1$s and %2$s." msgstr "" #. translators: placeholder: Default Order By, Order. #: includes/settings/settings-sections/class-ld-settings-section-courses-management-display.php:320 msgctxt "placeholder: Default Order By, Order" msgid "Using default sorting by %1$s in %2$s order" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-sections/class-ld-settings-section-courses-taxonomies.php:38 msgctxt "placeholder: Course" msgid "%s Taxonomies" msgstr "" #. translators: placeholder: courses. #: includes/settings/settings-sections/class-ld-settings-section-courses-taxonomies.php:45 msgctxt "placeholder: Course" msgid "Control which taxonomies can be used to better organize your LearnDash %s." msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-sections/class-ld-settings-section-courses-taxonomies.php:106 msgctxt "placeholder: Course" msgid "Manage %s Categories via the Actions dropdown" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-sections/class-ld-settings-section-courses-taxonomies.php:124 msgctxt "placeholder: Course" msgid "Manage %s Tags via the Actions dropdown" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-courses-taxonomies.php:132 #: includes/settings/settings-sections/class-ld-settings-section-lessons-taxonomies.php:131 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-taxonomies.php:134 #: includes/settings/settings-sections/class-ld-settings-section-topics-taxonomies.php:131 msgid "WP Post Categories" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-courses-taxonomies.php:136 #: includes/settings/settings-sections/class-ld-settings-section-lessons-taxonomies.php:135 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-taxonomies.php:138 #: includes/settings/settings-sections/class-ld-settings-section-topics-taxonomies.php:135 msgid "Manage WP Categories via the Actions dropdown" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-courses-taxonomies.php:142 #: includes/settings/settings-sections/class-ld-settings-section-lessons-taxonomies.php:141 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-taxonomies.php:144 #: includes/settings/settings-sections/class-ld-settings-section-topics-taxonomies.php:141 msgid "WP Post Tags" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-courses-taxonomies.php:146 #: includes/settings/settings-sections/class-ld-settings-section-lessons-taxonomies.php:145 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-taxonomies.php:148 #: includes/settings/settings-sections/class-ld-settings-section-topics-taxonomies.php:145 msgid "Manage WP Tags via the Actions dropdown" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-courses-themes.php:34 msgid "Design & Content Elements" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-courses-themes.php:37 msgid "Alter the look and feel of your Learning Management System" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-courses-themes.php:75 msgid "Active Template" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-courses-themes.php:76 msgid "New front-end design options and settings can be used when the LearnDash 3.0 template is activated." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:33 msgid "Are you sure want to reset the custom labels?" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:76 msgid "Label to replace \"course\" (singular)." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:84 msgid "Label to replace \"courses\" (plural)." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:92 msgid "Label to replace \"lesson\" (singular)." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:100 msgid "Label to replace \"lessons\" (plural)." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:108 msgid "Label to replace \"topic\" (singular)." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:116 msgid "Label to replace \"topics\" (plural)." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:124 msgid "Label to replace \"quiz\" (singular)." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:132 msgid "Label to replace \"quizzes\" (plural)." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:140 msgid "Label to replace \"question\" (singular)." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:148 msgid "Label to replace \"questions\" (plural)." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:155 msgid "Take this Course (Button)" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:156 msgid "Label to replace \"Take this Course\" button." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:163 msgid "Mark Complete (Button)" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:164 msgid "Label to replace \"Mark Complete\" button." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:171 msgid "Click Here to Continue (Button)" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-custom-labels.php:172 msgid "Label to replace \"Click Here to Continue\" button." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-admin-user.php:31 msgid "Admin User Settings" msgstr "" #. translators: placeholder: courses. #: includes/settings/settings-sections/class-ld-settings-section-general-admin-user.php:35 msgctxt "placeholder: courses" msgid "Controls the admin user-experience navigating %s." msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-sections/class-ld-settings-section-general-admin-user.php:86 msgctxt "placeholder: Course" msgid "%s Auto-enrollment" msgstr "" #. translators: placeholder: courses, course. #: includes/settings/settings-sections/class-ld-settings-section-general-admin-user.php:91 msgctxt "placeholder: courses, course" msgid "Allow admin users to have access to %1$s automatically without requiring %2$s enrollment." msgstr "" #. translators: placeholder: courses. #: includes/settings/settings-sections/class-ld-settings-section-general-admin-user.php:99 msgctxt "placeholder: courses" msgid "Admin has access to enrolled %s only" msgstr "" #. translators: placeholder: courses. #: includes/settings/settings-sections/class-ld-settings-section-general-admin-user.php:104 msgctxt "placeholder: courses" msgid "Admin has access to all %s automatically" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-sections/class-ld-settings-section-general-admin-user.php:114 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:350 msgctxt "placeholder: Course" msgid "Bypass %s limits" msgstr "" #. translators: placeholder: course. #: includes/settings/settings-sections/class-ld-settings-section-general-admin-user.php:119 msgctxt "placeholder: course" msgid "Allow admin users to access %s content in any order bypassing progression and access limitations" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-admin-user.php:124 msgid "Admin must follow the progression and access rules" msgstr "" #. translators: placeholder: course. #: includes/settings/settings-sections/class-ld-settings-section-general-admin-user.php:127 msgctxt "placeholder: course" msgid "Admin can access %s content in any order" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-admin-user.php:135 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:359 msgid "Include in Reports" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-admin-user.php:136 msgid " Include admin users in reports, including ProPanel reporting." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-admin-user.php:140 msgid "Admin is not included in reports" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-admin-user.php:141 msgid "Admin is included in reports" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-login-registration.php:31 msgid "Login / Registration Settings" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-login-registration.php:60 msgid "Login Logo" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-login-registration.php:77 msgid "Login Logo 2" msgstr "" #. translators: placeholder: Default per page number. #: includes/settings/settings-sections/class-ld-settings-section-general-login-registration.php:80 msgctxt "placeholder: Default per page" msgid "Default per page controls all shortcodes and widget. Default is %d. Set to zero for no pagination." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-per-page.php:31 msgid "Global Pagination Settings" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-per-page.php:32 msgid "Specify the default number of items displayed per page for various listing outputs." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-per-page.php:120 msgid "WP Profile" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-per-page.php:121 msgid "Controls the pagination for the WordPress Profile LearnDash elements." msgstr "" #. translators: placeholder: default per page number. #: includes/settings/settings-sections/class-ld-settings-section-general-per-page.php:127 msgctxt "placeholder: default per page number" msgid "Pagination defaults to %d" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-sections/class-ld-settings-section-general-per-page.php:138 #: includes/settings/shortcodes-sections/learndash_course_progress.php:9 #: includes/gutenberg/blocks/ld-course-info/index.js:227 msgctxt "placeholder: Course" msgid "%s Progress" msgstr "" #. translators: placeholder: courses. #: includes/settings/settings-sections/class-ld-settings-section-general-per-page.php:148 msgctxt "placeholder: courses" msgid "%s per page" msgstr "" #. translators: placeholders: Quiz. #: includes/settings/settings-sections/class-ld-settings-section-general-per-page.php:162 #: includes/gutenberg/blocks/ld-course-info/index.js:286 msgctxt "placeholder: Quiz" msgid "%s Attempts" msgstr "" #. translators: placeholder: quizzes. #: includes/settings/settings-sections/class-ld-settings-section-general-per-page.php:172 msgctxt "placeholder: quizzes" msgid "%s per page" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-per-page.php:185 msgid "Shortcodes & Widgets" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-per-page.php:186 msgid "Controls the global pagination for the LD shortcodes as well as courseinfo widget. These can be overridden individually." msgstr "" #. translators: placeholders: Question. #: includes/settings/settings-sections/class-ld-settings-section-general-per-page.php:202 msgctxt "placeholder: Question" msgid "Backend %s Widget" msgstr "" #. translators: placeholders: Questions, quiz, question. #: includes/settings/settings-sections/class-ld-settings-section-general-per-page.php:207 msgctxt "Questions, quiz, question" msgid "Controls the pagination for the %1$s admin widget when editing a %2$s or %3$s." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-rest-api.php:31 msgid "REST API Settings" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-rest-api.php:33 msgid "Control and customize the REST API endpoints." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-rest-api.php:87 msgid "Enabled REST API" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-rest-api.php:88 msgid "Customize the LearnDash REST API namespace and endpoints. Leave text fields blank to revert to default." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-rest-api.php:94 msgid "REST API must be enabled" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-sections/class-ld-settings-section-general-rest-api.php:107 msgctxt "placeholder: Course" msgid "%s Endpoint Slug" msgstr "" #. translators: placeholder: Lesson. #: includes/settings/settings-sections/class-ld-settings-section-general-rest-api.php:119 msgctxt "placeholder: Lesson" msgid "%s Endpoint Slug" msgstr "" #. translators: placeholder: Topic. #: includes/settings/settings-sections/class-ld-settings-section-general-rest-api.php:131 msgctxt "placeholder: Topic" msgid "%s Endpoint Slug" msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-sections/class-ld-settings-section-general-rest-api.php:143 msgctxt "placeholder: Quiz" msgid "%s Endpoint Slug" msgstr "" #. translators: placeholder: Question. #: includes/settings/settings-sections/class-ld-settings-section-general-rest-api.php:155 msgctxt "placeholder: Question" msgid "%s Endpoint Slug" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-rest-api.php:165 msgid "User Endpoint Slug" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-general-rest-api.php:173 msgid "Groups Endpoint Slug" msgstr "" #. translators: placeholder: Lesson. #: includes/settings/settings-sections/class-ld-settings-section-lessons-cpt.php:38 #: includes/settings/settings-sections/class-ld-settings-section-topics-cpt.php:38 msgctxt "placeholder: Lesson" msgid "%s Custom Post Type Options" msgstr "" #. translators: placeholder: Lessons. #: includes/settings/settings-sections/class-ld-settings-section-lessons-cpt.php:45 msgctxt "placeholder: Lessons" msgid "Control options specific to the %s post type" msgstr "" #. translators: placeholder: Lesson. #: includes/settings/settings-sections/class-ld-settings-section-lessons-cpt.php:105 msgctxt "placeholder: Lesson" msgid "%s Search" msgstr "" #. translators: placeholder: lesson. #: includes/settings/settings-sections/class-ld-settings-section-lessons-cpt.php:110 msgctxt "placeholder: lesson" msgid "Includes the %s post type in front end search results" msgstr "" #. translators: placeholder: lessons, link to WP Permalins page. #: includes/settings/settings-sections/class-ld-settings-section-lessons-cpt.php:124 msgctxt "placeholder: , link to WP Permalins page" msgid "Enables the front end archive page where all %1$s are listed. You must %2$s for the change to take effect." msgstr "" #. translators: placeholder: lesson #: includes/settings/settings-sections/class-ld-settings-section-lessons-cpt.php:145 msgctxt "placeholder: lesson" msgid "Enables an RSS feed for all %1$s posts." msgstr "" #. translators: placeholder: Lesson. #: includes/settings/settings-sections/class-ld-settings-section-lessons-taxonomies.php:36 msgctxt "placeholder: Lesson" msgid "%s Taxonomies" msgstr "" #. translators: placeholder: lessons. #: includes/settings/settings-sections/class-ld-settings-section-lessons-taxonomies.php:43 msgctxt "placeholder: Lessons" msgid "Control which taxonomies can be used to better organize your LearnDash %s." msgstr "" #. translators: placeholder: Lesson. #: includes/settings/settings-sections/class-ld-settings-section-lessons-taxonomies.php:105 msgctxt "placeholder: Lesson" msgid "Manage %s Categories via the Actions dropdown" msgstr "" #. translators: placeholder: Lesson. #: includes/settings/settings-sections/class-ld-settings-section-lessons-taxonomies.php:123 msgctxt "placeholder: Lesson" msgid "Manage %s Tags via the Actions dropdown" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:33 msgid "Are you sure want to reset the PayPal values?" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:97 msgid "PayPal Email" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:98 msgid "Enter your PayPal email here." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:106 msgid "PayPal Currency" msgstr "" #. translators: placholder: Link to PayPal. #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:109 msgctxt "placeholder: URL to PayPal Currency Codes" msgid "Enter the currency code for transactions. See PayPal %s Documentation" msgstr "" #. translators: placholder: Link to PayPal. #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:110 msgid "Currency Codes" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:119 msgid "PayPal Country" msgstr "" #. translators: placeholder: Link to PayPal Country Codes. #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:122 msgctxt "placeholder: URL to PayPal Country Codes." msgid "Enter your country code here. See PayPal %s Documentation" msgstr "" #. translators: placeholder: Link to PayPal Country Codes. #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:123 msgid "Country Codes" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:132 msgid "PayPal Cancel URL" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:133 msgid "Enter the URL used for purchase cancellations." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:140 msgid "PayPal Return " msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:141 msgid "Enter the URL used for completed purchases (typically a thank you page)." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:148 msgid "PayPal Notify URL" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:149 msgid "Enter the URL used for IPN notifications." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:156 msgid "Use PayPal Sandbox" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:157 msgid "Check to enable the PayPal sandbox." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:183 msgid "PayPal Email must be a valid email." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:202 msgid "PayPal Country Code cannot be empty." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:204 msgid "PayPal Country Code should not be longer than 2 letters." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:224 msgid "PayPal Currency Code cannot be empty." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-paypal.php:226 msgid "PayPal Currency Code should not be longer than 3 letters." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-permalinks-taxonomies.php:32 msgid "LearnDash Taxonomy Permalinks" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-permalinks-taxonomies.php:35 msgid "Controls the URL slugs for the custom taxonomies used by LearnDash." msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-sections/class-ld-settings-section-permalinks-taxonomies.php:114 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:475 msgctxt "placeholder: Course" msgid "%s Category base" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-sections/class-ld-settings-section-permalinks-taxonomies.php:128 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:487 msgctxt "placeholder: Course" msgid "%s Tag base" msgstr "" #. translators: placeholder: Lesson. #: includes/settings/settings-sections/class-ld-settings-section-permalinks-taxonomies.php:144 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:502 msgctxt "placeholder: Lesson" msgid "%s Category base" msgstr "" #. translators: placeholder: Lesson. #: includes/settings/settings-sections/class-ld-settings-section-permalinks-taxonomies.php:158 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:514 msgctxt "placeholder: Lesson" msgid "%s Tag base" msgstr "" #. translators: placeholder: Topic. #: includes/settings/settings-sections/class-ld-settings-section-permalinks-taxonomies.php:174 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:529 msgctxt "placeholder: Topic" msgid "%s Category base" msgstr "" #. translators: placeholder: Topic. #: includes/settings/settings-sections/class-ld-settings-section-permalinks-taxonomies.php:188 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:541 msgctxt "placeholder: Topic" msgid "%s Tag base" msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-sections/class-ld-settings-section-permalinks-taxonomies.php:204 msgctxt "placeholder: Quiz" msgid "%s Category base" msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-sections/class-ld-settings-section-permalinks-taxonomies.php:218 msgctxt "placeholder: Quiz" msgid "%s Tag base" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-permalinks.php:31 msgid "LearnDash Permalinks" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-permalinks.php:34 msgid "Controls the URL slugs for the custom posts used by LearnDash." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-permalinks.php:183 msgid "Enable Nested URLs" msgstr "" #. translators: placeholders: Lesson, Topic, Quiz, Course, Site Home URL, URL to Course Builder Settings. #: includes/settings/settings-sections/class-ld-settings-section-permalinks.php:186 msgctxt "placeholders: Lesson, Topic, Quiz, Course, Site Home URL, URL to Course Builder Settings" msgid "This option will restructure %1$s, %2$s and %3$s URLs so they are nested hierarchically within the %4$s URL.
          For example instead of the default topic URL %5$s the nested URL would be %6$s. If Course Builder Share Steps has been enabled this setting is also automatically enabled." msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-sections/class-ld-settings-section-questions-cpt.php:37 msgctxt "placeholder: Question" msgid "%s Custom Post Type Options" msgstr "" #. translators: placeholder: Quizzes. #: includes/settings/settings-sections/class-ld-settings-section-questions-cpt.php:45 msgctxt "placeholder: Questions" msgid "

          Control the LearnDash %s Custom Post Type Options.

          " msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-sections/class-ld-settings-section-questions-management-display.php:37 msgctxt "placeholder: Question" msgid "Global %s Management & Display Settings" msgstr "" #. translators: placeholder: questions. #: includes/settings/settings-sections/class-ld-settings-section-questions-management-display.php:43 msgctxt "placeholder: questions" msgid "Control which templates can be used to better organize your LearnDash %s." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-questions-management-display.php:61 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:146 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:409 msgid "Select a template" msgstr "" #. translators: placeholder: Question. #: includes/settings/settings-sections/class-ld-settings-section-questions-management-display.php:91 msgctxt "placeholder: Question" msgid "%s templates" msgstr "" #. translators: placeholder: Question. #: includes/settings/settings-sections/class-ld-settings-section-questions-management-display.php:96 msgctxt "placeholder: Question" msgid "Manage %s templates. Select a template then update the title or delete." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-questions-management-display.php:138 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:517 msgid "Template updated." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-questions-management-display.php:153 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:532 msgid "Template deleted." msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-sections/class-ld-settings-section-questions-taxonomies.php:38 msgctxt "placeholder: Question" msgid "%s Taxonomies" msgstr "" #. translators: placeholder: Quiz, Questions. #: includes/settings/settings-sections/class-ld-settings-section-questions-taxonomies.php:45 msgctxt "placeholder: Quiz, Questions" msgid "Control which taxonomies can be used with the LearnDash %1$s %2$s." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-questions-taxonomies.php:90 msgid "Select a category" msgstr "" #. translators: placeholder: Question. #: includes/settings/settings-sections/class-ld-settings-section-questions-taxonomies.php:198 msgctxt "placeholder: Question" msgid "%s categories cannot be disabled." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-questions-taxonomies.php:211 msgid "Category management" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-questions-taxonomies.php:212 msgid "Select a category to update or delete the title." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-questions-taxonomies.php:253 msgid "Category updated." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-questions-taxonomies.php:268 msgid "Category deleted." msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-cpt.php:37 msgctxt "placeholder: Quiz" msgid "%s Custom Post Type Options" msgstr "" #. translators: placeholder: Quizzes. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-cpt.php:44 msgctxt "placeholder: Quizzes" msgid "Control the LearnDash %s Custom Post Type Options." msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-cpt.php:104 msgctxt "placeholder: Quiz" msgid "%s Search" msgstr "" #. translators: placeholder: quiz. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-cpt.php:109 msgctxt "placeholder: quiz" msgid "Includes the %s post type in front end search results" msgstr "" #. translators: placeholder: quizzes, link to WP Permalins page. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-cpt.php:123 msgctxt "placeholder: qizzes, link to WP Permalins page" msgid "Enables the front end archive page where all %1$s are listed. You must %2$s for the change to take effect." msgstr "" #. translators: placeholder: quiz #: includes/settings/settings-sections/class-ld-settings-section-quizzes-cpt.php:144 msgctxt "placeholder: quiz" msgid "Enables an RSS feed for all %1$s posts." msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:37 msgctxt "placeholder: Quiz" msgid "%s Email Settings" msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:43 msgctxt "placeholder: Quiz" msgid "Control the %s email notification options" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:125 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:189 msgid "From Name" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:126 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:190 msgid "This is the name of the sender. If not provided will default to the system email name." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:132 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:196 msgid "From Email" msgstr "" #. translators: placeholder: admin email. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:135 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:199 msgctxt "placeholder: admin email" msgid "This is the email address of the sender. If not provided the admin email %s will be used." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:143 msgid "Mail To" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:144 msgid "Separate multiple email addresses with a comma, e.g. wp@test.com, test@test.com." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:150 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:207 msgid "Subject" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:156 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:213 msgid "Message" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:164 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:221 msgid "Supported variables" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:169 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:226 msgid "Result in percent" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:282 msgid "ADMIN NOTIFICATIONS" msgstr "" #. translators: placeholder: quiz, quiz. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:288 msgctxt "placeholder: quiz, quiz" msgid "Manage the email content that will be sent out to the admin, group leader or other supervisors when a user completes a %1$s. You must enable \"Admin Notification\" on a per %2$s basis." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:301 msgid "USER NOTIFICATIONS" msgstr "" #. translators: placeholder: quiz, quiz. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.php:307 msgctxt "placeholder: quiz, quiz" msgid "Manage the email content that will be sent out to the user when a %1$s is completed. You must enable \"User Notification\" on a per %2$s basis." msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:38 msgctxt "Quiz Builder" msgid "Global %s Management & Display Settings" msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:44 msgctxt "placeholder: Quiz" msgid "Control settings for %s creation, and visual organization" msgstr "" #. translators: placeholder: Link to Data Upgrade page. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:163 msgctxt "placeholder: Link to Data Upgrade page" msgid "The Data Upgrade %s must be run to enable the following settings." msgstr "" #. translators: placeholder: quizzes, Quiz. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:182 msgctxt "placeholder: quizzes, Quiz" msgid "Manage and create full %1$s within the %2$s Builder." msgstr "" #. translators: placeholder: Questions. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:197 msgctxt "placeholder: Questions" msgid "%s displayed" msgstr "" #. translators: placeholder: questions, Quiz #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:202 msgctxt "placeholder: questions, Quiz" msgid "Number of additional %1$s displayed in the %2$s Builder sidebar when clicking the \"Load More\" link." msgstr "" #. translators: placeholder: Quiz, Questions. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:220 msgctxt "placeholder: Quiz, Questions" msgid "Shared %1$s %2$s" msgstr "" #. translators: placeholder: questions, quizzes, quiz #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:226 msgctxt "placeholder: placeholder: questions, quizzes, quiz" msgid "Share %1$s across multiple %2$s. Progress and statistics are maintained on a per-%3$s basis." msgstr "" #. translators: placeholder: questions, quizzes #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:236 msgctxt "placeholder: questions, quizzes" msgid "All %1$s can be used across multiple %2$s" msgstr "" #. translators: placeholder: Date preview, Time preview, Date format string, Time format string, #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:286 msgid "Default format: %1$s %2$s %3$s %4$s " msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:301 msgctxt "placeholder: Quiz" msgid "Custom %s Time Formats" msgstr "" #. translators: placeholder: Quiz, Quiz. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:306 msgctxt "placeholder: Quiz, Quiz" msgid "Customize the default time format for the %1$s Leaderboard and %2$s Statistics. " msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:340 msgid "WordPress default" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:359 #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:360 msgid "Statistic time format " msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:404 msgctxt "placeholder: Quiz" msgid "%s Template Management" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.php:407 msgid "Select a template to update or delete the title." msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-taxonomies.php:38 msgctxt "placeholder: Quiz" msgid "%s Taxonomies" msgstr "" #. translators: placeholder: quizzes. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-taxonomies.php:45 msgctxt "placeholder: quizzes" msgid "Control which Taxonomies can be used with the LearnDash %s." msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-taxonomies.php:108 msgctxt "placeholder: Quiz" msgid "Manage %s Categories via the Actions dropdown" msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-sections/class-ld-settings-section-quizzes-taxonomies.php:126 msgctxt "placeholder: Quiz" msgid "Manage %s Tags via the Actions dropdown" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-side-quick-links.php:35 msgid "Quick Links" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-side-submit.php:36 msgid "Save Options" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-copy-system-info.php:38 msgid "Copy System Info" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-copy-system-info.php:58 msgid "Copy to Clipboard" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-copy-system-info.php:58 msgid "Copy Success" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-copy-system-info.php:58 msgid "Copy Failed" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-data-reset.php:38 msgid "Reset ALL LearnDash Data" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-data-reset.php:86 msgid "Warning: This will remove ALL LearnDash data including any custom database tables." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-data-reset.php:91 msgid "Confirm the data deletion" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-data-reset.php:92 #: includes/settings/settings-sections/class-ld-settings-section-support-data-reset.php:105 msgid "Are you sure that you want to remove ALL LearnDash data?" msgstr "" #. translators: placeholder: secret generated code. #: includes/settings/settings-sections/class-ld-settings-section-support-data-reset.php:97 msgctxt "placeholder: secret generated code" msgid "Enter %s in the above field and click the submit button" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-data-reset.php:102 msgid "Submit" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-database-tables.php:38 msgid "Database Tables" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-database-tables.php:66 msgid "Table Name" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-database-tables.php:71 msgid "Present" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-database-tables.php:77 msgid "When the LearnDash plugin or related add-ons are activated they will create the following tables. If the tables are not present try reactivating the plugin. If the table still do not show check the DB_USER defined in your wp-config.php and ensure it has the proper permissions to create tables. Check with your host for help." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-database-tables.php:81 msgid "The DB_USER defined in your wp-config.php does not have CREATE permission." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:46 msgid "LearnDash Settings" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:74 #: includes/settings/settings-sections/class-ld-settings-section-support-server.php:79 #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress.php:65 msgid "Setting" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:79 #: includes/settings/settings-sections/class-ld-settings-section-support-server.php:84 #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress.php:70 msgid "Value" msgstr "" #. translators: placeholder: version number. #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:110 msgctxt "placeholder: version number" msgid "Installed version does not match latest (%s)." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:112 msgid "Please upgrade." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:132 msgid "Learndash Version" msgstr "" #. translators: placeholder: date. #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:147 msgctxt "placeholder: date" msgid "last check: %s" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:158 msgid "LearnDash License Valid" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:165 msgid "DB Version" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:182 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:215 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:248 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:281 msgid "Please run the Data Upgrade." msgstr "" #. translators: placeholder: datetime. #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:187 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:220 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:253 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:286 msgctxt "placeholder: datetime" msgid "last run %s" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:198 msgid "Data Upgrade Courses" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:231 msgid "Data Upgrade Quizzes" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:264 msgid "Data Upgrade ProQuiz Questions" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:297 msgid "Data Upgrade Course Access Lists Convert" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:305 msgid "Courses Count" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:312 msgid "Lessons Count" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:319 msgid "Topics Count" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:326 msgid "Quizzes Count" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:332 msgid "Active LD Theme" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:340 msgctxt "placeholder: Course" msgid "%s Auto-enroll" msgstr "" #. translators: placeholder: Course. #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:368 msgctxt "placeholder: Course" msgid "%s Builder Interface" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:388 msgid "Nested URLs" msgstr "" #. translators: placeholder: Courses. #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:396 msgctxt "placeholder: Courses" msgid "%s Permalink slug" msgstr "" #. translators: placeholder: Lessons. #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:405 msgctxt "placeholder: Lessons" msgid "%s Permalink slug" msgstr "" #. translators: placeholder: Topics. #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:414 msgctxt "placeholder: Topics" msgid "%s Permalink slug" msgstr "" #. translators: placeholder: Quizzes. #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:423 msgctxt "placeholder: Quizzes" msgid "%s Permalink slug" msgstr "" #. translators: placeholder: Quiz. #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:433 msgctxt "placeholder: Quiz" msgid "%s Builder Interface" msgstr "" #. translators: placeholder: Quiz, Questions. #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:444 msgctxt "placeholder: Quiz, Questions" msgid "%1$s Shared %2$s" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:558 msgid "Assignment Upload Dir" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:567 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:595 msgid "Directory does not exists" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:574 #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:602 msgid "Directory not writable" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:586 msgid "Essay Upload Dir" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-learndash.php:637 msgid "Translation Files" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-server.php:52 msgid "Server Settings" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-server.php:95 msgid "PHP Version" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-server.php:106 #: includes/settings/settings-sections/class-ld-settings-section-support-server.php:144 msgid "WordPress Minimum Requirements" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-server.php:112 msgid "PHP OS" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-server.php:120 msgid "PHP OS Family" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-server.php:132 msgid "MySQL version" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-server.php:175 #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress-plugins.php:88 #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress-themes.php:86 msgid "Version" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-server.php:178 msgid "SSL Version" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-server.php:181 msgid "Libz Version" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-server.php:184 msgid "Protocols" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-server.php:193 msgid "Path to the CA certificates not set. Please add it to curl.cainfo in the php.ini file. Otherwise, PayPal may not work." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-server.php:198 msgid "Path to the CA certificates not set." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-server.php:202 msgid "Path to the CA certificates" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-templates.php:38 msgid "Templates" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-templates.php:67 msgid "Template Name" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-templates.php:72 msgid "Template Path" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-templates.php:80 msgid "Current Active LD Theme" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-templates.php:87 msgid "The following is the search order paths for override templates, relative to site root:" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-templates.php:99 msgid "" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress-plugins.php:38 msgid "WordPress Active Plugins" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress-plugins.php:66 msgid "Plugin" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress-plugins.php:71 #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress-themes.php:70 msgid "Details" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress-plugins.php:93 #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress-themes.php:91 msgid "Update available" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress-plugins.php:98 #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress-themes.php:96 msgid "Path" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress-themes.php:38 msgid "WordPress Active Theme" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress-themes.php:65 msgid "Theme" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress.php:38 msgid "WordPress Settings" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress.php:80 msgid "WordPress Version" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress.php:86 msgid "WordPress Home URL" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress.php:92 msgid "WordPress Site URL" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress.php:98 msgid "Is Multisite" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress.php:105 msgid "Site Language" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress.php:118 msgid "Using Permalinks" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress.php:125 msgid "Object Cache" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress.php:138 msgid "Recommended at least 100M memory." msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-support-wordpress.php:145 msgid "Recommended at least 256M memory." msgstr "" #. translators: placeholder: Topics. #: includes/settings/settings-sections/class-ld-settings-section-topics-cpt.php:45 msgctxt "placeholder: Topics" msgid "Control the LearnDash %s Custom Post Type Options." msgstr "" #. translators: placeholder: Topic. #: includes/settings/settings-sections/class-ld-settings-section-topics-cpt.php:105 msgctxt "placeholder: Topic" msgid "%s Search" msgstr "" #. translators: placeholder: topic. #: includes/settings/settings-sections/class-ld-settings-section-topics-cpt.php:110 msgctxt "placeholder: topic" msgid "Includes the %s post type in front end search results" msgstr "" #. translators: placeholder: topics, link to WP Permalins page. #: includes/settings/settings-sections/class-ld-settings-section-topics-cpt.php:124 msgctxt "placeholder: topics, link to WP Permalins page" msgid "Enables the front end archive page where all %1$s are listed. You must %2$s for the change to take effect." msgstr "" #. translators: placeholder: topic #: includes/settings/settings-sections/class-ld-settings-section-topics-cpt.php:145 msgctxt "placeholder: topic" msgid "Enables an RSS feed for all %1$s posts." msgstr "" #. translators: placeholder: Topic. #: includes/settings/settings-sections/class-ld-settings-section-topics-taxonomies.php:37 msgctxt "placeholder: Topic" msgid "%s Taxonomies" msgstr "" #. translators: placeholder: topics. #: includes/settings/settings-sections/class-ld-settings-section-topics-taxonomies.php:44 msgctxt "placeholder: topics" msgid "Control which Taxonomies can be used with the LearnDash %s." msgstr "" #. translators: placeholder: Topic. #: includes/settings/settings-sections/class-ld-settings-section-topics-taxonomies.php:105 msgctxt "placeholder: Topic" msgid "Manage %s Categories via the Actions dropdown" msgstr "" #. translators: placeholder: Topic. #: includes/settings/settings-sections/class-ld-settings-section-topics-taxonomies.php:123 msgctxt "placeholder: Topic" msgid "Manage %s Tags via the Actions dropdown" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-translations-refresh.php:26 msgid "Refresh Translations" msgstr "" #: includes/settings/settings-sections/class-ld-settings-section-translations-refresh.php:56 msgid "Updated" msgstr "" #. translators: placeholder: Course. #: includes/settings/shortcodes-sections/courseinfo.php:10 msgctxt "placeholder: Course" msgid "%s Info" msgstr "" #. translators: placeholder: course, quizzes, course. #: includes/settings/shortcodes-sections/courseinfo.php:14 msgctxt "placeholder: course, quizzes, course" msgid "This shortcode displays %1$s related information on the certificate. Unless specified otherwise, all points, scores and percentages relate to the %2$s associated with the %3$s." msgstr "" #: includes/settings/shortcodes-sections/courseinfo.php:25 #: includes/settings/shortcodes-sections/quizinfo.php:22 #: includes/gutenberg/blocks/ld-courseinfo/index.js:91 msgid "Show" msgstr "" #. translators: placeholders: quizzes, course, quizzes, course. #: includes/settings/shortcodes-sections/courseinfo.php:28 msgctxt "placeholders: quizzes, course, quizzes, course" msgid "This parameter determines the information to be shown by the shortcode.
          cumulative - average for all %1$s of the %2$s.
          aggregate - sum for all %3$s of the %4$s." msgstr "" #. translators: placeholder: Course. #: includes/settings/shortcodes-sections/courseinfo.php:37 #: includes/gutenberg/blocks/ld-courseinfo/index.js:94 msgctxt "placeholder: Course" msgid "%s Title" msgstr "" #. translators: placeholder: Course. #: includes/settings/shortcodes-sections/courseinfo.php:39 #: includes/gutenberg/blocks/ld-courseinfo/index.js:98 msgctxt "placeholder: Course" msgid "%s URL" msgstr "" #. translators: placeholder: Course. #: includes/settings/shortcodes-sections/courseinfo.php:45 #: includes/gutenberg/blocks/ld-courseinfo/index.js:110 msgctxt "placeholder: Course" msgid "%s Price Type" msgstr "" #. translators: placeholder: Course #: includes/settings/shortcodes-sections/courseinfo.php:51 #: includes/gutenberg/blocks/ld-courseinfo/index.js:114 msgctxt "placeholder: Course" msgid "Total User %s Points" msgstr "" #. translators: placeholder: Course #: includes/settings/shortcodes-sections/courseinfo.php:54 #: includes/gutenberg/blocks/ld-courseinfo/index.js:118 msgctxt "placeholder: Course" msgid "Total User %s Time" msgstr "" #. translators: placeholder: Course #: includes/settings/shortcodes-sections/courseinfo.php:57 #: includes/gutenberg/blocks/ld-courseinfo/index.js:122 msgctxt "placeholder: Course" msgid "%s Completed On (date)" msgstr "" #. translators: placeholder: Course #: includes/settings/shortcodes-sections/courseinfo.php:60 msgctxt "placeholder: Course" msgid "Enrolled On (date)" msgstr "" #. translators: placeholder: Quizzes #: includes/settings/shortcodes-sections/courseinfo.php:63 msgctxt "placeholder: Quizzes" msgid "Cumulative %s Score" msgstr "" #. translators: placeholder: Quizzes #: includes/settings/shortcodes-sections/courseinfo.php:66 msgctxt "placeholder: Quizzes" msgid "Cumulative %s Points" msgstr "" #. translators: placeholder: Quizzes #: includes/settings/shortcodes-sections/courseinfo.php:69 msgctxt "placeholder: Quizzes" msgid "Possible Cumulative %s Total Points" msgstr "" #. translators: placeholder: Quizzes #: includes/settings/shortcodes-sections/courseinfo.php:72 msgctxt "placeholder: Quizzes" msgid "Cumulative %s Percentage" msgstr "" #. translators: placeholder: Quizzes #: includes/settings/shortcodes-sections/courseinfo.php:75 msgctxt "placeholder: Quizzes" msgid "Cumulative %s Time Spent" msgstr "" #. translators: placeholder: Quizzes #: includes/settings/shortcodes-sections/courseinfo.php:78 msgctxt "placeholder: Quizzes" msgid "Aggregate %s Percentage" msgstr "" #. translators: placeholder: Quizzes #: includes/settings/shortcodes-sections/courseinfo.php:81 msgctxt "placeholder: Quizzes" msgid "Aggregate %s Score" msgstr "" #. translators: placeholder: Quizzes #: includes/settings/shortcodes-sections/courseinfo.php:84 msgctxt "placeholder: Quizzes" msgid "Aggregate %s Points" msgstr "" #. translators: placeholder: Quizzes #: includes/settings/shortcodes-sections/courseinfo.php:87 msgctxt "placeholder: Quizzes" msgid "Possible %s Aggregate Total Points" msgstr "" #. translators: placeholder: Quizzes #: includes/settings/shortcodes-sections/courseinfo.php:90 msgctxt "placeholder: Quizzes" msgid "Aggregate %s Time Spent" msgstr "" #: includes/settings/shortcodes-sections/courseinfo.php:97 #: includes/settings/shortcodes-sections/quizinfo.php:45 #: includes/gutenberg/blocks/ld-courseinfo/index.js:199 msgid "Format" msgstr "" #: includes/settings/shortcodes-sections/courseinfo.php:98 msgid "This can be used to change the date format. Default: \"F j, Y, g:i a\" shows as March 10, 2001, 5:16 pm. See the full list of available date formating strings here." msgstr "" #: includes/settings/shortcodes-sections/courseinfo.php:106 #: includes/gutenberg/blocks/ld-courseinfo/index.js:213 msgid "Seconds Format" msgstr "" #: includes/settings/shortcodes-sections/courseinfo.php:107 msgid "This can be used to change the format of seconds. Default: \"time\" shows a number of seconds as XXmin YYsec. " msgstr "" #: includes/settings/shortcodes-sections/courseinfo.php:110 #: includes/gutenberg/blocks/ld-courseinfo/index.js:216 msgid "Time - 20min 49sec" msgstr "" #: includes/settings/shortcodes-sections/courseinfo.php:111 #: includes/gutenberg/blocks/ld-courseinfo/index.js:220 msgid "Seconds - 1436" msgstr "" #. translators: placeholder: Course. #. translators: placeholder: Course #: includes/settings/shortcodes-sections/courseinfo.php:125 #: includes/settings/shortcodes-sections/course_complete.php:59 #: includes/settings/shortcodes-sections/course_content.php:35 #: includes/settings/shortcodes-sections/course_inprogress.php:36 #: includes/settings/shortcodes-sections/course_notstarted.php:36 #: includes/settings/shortcodes-sections/ld_certificate.php:24 #: includes/settings/shortcodes-sections/ld_course_expire_status.php:28 #: includes/settings/shortcodes-sections/ld_course_resume.php:33 #: includes/settings/shortcodes-sections/ld_lesson_list.php:22 #: includes/settings/shortcodes-sections/ld_quiz_complete.php:59 #: includes/settings/shortcodes-sections/ld_quiz_list.php:51 #: includes/settings/shortcodes-sections/ld_topic_list.php:22 #: includes/settings/shortcodes-sections/learndash_course_progress.php:22 #: includes/settings/shortcodes-sections/learndash_payment_buttons.php:22 #: includes/settings/shortcodes-sections/student.php:31 #: includes/settings/shortcodes-sections/visitor.php:31 #: includes/gutenberg/blocks/ld-certificate/index.js:157 #: includes/gutenberg/blocks/ld-course-content/index.js:109 #: includes/gutenberg/blocks/ld-course-expire-status/index.js:143 #: includes/gutenberg/blocks/ld-course-notstarted/index.js:70 #: includes/gutenberg/blocks/ld-course-progress/index.js:114 #: includes/gutenberg/blocks/ld-course-resume/index.js:146 #: includes/gutenberg/blocks/ld-payment-buttons/index.js:88 msgctxt "placeholder: Course" msgid "%s ID" msgstr "" #. translators: placeholders: Course. #: includes/settings/shortcodes-sections/courseinfo.php:128 #: includes/settings/shortcodes-sections/course_complete.php:98 #: includes/settings/shortcodes-sections/course_inprogress.php:71 #: includes/settings/shortcodes-sections/course_notstarted.php:71 #: includes/settings/shortcodes-sections/ld_course_expire_status.php:82 msgctxt "placeholders: Course" msgid "Enter single %s ID." msgstr "" #: includes/settings/shortcodes-sections/courseinfo.php:139 #: includes/settings/shortcodes-sections/course_complete.php:76 #: includes/settings/shortcodes-sections/course_inprogress.php:48 #: includes/settings/shortcodes-sections/course_notstarted.php:48 #: includes/settings/shortcodes-sections/ld_certificate.php:60 #: includes/settings/shortcodes-sections/ld_course_expire_status.php:41 #: includes/settings/shortcodes-sections/ld_course_info.php:23 #: includes/settings/shortcodes-sections/ld_course_resume.php:51 #: includes/settings/shortcodes-sections/ld_group.php:41 #: includes/settings/shortcodes-sections/ld_quiz_complete.php:77 #: includes/settings/shortcodes-sections/ld_user_course_points.php:23 #: includes/settings/shortcodes-sections/learndash_course_progress.php:32 #: includes/settings/shortcodes-sections/student.php:41 #: includes/settings/shortcodes-sections/usermeta.php:32 #: includes/settings/shortcodes-sections/user_groups.php:23 #: includes/gutenberg/blocks/ld-certificate/index.js:118 #: includes/gutenberg/blocks/ld-certificate/index.js:172 #: includes/gutenberg/blocks/ld-course-complete/index.js:77 #: includes/gutenberg/blocks/ld-course-expire-status/index.js:109 #: includes/gutenberg/blocks/ld-course-info/index.js:136 #: includes/gutenberg/blocks/ld-course-inprogress/index.js:76 #: includes/gutenberg/blocks/ld-course-notstarted/index.js:77 #: includes/gutenberg/blocks/ld-course-progress/index.js:99 #: includes/gutenberg/blocks/ld-course-resume/index.js:101 #: includes/gutenberg/blocks/ld-course-resume/index.js:154 #: includes/gutenberg/blocks/ld-courseinfo/index.js:188 #: includes/gutenberg/blocks/ld-group/index.js:73 #: includes/gutenberg/blocks/ld-quiz-complete/index.js:84 #: includes/gutenberg/blocks/ld-student/index.js:76 #: includes/gutenberg/blocks/ld-user-course-points/index.js:73 #: includes/gutenberg/blocks/ld-user-groups/index.js:72 #: includes/gutenberg/blocks/ld-usermeta/index.js:118 msgid "Enter specific User ID. Leave blank for current User." msgstr "" #: includes/settings/shortcodes-sections/courseinfo.php:149 #: includes/gutenberg/blocks/ld-courseinfo/index.js:233 msgid "Decimals" msgstr "" #: includes/settings/shortcodes-sections/courseinfo.php:150 #: includes/gutenberg/blocks/ld-courseinfo/index.js:234 msgid "Number of decimal places to show. Default is 2." msgstr "" #. translators: placeholder: Course. #: includes/settings/shortcodes-sections/course_complete.php:26 msgctxt "placeholder: Course" msgid "%s Complete" msgstr "" #. translators: placeholders: course. #: includes/settings/shortcodes-sections/course_complete.php:32 msgctxt "placeholders: course" msgid "This shortcode shows the content if the user has completed the %s. The shortcode can be used on any page or widget area." msgstr "" #: includes/settings/shortcodes-sections/course_complete.php:48 #: includes/settings/shortcodes-sections/course_complete.php:49 #: includes/settings/shortcodes-sections/course_inprogress.php:25 #: includes/settings/shortcodes-sections/course_inprogress.php:26 #: includes/settings/shortcodes-sections/course_notstarted.php:26 #: includes/settings/shortcodes-sections/course_notstarted.php:27 #: includes/settings/shortcodes-sections/ld_group.php:22 #: includes/settings/shortcodes-sections/ld_group.php:23 #: includes/settings/shortcodes-sections/ld_quiz_complete.php:29 #: includes/settings/shortcodes-sections/ld_quiz_complete.php:30 #: includes/settings/shortcodes-sections/student.php:22 #: includes/settings/shortcodes-sections/student.php:23 #: includes/settings/shortcodes-sections/visitor.php:22 #: includes/settings/shortcodes-sections/visitor.php:23 msgid "Message shown to user" msgstr "" #. translators: placeholders: Course, Course. #: includes/settings/shortcodes-sections/course_complete.php:64 #: includes/settings/shortcodes-sections/course_inprogress.php:39 #: includes/settings/shortcodes-sections/course_notstarted.php:39 #: includes/settings/shortcodes-sections/ld_certificate.php:29 #: includes/settings/shortcodes-sections/ld_course_expire_status.php:31 #: includes/settings/shortcodes-sections/ld_course_resume.php:38 #: includes/settings/shortcodes-sections/ld_quiz_complete.php:64 #: includes/settings/shortcodes-sections/visitor.php:32 msgctxt "placeholders: Course, Course" msgid "Enter single %1$s ID. Leave blank for current %2$s." msgstr "" #: includes/settings/shortcodes-sections/course_complete.php:84 #: includes/settings/shortcodes-sections/course_inprogress.php:56 #: includes/settings/shortcodes-sections/course_notstarted.php:56 #: includes/settings/shortcodes-sections/ld_course_expire_status.php:67 #: includes/settings/shortcodes-sections/ld_group.php:49 #: includes/settings/shortcodes-sections/ld_quiz_complete.php:85 #: includes/settings/shortcodes-sections/student.php:49 #: includes/settings/shortcodes-sections/visitor.php:40 #: includes/gutenberg/blocks/ld-course-complete/index.js:82 #: includes/gutenberg/blocks/ld-course-expire-status/index.js:127 #: includes/gutenberg/blocks/ld-course-inprogress/index.js:81 #: includes/gutenberg/blocks/ld-course-notstarted/index.js:82 #: includes/gutenberg/blocks/ld-group/index.js:78 #: includes/gutenberg/blocks/ld-student/index.js:81 #: includes/gutenberg/blocks/ld-visitor/index.js:72 msgid "Auto Paragraph" msgstr "" #: includes/settings/shortcodes-sections/course_complete.php:85 #: includes/settings/shortcodes-sections/course_inprogress.php:57 #: includes/settings/shortcodes-sections/course_notstarted.php:57 #: includes/settings/shortcodes-sections/ld_course_expire_status.php:68 #: includes/settings/shortcodes-sections/ld_group.php:50 #: includes/settings/shortcodes-sections/ld_quiz_complete.php:86 #: includes/settings/shortcodes-sections/student.php:50 #: includes/settings/shortcodes-sections/visitor.php:41 msgid "Format shortcode content into proper pararaphs." msgstr "" #. translators: placeholders: Course, lesson, topics, quizzes. #: includes/settings/shortcodes-sections/course_content.php:17 msgctxt "placeholders: Course, lesson, topics, quizzes" msgid "This shortcode displays the %1$s Content table (%2$s, %3$s, and %4$s) when inserted on a page or post." msgstr "" #. translators: placeholders: Course. #: includes/settings/shortcodes-sections/course_content.php:40 #: includes/settings/shortcodes-sections/learndash_course_progress.php:40 #: includes/settings/shortcodes-sections/learndash_payment_buttons.php:23 #: includes/settings/shortcodes-sections/student.php:62 #: includes/settings/shortcodes-sections/visitor.php:53 msgctxt "placeholders: Course" msgid "Enter single %s ID" msgstr "" #. translators: placeholders: lessons. #: includes/settings/shortcodes-sections/course_content.php:53 #: includes/settings/shortcodes-sections/ld_lesson_list.php:59 msgctxt "placeholders: lessons" msgid "%s Per Page" msgstr "" #. translators: placeholders: default per page. #: includes/settings/shortcodes-sections/course_content.php:58 msgctxt "placeholders: default per page" msgid "Default %d. Set to zero for all." msgstr "" #. translators: placeholder: Course. #: includes/settings/shortcodes-sections/course_inprogress.php:10 msgctxt "placeholder: Course" msgid "%s In Progress" msgstr "" #. translators: placeholders: course. #: includes/settings/shortcodes-sections/course_inprogress.php:14 msgctxt "placeholders: course" msgid "This shortcode shows the content if the user has started but not completed the %s. The shortcode can be used on any page or widget area." msgstr "" #. translators: placeholder: Course. #: includes/settings/shortcodes-sections/course_notstarted.php:11 msgctxt "placeholder: Course" msgid "%s Not Started" msgstr "" #. translators: placeholders: course. #: includes/settings/shortcodes-sections/course_notstarted.php:15 msgctxt "placeholders: course" msgid "This shortcode shows the content if the user has access to the %s but not yet started. The shortcode can be used on any page or widget area." msgstr "" #: includes/settings/shortcodes-sections/ld_certificate.php:9 #: includes/shortcodes/ld_certificate.php:21 #: themes/ld30/templates/quiz/partials/attempt.php:45 #: themes/ld30/templates/shortcodes/profile/course-row.php:41 #: themes/ld30/templates/shortcodes/profile/quiz-row.php:76 #: themes/ld30/templates/shortcodes/profile/quizzes.php:13 #: themes/legacy/templates/course_progress_rows.php:72 #: themes/legacy/templates/profile.php:78 #: themes/legacy/templates/profile.php:140 #: themes/legacy/templates/quiz_progress_rows.php:80 msgid "Certificate" msgstr "" #: includes/settings/shortcodes-sections/ld_certificate.php:11 msgid "This shortcode shows a Certificate download link." msgstr "" #. translators: placeholder: Quiz. #: includes/settings/shortcodes-sections/ld_certificate.php:43 #: includes/settings/shortcodes-sections/ld_quiz_complete.php:40 #: includes/settings/shortcodes-sections/quizinfo.php:68 #: includes/gutenberg/blocks/ld-certificate/index.js:164 msgctxt "placeholder: Quiz" msgid "%s ID" msgstr "" #. translators: placeholders: Quiz, Quiz. #: includes/settings/shortcodes-sections/ld_certificate.php:48 #: includes/settings/shortcodes-sections/ld_quiz_complete.php:45 msgctxt "placeholders: Quiz, Quiz" msgid "Enter single %1$s ID. Leave blank for current %2$s." msgstr "" #: includes/settings/shortcodes-sections/ld_certificate.php:68 #: includes/settings/shortcodes-sections/ld_course_resume.php:59 #: includes/gutenberg/blocks/ld-certificate/index.js:123 #: includes/gutenberg/blocks/ld-course-resume/index.js:122 msgid "Label" msgstr "" #: includes/settings/shortcodes-sections/ld_certificate.php:69 #: includes/settings/shortcodes-sections/ld_course_resume.php:60 #: includes/gutenberg/blocks/ld-certificate/index.js:124 #: includes/gutenberg/blocks/ld-course-resume/index.js:123 msgid "Label for link shown to user" msgstr "" #: includes/settings/shortcodes-sections/ld_certificate.php:76 #: includes/settings/shortcodes-sections/ld_course_resume.php:79 msgid "HTML Class" msgstr "" #: includes/settings/shortcodes-sections/ld_certificate.php:77 #: includes/settings/shortcodes-sections/ld_course_resume.php:80 #: includes/gutenberg/blocks/ld-certificate/index.js:130 #: includes/gutenberg/blocks/ld-course-resume/index.js:130 msgid "HTML class for link element" msgstr "" #: includes/settings/shortcodes-sections/ld_certificate.php:84 #: includes/gutenberg/blocks/ld-certificate/index.js:135 msgid "Context" msgstr "" #: includes/settings/shortcodes-sections/ld_certificate.php:85 #: includes/gutenberg/blocks/ld-certificate/index.js:136 msgid "User defined value to be passed into shortcode handler" msgstr "" #: includes/settings/shortcodes-sections/ld_certificate.php:92 #: includes/gutenberg/blocks/ld-certificate/index.js:141 msgid "Callback" msgstr "" #: includes/settings/shortcodes-sections/ld_certificate.php:93 #: includes/gutenberg/blocks/ld-certificate/index.js:142 msgid "Custom callback function to be used instead of default output" msgstr "" #. translators: placeholder: Course. #: includes/settings/shortcodes-sections/ld_course_expire_status.php:11 msgctxt "placeholder: Course" msgid "%s Expire Status" msgstr "" #. translators: placeholders: course. #: includes/settings/shortcodes-sections/ld_course_expire_status.php:15 msgctxt "placeholders: course" msgid "This shortcode displays the user %s access expire date." msgstr "" #: includes/settings/shortcodes-sections/ld_course_expire_status.php:50 msgid "Label before" msgstr "" #: includes/settings/shortcodes-sections/ld_course_expire_status.php:51 #: includes/gutenberg/blocks/ld-course-expire-status/index.js:116 msgid "The label prefix shown before the access expires" msgstr "" #: includes/settings/shortcodes-sections/ld_course_expire_status.php:59 msgid "Label after" msgstr "" #: includes/settings/shortcodes-sections/ld_course_expire_status.php:60 #: includes/gutenberg/blocks/ld-course-expire-status/index.js:122 msgid "The label prefix shown after access has expired" msgstr "" #: includes/settings/shortcodes-sections/ld_course_info.php:9 msgctxt "placeholder: Course" msgid "LD %s Info" msgstr "" #: includes/settings/shortcodes-sections/ld_course_info.php:11 msgctxt "placeholders: courses" msgid "This shortcode shows the %s and progress for the user." msgstr "" #: includes/settings/shortcodes-sections/ld_course_info.php:32 #: includes/settings/shortcodes-sections/ld_course_list.php:102 msgctxt "placeholder: Course" msgid "Show %s Thumbnail" msgstr "" #: includes/settings/shortcodes-sections/ld_course_info.php:33 #: includes/settings/shortcodes-sections/ld_course_list.php:103 msgctxt "placeholders: course" msgid "shows a %s thumbnail." msgstr "" #: includes/settings/shortcodes-sections/ld_course_info.php:45 msgid "Registered per page" msgstr "" #: includes/settings/shortcodes-sections/ld_course_info.php:46 msgctxt "placeholders: courses, default per page" msgid "Registered %1$s per page. Default is %2$d. Set to zero for all." msgstr "" #: includes/settings/shortcodes-sections/ld_course_info.php:58 msgid "Registered order by" msgstr "" #: includes/settings/shortcodes-sections/ld_course_info.php:72 msgid "Progress Order" msgstr "" #: includes/settings/shortcodes-sections/ld_course_info.php:73 #: includes/settings/shortcodes-sections/ld_course_info.php:113 msgctxt "placeholder: Courses" msgid "Order of %s displayed" msgstr "" #. translators: placeholder: Courses. #: includes/settings/shortcodes-sections/ld_course_info.php:85 #: includes/settings/shortcodes-sections/ld_profile.php:26 #: includes/gutenberg/blocks/ld-course-list/index.js:249 msgctxt "placeholder: Courses" msgid "%s per page" msgstr "" #: includes/settings/shortcodes-sections/ld_course_info.php:86 msgctxt "placeholders: courses, default per page" msgid "%1$s per page. Default is %2$d. Set to zero for all." msgstr "" #: includes/settings/shortcodes-sections/ld_course_info.php:98 msgctxt "placeholder: Courses" msgid "%s order by" msgstr "" #: includes/settings/shortcodes-sections/ld_course_info.php:112 msgctxt "placeholder: Courses" msgid "%s Order" msgstr "" #: includes/settings/shortcodes-sections/ld_course_info.php:125 msgctxt "placeholder: Quizzes" msgid "%s per page" msgstr "" #: includes/settings/shortcodes-sections/ld_course_info.php:126 #: includes/settings/shortcodes-sections/ld_quiz_list.php:106 msgctxt "placeholders: quizzes, default per page" msgid "%s per page. Default is %d. Set to zero for all." msgstr "" #: includes/settings/shortcodes-sections/ld_course_info.php:139 msgctxt "placeholder: Quizzes" msgid "%s order by" msgstr "" #: includes/settings/shortcodes-sections/ld_course_info.php:140 msgid "See the full list of available orderby options here." msgstr "" #: includes/settings/shortcodes-sections/ld_course_info.php:154 msgctxt "placeholder: Quizzes" msgid "%s Order" msgstr "" #: includes/settings/shortcodes-sections/ld_course_info.php:155 msgctxt "placeholder: Quizzes" msgid "Order of %s displayed." msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:9 msgctxt "placeholder: Course" msgid "%s List" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:11 msgctxt "placeholders: courses, courses (URL slug)" msgid "This shortcode shows list of %s. You can use this shortcode on any page if you don't want to use the default /%s/ page." msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:22 #: includes/settings/shortcodes-sections/ld_lesson_list.php:31 #: includes/settings/shortcodes-sections/ld_profile.php:37 #: includes/settings/shortcodes-sections/ld_quiz_list.php:77 #: includes/settings/shortcodes-sections/ld_topic_list.php:41 #: includes/gutenberg/blocks/ld-course-info/index.js:181 #: includes/gutenberg/blocks/ld-course-info/index.js:240 #: includes/gutenberg/blocks/ld-course-info/index.js:299 #: includes/gutenberg/blocks/ld-course-list/index.js:210 #: includes/gutenberg/blocks/ld-lesson-list/index.js:202 #: includes/gutenberg/blocks/ld-profile/index.js:119 #: includes/gutenberg/blocks/ld-quiz-list/index.js:211 #: includes/gutenberg/blocks/ld-topic-list/index.js:212 msgid "Order by" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:26 #: includes/settings/shortcodes-sections/ld_profile.php:41 #: includes/gutenberg/blocks/ld-course-info/index.js:185 #: includes/gutenberg/blocks/ld-course-info/index.js:244 #: includes/gutenberg/blocks/ld-course-info/index.js:311 #: includes/gutenberg/blocks/ld-course-list/index.js:214 #: includes/gutenberg/blocks/ld-lesson-list/index.js:206 #: includes/gutenberg/blocks/ld-profile/index.js:123 #: includes/gutenberg/blocks/ld-quiz-list/index.js:215 #: includes/gutenberg/blocks/ld-topic-list/index.js:216 msgid "ID - Order by post id. (default)" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:36 #: includes/settings/shortcodes-sections/ld_course_list.php:37 #: includes/settings/shortcodes-sections/ld_lesson_list.php:46 #: includes/settings/shortcodes-sections/ld_lesson_list.php:47 #: includes/settings/shortcodes-sections/ld_profile.php:51 #: includes/settings/shortcodes-sections/ld_profile.php:52 #: includes/settings/shortcodes-sections/ld_quiz_list.php:92 #: includes/settings/shortcodes-sections/ld_quiz_list.php:93 #: includes/settings/shortcodes-sections/ld_topic_list.php:56 #: includes/settings/shortcodes-sections/ld_topic_list.php:57 #: includes/gutenberg/blocks/ld-course-info/index.js:205 #: includes/gutenberg/blocks/ld-course-info/index.js:264 #: includes/gutenberg/blocks/ld-course-info/index.js:326 #: includes/gutenberg/blocks/ld-course-list/index.js:234 #: includes/gutenberg/blocks/ld-lesson-list/index.js:226 #: includes/gutenberg/blocks/ld-profile/index.js:143 #: includes/gutenberg/blocks/ld-quiz-list/index.js:235 #: includes/gutenberg/blocks/ld-topic-list/index.js:236 msgid "Order" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:40 #: includes/settings/shortcodes-sections/ld_profile.php:55 #: includes/gutenberg/blocks/ld-course-info/index.js:209 #: includes/gutenberg/blocks/ld-course-info/index.js:268 #: includes/gutenberg/blocks/ld-course-info/index.js:330 #: includes/gutenberg/blocks/ld-course-list/index.js:238 #: includes/gutenberg/blocks/ld-lesson-list/index.js:230 #: includes/gutenberg/blocks/ld-profile/index.js:147 #: includes/gutenberg/blocks/ld-quiz-list/index.js:239 #: includes/gutenberg/blocks/ld-topic-list/index.js:240 msgid "DESC - highest to lowest values (default)" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:48 msgctxt "placeholders: courses" msgid "%s Per Page" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:49 msgctxt "placeholders: courses, default per page" msgid "%s per page. Default is %d. Set to zero for all." msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:62 #: includes/gutenberg/blocks/ld-course-list/index.js:258 msgctxt "placeholder: Courses" msgid "My %s" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:63 msgctxt "placeholders: courses" msgid "show current user's %s." msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:66 #: includes/gutenberg/blocks/ld-course-list/index.js:262 msgctxt "placeholders: courses" msgid "Show All %s (default)" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:67 #: includes/gutenberg/blocks/ld-course-list/index.js:266 msgctxt "placeholders: courses" msgid "Show Enrolled %s only" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:68 #: includes/gutenberg/blocks/ld-course-list/index.js:270 msgctxt "placeholders: courses" msgid "Show not-Enrolled %s only" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:75 msgctxt "placeholder: Course" msgid "All %s Status" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:76 msgctxt "placeholders: courses" msgid "filter %s by status." msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:90 msgctxt "placeholder: Course" msgid "Show %s Content" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:91 msgctxt "placeholders: course" msgid "shows %s content." msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:117 #: includes/settings/shortcodes-sections/ld_lesson_list.php:116 #: includes/settings/shortcodes-sections/ld_quiz_list.php:159 #: includes/settings/shortcodes-sections/ld_topic_list.php:126 #: includes/gutenberg/blocks/ld-course-list/index.js:175 #: includes/gutenberg/blocks/ld-lesson-list/index.js:162 #: includes/gutenberg/blocks/ld-quiz-list/index.js:166 #: includes/gutenberg/blocks/ld-topic-list/index.js:166 msgid "Columns" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:118 #: includes/settings/shortcodes-sections/ld_lesson_list.php:117 #: includes/settings/shortcodes-sections/ld_quiz_list.php:160 #: includes/settings/shortcodes-sections/ld_topic_list.php:127 msgctxt "placeholders: course" msgid "number of columns to show when using %s grid addon" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:131 #: includes/gutenberg/blocks/ld-course-list/index.js:316 msgctxt "placeholder: Course" msgid "%s Category Slug" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:132 msgctxt "placeholders: courses" msgid "shows %s with mentioned category slug." msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:140 #: includes/gutenberg/blocks/ld-course-list/index.js:323 #: includes/gutenberg/blocks/ld-course-list/index.js:385 msgctxt "placeholder: Course" msgid "%s Category ID" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:141 msgctxt "placeholders: courses" msgid "shows %s with mentioned category id." msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:150 #: includes/gutenberg/blocks/ld-course-list/index.js:329 msgctxt "placeholder: Course" msgid "%s Category Selector" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:151 msgctxt "placeholders: course" msgid "shows a %s category dropdown." msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:164 #: includes/gutenberg/blocks/ld-course-list/index.js:350 msgctxt "placeholder: Course" msgid "%s Tag Slug" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:165 msgctxt "placeholders: courses" msgid "shows %s with mentioned tag slug." msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:173 #: includes/gutenberg/blocks/ld-course-list/index.js:357 msgctxt "placeholder: Course" msgid "%s Tag ID" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:174 msgctxt "placeholders: courses" msgid "shows %s with mentioned tag id." msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:186 #: includes/settings/shortcodes-sections/ld_lesson_list.php:194 #: includes/settings/shortcodes-sections/ld_quiz_list.php:235 #: includes/settings/shortcodes-sections/ld_topic_list.php:205 #: includes/gutenberg/blocks/ld-course-list/index.js:378 #: includes/gutenberg/blocks/ld-lesson-list/index.js:327 #: includes/gutenberg/blocks/ld-quiz-list/index.js:336 #: includes/gutenberg/blocks/ld-topic-list/index.js:337 msgid "WP Category Slug" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:187 msgctxt "placeholders: courses" msgid "shows %s with mentioned WP category slug." msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:195 #: includes/settings/shortcodes-sections/ld_lesson_list.php:184 #: includes/settings/shortcodes-sections/ld_quiz_list.php:225 #: includes/settings/shortcodes-sections/ld_topic_list.php:195 msgid "WP Category ID" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:196 msgctxt "placeholders: courses" msgid "shows %s with mentioned WP category id." msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:205 #: includes/settings/shortcodes-sections/ld_lesson_list.php:203 #: includes/settings/shortcodes-sections/ld_quiz_list.php:244 #: includes/settings/shortcodes-sections/ld_topic_list.php:214 #: includes/gutenberg/blocks/ld-course-list/index.js:391 #: includes/gutenberg/blocks/ld-lesson-list/index.js:340 #: includes/gutenberg/blocks/ld-quiz-list/index.js:349 #: includes/gutenberg/blocks/ld-topic-list/index.js:350 msgid "WP Category Selector" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:206 #: includes/settings/shortcodes-sections/ld_lesson_list.php:204 #: includes/settings/shortcodes-sections/ld_quiz_list.php:245 #: includes/settings/shortcodes-sections/ld_topic_list.php:215 #: includes/gutenberg/blocks/ld-course-list/index.js:392 #: includes/gutenberg/blocks/ld-lesson-list/index.js:341 #: includes/gutenberg/blocks/ld-quiz-list/index.js:350 #: includes/gutenberg/blocks/ld-topic-list/index.js:351 msgid "shows a WP category dropdown." msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:219 #: includes/settings/shortcodes-sections/ld_lesson_list.php:217 #: includes/settings/shortcodes-sections/ld_quiz_list.php:258 #: includes/settings/shortcodes-sections/ld_topic_list.php:228 #: includes/gutenberg/blocks/ld-course-list/index.js:412 #: includes/gutenberg/blocks/ld-lesson-list/index.js:361 #: includes/gutenberg/blocks/ld-quiz-list/index.js:370 #: includes/gutenberg/blocks/ld-topic-list/index.js:371 msgid "WP Tag Slug" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:220 msgctxt "placeholders: courses" msgid "shows %s with mentioned WP tag slug." msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:228 #: includes/settings/shortcodes-sections/ld_lesson_list.php:226 #: includes/settings/shortcodes-sections/ld_quiz_list.php:267 #: includes/settings/shortcodes-sections/ld_topic_list.php:237 #: includes/gutenberg/blocks/ld-course-list/index.js:419 #: includes/gutenberg/blocks/ld-lesson-list/index.js:368 #: includes/gutenberg/blocks/ld-quiz-list/index.js:377 #: includes/gutenberg/blocks/ld-topic-list/index.js:378 msgid "WP Tag ID" msgstr "" #: includes/settings/shortcodes-sections/ld_course_list.php:229 msgctxt "placeholders: courses" msgid "shows %s with mentioned WP tag id." msgstr "" #. translators: placeholders: Course. #: includes/settings/shortcodes-sections/ld_course_resume.php:11 msgctxt "placeholders: Course" msgid "%s Resume" msgstr "" #. translators: placeholders: Course. #: includes/settings/shortcodes-sections/ld_course_resume.php:18 msgctxt "placeholders: Course" msgid "Return to %s link/button." msgstr "" #: includes/settings/shortcodes-sections/ld_course_resume.php:67 #: includes/gutenberg/blocks/ld-course-resume/index.js:107 msgid "Show as button" msgstr "" #: includes/settings/shortcodes-sections/ld_course_resume.php:68 msgid "shows as button content." msgstr "" #: includes/settings/shortcodes-sections/ld_group.php:11 msgid "This shortcode shows the content if the user is enrolled in a specific group." msgstr "" #: includes/settings/shortcodes-sections/ld_group.php:31 #: includes/gutenberg/blocks/ld-group/index.js:66 msgid "Group ID" msgstr "" #: includes/settings/shortcodes-sections/ld_group.php:32 msgid "Enter single Group ID. Leave blank for any Group." msgstr "" #: includes/settings/shortcodes-sections/ld_group.php:61 msgid "Enter single Group ID." msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:9 msgctxt "placeholder: Lesson" msgid "%s List" msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:11 msgctxt "placeholders: lessons, lessons (URL slug)" msgid "This shortcode shows list of %s. You can use this shortcode on any page if you don't want to use the default /%s/ page." msgstr "" #. translators: placeholders: Course, Courses. #: includes/settings/shortcodes-sections/ld_lesson_list.php:23 #: includes/settings/shortcodes-sections/ld_quiz_list.php:56 #: includes/settings/shortcodes-sections/ld_topic_list.php:23 #: includes/settings/shortcodes-sections/learndash_course_progress.php:23 msgctxt "placeholders: Course, Courses" msgid "Enter single %1$s ID. Leave blank for all %2$s." msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:35 #: includes/settings/shortcodes-sections/ld_quiz_list.php:81 #: includes/settings/shortcodes-sections/ld_topic_list.php:45 msgctxt "placeholder: course" msgid "Order by %s. (default)" msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:36 #: includes/settings/shortcodes-sections/ld_quiz_list.php:82 #: includes/settings/shortcodes-sections/ld_topic_list.php:46 msgid "ID - Order by post id." msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:50 #: includes/settings/shortcodes-sections/ld_quiz_list.php:96 #: includes/settings/shortcodes-sections/ld_topic_list.php:60 msgctxt "placeholder: course" msgid "Order per %s (default)" msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:60 msgctxt "placeholders: lessons, default per page" msgid "%1$s per page. Default is %2$d. Set to zero for all." msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:72 msgctxt "placeholder: Lesson" msgid "Show %s Content" msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:73 msgctxt "placeholders: lesson" msgid "show %s content." msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:84 msgctxt "placeholder: Lesson" msgid "Show %s Thumbnail" msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:85 msgctxt "placeholders: lesson" msgid "shows a %s thumbnail." msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:129 #: includes/gutenberg/blocks/ld-lesson-list/index.js:272 #: includes/gutenberg/blocks/ld-lesson-list/index.js:334 msgctxt "placeholder: Lesson" msgid "%s Category ID" msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:130 msgctxt "placeholders: lessons" msgid "shows %s with mentioned category id." msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:139 #: includes/gutenberg/blocks/ld-lesson-list/index.js:265 msgctxt "placeholder: Lesson" msgid "%s Category Slug" msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:140 msgctxt "placeholders: lessons" msgid "shows %s with mentioned category slug." msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:148 #: includes/gutenberg/blocks/ld-lesson-list/index.js:278 msgctxt "placeholder: Lesson" msgid "%s Category Selector" msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:149 msgctxt "placeholders: lesson" msgid "shows a %s category dropdown." msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:162 #: includes/gutenberg/blocks/ld-lesson-list/index.js:306 msgctxt "placeholder: Lesson" msgid "%s Tag ID" msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:163 msgctxt "placeholders: lessons" msgid "shows %s with mentioned tag id." msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:172 #: includes/gutenberg/blocks/ld-lesson-list/index.js:299 msgctxt "placeholder: Lesson" msgid "%s Tag Slug" msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:173 msgctxt "placeholders: lessons" msgid "shows %s with mentioned tag slug." msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:185 msgctxt "placeholders: lessons" msgid "shows %s with mentioned WP category id." msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:195 msgctxt "placeholders: lessons" msgid "shows %s with mentioned WP category slug." msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:218 msgctxt "placeholders: lessons" msgid "shows %s with mentioned WP tag slug." msgstr "" #: includes/settings/shortcodes-sections/ld_lesson_list.php:227 msgctxt "placeholders: lessons" msgid "shows %s with mentioned WP tag id." msgstr "" #: includes/settings/shortcodes-sections/ld_profile.php:9 #: themes/legacy/templates/profile.php:43 msgid "Profile" msgstr "" #. translators: placeholder: placeholder: placeholder: courses, course, quiz. #: includes/settings/shortcodes-sections/ld_profile.php:13 #: includes/gutenberg/blocks/ld-profile/index.js:40 msgctxt "placeholder: courses, course, quiz" msgid "Displays user's enrolled %1$s, %2$s progress, %3$s scores, and achieved certificates." msgstr "" #. translators: placeholder: placeholder: Courses, default per page. #: includes/settings/shortcodes-sections/ld_profile.php:28 msgctxt "placeholder: Courses, default per page" msgid "%1$s per page. Default is %2$d. Set to zero for all." msgstr "" #: includes/settings/shortcodes-sections/ld_profile.php:64 #: includes/settings/shortcodes-sections/ld_profile.php:65 #: includes/gutenberg/blocks/ld-profile/index.js:158 msgid "Show Search" msgstr "" #: includes/settings/shortcodes-sections/ld_profile.php:71 #: includes/gutenberg/blocks/ld-profile/index.js:161 msgid "LD30 template only" msgstr "" #. translators: placeholder: Course. #: includes/settings/shortcodes-sections/ld_profile.php:79 #: includes/gutenberg/blocks/ld-profile/index.js:164 msgid "Show Profile Header" msgstr "" #. translators: placeholder: Course. #: includes/settings/shortcodes-sections/ld_profile.php:81 msgid "show_header" msgstr "" #. translators: placeholder: Course. #: includes/settings/shortcodes-sections/ld_profile.php:93 #: includes/settings/shortcodes-sections/ld_profile.php:95 #: includes/gutenberg/blocks/ld-profile/index.js:169 msgctxt "placeholder: Course" msgid "Show Earned %s Points" msgstr "" #: includes/settings/shortcodes-sections/ld_profile.php:106 #: includes/settings/shortcodes-sections/ld_profile.php:107 #: includes/gutenberg/blocks/ld-profile/index.js:174 msgid "Show Profile Link" msgstr "" #: includes/settings/shortcodes-sections/ld_profile.php:118 #: includes/settings/shortcodes-sections/ld_profile.php:119 msgid "Show User Quiz Attempts" msgstr "" #. translators: placeholder: Course. #: includes/settings/shortcodes-sections/ld_profile.php:132 #: includes/gutenberg/blocks/ld-profile/index.js:184 msgctxt "placeholder: Course" msgid "Expand All %s Sections" msgstr "" #. translators: placeholder: Course. #: includes/settings/shortcodes-sections/ld_profile.php:134 msgctxt "placeholder: Course" msgid "Expand All %s sections" msgstr "" #. translators: placeholder: Quiz. #: includes/settings/shortcodes-sections/ld_quiz_complete.php:11 msgctxt "placeholder: Quiz" msgid "%s Complete" msgstr "" #. translators: placeholders: quiz. #: includes/settings/shortcodes-sections/ld_quiz_complete.php:16 msgctxt "placeholders: quiz" msgid "This shortcode shows the content if the user has completed the %s. The shortcode can be used on any page or widget area." msgstr "" #. translators: placeholders: Quiz. #: includes/settings/shortcodes-sections/ld_quiz_complete.php:100 msgctxt "placeholders: Quiz" msgid "Enter single %s ID." msgstr "" #. translators: placeholder: Quiz. #: includes/settings/shortcodes-sections/ld_quiz_list.php:23 msgctxt "placeholder: Quiz" msgid "%s List" msgstr "" #. translators: placeholders: quizzes, quizzes (URL slug). #: includes/settings/shortcodes-sections/ld_quiz_list.php:30 msgctxt "placeholders: quizzes, quizzes (URL slug)" msgid "This shortcode shows list of %1$s. You can use this shortcode on any page if you don't want to use the default /%2$s/ page." msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:67 #: includes/settings/shortcodes-sections/ld_topic_list.php:31 msgctxt "placeholder: Lesson" msgid "%s ID" msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:68 msgctxt "placeholders: Lesson, Topic, Course" msgid "Must be used with course_id. Enter single %1$s or %2$s ID. Leave blank for all step within %3$s. Set zero for global." msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:105 msgctxt "placeholders: quizzes" msgid "%s Per Page" msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:118 msgctxt "placeholder: Quiz" msgid "Show %s Content" msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:119 msgctxt "placeholders: quiz" msgid "shows %s content." msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:130 msgctxt "placeholder: Quiz" msgid "Show %s Thumbnail" msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:131 msgctxt "placeholders: quiz" msgid "shows a %s thumbnail." msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:171 #: includes/gutenberg/blocks/ld-quiz-list/index.js:281 #: includes/gutenberg/blocks/ld-quiz-list/index.js:343 msgctxt "placeholder: Quiz" msgid "%s Category ID" msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:172 msgctxt "placeholders: quizzes" msgid "shows %s with mentioned category id." msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:181 #: includes/gutenberg/blocks/ld-quiz-list/index.js:274 msgctxt "placeholder: Quiz" msgid "%s Category Slug" msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:182 msgctxt "placeholders: quizzes" msgid "shows %s with mentioned category slug." msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:190 #: includes/gutenberg/blocks/ld-quiz-list/index.js:287 msgctxt "placeholder: Quiz" msgid "%s Category Selector" msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:191 msgctxt "placeholders: quiz" msgid "shows a %s category dropdown." msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:204 msgctxt "placeholder: Quizzes" msgid "%s Tag ID" msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:205 msgctxt "placeholders: quizzes" msgid "shows %s with mentioned tag id." msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:214 #: includes/gutenberg/blocks/ld-quiz-list/index.js:308 msgctxt "placeholder: Quiz" msgid "%s Tag Slug" msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:215 msgctxt "placeholders: quizzes" msgid "shows %s with mentioned tag slug." msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:226 msgctxt "placeholders: quizzes" msgid "shows %s with mentioned WP category id." msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:236 msgctxt "placeholders: quizzes" msgid "shows %s with mentioned WP category slug." msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:259 msgctxt "placeholders: quizzes" msgid "shows %s with mentioned WP tag slug." msgstr "" #: includes/settings/shortcodes-sections/ld_quiz_list.php:268 msgctxt "placeholders: quizzes" msgid "shows %s with mentioned WP tag id." msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:9 msgctxt "placeholder: Topic" msgid "%s List" msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:11 msgctxt "placeholders: topics, topics (URL slug)" msgid "This shortcode shows list of %s. You can use this shortcode on any page if you don't want to use the default /%s/ page." msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:32 msgctxt "placeholders: Lesson, Lessons, Course" msgid "Must be used with course_id. Enter single %1$s ID. Leave blank for all %2$s within %3$s." msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:69 msgctxt "placeholders: topics" msgid "%s Per Page" msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:70 msgctxt "placeholders: topics, default per page" msgid "%s per page. Default is %d. Set to zero for all." msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:82 msgctxt "placeholder: Topic" msgid "Show %s Content" msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:83 msgctxt "placeholders: topic" msgid "shows %s content." msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:94 msgctxt "placeholder: Topic" msgid "Show %s Thumbnail" msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:95 msgctxt "placeholders: topic" msgid "shows a %s thumbnail." msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:139 msgctxt "placeholder: Topics" msgid "%s Category ID" msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:140 msgctxt "placeholders: topics" msgid "shows %s with mentioned category id." msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:149 #: includes/gutenberg/blocks/ld-topic-list/index.js:275 msgctxt "placeholder: Topic" msgid "%s Category Slug" msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:150 msgctxt "placeholders: topics" msgid "shows %s with mentioned category slug." msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:158 msgctxt "placeholder: Topic" msgid "%s Category Selector" msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:159 msgctxt "placeholders: topic" msgid "shows a %s category dropdown." msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:172 #: includes/gutenberg/blocks/ld-topic-list/index.js:316 msgctxt "placeholder: Topic" msgid "%s Tag ID" msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:173 msgctxt "placeholders: topics" msgid "shows %s with mentioned tag id." msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:182 #: includes/gutenberg/blocks/ld-topic-list/index.js:309 msgctxt "placeholder: Topic" msgid "%s Tag Slug" msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:183 msgctxt "placeholders: topics" msgid "shows %s with mentioned tag slug." msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:196 msgctxt "placeholders: topics" msgid "shows %s with mentioned WP category id." msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:206 msgctxt "placeholders: topics" msgid "shows %s with mentioned WP category slug." msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:229 msgctxt "placeholders: topics" msgid "shows %s with mentioned WP tag slug." msgstr "" #: includes/settings/shortcodes-sections/ld_topic_list.php:238 msgctxt "placeholders: topics" msgid "shows %s with mentioned WP tag id." msgstr "" #: includes/settings/shortcodes-sections/ld_user_course_points.php:9 msgctxt "placeholder: Course" msgid "User %s Points" msgstr "" #: includes/settings/shortcodes-sections/ld_user_course_points.php:11 msgctxt "placeholders: course, course" msgid "This shortcode shows the earned %s points for the user." msgstr "" #. translators: placeholder: lesson #: includes/settings/shortcodes-sections/ld_video.php:16 msgctxt "placeholder: lesson" msgid "%s Video" msgstr "" #. translators: placeholder: topic #: includes/settings/shortcodes-sections/ld_video.php:19 msgctxt "placeholder: topic" msgid "%s Video" msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:9 msgid "LearnDash Login" msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:11 #: includes/gutenberg/blocks/ld-login/index.js:40 msgid "This shortcode adds the login button on any page" msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:25 msgid "Controls the Login functionality." msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:31 #: includes/gutenberg/blocks/ld-login/index.js:107 msgid "Login URL" msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:33 #: includes/gutenberg/blocks/ld-login/index.js:108 msgid "Override default login URL" msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:39 #: includes/gutenberg/blocks/ld-login/index.js:113 msgid "Login Label" msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:41 #: includes/gutenberg/blocks/ld-login/index.js:114 msgid "Override default label \"Login\"" msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:47 #: includes/settings/shortcodes-sections/learndash_login.php:48 #: includes/gutenberg/blocks/ld-login/index.js:121 msgid "Login Icon Placement" msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:51 #: includes/settings/shortcodes-sections/learndash_login.php:112 #: includes/gutenberg/blocks/ld-login/index.js:125 #: includes/gutenberg/blocks/ld-login/index.js:182 msgid "Left - To left of label" msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:52 #: includes/settings/shortcodes-sections/learndash_login.php:113 #: includes/gutenberg/blocks/ld-login/index.js:129 #: includes/gutenberg/blocks/ld-login/index.js:186 msgid "Right - To right of label" msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:53 #: includes/settings/shortcodes-sections/learndash_login.php:114 #: includes/gutenberg/blocks/ld-login/index.js:133 #: includes/gutenberg/blocks/ld-login/index.js:190 msgid "None - No icon" msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:60 #: includes/gutenberg/blocks/ld-login/index.js:141 msgid "Login Displayed as" msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:61 #: includes/settings/shortcodes-sections/learndash_login.php:122 #: includes/gutenberg/blocks/ld-login/index.js:142 #: includes/gutenberg/blocks/ld-login/index.js:199 msgid "Display as Button or link" msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:64 #: includes/settings/shortcodes-sections/learndash_login.php:125 #: includes/gutenberg/blocks/ld-login/index.js:146 #: includes/gutenberg/blocks/ld-login/index.js:203 msgid "Button" msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:65 #: includes/settings/shortcodes-sections/learndash_login.php:126 #: includes/gutenberg/blocks/ld-login/index.js:150 #: includes/gutenberg/blocks/ld-login/index.js:207 msgid "Link" msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:86 msgid "Controls the Logout functionality." msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:92 msgid "Logout URL Redirect" msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:94 msgid "Override default logout URL." msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:100 #: includes/gutenberg/blocks/ld-login/index.js:170 msgid "Logout Label" msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:102 #: includes/gutenberg/blocks/ld-login/index.js:171 msgid "Override default label \"Logout\"" msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:108 #: includes/settings/shortcodes-sections/learndash_login.php:109 #: includes/gutenberg/blocks/ld-login/index.js:178 msgid "Logout Icon Placement" msgstr "" #: includes/settings/shortcodes-sections/learndash_login.php:121 msgid "Logout Displayed as Button" msgstr "" #: includes/settings/shortcodes-sections/learndash_payment_buttons.php:9 msgid "Payment Buttons" msgstr "" #: includes/settings/shortcodes-sections/learndash_payment_buttons.php:11 msgid "This shortcode can show the payment buttons on any page." msgstr "" #: includes/settings/shortcodes-sections/quizinfo.php:9 msgctxt "placeholder: Quiz" msgid "%s Info" msgstr "" #: includes/settings/shortcodes-sections/quizinfo.php:23 msgctxt "placeholders: quizzes, course, quizzes, course" msgid "This parameter determines the information to be shown by the shortcode.
          cumulative - average for all %s of the %s.
          aggregate - sum for all %s of the %s." msgstr "" #: includes/settings/shortcodes-sections/quizinfo.php:28 #: themes/ld30/templates/shortcodes/profile/quizzes.php:17 #: themes/legacy/templates/profile.php:141 msgid "Score" msgstr "" #: includes/settings/shortcodes-sections/quizinfo.php:30 msgid "Pass" msgstr "" #: includes/settings/shortcodes-sections/quizinfo.php:31 #: includes/settings/shortcodes-sections/quizinfo.php:90 msgid "Timestamp" msgstr "" #: includes/settings/shortcodes-sections/quizinfo.php:33 msgid "Total Points" msgstr "" #: includes/settings/shortcodes-sections/quizinfo.php:34 msgid "Percentage" msgstr "" #: includes/settings/shortcodes-sections/quizinfo.php:38 msgid "Custom Field" msgstr "" #: includes/settings/shortcodes-sections/quizinfo.php:46 msgid "This can be used to change the date format. Default: \"F j, Y, g:i a\" shows as March 10, 2001, 5:16 pm. See the full list of available date formating strings here." msgstr "" #: includes/settings/shortcodes-sections/quizinfo.php:53 msgid "Custom Field ID" msgstr "" #: includes/settings/shortcodes-sections/quizinfo.php:54 msgctxt "placeholders: quiz" msgid "The Field ID is show on the %s Custom Fields table." msgstr "" #: includes/settings/shortcodes-sections/quizinfo.php:69 msgctxt "placeholders: quiz" msgid "Enter single %s ID" msgstr "" #: includes/settings/shortcodes-sections/quizinfo.php:80 msgid "Enter specific User ID" msgstr "" #: includes/settings/shortcodes-sections/quizinfo.php:91 msgctxt "placeholders: quiz" msgid "Enter single %s attempt timestamp" msgstr "" #: includes/settings/shortcodes-sections/student.php:9 msgid "Student" msgstr "" #: includes/settings/shortcodes-sections/student.php:11 msgctxt "placeholders: course" msgid "This shortcode shows the content if the user is enrolled in the %s. The shortcode can be used on any page or widget area." msgstr "" #: includes/settings/shortcodes-sections/student.php:32 msgctxt "placeholders: course" msgid "Enter single %1$s ID. Leave blank for current %2$s." msgstr "" #: includes/settings/shortcodes-sections/usermeta.php:9 msgid "User meta" msgstr "" #: includes/settings/shortcodes-sections/usermeta.php:11 msgid "This shortcode takes a parameter named field, which is the name of the user meta data field to be displayed. See the full list of available fields here. Note for security reasons some fields are not allowed." msgstr "" #: includes/settings/shortcodes-sections/usermeta.php:22 #: includes/gutenberg/blocks/ld-usermeta/index.js:72 msgid "Field" msgstr "" #: includes/settings/shortcodes-sections/usermeta.php:23 msgid "This parameter determines the information to be shown by the shortcode." msgstr "" #: includes/settings/shortcodes-sections/user_groups.php:9 msgid "User Groups" msgstr "" #: includes/settings/shortcodes-sections/visitor.php:9 msgid "Visitor" msgstr "" #: includes/settings/shortcodes-sections/visitor.php:11 msgctxt "placeholders: course" msgid "This shortcode shows the content if the user is not enrolled in the %s. The shortcode can be used on any page or widget area." msgstr "" #. translators: placeholder: Course. #: includes/shortcodes/ld_course_resume.php:44 msgctxt "placeholder: Course" msgid "Resume %s" msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:33 msgid "Theme LearnDash 3.0 Options" msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:106 msgid "Accent Color" msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:107 msgid "Main color used throughout the theme (buttons, action items, and highlights)." msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:121 msgid "Progress Color" msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:122 msgid "Color used for all successful progress-related items (completed items, certificates, and progress bars)." msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:136 msgid "Notifications, Warnings, etc..." msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:137 msgid "This color is used when there are warning, important messages." msgstr "" #. translators: placeholder: courses. #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:154 msgctxt "placeholder: courses." msgid "Provide a distraction-free course experience allowing users to focus on the content. This applies to ALL %s." msgstr "" #. translators: placeholder: course. #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:162 msgctxt "placeholder: course" msgid "Distraction-free %s experience" msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:171 msgid "Focus Mode Content Width" msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:172 msgid "Adjust the maximum width of the content area within Focus Mode" msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:175 msgid "Default (960px)" msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:176 msgid "Narrow (768px)" msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:177 msgid "Wide (1180px)" msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:178 msgid "Extra-wide (1600px)" msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:179 msgid "Full width" msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:186 msgid "Login & Registration" msgstr "" #. translators: placeholder: Link to Registration article. #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:189 msgctxt "placeholder: Link to Registration article." msgid "When active the LearnDash templates will be used for user login and %s pages." msgstr "" #. translators: placeholder: Link to Registration article. #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:190 msgid "registration" msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:194 msgid "Default registration used" msgstr "" #. translators: placeholder: courses. #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:197 msgctxt "placeholder: courses" msgid "Customized registration enabled for LearnDash %s" msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:205 msgid "Logo Upload" msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:206 msgid "This logo will appear in the Focus Mode and LearnDash Login form when enabled. Optional." msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:216 msgid "Video Responsive CSS" msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:217 msgid "This will make your videos within video progression responsive. Disable if you notice video display issues." msgstr "" #: themes/ld30/includes/class-ld-settings-section-theme-ld30.php:221 msgid "Videos will automatically resize based on screen size" msgstr "" #: themes/ld30/includes/class-ld-themes-register.php:20 msgid "LearnDash 3.0" msgstr "" #: themes/ld30/includes/helpers.php:54 msgid "day" msgid_plural "days" msgstr[0] "" msgstr[1] "" #: themes/ld30/includes/helpers.php:57 msgid "month" msgid_plural "months" msgstr[0] "" msgstr[1] "" #: themes/ld30/includes/helpers.php:60 msgid "year" msgid_plural "years" msgstr[0] "" msgstr[1] "" #: themes/ld30/includes/helpers.php:624 msgid "Sample Lesson" msgstr "" #. translators: placeholders: Date when lesson will be available #. translators: placeholder: Available on date label #: themes/ld30/includes/helpers.php:634 #: themes/ld30/templates/lesson/partials/not-available.php:5 msgctxt "Available on date label" msgid "Available on %s" msgstr "" #: themes/ld30/includes/helpers.php:818 msgctxt "In Progress item status" msgid "In Progress" msgstr "" #: themes/ld30/includes/helpers.php:824 msgctxt "In Progress item status" msgid "Complete" msgstr "" #: themes/ld30/includes/helpers.php:828 msgctxt "In Progress item status" msgid "Graded" msgstr "" #: themes/ld30/includes/helpers.php:832 msgctxt "In Progress item status" msgid "Not Graded" msgstr "" #: themes/ld30/includes/helpers.php:1060 msgid "You must watch the video before accessing this content" msgstr "" #. translators: placeholder: Courses #: themes/ld30/includes/helpers.php:1099 msgctxt "placeholders: courses" msgid "LearnDash - Registered %s and progress information of users. Visible only to users logged in." msgstr "" #: themes/ld30/includes/helpers.php:1104 msgid "User Status" msgstr "" #: themes/ld30/includes/helpers.php:1313 msgid "LearnDash: Focus Mode Dropdown" msgstr "" #: themes/ld30/includes/helpers.php:1618 #: themes/ld30/includes/helpers.php:1945 msgid "No attributes passed in" msgstr "" #: themes/ld30/includes/helpers.php:1681 msgid "No course ID supplied" msgstr "" #: themes/ld30/includes/helpers.php:1708 msgid "No topics for this lesson" msgstr "" #: themes/ld30/includes/helpers.php:2040 msgid "No Pagination Match" msgstr "" #: themes/ld30/includes/login-register-functions.php:395 msgid "Registration username exists." msgstr "" #: themes/ld30/includes/login-register-functions.php:396 msgid "Registration email exists." msgstr "" #: themes/ld30/includes/login-register-functions.php:397 msgid "Registration requires a username." msgstr "" #: themes/ld30/includes/login-register-functions.php:398 msgid "Registration requires a valid email." msgstr "" #: themes/ld30/includes/login-register-functions.php:399 msgid "Invalid username." msgstr "" #: themes/ld30/includes/login-register-functions.php:400 msgid "Invalid email." msgstr "" #: themes/ld30/templates/assignment/listing.php:98 msgid "You have assignments awaiting approval." msgstr "" #: themes/ld30/templates/assignment/listing.php:98 msgid "You have an assignment awaiting approval." msgstr "" #. translators: placeholders: assignment count approved, assignment count total. #: themes/ld30/templates/assignment/listing.php:147 msgctxt "placeholders: assignment count approved, assignment count total" msgid "%1$d/%2$d Approved" msgstr "" #: themes/ld30/templates/assignment/listing.php:219 msgctxt "No assignments message" msgid "No assignments submitted at this time" msgstr "" #: themes/ld30/templates/assignment/partials/row.php:44 #: themes/legacy/templates/learndash_lesson_assignment_uploads_list.php:52 msgid "Delete this uploaded Assignment" msgstr "" #: themes/ld30/templates/assignment/partials/row.php:45 msgid "Delete Assignment" msgstr "" #: themes/ld30/templates/assignment/partials/row.php:61 #: themes/ld30/templates/shortcodes/profile/assignment-row.php:11 msgid "Download Assignment" msgstr "" #. translators: placeholder: comment count. #: themes/ld30/templates/assignment/partials/row.php:112 msgctxt "placeholder: comment count" msgid "%d Comments" msgstr "" #: themes/ld30/templates/assignment/partials/row.php:139 #: themes/ld30/templates/shortcodes/profile/assignment-row.php:88 msgid "Waiting Review" msgstr "" #. translators: placeholders: points current, points max. #: themes/ld30/templates/assignment/partials/row.php:157 msgctxt "placeholders: points current, points max" msgid "%1$s/%2$s Points Awarded " msgstr "" #. translators: placeholder: Comma separated list of file extentions #: themes/ld30/templates/assignment/upload.php:49 msgctxt "placeholder: Comma separated list of file extentions" msgid "Allowed file types: %s" msgstr "" #: themes/ld30/templates/assignment/upload.php:94 msgid "Browse" msgstr "" #: themes/ld30/templates/assignment/upload.php:95 msgid "No file selected" msgstr "" #: themes/ld30/templates/course.php:67 msgid "You've earned a certificate!" msgstr "" #: themes/ld30/templates/course.php:71 #: themes/ld30/templates/modules/certificate-link.php:8 msgid "Download Certificate" msgstr "" #. translators: Course Content Label #. translators: Course Content Label. #: themes/ld30/templates/course.php:155 #: themes/ld30/templates/shortcodes/course_content_shortcode.php:55 #: themes/legacy/templates/course.php:124 #: themes/legacy/templates/course_content_shortcode.php:42 msgctxt "Course Content Label" msgid "%s Content" msgstr "" #. translators: single approved comment, multiple approved comments #: themes/ld30/templates/focus/comments.php:14 msgctxt "comments" msgid "%s Comment" msgid_plural "%s Comments" msgstr[0] "" msgstr[1] "" #: themes/ld30/templates/focus/comments.php:21 msgid "Expand Comments" msgstr "" #: themes/ld30/templates/focus/comments.php:21 #: themes/ld30/templates/focus/comments.php:22 msgid "Collapse Comments" msgstr "" #: themes/ld30/templates/focus/comments.php:66 msgid "Post a comment" msgstr "" #: themes/ld30/templates/focus/comments.php:77 msgid "Leave a Comment" msgstr "" #: themes/ld30/templates/focus/comments_list.php:29 msgid "Your response is awaiting for approval." msgstr "" #. translators: placeholders: %1$s: Comment Date, %2$s: Comment Time #: themes/ld30/templates/focus/comments_list.php:47 msgctxt "placeholders: comment date, comment time" msgid "%1$s at %2$s" msgstr "" #: themes/ld30/templates/focus/comments_list.php:65 msgid "Reply" msgstr "" #: themes/ld30/templates/focus/index.php:67 msgid "Pages:" msgstr "" #: themes/ld30/templates/focus/index.php:115 msgid "No content found at this address" msgstr "" #: themes/ld30/templates/focus/masthead.php:26 msgid "Menu" msgstr "" #. translators: Focus mode welcome placeholder. #: themes/ld30/templates/focus/masthead.php:109 msgctxt "Focus mode welcome placeholder" msgid "Hello, %s!" msgstr "" #. translators: Placeholder for course home link. #: themes/ld30/templates/focus/masthead.php:136 msgctxt "Placeholder for course home link" msgid "%s Home" msgstr "" #. translators: Course Status Label. #: themes/ld30/templates/lesson/listing.php:55 msgctxt "Lesson Content Label" msgid "%s Content" msgstr "" #. translators: placeholder: Lesson Complete Percentage #: themes/ld30/templates/lesson/listing.php:75 msgctxt "Lesson Complete Percentage" msgid "%s%% Complete" msgstr "" #. translators: placeholder: %1$s: Lesson Steps Complete %2$s: Total lesson steps #: themes/ld30/templates/lesson/listing.php:86 msgctxt "%1$s: Lesson Steps Complete %2$s: Total lesson steps" msgid "%1$d/%2$d Steps" msgstr "" #: themes/ld30/templates/lesson/listing.php:107 #: themes/ld30/templates/lesson/partials/row.php:226 #: themes/ld30/templates/lesson/partials/row.php:228 #: themes/ld30/templates/shortcodes/groups/row.php:11 #: themes/ld30/templates/shortcodes/profile/course-row.php:50 #: themes/ld30/templates/shortcodes/profile/course-row.php:52 msgid "Expand" msgstr "" #: themes/ld30/templates/lesson/partials/row.php:29 #: themes/ld30/templates/quiz/partials/row.php:20 msgid "You don't currently have access to this content" msgstr "" #: themes/ld30/templates/lesson/partials/row.php:37 msgid "Please login to view sample content" msgstr "" #. translators: placeholders: Topic Count, Topic/Topics Label. #: themes/ld30/templates/lesson/partials/row.php:118 #: themes/ld30/templates/widgets/navigation/lesson-row.php:113 msgctxt "placeholders: Topic Count, Topic/Topics Label" msgid "%1$d %2$s" msgstr "" #. translators: placeholders: Quiz Count, Quiz/Quizzes Label. #: themes/ld30/templates/lesson/partials/row.php:144 #: themes/ld30/templates/widgets/navigation/lesson-row.php:133 msgctxt "placeholders: Quiz Count, Quiz/Quizzes Label" msgid "%1$d %2$s" msgstr "" #: themes/ld30/templates/lesson/partials/row.php:226 #: themes/ld30/templates/shortcodes/profile/course-row.php:50 msgid "Collapse" msgstr "" #: themes/ld30/templates/modules/certificate/link-course.php:37 msgid "Print Your Certificate" msgstr "" #: themes/ld30/templates/modules/infobar/course.php:97 msgid "Current Status" msgstr "" #: themes/ld30/templates/modules/infobar/course.php:99 msgid "Enroll in this course to get access" msgstr "" #: themes/ld30/templates/modules/infobar/course.php:99 msgid "Not Enrolled" msgstr "" #: themes/ld30/templates/modules/infobar/course.php:119 msgid "Price" msgstr "" #. translators: Recurring duration message. #: themes/ld30/templates/modules/infobar/course.php:140 msgctxt "Recurring duration message" msgid "Every %1$s %2$s" msgstr "" #: themes/ld30/templates/modules/infobar/course.php:170 msgid "Get Started" msgstr "" #: themes/ld30/templates/modules/infobar/course.php:184 msgid "Login to Enroll" msgstr "" #: themes/ld30/templates/modules/infobar/course.php:205 msgid "This course is currently closed" msgstr "" #. translators: placeholder: course. #: themes/ld30/templates/modules/login-modal.php:55 msgctxt "placeholder: course" msgid "Accessing this %s requires a login, please enter your credentials below!" msgstr "" #: themes/ld30/templates/modules/login-modal.php:76 msgid "Incorrect username or password. Please try again" msgstr "" #: themes/ld30/templates/modules/login-modal.php:95 msgid "Please check your email for the password reset link." msgstr "" #: themes/ld30/templates/modules/login-modal.php:146 msgid "Lost Your Password?" msgstr "" #: themes/ld30/templates/modules/login-modal.php:174 #: themes/ld30/templates/modules/login-modal.php:329 msgid "Register" msgstr "" #: themes/ld30/templates/modules/login-modal.php:175 msgid "Don't have an account? Register one!" msgstr "" #: themes/ld30/templates/modules/login-modal.php:250 msgid "Registration successful, please check your email to set your password." msgstr "" #: themes/ld30/templates/modules/login-modal.php:270 msgid "Register an Account" msgstr "" #: themes/ld30/templates/modules/login-modal.php:328 msgid "Registration confirmation will be emailed to you." msgstr "" #. translators: placehodes: %1$s: Course, %2$s: course access points, %3$s: user course points #: themes/ld30/templates/modules/messages/course-points.php:26 msgctxt "placeholders: (1) will be Course. (2) course_access_points. (3) user_course_points " msgid "To take this %1$s you need at least %2$.01f total points. You currently have %3$.01f points." msgstr "" #. translators: Date when content will be available. #: themes/ld30/templates/modules/messages/lesson-not-available.php:26 #: themes/legacy/templates/learndash_course_lesson_not_available.php:23 msgid "Available on: %s" msgstr "" #. translators: placeholder: Quiz label #: themes/ld30/templates/modules/messages/lesson-progression.php:21 msgctxt "placeholders: Quiz label" msgid "Please go back and complete the previous %s." msgstr "" #. translators: placeholder: Topic label #: themes/ld30/templates/modules/messages/lesson-progression.php:28 msgctxt "placeholders: topic label" msgid "Please go back and complete the previous %s." msgstr "" #. translators: placeholder: Lesson Label #: themes/ld30/templates/modules/messages/lesson-progression.php:35 msgctxt "placeholders: lesson label" msgid "Please go back and complete the previous %s." msgstr "" #. translators: placeholder: Lesson #: themes/ld30/templates/modules/messages/lesson-progression.php:44 msgctxt "placeholders lesson" msgid "Please go back and complete the previous %s." msgstr "" #. translators: placeholders: %1$s: Course, Lesson or Quiz singular, %2$s: Course singular label #: themes/ld30/templates/modules/messages/prerequisites.php:38 #: themes/legacy/templates/learndash_course_prerequisites_message.php:19 msgctxt "placeholders: (1) will be Course, Lesson or Quiz sigular. (2) Course sigular label" msgid "To take this %1$s, you need to complete the following %2$s first:" msgstr "" #. translators: placeholder: current page number of total pages #: themes/ld30/templates/modules/pagination.php:128 msgctxt "placeholder: current page numer of total pages" msgid "%1$d of %2$d" msgstr "" #. translators: placeholder: Lesson Progress #: themes/ld30/templates/modules/progress.php:56 msgctxt "Placeholder: Lesson Progress" msgid "%s Progress" msgstr "" #. translators: placeholder: Progress percentage #: themes/ld30/templates/modules/progress.php:67 msgctxt "placeholder: Progress percentage" msgid "%s%% Complete" msgstr "" #. translators: Last activity date in infobar. #: themes/ld30/templates/modules/progress.php:86 msgctxt "Last activity date in infobar" msgid "Last activity on %s" msgstr "" #. translators: placeholder: completed steps, total steps #. translators: placeholder: completed steps, total steps' #: themes/ld30/templates/modules/progress.php:92 #: themes/ld30/templates/shortcodes/profile/course-progress.php:26 msgctxt "placeholder: completed steps, total steps" msgid "%1$d/%2$d Steps" msgstr "" #: themes/ld30/templates/modules/tabs.php:30 msgid "Materials" msgstr "" #. translators: placeholders: quiz, attempts count. #: themes/ld30/templates/quiz.php:152 #: themes/legacy/templates/quiz.php:87 msgctxt "placeholders: quiz, attempts count" msgid "You have already taken this %1$s %2$d time(s) and may not take it again." msgstr "" #: themes/ld30/templates/quiz/partials/attempt.php:56 #: themes/ld30/templates/shortcodes/profile/quiz-row.php:28 #: themes/legacy/templates/profile.php:180 msgctxt "Pending Certificate Status Label" msgid "Pending" msgstr "" #. translators: placeholder: courses #: themes/ld30/templates/shortcodes/course_info_shortcode.php:37 msgctxt "placeholder: courses" msgid "You are registered for the following %s" msgstr "" #: themes/ld30/templates/shortcodes/profile.php:82 #: themes/legacy/templates/profile.php:54 msgid "Edit profile" msgstr "" #. translators: Profile Course Content Label #: themes/ld30/templates/shortcodes/profile.php:143 msgctxt "Profile Course Content Label" msgid "Your %s" msgstr "" #. translators: placeholder: Courses. #: themes/ld30/templates/shortcodes/profile.php:192 msgctxt "placeholder: Courses" msgid "No %s found" msgstr "" #. translators: placeholder: commentd count. #: themes/ld30/templates/shortcodes/profile/assignment-row.php:55 msgctxt "placeholder: commentd count" msgid "%d Comments" msgstr "" #. translators: placeholder: %1$s: Current points, %2$s: Maximum points #: themes/ld30/templates/shortcodes/profile/assignment-row.php:106 msgid "%1$s/%2$s Points Awarded " msgstr "" #: themes/ld30/templates/shortcodes/profile/assignments.php:52 msgid "No assignments at this time" msgstr "" #. translators: Course Progress Overview Label #: themes/ld30/templates/shortcodes/profile/course-progress.php:7 msgctxt "Course Progress Overview Label" msgid "%s Progress" msgstr "" #. translators: Percentage of course completion #: themes/ld30/templates/shortcodes/profile/course-progress.php:17 msgctxt "Percentage of course completion" msgid "%s%% Complete" msgstr "" #: themes/ld30/templates/shortcodes/profile/quiz-row.php:130 msgid "Essays" msgstr "" #. translators: placeholder: search term. #: themes/ld30/templates/shortcodes/profile/search-results.php:5 msgctxt "placeholder: search term" msgid "You searched for \"%s\"" msgstr "" #: themes/ld30/templates/shortcodes/profile/search.php:14 msgid "close" msgstr "" #. translators: Profile Search Courses #: themes/ld30/templates/shortcodes/profile/search.php:20 msgctxt "Profile Search Courses" msgid "Search Your %s" msgstr "" #. translators: Profile Course Label #: themes/ld30/templates/shortcodes/profile/search.php:33 msgctxt "Profile Course Label" msgid "%s Name" msgstr "" #: themes/ld30/templates/shortcodes/profile/search.php:40 msgid "reset" msgstr "" #: themes/ld30/templates/shortcodes/user-status.php:19 msgid "Registered Courses" msgstr "" #. translators: User Status Course Progress #: themes/ld30/templates/shortcodes/user-status/course-row.php:46 msgctxt "User Status Course Progress" msgid "%s%% Complete" msgstr "" #. translators: User Status Course Steps. #: themes/ld30/templates/shortcodes/user-status/course-row.php:48 msgctxt "User Status Course Steps" msgid "%1$d/%2$d Steps" msgstr "" #. translators: User Status Course Since. #: themes/ld30/templates/shortcodes/user-status/course-row.php:53 msgctxt "User Status Course Since" msgid "Since %s" msgstr "" #: themes/ld30/templates/shortcodes/user_groups_shortcode.php:23 msgid "Group Leader" msgstr "" #: themes/ld30/templates/shortcodes/user_groups_shortcode.php:59 msgid "Assigned Group(s)" msgstr "" #. translators: placeholder: Course Navigation Home Label #: themes/ld30/templates/widgets/course-navigation.php:54 msgctxt "Course Navigation Home Label" msgid "%s Home" msgstr "" #: themes/ld30/templates/widgets/course-navigation.php:88 #: themes/legacy/templates/course_navigation_admin.php:382 #: themes/legacy/templates/course_navigation_widget.php:44 msgid "Return to" msgstr "" #: themes/ld30/templates/widgets/navigation/lesson-row.php:106 msgid "Expand Lesson" msgstr "" #: themes/legacy/includes/class-ld-themes-register.php:20 msgid "Legacy" msgstr "" #. translators: Course Status Label. #: themes/legacy/templates/course.php:47 msgctxt "Course Status Label" msgid "%s Status:" msgstr "" #: themes/legacy/templates/course_details_admin.php:24 msgid "Set Enrolled Date:" msgstr "" #: themes/legacy/templates/course_details_admin.php:25 msgid "Edit date" msgstr "" #: themes/legacy/templates/course_info_shortcode.php:30 msgctxt "You are registered for the following courses" msgid "You are registered for the following %s" msgstr "" #: themes/legacy/templates/course_info_shortcode.php:72 msgctxt "placeholders: Course Label" msgid "Extra %s points" msgstr "" #: themes/legacy/templates/course_info_shortcode.php:80 msgctxt "Course progress details Label" msgid "%s progress details:" msgstr "" #: themes/legacy/templates/course_info_shortcode.php:139 msgctxt "You have taken the following quizzes:" msgid "You have taken the following %s:" msgstr "" #: themes/legacy/templates/course_info_shortcode.php:142 msgctxt "placeholder: Quiz" msgid "Are you sure that you want to remove this %s item?" msgstr "" #: themes/legacy/templates/course_list_template.php:21 msgid "Read more." msgstr "" #: themes/legacy/templates/course_navigation_admin.php:100 #: themes/legacy/templates/course_navigation_admin.php:134 #: themes/legacy/templates/course_progress_rows.php:111 msgid "Set all children steps as incomplete?" msgstr "" #: themes/legacy/templates/course_navigation_admin.php:197 msgid "Set all parent steps as incomplete?" msgstr "" #: themes/legacy/templates/course_navigation_switcher_admin.php:43 msgctxt "placeholder: Course" msgid "%s switcher" msgstr "" #: themes/legacy/templates/course_navigation_switcher_admin.php:44 msgctxt "placeholder: Course" msgid "Switch to the Primary %s to edit this setting" msgstr "" #: themes/legacy/templates/course_navigation_switcher_admin.php:51 msgctxt "placeholder: Course" msgid "Select a %s" msgstr "" #: themes/legacy/templates/course_navigation_switcher_admin.php:55 msgctxt "placeholder: Quiz" msgid "Standalone %s" msgstr "" #: themes/legacy/templates/course_navigation_switcher_admin.php:63 msgctxt "placeholder: Course" msgid "Primary %s" msgstr "" #: themes/legacy/templates/course_navigation_switcher_admin.php:65 msgctxt "placeholder: Courses" msgid "Other %s" msgstr "" #: themes/legacy/templates/course_progress_rows.php:23 msgid "Status:" msgstr "" #: themes/legacy/templates/course_progress_rows.php:42 msgid "Completed %d out of %d steps" msgstr "" #: themes/legacy/templates/course_progress_rows.php:46 msgid "Since: %s (Group Access)" msgstr "" #: themes/legacy/templates/course_progress_rows.php:50 msgid "Since: %s" msgstr "" #: themes/legacy/templates/course_progress_rows.php:63 msgctxt "Course Expires on date" msgid "(expires %s)" msgstr "" #: themes/legacy/templates/course_progress_rows.php:79 msgctxt "profile edit course link label" msgid "(edit)" msgstr "" #: themes/legacy/templates/course_progress_rows.php:107 msgctxt "Course progress details link" msgid "(details)" msgstr "" #: themes/legacy/templates/course_progress_rows.php:126 msgctxt "Course All Complete" msgid "%s All Complete" msgstr "" #: themes/legacy/templates/learndash_course_lesson_not_available.php:30 msgctxt "Return to Course Overview Label" msgid "Return to %s Overview" msgstr "" #: themes/legacy/templates/learndash_course_points_access_message.php:24 msgctxt "placeholders: (1) will be Course. (2) course_access_points. (3) user_course_points " msgid "To take this %s you need at least %.01f total points. You currently have %.01f points." msgstr "" #: themes/legacy/templates/learndash_course_points_user_message.php:26 msgctxt "placeholders: Course Label, course points" msgid "Earned %s Points:" msgstr "" #: themes/legacy/templates/learndash_lesson_assignment_uploads_list.php:45 msgid "Files you have uploaded" msgstr "" #: themes/legacy/templates/learndash_lesson_assignment_uploads_list.php:52 msgid "X" msgstr "" #: themes/legacy/templates/learndash_lesson_assignment_uploads_list.php:64 msgid "View" msgstr "" #. translators: placeholder: comments count. #: themes/legacy/templates/learndash_lesson_assignment_uploads_list.php:72 msgctxt "placeholder: commentd count" msgid "Comments (%d)" msgstr "" #: themes/legacy/templates/learndash_lesson_assignment_upload_form.php:34 msgctxt "placeholder: comma list of file extentions" msgid "Allowed file types: %s" msgstr "" #: themes/legacy/templates/learndash_pager.php:102 msgid "page" msgstr "" #. translators: placeholders: quiz URL. #: themes/legacy/templates/lesson.php:41 #: themes/legacy/templates/quiz.php:62 #: themes/legacy/templates/topic.php:71 #: themes/legacy/templates/topic.php:99 msgctxt "placeholders: quiz URL" msgid "Please go back and complete the previous %s." msgstr "" #: themes/legacy/templates/lesson.php:45 msgctxt "placeholders: topic URL, topic label" msgid "Please go back and complete the previous %s." msgstr "" #: themes/legacy/templates/lesson.php:48 msgctxt "placeholders: lesson URL, lesson label" msgid "Please go back and complete the previous %s." msgstr "" #: themes/legacy/templates/lesson.php:53 #: themes/legacy/templates/topic.php:83 #: themes/legacy/templates/topic.php:111 msgctxt "placeholder lesson" msgid "Please go back and complete the previous %s." msgstr "" #: themes/legacy/templates/lesson.php:78 msgctxt "Lesson Topics Label" msgid "%1$s %2$s" msgstr "" #: themes/legacy/templates/profile.php:76 msgctxt "Registered Courses Label" msgid "Registered %s" msgstr "" #: themes/legacy/templates/profile.php:122 msgctxt "Course Progress Overview Label" msgid "%s Progress Overview" msgstr "" #: themes/legacy/templates/profile.php:130 msgctxt "placeholder: percent complete" msgid "%s%% Complete" msgstr "" #. translators: placeholders: topic URL. #: themes/legacy/templates/quiz.php:50 #: themes/legacy/templates/topic.php:75 #: themes/legacy/templates/topic.php:103 msgctxt "placeholders: topic URL" msgid "Please go back and complete the previous %s." msgstr "" #. translators: placeholders: lesson URL. #: themes/legacy/templates/quiz.php:56 #: themes/legacy/templates/topic.php:78 #: themes/legacy/templates/topic.php:106 msgctxt "placeholders: lesson URL" msgid "Please go back and complete the previous %s." msgstr "" #: themes/legacy/templates/quiz.php:66 msgid "Please go back and complete the previous step." msgstr "" #. translators: placeholder: Questions. #: themes/legacy/templates/quiz_navigation_admin.php:70 msgctxt "placeholder: Questions" msgid "Manage %s in builder" msgstr "" #. translators: placeholder: Quiz. #: themes/legacy/templates/quiz_navigation_switcher_admin.php:56 msgctxt "placeholder: Quiz" msgid "%s switcher" msgstr "" #. translators: placeholder: Quiz. #: themes/legacy/templates/quiz_navigation_switcher_admin.php:68 msgctxt "placeholder: Quiz" msgid "Select a %s" msgstr "" #. translators: placeholder: Quiz. #: themes/legacy/templates/quiz_navigation_switcher_admin.php:78 msgctxt "placeholder: Quiz" msgid "Primary %s" msgstr "" #. translators: placeholder: Quizzes #: themes/legacy/templates/quiz_navigation_switcher_admin.php:85 msgctxt "placeholder: Quizzes" msgid "Other %s" msgstr "" #: themes/legacy/templates/quiz_progress_rows.php:108 msgid "Manual Edit by: %s on %s" msgstr "" #: themes/legacy/templates/quiz_progress_rows.php:112 msgid "(m)" msgstr "" #: themes/legacy/templates/quiz_progress_rows.php:119 msgctxt "profile edit quiz link label" msgid "(edit)" msgstr "" #: themes/legacy/templates/quiz_progress_rows.php:121 msgctxt "placeholder: quiz" msgid "remove this %s item" msgstr "" #: themes/legacy/templates/quiz_progress_rows.php:121 msgctxt "profile remove quiz link label" msgid "(remove)" msgstr "" #: themes/legacy/templates/quiz_progress_rows.php:154 msgid "comments" msgstr "" #: themes/legacy/templates/quiz_progress_rows.php:164 msgid "Rank: " msgstr "" #: themes/legacy/templates/quiz_progress_rows.php:167 msgid "Score " msgstr "" #: themes/legacy/templates/quiz_progress_rows.php:167 msgid " out of " msgstr "" #: themes/legacy/templates/quiz_progress_rows.php:169 msgid " question(s)" msgstr "" #: themes/legacy/templates/quiz_progress_rows.php:172 msgid " . Points: " msgstr "" #: themes/legacy/templates/quiz_progress_rows.php:175 msgid " on " msgstr "" #: themes/legacy/templates/topic.php:43 msgctxt "Topic Progress Label" msgid "%s Progress:" msgstr "" #: themes/legacy/templates/user_groups_shortcode.php:21 msgid "Group Leader in : " msgstr "" #: themes/legacy/templates/user_groups_shortcode.php:54 msgid "Assigned Group(s) : " msgstr "" #: includes/gutenberg/blocks/ld-certificate/index.js:39 msgid "LearnDash Certificate" msgstr "" #: includes/gutenberg/blocks/ld-certificate/index.js:105 #: includes/gutenberg/blocks/ld-course-complete/index.js:70 #: includes/gutenberg/blocks/ld-course-content/index.js:86 #: includes/gutenberg/blocks/ld-course-expire-status/index.js:102 #: includes/gutenberg/blocks/ld-course-inprogress/index.js:69 #: includes/gutenberg/blocks/ld-course-progress/index.js:92 #: includes/gutenberg/blocks/ld-course-resume/index.js:94 #: includes/gutenberg/blocks/ld-courseinfo/index.js:176 #: includes/gutenberg/blocks/ld-lesson-list/index.js:194 #: includes/gutenberg/blocks/ld-payment-buttons/index.js:72 #: includes/gutenberg/blocks/ld-quiz-complete/index.js:76 #: includes/gutenberg/blocks/ld-quiz-list/index.js:198 #: includes/gutenberg/blocks/ld-student/index.js:69 #: includes/gutenberg/blocks/ld-topic-list/index.js:198 #: includes/gutenberg/blocks/ld-visitor/index.js:66 msgctxt "Course ID" msgid "%s ID" msgstr "" #: includes/gutenberg/blocks/ld-certificate/index.js:106 #: includes/gutenberg/blocks/ld-course-complete/index.js:71 #: includes/gutenberg/blocks/ld-course-content/index.js:87 #: includes/gutenberg/blocks/ld-course-expire-status/index.js:103 #: includes/gutenberg/blocks/ld-course-inprogress/index.js:70 #: includes/gutenberg/blocks/ld-course-notstarted/index.js:71 #: includes/gutenberg/blocks/ld-course-progress/index.js:93 #: includes/gutenberg/blocks/ld-course-resume/index.js:95 #: includes/gutenberg/blocks/ld-courseinfo/index.js:177 #: includes/gutenberg/blocks/ld-payment-buttons/index.js:73 #: includes/gutenberg/blocks/ld-quiz-complete/index.js:77 #: includes/gutenberg/blocks/ld-student/index.js:70 #: includes/gutenberg/blocks/ld-visitor/index.js:67 msgctxt "placeholders: course, course" msgid "Enter single %1$s ID. Leave blank if used within a %2$s." msgstr "" #: includes/gutenberg/blocks/ld-certificate/index.js:111 #: includes/gutenberg/blocks/ld-quiz-complete/index.js:70 msgctxt "Quiz ID" msgid "%s ID" msgstr "" #: includes/gutenberg/blocks/ld-certificate/index.js:112 #: includes/gutenberg/blocks/ld-quiz-complete/index.js:71 msgctxt "placeholders: quiz, quiz" msgid "Enter single %1$s ID. Leave blank if used within a %2$s." msgstr "" #: includes/gutenberg/blocks/ld-certificate/index.js:129 #: includes/gutenberg/blocks/ld-course-resume/index.js:129 msgid "Class" msgstr "" #: includes/gutenberg/blocks/ld-certificate/index.js:152 #: includes/gutenberg/blocks/ld-course-content/index.js:104 #: includes/gutenberg/blocks/ld-course-expire-status/index.js:138 #: includes/gutenberg/blocks/ld-course-info/index.js:356 #: includes/gutenberg/blocks/ld-course-list/index.js:434 #: includes/gutenberg/blocks/ld-course-progress/index.js:109 #: includes/gutenberg/blocks/ld-course-resume/index.js:141 #: includes/gutenberg/blocks/ld-courseinfo/index.js:247 #: includes/gutenberg/blocks/ld-lesson-list/index.js:383 #: includes/gutenberg/blocks/ld-login/index.js:222 #: includes/gutenberg/blocks/ld-payment-buttons/index.js:83 #: includes/gutenberg/blocks/ld-profile/index.js:194 #: includes/gutenberg/blocks/ld-quiz-list/index.js:392 #: includes/gutenberg/blocks/ld-topic-list/index.js:393 #: includes/gutenberg/blocks/ld-user-course-points/index.js:83 #: includes/gutenberg/blocks/ld-user-groups/index.js:82 #: includes/gutenberg/blocks/ld-usermeta/index.js:130 msgid "Show Preview" msgstr "" #: includes/gutenberg/blocks/ld-certificate/index.js:158 #: includes/gutenberg/blocks/ld-course-content/index.js:110 #: includes/gutenberg/blocks/ld-course-expire-status/index.js:144 #: includes/gutenberg/blocks/ld-course-progress/index.js:115 #: includes/gutenberg/blocks/ld-course-resume/index.js:147 #: includes/gutenberg/blocks/ld-payment-buttons/index.js:89 msgctxt "placeholder: Course" msgid "Enter a %s ID to test preview" msgstr "" #: includes/gutenberg/blocks/ld-certificate/index.js:165 msgctxt "placeholder: Quiz" msgid "Enter a %s ID to test preview" msgstr "" #: includes/gutenberg/blocks/ld-certificate/index.js:227 msgid "[ld_certificate] shortcode output shown here" msgstr "" #: includes/gutenberg/blocks/ld-course-complete/index.js:40 msgctxt "placeholder: Course" msgid "LearnDash %s Complete" msgstr "" #: includes/gutenberg/blocks/ld-course-complete/index.js:41 msgctxt "placeholders: course" msgid "This block shows the content if the user is enrolled into the %s and it is completed." msgstr "" #: includes/gutenberg/blocks/ld-course-complete/index.js:97 #: includes/gutenberg/blocks/ld-course-inprogress/index.js:97 #: includes/gutenberg/blocks/ld-course-notstarted/index.js:99 #: includes/gutenberg/blocks/ld-payment-buttons/index.js:108 #: includes/gutenberg/blocks/ld-student/index.js:97 #: includes/gutenberg/blocks/ld-visitor/index.js:88 msgctxt "placeholders: Course, Course" msgid "%1$s ID is required when not used within a %2$s." msgstr "" #: includes/gutenberg/blocks/ld-course-content/index.js:39 msgctxt "placeholder: Course" msgid "LearnDash %s Content" msgstr "" #: includes/gutenberg/blocks/ld-course-content/index.js:40 msgctxt "placeholders: Course" msgid "This block displays the %1$s Content table." msgstr "" #: includes/gutenberg/blocks/ld-course-content/index.js:92 #: includes/gutenberg/blocks/ld-lesson-list/index.js:241 #: includes/gutenberg/blocks/ld-profile/index.js:111 msgctxt "placeholder: Lessons" msgid "%s per page" msgstr "" #: includes/gutenberg/blocks/ld-course-content/index.js:93 #: includes/gutenberg/blocks/ld-course-info/index.js:173 #: includes/gutenberg/blocks/ld-course-info/index.js:232 #: includes/gutenberg/blocks/ld-course-info/index.js:291 #: includes/gutenberg/blocks/ld-course-list/index.js:250 #: includes/gutenberg/blocks/ld-lesson-list/index.js:242 #: includes/gutenberg/blocks/ld-profile/index.js:112 #: includes/gutenberg/blocks/ld-quiz-list/index.js:251 #: includes/gutenberg/blocks/ld-topic-list/index.js:252 msgctxt "placeholder: default per page" msgid "Leave empty for default (%d) or 0 to show all items." msgstr "" #: includes/gutenberg/blocks/ld-course-content/index.js:130 msgid "[course_content] shortcode output shown here" msgstr "" #: includes/gutenberg/blocks/ld-course-expire-status/index.js:38 msgctxt "placeholder: Course" msgid "LearnDash %s Expire Status" msgstr "" #: includes/gutenberg/blocks/ld-course-expire-status/index.js:39 msgctxt "placeholders: course" msgid "This block displays the user %s access expire date." msgstr "" #: includes/gutenberg/blocks/ld-course-expire-status/index.js:115 msgid "Label Before" msgstr "" #: includes/gutenberg/blocks/ld-course-expire-status/index.js:121 msgid "Label After" msgstr "" #: includes/gutenberg/blocks/ld-course-expire-status/index.js:151 #: includes/gutenberg/blocks/ld-course-info/index.js:362 #: includes/gutenberg/blocks/ld-course-list/index.js:440 #: includes/gutenberg/blocks/ld-course-progress/index.js:122 #: includes/gutenberg/blocks/ld-courseinfo/index.js:253 #: includes/gutenberg/blocks/ld-profile/index.js:200 #: includes/gutenberg/blocks/ld-user-course-points/index.js:89 #: includes/gutenberg/blocks/ld-user-groups/index.js:88 #: includes/gutenberg/blocks/ld-usermeta/index.js:136 msgid "Enter a User ID to test preview" msgstr "" #: includes/gutenberg/blocks/ld-course-expire-status/index.js:170 msgid "[ld_course_expire_status] shortcode output shown here" msgstr "" #: includes/gutenberg/blocks/ld-course-info/index.js:40 msgctxt "placeholder: Course" msgid "LearnDash %s Info [ld_course_info]" msgstr "" #: includes/gutenberg/blocks/ld-course-info/index.js:41 msgctxt "placeholders: courses" msgid "This block shows the %s and progress for the user." msgstr "" #: includes/gutenberg/blocks/ld-course-info/index.js:142 msgctxt "placeholder: Courses" msgid "Show Registered %s" msgstr "" #: includes/gutenberg/blocks/ld-course-info/index.js:147 msgctxt "placeholder: Course" msgid "Show %s Progess" msgstr "" #: includes/gutenberg/blocks/ld-course-info/index.js:152 msgctxt "placeholder: Quiz" msgid "Show %s Attempts" msgstr "" #: includes/gutenberg/blocks/ld-course-info/index.js:163 msgctxt "placeholder: Courses" msgid "Registered %s" msgstr "" #: includes/gutenberg/blocks/ld-course-info/index.js:167 #: includes/gutenberg/blocks/ld-course-list/index.js:197 #: includes/gutenberg/blocks/ld-lesson-list/index.js:183 #: includes/gutenberg/blocks/ld-quiz-list/index.js:187 #: includes/gutenberg/blocks/ld-topic-list/index.js:187 msgid "Show Thumbnail" msgstr "" #: includes/gutenberg/blocks/ld-course-info/index.js:378 msgid "[ld_course_info] shortcode output shown here" msgstr "" #: includes/gutenberg/blocks/ld-course-inprogress/index.js:39 msgctxt "placeholder: Course" msgid "LearnDash %s In Progress" msgstr "" #: includes/gutenberg/blocks/ld-course-inprogress/index.js:40 msgctxt "placeholder: course" msgid "This block shows the content if the user is enrolled into the %s but not yet completed." msgstr "" #: includes/gutenberg/blocks/ld-course-list/index.js:40 msgctxt "placeholder: Course" msgid "LearnDash %s List" msgstr "" #: includes/gutenberg/blocks/ld-course-list/index.js:41 msgctxt "placeholders: courses" msgid "This block shows a list of %s." msgstr "" #: includes/gutenberg/blocks/ld-course-list/index.js:161 #: includes/gutenberg/blocks/ld-lesson-list/index.js:153 #: includes/gutenberg/blocks/ld-quiz-list/index.js:157 #: includes/gutenberg/blocks/ld-topic-list/index.js:157 msgid "Grid Settings" msgstr "" #: includes/gutenberg/blocks/ld-course-list/index.js:165 #: includes/gutenberg/blocks/ld-lesson-list/index.js:157 #: includes/gutenberg/blocks/ld-quiz-list/index.js:161 #: includes/gutenberg/blocks/ld-topic-list/index.js:161 msgid "Show Grid" msgstr "" #: includes/gutenberg/blocks/ld-course-list/index.js:170 msgid "Show Progress Bar" msgstr "" #: includes/gutenberg/blocks/ld-course-list/index.js:189 #: includes/gutenberg/blocks/ld-lesson-list/index.js:175 #: includes/gutenberg/blocks/ld-quiz-list/index.js:179 #: includes/gutenberg/blocks/ld-topic-list/index.js:179 msgid "Show Content" msgstr "" #: includes/gutenberg/blocks/ld-course-list/index.js:280 msgctxt "placeholder: Courses" msgid "Enrolled %s Status" msgstr "" #: includes/gutenberg/blocks/ld-course-list/index.js:312 msgctxt "placeholder: Course" msgid "%s Category Settings" msgstr "" #: includes/gutenberg/blocks/ld-course-list/index.js:317 msgctxt "placeholder: Courses" msgid "shows %s with mentioned category slug." msgstr "" #: includes/gutenberg/blocks/ld-course-list/index.js:324 #: includes/gutenberg/blocks/ld-course-list/index.js:386 msgctxt "placeholder: Courses" msgid "shows %s with mentioned category ID." msgstr "" #: includes/gutenberg/blocks/ld-course-list/index.js:330 msgctxt "placeholder: Courses" msgid "shows a %s category dropdown." msgstr "" #: includes/gutenberg/blocks/ld-course-list/index.js:346 msgctxt "placeholder: Course" msgid "%s Tag Settings" msgstr "" #: includes/gutenberg/blocks/ld-course-list/index.js:351 msgctxt "placeholder: Courses" msgid "shows %s with mentioned tag slug." msgstr "" #: includes/gutenberg/blocks/ld-course-list/index.js:358 msgctxt "placeholder: Courses" msgid "shows %s with mentioned tag ID." msgstr "" #: includes/gutenberg/blocks/ld-course-list/index.js:374 #: includes/gutenberg/blocks/ld-lesson-list/index.js:323 #: includes/gutenberg/blocks/ld-quiz-list/index.js:332 #: includes/gutenberg/blocks/ld-topic-list/index.js:333 msgid "WP Category Settings" msgstr "" #: includes/gutenberg/blocks/ld-course-list/index.js:379 msgctxt "placeholder: Courses" msgid "shows %s with mentioned WP category slug." msgstr "" #: includes/gutenberg/blocks/ld-course-list/index.js:408 #: includes/gutenberg/blocks/ld-lesson-list/index.js:357 #: includes/gutenberg/blocks/ld-quiz-list/index.js:366 #: includes/gutenberg/blocks/ld-topic-list/index.js:367 msgid "WP Tag Settings" msgstr "" #: includes/gutenberg/blocks/ld-course-list/index.js:413 msgctxt "placeholder: Courses" msgid "shows %s with mentioned WP tag slug." msgstr "" #: includes/gutenberg/blocks/ld-course-list/index.js:420 msgctxt "placeholder: Courses" msgid "shows %s with mentioned WP tag ID." msgstr "" #: includes/gutenberg/blocks/ld-course-list/index.js:467 msgid "[ld_course_list] shortcode output shown here" msgstr "" #: includes/gutenberg/blocks/ld-course-notstarted/index.js:40 msgctxt "placeholder: Course" msgid "LearnDash %s Not Started" msgstr "" #: includes/gutenberg/blocks/ld-course-notstarted/index.js:41 msgctxt "placeholders: course" msgid "This block shows the content if the user is enrolled into the %s but not yet started." msgstr "" #: includes/gutenberg/blocks/ld-course-progress/index.js:45 msgctxt "LearnDash Course Progress" msgid "LearnDash %s Progress" msgstr "" #: includes/gutenberg/blocks/ld-course-progress/index.js:46 msgctxt "placeholders: course" msgid "This block displays users progress bar for the %1$s." msgstr "" #: includes/gutenberg/blocks/ld-course-progress/index.js:141 msgid "[learndash_course_progress] shortcode output shown here" msgstr "" #: includes/gutenberg/blocks/ld-course-resume/index.js:40 msgctxt "Course" msgid "%s Resume" msgstr "" #: includes/gutenberg/blocks/ld-course-resume/index.js:41 msgctxt "Course" msgid "Return to %s link/button." msgstr "" #: includes/gutenberg/blocks/ld-course-resume/index.js:169 msgid "[ld_course_resume] shortcode output shown here" msgstr "" #: includes/gutenberg/blocks/ld-courseinfo/index.js:39 msgctxt "placeholder: Course" msgid "LearnDash %s Info [courseinfo]" msgstr "" #: includes/gutenberg/blocks/ld-courseinfo/index.js:40 msgctxt "placeholder: Course" msgid "This block displays %s related information" msgstr "" #: includes/gutenberg/blocks/ld-courseinfo/index.js:126 msgctxt "placeholder: Course" msgid "%s Enrolled On (date)" msgstr "" #: includes/gutenberg/blocks/ld-courseinfo/index.js:130 msgctxt "placeholder: Course" msgid "Cumulative %s Score" msgstr "" #: includes/gutenberg/blocks/ld-courseinfo/index.js:134 msgctxt "placeholder: Course" msgid "Cumulative %s Points" msgstr "" #: includes/gutenberg/blocks/ld-courseinfo/index.js:138 msgctxt "placeholder: Course" msgid "Possible Cumulative %s Total Points" msgstr "" #: includes/gutenberg/blocks/ld-courseinfo/index.js:142 msgctxt "placeholder: Course" msgid "Cumulative %s Percentage" msgstr "" #: includes/gutenberg/blocks/ld-courseinfo/index.js:146 msgctxt "placeholder: Course" msgid "Cumulative %s Time Spent" msgstr "" #: includes/gutenberg/blocks/ld-courseinfo/index.js:150 msgctxt "placeholder: Course" msgid "Aggregate %s Percentage" msgstr "" #: includes/gutenberg/blocks/ld-courseinfo/index.js:154 msgctxt "placeholder: Course" msgid "Aggregate %s Score" msgstr "" #: includes/gutenberg/blocks/ld-courseinfo/index.js:158 msgctxt "placeholder: Course" msgid "Aggregate %s Points" msgstr "" #: includes/gutenberg/blocks/ld-courseinfo/index.js:162 msgctxt "placeholder: Course" msgid "Possible Aggregate %s Total Points" msgstr "" #: includes/gutenberg/blocks/ld-courseinfo/index.js:166 msgctxt "placeholder: Course" msgid "Aggregate %s Time Spent" msgstr "" #: includes/gutenberg/blocks/ld-courseinfo/index.js:200 msgid "This can be used to change the date format. Default: \"F j, Y, g:i a." msgstr "" #: includes/gutenberg/blocks/ld-courseinfo/index.js:287 msgid "[courseinfo] shortcode output shown here" msgstr "" #: includes/gutenberg/blocks/ld-group/index.js:37 msgid "LearnDash Group" msgstr "" #: includes/gutenberg/blocks/ld-group/index.js:38 msgid "This block shows the content if the user is enrolled into the Group." msgstr "" #: includes/gutenberg/blocks/ld-group/index.js:67 msgid "Group ID (required)" msgstr "" #: includes/gutenberg/blocks/ld-group/index.js:89 msgid "Group ID is required." msgstr "" #: includes/gutenberg/blocks/ld-lesson-list/index.js:40 msgctxt "placeholder: Lesson" msgid "LearnDash %s List" msgstr "" #: includes/gutenberg/blocks/ld-lesson-list/index.js:41 msgctxt "placeholders: lessons" msgid "This block shows a list of %s." msgstr "" #: includes/gutenberg/blocks/ld-lesson-list/index.js:195 #: includes/gutenberg/blocks/ld-quiz-list/index.js:199 #: includes/gutenberg/blocks/ld-topic-list/index.js:199 msgctxt "placeholders: course, course" msgid "Enter single %1$s ID to limit listing. Leave blank if used within a %2$s." msgstr "" #: includes/gutenberg/blocks/ld-lesson-list/index.js:261 msgctxt "placeholder: Lesson" msgid "%s Category Settings" msgstr "" #: includes/gutenberg/blocks/ld-lesson-list/index.js:266 msgctxt "placeholder: lessons" msgid "shows %s with mentioned category slug." msgstr "" #: includes/gutenberg/blocks/ld-lesson-list/index.js:273 msgctxt "placeholder: lessons" msgid "shows %s with mentioned category ID." msgstr "" #: includes/gutenberg/blocks/ld-lesson-list/index.js:279 msgctxt "placeholder: Lessons" msgid "shows a %s category dropdown." msgstr "" #: includes/gutenberg/blocks/ld-lesson-list/index.js:295 msgctxt "placeholder: Lesson" msgid "%s Tag Settings" msgstr "" #: includes/gutenberg/blocks/ld-lesson-list/index.js:300 msgctxt "placeholder: Lessons" msgid "shows %s with mentioned tag slug." msgstr "" #: includes/gutenberg/blocks/ld-lesson-list/index.js:307 msgctxt "placeholder: Lessons" msgid "shows %s with mentioned tag ID." msgstr "" #: includes/gutenberg/blocks/ld-lesson-list/index.js:328 msgctxt "placeholder: Lessons" msgid "shows %s with mentioned WP category slug." msgstr "" #: includes/gutenberg/blocks/ld-lesson-list/index.js:335 msgctxt "placeholder: Lessons" msgid "shows %s with mentioned category ID." msgstr "" #: includes/gutenberg/blocks/ld-lesson-list/index.js:362 msgctxt "placeholder: Lessons" msgid "shows %s with mentioned WP tag slug." msgstr "" #: includes/gutenberg/blocks/ld-lesson-list/index.js:369 msgctxt "placeholder: Lessons" msgid "shows %s with mentioned WP tag ID." msgstr "" #: includes/gutenberg/blocks/ld-lesson-list/index.js:409 msgid "[ld_lesson_list] shortcode output shown here" msgstr "" #: includes/gutenberg/blocks/ld-login/index.js:104 msgid "Login Settings" msgstr "" #: includes/gutenberg/blocks/ld-login/index.js:161 msgid "Logout Settings" msgstr "" #: includes/gutenberg/blocks/ld-login/index.js:164 msgid "Logout URL" msgstr "" #: includes/gutenberg/blocks/ld-login/index.js:165 msgid "Override default logout URL" msgstr "" #: includes/gutenberg/blocks/ld-login/index.js:198 msgid "Logout Displayed as" msgstr "" #: includes/gutenberg/blocks/ld-login/index.js:228 msgid "Preview Action" msgstr "" #: includes/gutenberg/blocks/ld-login/index.js:261 msgid "[learndash_login] shortcode output shown here" msgstr "" #: includes/gutenberg/blocks/ld-payment-buttons/index.js:39 msgid "LearnDash Payment Buttons" msgstr "" #: includes/gutenberg/blocks/ld-payment-buttons/index.js:40 msgctxt "placeholder: Course" msgid "This block the %s payment buttons" msgstr "" #: includes/gutenberg/blocks/ld-payment-buttons/index.js:133 msgid "[learndash_payment_buttons] shortcode output shown here" msgstr "" #: includes/gutenberg/blocks/ld-profile/index.js:39 msgid "LearnDash Profile" msgstr "" #: includes/gutenberg/blocks/ld-profile/index.js:179 msgctxt "placeholder: Quiz" msgid "Show User Quiz Attempts" msgstr "" #: includes/gutenberg/blocks/ld-profile/index.js:216 msgid "[ld_profile] shortcode output shown here" msgstr "" #: includes/gutenberg/blocks/ld-quiz-complete/index.js:40 msgctxt "placeholder: Quiz" msgid "LearnDash %s Complete" msgstr "" #: includes/gutenberg/blocks/ld-quiz-complete/index.js:41 msgctxt "placeholders: quiz" msgid "This block shows the content if the user is has completed the %s." msgstr "" #: includes/gutenberg/blocks/ld-quiz-complete/index.js:100 msgctxt "placeholders: Quiz, Quiz" msgid "%1$s ID is required when not used within a %2$s." msgstr "" #: includes/gutenberg/blocks/ld-quiz-list/index.js:40 msgctxt "placeholder: Quiz" msgid "LearnDash %s List" msgstr "" #: includes/gutenberg/blocks/ld-quiz-list/index.js:41 msgctxt "placeholders: quizzes" msgid "This block shows a list of %s." msgstr "" #: includes/gutenberg/blocks/ld-quiz-list/index.js:204 #: includes/gutenberg/blocks/ld-topic-list/index.js:204 msgctxt "Lesson ID" msgid "%s ID" msgstr "" #: includes/gutenberg/blocks/ld-quiz-list/index.js:205 msgctxt "placeholders: lesson, course" msgid "Enter single %1$s ID to limit listing. Leave blank if used within a %2$s. Zero for global." msgstr "" #: includes/gutenberg/blocks/ld-quiz-list/index.js:250 msgctxt "placeholder: Quizzess" msgid "%s per page" msgstr "" #: includes/gutenberg/blocks/ld-quiz-list/index.js:270 msgctxt "placeholder: Quiz" msgid "%s Category Settings" msgstr "" #: includes/gutenberg/blocks/ld-quiz-list/index.js:275 msgctxt "placeholder: quizzes" msgid "shows %s with mentioned category slug." msgstr "" #: includes/gutenberg/blocks/ld-quiz-list/index.js:282 #: includes/gutenberg/blocks/ld-quiz-list/index.js:344 msgctxt "placeholder: Quizzes" msgid "shows %s with mentioned category ID." msgstr "" #: includes/gutenberg/blocks/ld-quiz-list/index.js:288 msgctxt "placeholder: Quizzes" msgid "shows a %s category dropdown." msgstr "" #: includes/gutenberg/blocks/ld-quiz-list/index.js:304 msgctxt "placeholder: Quiz" msgid "%s Tag Settings" msgstr "" #: includes/gutenberg/blocks/ld-quiz-list/index.js:309 msgctxt "placeholder: quizzes" msgid "shows %s with mentioned tag slug." msgstr "" #: includes/gutenberg/blocks/ld-quiz-list/index.js:315 msgctxt "placeholder: Quiz" msgid "%s Tag ID" msgstr "" #: includes/gutenberg/blocks/ld-quiz-list/index.js:316 msgctxt "placeholder: Quizzes" msgid "shows %s with mentioned tag ID." msgstr "" #: includes/gutenberg/blocks/ld-quiz-list/index.js:337 msgctxt "placeholder: Quizzes" msgid "shows %s with mentioned WP category slug." msgstr "" #: includes/gutenberg/blocks/ld-quiz-list/index.js:371 msgctxt "placeholder: Quizzes" msgid "shows %s with mentioned WP tag slug." msgstr "" #: includes/gutenberg/blocks/ld-quiz-list/index.js:378 msgctxt "placeholder: Quizzes" msgid "shows %s with mentioned WP tag ID." msgstr "" #: includes/gutenberg/blocks/ld-quiz-list/index.js:418 msgid "[ld_quiz_list] shortcode output shown here" msgstr "" #: includes/gutenberg/blocks/ld-student/index.js:39 msgid "LearnDash Student" msgstr "" #: includes/gutenberg/blocks/ld-student/index.js:40 msgctxt "placeholders: course" msgid "This block shows the content if the user is enrolled in the %s." msgstr "" #: includes/gutenberg/blocks/ld-topic-list/index.js:40 msgctxt "placeholder: Topic" msgid "LearnDash %s List" msgstr "" #: includes/gutenberg/blocks/ld-topic-list/index.js:41 msgctxt "placeholders: topics" msgid "This block shows a list of %s." msgstr "" #: includes/gutenberg/blocks/ld-topic-list/index.js:205 msgctxt "placeholders: lesson, course" msgid "Enter single %1$s ID to limit listing. Leave blank if used within a %2$s." msgstr "" #: includes/gutenberg/blocks/ld-topic-list/index.js:251 msgctxt "placeholder: Topics" msgid "%s per page" msgstr "" #: includes/gutenberg/blocks/ld-topic-list/index.js:271 msgctxt "placeholder: Topic" msgid "%s Category Settings" msgstr "" #: includes/gutenberg/blocks/ld-topic-list/index.js:276 msgctxt "placeholder: topics" msgid "shows %s with mentioned category slug." msgstr "" #: includes/gutenberg/blocks/ld-topic-list/index.js:282 #: includes/gutenberg/blocks/ld-topic-list/index.js:344 msgctxt "placeholder: Topic" msgid "%s Category ID" msgstr "" #: includes/gutenberg/blocks/ld-topic-list/index.js:283 msgctxt "placeholder: topics" msgid "shows %s with mentioned category ID." msgstr "" #: includes/gutenberg/blocks/ld-topic-list/index.js:288 msgctxt "placeholder: topic" msgid "%s Category Selector" msgstr "" #: includes/gutenberg/blocks/ld-topic-list/index.js:289 msgctxt "placeholder: topics" msgid "shows a %s category dropdown." msgstr "" #: includes/gutenberg/blocks/ld-topic-list/index.js:305 msgctxt "placeholder: Topic" msgid "%s Tag Settings" msgstr "" #: includes/gutenberg/blocks/ld-topic-list/index.js:310 msgctxt "placeholder: topics" msgid "shows %s with mentioned tag slug." msgstr "" #: includes/gutenberg/blocks/ld-topic-list/index.js:317 msgctxt "placeholder: Topics" msgid "shows %s with mentioned tag ID." msgstr "" #: includes/gutenberg/blocks/ld-topic-list/index.js:338 msgctxt "placeholder: Topics" msgid "shows %s with mentioned WP category slug." msgstr "" #: includes/gutenberg/blocks/ld-topic-list/index.js:345 msgctxt "placeholder: Topics" msgid "shows %s with mentioned category ID." msgstr "" #: includes/gutenberg/blocks/ld-topic-list/index.js:372 msgctxt "placeholder: Topics" msgid "shows %s with mentioned WP tag slug." msgstr "" #: includes/gutenberg/blocks/ld-topic-list/index.js:379 msgctxt "placeholder: Topics" msgid "shows %s with mentioned WP tag ID." msgstr "" #: includes/gutenberg/blocks/ld-topic-list/index.js:419 msgid "[ld_topic_list] shortcode output shown here" msgstr "" #: includes/gutenberg/blocks/ld-user-course-points/index.js:37 msgctxt "LearnDash User Course Points" msgid "LearnDash User %s Points" msgstr "" #: includes/gutenberg/blocks/ld-user-course-points/index.js:38 msgctxt "placeholders: course" msgid "This block shows the earned %s points for the user." msgstr "" #: includes/gutenberg/blocks/ld-user-course-points/index.js:88 msgid "Preview User ID" msgstr "" #: includes/gutenberg/blocks/ld-user-course-points/index.js:105 msgid "[ld_user_course_points] shortcode output shown here" msgstr "" #: includes/gutenberg/blocks/ld-user-groups/index.js:35 msgid "LearnDash User Groups" msgstr "" #: includes/gutenberg/blocks/ld-user-groups/index.js:36 msgid "This block displays the list of groups users are assigned to as users or leaders." msgstr "" #: includes/gutenberg/blocks/ld-user-groups/index.js:104 msgid "[user_groups] output shown here" msgstr "" #: includes/gutenberg/blocks/ld-usermeta/index.js:35 msgid "LearnDash User meta" msgstr "" #: includes/gutenberg/blocks/ld-usermeta/index.js:36 msgid "This block displays User meta field" msgstr "" #: includes/gutenberg/blocks/ld-usermeta/index.js:163 msgid "[usermeta] shortcode output shown here" msgstr "" #: includes/gutenberg/blocks/ld-visitor/index.js:40 msgid "LearnDash Visitor" msgstr "" #: includes/gutenberg/blocks/ld-visitor/index.js:41 msgctxt "placeholders: course" msgid "This block shows the content if the user is not enrolled into the %s." msgstr "" PKc\- uninstall.phpnuW+APKc\y wpml-config.xmlnuW+APKc\ӟ8assets/images/question.pngnuW+APKc\-~w w !assets/images/ld-plugin-image.jpgnuW+APKc\]_ )assets/images/gray_arrow_collapse_rtl.pngnuW+APKc\33 *))assets/images/green_arrow_collapse_rtl.pngnuW+APKc\EU4assets/images/arrow_left.pngnuW+APKc\$[?0$5assets/images/green_arrow_expand.pngnuW+APKc\-6assets/images/view.pngnuW+APKc\v}@9assets/images/checkmark.pngnuW+APKc\odd3>assets/images/nologo.jpgnuW+APKc\c7Nassets/images/incompletex.pngnuW+APKc\cGTassets/images/expand.pngnuW+APKc\C[Z^^)Vassets/images/ui-icons_222222_256x240.pngnuW+APKc\,#^rassets/images/gray_arrow_expand.pngnuW+APKc\lO O +osassets/images/notcompleted_t_navigation.pngnuW+APKc\%assets/images/gray_arrow_collapse.pngnuW+APKc\e&9assets/images/green_arrow_collapse.pngnuW+APKc\wᣨ'Xassets/images/post-type-empty-state.jpgnuW+APKc\R*assets/images/arrow_right.pngnuW+APKc\ v:v:0+assets/vendor/select2-jquery/css/select2.min.cssnuW+APKc\h֒!!*lfassets/vendor/select2-jquery/js/i18n/et.jsnuW+APKc\assets/vendor/select2-jquery/js/i18n/th.jsnuW+APKc\JCw*ʫassets/vendor/select2-jquery/js/i18n/ka.jsnuW+APKc\##*ϰassets/vendor/select2-jquery/js/i18n/fi.jsnuW+APKc\+Lassets/vendor/select2-jquery/js/i18n/dsb.jsnuW+APKc\Ln*assets/vendor/select2-jquery/js/i18n/ro.jsnuW+APKc\%ʻ*assets/vendor/select2-jquery/js/i18n/lv.jsnuW+APKc\LEN*assets/vendor/select2-jquery/js/i18n/az.jsnuW+APKc\X*assets/vendor/select2-jquery/js/i18n/ps.jsnuW+APKc\* assets/vendor/select2-jquery/js/i18n/es.jsnuW+APKc\*assets/vendor/select2-jquery/js/i18n/sl.jsnuW+APKc\* assets/vendor/select2-jquery/js/i18n/bs.jsnuW+APKc\N**assets/vendor/select2-jquery/js/i18n/uk.jsnuW+APKc\*assets/vendor/select2-jquery/js/i18n/bg.jsnuW+APKc\n**assets/vendor/select2-jquery/js/i18n/hy.jsnuW+APKc\^^*assets/vendor/select2-jquery/js/i18n/ja.jsnuW+APKc\`<<*@assets/vendor/select2-jquery/js/i18n/da.jsnuW+APKc\K~*assets/vendor/select2-jquery/js/i18n/ca.jsnuW+APKc\HE $*assets/vendor/select2-jquery/js/i18n/vi.jsnuW+APKc\WW**assets/vendor/select2-jquery/js/i18n/ko.jsnuW+APKc\,bb*assets/vendor/select2-jquery/js/i18n/af.jsnuW+APKc\<+&LL*assets/vendor/select2-jquery/js/i18n/en.jsnuW+APKc\*=assets/vendor/select2-jquery/js/i18n/sq.jsnuW+APKc\ğL  *assets/vendor/select2-jquery/js/i18n/bn.jsnuW+APKc\*assets/vendor/select2-jquery/js/i18n/el.jsnuW+APKc\W*{ assets/vendor/select2-jquery/js/i18n/mk.jsnuW+APKc\9TT* assets/vendor/select2-jquery/js/i18n/hr.jsnuW+APKc\T$=*assets/vendor/select2-jquery/js/i18n/fr.jsnuW+APKc\!ll-assets/vendor/select2-jquery/js/i18n/pt-BR.jsnuW+APKc\@*Passets/vendor/select2-jquery/js/i18n/ar.jsnuW+APKc\)zܰ*3assets/vendor/select2-jquery/js/i18n/pl.jsnuW+APKc\ @@*@!assets/vendor/select2-jquery/js/i18n/km.jsnuW+APKc\%4  *%assets/vendor/select2-jquery/js/i18n/nb.jsnuW+APKc\&{K*>)assets/vendor/select2-jquery/js/i18n/it.jsnuW+APKc\n3*-assets/vendor/select2-jquery/js/i18n/ru.jsnuW+APKc\T$*2assets/vendor/select2-jquery/js/i18n/he.jsnuW+APKc\|G*86assets/vendor/select2-jquery/js/i18n/sr.jsnuW+APKc\*f:assets/vendor/select2-jquery/js/i18n/tr.jsnuW+APKc\ *=assets/vendor/select2-jquery/js/i18n/fa.jsnuW+APKc\ܓ* Bassets/vendor/select2-jquery/js/i18n/sv.jsnuW+APKc\?MM*Eassets/vendor/select2-jquery/js/i18n/ne.jsnuW+APKc\(''*3Kassets/vendor/select2-jquery/js/i18n/is.jsnuW+APKc\??*Nassets/vendor/select2-jquery/js/i18n/hu.jsnuW+APKc\4*MRassets/vendor/select2-jquery/js/i18n/id.jsnuW+APKc\u-͎.Uassets/vendor/select2-jquery/js/select2.min.jsnuW+APKc\ZS Ouu,hassets/css/learndash-admin-settings-page.cssnuW+APKc\F 0assets/css/learndash-admin-overview-page-rtl.cssnuW+APKc\Diassets/css/jquery-ui-rtl.cssnuW+APKc\2lE6assets/css/learndash-admin-binary-selector.min-rtl.cssnuW+APKc\4assets/css/style-rtl.cssnuW+APKc\(FEffassets/css/style.cssnuW+APKc\)J䑚-)assets/css/learndash-admin-shortcodes.min.cssnuW+APKc\Ɵ2WW4 assets/css/learndash-admin-settings-page.min-rtl.cssnuW+APKc\Zuu0=assets/css/learndash-admin-settings-page-rtl.cssnuW+APKc\/ uOO$Fassets/css/learndash-builder-rtl.cssnuW+APKc\wד#assets/css/learndash-admin-menu.cssnuW+APKc\lŒSS&~assets/css/jquery.dropdown.min-rtl.cssnuW+APKc\& TT/'assets/css/learndash-admin-support-page-rtl.cssnuW+APKc\t (assets/css/front.cssnuW+APKc\Z[=assets/css/learndash-admin-settings-page-translations-rtl.cssnuW+APKc\=FF assets/css/sfwd_editor.cssnuW+APKc\R=  +s assets/css/learndash-admin-menu.min-rtl.cssnuW+APKc\Ȇ=assets/css/jquery-ui.cssnuW+APKc\-+Whh(assets/css/learndash-admin-style-rtl.cssnuW+APKc\ڪF&&assets/css/sfwd_module-rtl.cssnuW+APKc\/x*2assets/css/learndash-admin-binary-selector.min.cssnuW+APKc\$3assets/css/learndash-admin-support-page.min-rtl.cssnuW+APKc\R=  'assets/css/learndash-admin-menu.min.cssnuW+APKc\/SC C .+assets/css/learndash-admin-binary-selector.cssnuW+APKc\-M1assets/css/learndash-admin-shortcodes.min-rtl.cssnuW+APKc\c `kk assets/css/jquery-ui.min-rtl.cssnuW+APKc\^b, , Sassets/css/front.min.cssnuW+APKc\JupBpB(9aassets/css/learndash-builder.min-rtl.cssnuW+APKc\lCassets/css/sfwd_editor.min.cssnuW+APKc\WW0"assets/css/learndash-admin-settings-page.min.cssnuW+APKc\C،cBcB$!assets/css/learndash-builder.min.cssnuW+APKc\/6..-?assets/css/learndash-admin-shortcodes-rtl.cssnuW+APKc\u&!VVcGassets/css/style.min.cssnuW+APKc\wSS+`assets/css/learndash-admin-support-page.cssnuW+APKc\,Lzkzkbassets/css/jquery-ui.min.cssnuW+APKc\%)--)uassets/css/learndash-admin-shortcodes.cssnuW+APKc\>OO assets/css/learndash-builder.cssnuW+APKc\~xC((0*& assets/css/learndash-admin-overview-page.min.cssnuW+APKc\xGGB assets/css/sfwd_editor-rtl.cssnuW+APKc\ޘ9GD assets/css/learndash-admin-settings-page-translations.cssnuW+APKc\orpHK assets/css/front-rtl.cssnuW+APKc\9> ,W\ assets/css/learndash-admin-style.min-rtl.cssnuW+APKc\rEJ J 2i assets/css/learndash-admin-binary-selector-rtl.cssnuW+APKc\wד'>s assets/css/learndash-admin-menu-rtl.cssnuW+APKc\u++":y assets/css/sfwd_editor.min-rtl.cssnuW+APKc\ (`z assets/css/learndash-admin-style.min.cssnuW+APKc\p,, assets/css/sfwd_module.min.cssnuW+APKc\H1 1  assets/css/front.min-rtl.cssnuW+APKc\V {{ assets/css/style.min-rtl.cssnuW+APKc\n[`QQ"Q assets/css/jquery.dropdown.min.cssnuW+APKc\V%%= assets/css/learndash-admin-settings-page-translations.min.cssnuW+APKc\&& assets/css/sfwd_module.cssnuW+APKc\Jo114] assets/css/learndash-admin-overview-page.min-rtl.cssnuW+APKc\gdd$ assets/css/learndash-admin-style.cssnuW+APKc\yc ,% assets/css/learndash-admin-overview-page.cssnuW+APKc\/F assets/css/learndash-admin-support-page.min.cssnuW+APKc\"AA"H assets/css/sfwd_module.min-rtl.cssnuW+APKc\7##AYa assets/css/learndash-admin-settings-page-translations.min-rtl.cssnuW+APKc\$BB:f assets/images-add-ons/learndash-paidmemberships_banner.jpgnuW+APKc\)@)@:D assets/images-add-ons/learndash-event-espresso_256x256.jpgnuW+APKc\څ,AA/ assets/images-add-ons/learndash-edd_256x256.jpgnuW+APKc\J͏,,2, assets/images-add-ons/learndash-stripe_256x256.jpgnuW+APKc\552;Z assets/images-add-ons/learndash-samcart_banner.jpgnuW+APKc\C"(%(%9f assets/images-add-ons/learndash-gravity-forms_256x256.jpgnuW+APKc\R1a6a67 assets/images-add-ons/learndash-exchange-wp_256x256.jpgnuW+APKc\mJ229 assets/images-add-ons/learndash-notifications_256x256.jpgnuW+APKc\H̆))@ assets/images-add-ons/learndash-restrict-content-pro_256x256.jpgnuW+APKc\ZɳDD6I assets/images-add-ons/learndash-woocommerce_banner.jpgnuW+APKc\7''4W assets/images-add-ons/learndash-2checkout_banner.jpgnuW+APKc\5S1DD; assets/images-add-ons/learndash-paidmemberships_256x256.jpgnuW+APKc\1"HZGZG. assets/images-add-ons/learndash-edd_banner.jpgnuW+APKc\:GG9zC assets/images-add-ons/learndash-event-espresso_banner.jpgnuW+APKc\I~4~43 assets/images-add-ons/learndash-default_256x256.jpgnuW+APKc\no3 '?'?7 assets/images-add-ons/learndash-course-grid_256x256.jpgnuW+APKc\P]--3 assets/images-add-ons/learndash-samcart_256x256.jpgnuW+APKc\p 2@2@2l.assets/images-add-ons/learndash-zapier_256x256.jpgnuW+APKc\-((7oassets/images-add-ons/learndash-memberpress_256x256.jpgnuW+APKc\t|;;2hassets/images-add-ons/learndash-bbpress_banner.jpgnuW+APKc\'118Tassets/images-add-ons/learndash-notifications_banner.jpgnuW+APKc\:[@@3_assets/images-add-ons/learndash-bbpress_256x256.jpgnuW+APKc\߹&990yFassets/images-add-ons/learndash-core_256x256.jpgnuW+APKc\MkE|)|)8assets/images-add-ons/learndash-gravity-forms_banner.jpgnuW+APKc\PGG1کassets/images-add-ons/learndash-zapier_banner.jpgnuW+APKc\W))6assets/images-add-ons/learndash-memberpress_banner.jpgnuW+APKc\( GAGA7assets/images-add-ons/learndash-woocommerce_256x256.jpgnuW+APKc\}=}=6]assets/images-add-ons/learndash-exchange-wp_banner.jpgnuW+APKc\mff/assets/images-add-ons/learndash-core_banner.jpgnuW+APKc\e%ˆD5D53assets/images-add-ons/learndash-propanel_banner.jpgnuW+APKc\z!'*'*?8assets/images-add-ons/learndash-restrict-content-pro_banner.jpgnuW+APKc\qs&s&5cassets/images-add-ons/learndash-2checkout_256x256.jpgnuW+APKc\WHDHD6assets/images-add-ons/learndash-course-grid_banner.jpgnuW+APKc\441assets/images-add-ons/learndash-stripe_banner.jpgnuW+APKc\pl:l:4assets/images-add-ons/learndash-propanel_256x256.jpgnuW+APKc\rε772=assets/images-add-ons/learndash-default_banner.jpgnuW+APKc\8'.vassets/js/learndash-admin-overview-page.min.jsnuW+APKc\}bUf f % assets/js/builder/dist/builder.min.jsnuW+APKc\+nNN*tassets/js/builder/dist/builder.min-rtl.cssnuW+APKc\FV  'xCassets/js/builder/dist/metaboxes.min.jsnuW+APKc\sݝZIZI%Lassets/js/builder/dist/header.min.cssnuW+APKc\ߋrr$assets/js/builder/dist/header.min.jsnuW+APKc\hpAA) #assets/js/builder/dist/header.min-rtl.cssnuW+APKc\ INN&K#assets/js/builder/dist/builder.min.cssnuW+APKc\>>4z#̚#assets/js/builder/dist/metaboxes.jsnuW+APKc\ʩ550۰#assets/js/learndash-admin-binary-selector.min.jsnuW+APKc\ #*ww$*#assets/js/sfwd-admin-user-profile.jsnuW+APKc\7#assets/js/learndash-admin-settings-page-translations.jsnuW+APKc\7#assets/js/learndash-admin-settings-data-upgrades.min.jsnuW+APKc\po!!E$assets/js/sfwd_module.jsnuW+APKc\pr y3 3 v&%assets/js/jquery.dropdown.min.jsnuW+APKc\ '1%assets/js/learndash-admin-shortcodes.jsnuW+APKc\0dd,>P%assets/js/learndash-admin-binary-selector.jsnuW+APKc\̲ #(V%assets/js/sfwd-admin-user-profile.min.jsnuW+APKc\jв3%assets/js/learndash-admin-shortcodes-tinymce.min.jsnuW+APKc\F'/%assets/js/learndash-admin-shortcodes-tinymce.jsnuW+APKc\$'%assets/js/learndash_video_script.min.jsnuW+APKc\xU%assets/js/jquery.dropdown.jsnuW+APKc\g%assets/js/sfwd_module.min.jsnuW+APKc\jyy"i&assets/js/learndash-builder.min.jsnuW+APKc\WEVV+e'assets/js/learndash-admin-shortcodes.min.jsnuW+APKc\]ZO@@)+'assets/js/learndash-admin-pointers.min.jsnuW+APKc\л%/'assets/js/learndash-admin-menu.min.jsnuW+APKc\o@ڸ2'assets/js/sfwd-admin-groups.jsnuW+APKc\+Unyy"8'assets/js/sfwd-admin-groups.min.jsnuW+APKc\g YBSBS.='assets/js/learndash-admin-settings-page.min.jsnuW+APKc\0532'assets/js/learndash-admin-settings-data-upgrades.jsnuW+APKc\5q6d'assets/js/learndash-admin-settings-data-reports.min.jsnuW+APKc\v !'assets/js/learndash-admin-menu.jsnuW+APKc\E* * 2ں'assets/js/learndash-admin-settings-data-reports.jsnuW+APKc\33#f'assets/js/learndash_video_script.jsnuW+APKc\I:˘*'assets/js/learndash-admin-settings-page.jsnuW+APKc\D[8 8 % (assets/js/learndash-admin-pointers.jsnuW+APKc\9I;(assets/js/learndash-admin-settings-page-translations.min.jsnuW+APKc\}_ZZ(assets/js/learndash-builder.jsnuW+APKc\}*a)assets/js/learndash-admin-overview-page.jsnuW+APKc\ )privacy_policy.txtnuW+APKc\h\)themes/themes-loader.phpnuW+APKc\-themes/legacy/templates/learndash_template_script.min.jsnuW+APKc\'onn:J-themes/legacy/templates/quiz_navigation_switcher_admin.phpnuW+APKc\Ajj"Y-themes/legacy/templates/lesson.phpnuW+APKc\HVVBv-themes/legacy/templates/learndash_course_prerequisites_message.phpnuW+APKc\ U*U*8H|-themes/legacy/templates/learndash_quiz_front.min-rtl.cssnuW+APKc\8׳=-themes/legacy/templates/learndash_course_steps_navigation.phpnuW+APKc\-@P-themes/legacy/templates/learndash_course_points_user_message.phpnuW+APKc\;2A-themes/legacy/templates/course_progress_widget.phpnuW+APKc\2G(NDD3+-themes/legacy/templates/course_navigation_admin.phpnuW+APKc\L03-themes/legacy/templates/course_list_template.phpnuW+APKc\S440-themes/legacy/templates/learndash_quiz_front.cssnuW+APKc\+&KK<3.themes/legacy/templates/learndash_template_style.min-rtl.cssnuW+APKc\Ps=? 1~.themes/legacy/templates/quiz_navigation_admin.phpnuW+APKc\}g&&".themes/legacy/templates/course.phpnuW+APKc\D54themes/ld30/templates/shortcodes/profile/quiz-row.phpnuW+APKc\qR604themes/ld30/templates/shortcodes/profile/essay-row.phpnuW+APKc\?454themes/ld30/templates/shortcodes/profile/quizzes.phpnuW+APKc\Cp;J<4themes/ld30/templates/shortcodes/profile/search-results.phpnuW+APKc\sm}<>4themes/ld30/templates/shortcodes/profile/course-progress.phpnuW+APKc\!ԚVo o 3D4themes/ld30/templates/shortcodes/profile/search.phpnuW+APKc\zگ8VR4themes/ld30/templates/shortcodes/profile/assignments.phpnuW+APKc\900;Z4themes/ld30/templates/shortcodes/profile/assignment-row.phpnuW+APKc\7_:5n4themes/ld30/templates/shortcodes/user_groups_shortcode.phpnuW+APKc\eK44=fw4themes/ld30/templates/shortcodes/course_content_shortcode.phpnuW+APKc\3xx04themes/ld30/templates/shortcodes/user-status.phpnuW+APKc\s3ל##-ߓ4themes/ld30/templates/lesson/partials/row.phpnuW+APKc\  7ط4themes/ld30/templates/lesson/partials/not-available.phpnuW+APKc\g1J4themes/ld30/templates/lesson/partials/section.phpnuW+APKc\G''(4themes/ld30/templates/lesson/listing.phpnuW+APKc\j\N04themes/ld30/templates/course_registered_rows.phpnuW+APKc\Yfa<< q4themes/ld30/templates/course.phpnuW+APKc\7+4themes/ld30/templates/assignment/upload.phpnuW+APKc\~`1B 5themes/ld30/templates/assignment/partials/row.phpnuW+APKc\>,S%5themes/ld30/templates/assignment/listing.phpnuW+APKc\ (B5themes/ld30/templates/focus/comments.phpnuW+APKc\Npp(N5themes/ld30/templates/focus/masthead.phpnuW+APKc\ 'j5themes/ld30/templates/focus/sidebar.phpnuW+APKc\G|ww&v5themes/ld30/templates/focus/header.phpnuW+APKc\ d^^&iy5themes/ld30/templates/focus/footer.phpnuW+APKc\+gL[ [ %{5themes/ld30/templates/focus/index.phpnuW+APKc\xU -ͅ5themes/ld30/templates/focus/comments_list.phpnuW+APKc\/!bnƐ5themes/ld30/templates/quiz.phpnuW+APKc\&Τ5themes/ld30/templates/topic.phpnuW+APKc\H5themes/ld30/assets/css/learndash.cssnuW+APKc\`7"vBthemes/ld30/assets/css/learndash.quiz.front.min-rtl.cssnuW+APKc\J00&{|Bthemes/ld30/assets/js/learndash.min.jsnuW+APKc\<<11yCthemes/ld30/assets/iconfont/simple-arrow-left.svgnuW+APKc\Dyy%{Cthemes/ld30/assets/iconfont/clock.svgnuW+APKc\xI (Cthemes/ld30/assets/iconfont/calendar.svgnuW+APKc\_~\\(Cthemes/ld30/assets/iconfont/unlocked.svgnuW+APKc\vwNN+Cthemes/ld30/assets/iconfont/certificate.svgnuW+APKc\Ttt(cCthemes/ld30/assets/iconfont/arrow-up.svgnuW+APKc\d(/Cthemes/ld30/assets/iconfont/download.svgnuW+APKc\t-&OCthemes/ld30/assets/iconfont/search.svgnuW+APKc\)y%YY&~Cthemes/ld30/assets/iconfont/remove.svgnuW+APKc\Fss+-Cthemes/ld30/assets/iconfont/arrow-right.svgnuW+APKc\V )Cthemes/ld30/assets/iconfont/materials.svgnuW+APKc\OII/Cthemes/ld30/assets/iconfont/simple-arrow-up.svgnuW+APKc\&%Cthemes/ld30/assets/iconfont/login.svgnuW+APKc\H)Cthemes/ld30/assets/iconfont/checkmark.svgnuW+APKc\]jBCthemes/ld30/assets/iconfont/admin-icons/learndash-admin-icon-6.svgnuW+APKc\ BCthemes/ld30/assets/iconfont/admin-icons/learndash-admin-icon-8.svgnuW+APKc\}TVV?KCthemes/ld30/assets/iconfont/admin-icons/browser-checkmark-2.svgnuW+APKc\  BCthemes/ld30/assets/iconfont/admin-icons/learndash-admin-icon-9.svgnuW+APKc\͍BCthemes/ld30/assets/iconfont/admin-icons/learndash-admin-icon-7.svgnuW+APKc\gr J  BCthemes/ld30/assets/iconfont/admin-icons/learndash-admin-icon-3.svgnuW+APKc\XXBCthemes/ld30/assets/iconfont/admin-icons/learndash-admin-icon-4.svgnuW+APKc\gOz@Cthemes/ld30/assets/iconfont/admin-icons/learndash-admin-icon.svgnuW+APKc\sf~ ~ B_Cthemes/ld30/assets/iconfont/admin-icons/learndash-admin-icon-5.svgnuW+APKc\g!BOCthemes/ld30/assets/iconfont/admin-icons/learndash-admin-icon-2.svgnuW+APKc\n  =Cthemes/ld30/assets/iconfont/admin-icons/browser-checkmark.svgnuW+APKc\ E4Cthemes/ld30/assets/iconfont/admin-icons/browser-checkmark-outline.svgnuW+APKc\)[G.IDthemes/ld30/assets/iconfont/course-outline.svgnuW+APKc\1ZZ* Dthemes/ld30/assets/iconfont/assignment.svgnuW+APKc\#(`Dthemes/ld30/assets/iconfont/comments.svgnuW+APKc\Ett*IDthemes/ld30/assets/iconfont/arrow-down.svgnuW+APKc\' //%Dthemes/ld30/assets/iconfont/alert.svgnuW+APKc\p\(Dthemes/ld30/assets/iconfont/complete.svgnuW+APKc\r}1"rr*Dthemes/ld30/assets/iconfont/arrow-left.svgnuW+APKc\z='M Dthemes/ld30/assets/iconfont/content.svgnuW+APKc\')%Dthemes/ld30/index.phpnuW+APKc\`8*8*#D&Dthemes/class-ld-themes-register.phpnuW+APKc\#88PDincludes/class-ld-lms.phpnuW+APKc\GJ#PlGincludes/class-ldlms-transients.phpnuW+APKc\ :)tGincludes/shortcodes/shortcodes-loader.phpnuW+APKc\2~S(uGincludes/shortcodes/ld_quiz_complete.phpnuW+APKc\ E E (zGincludes/shortcodes/ld_course_resume.phpnuW+APKc\`]&\Gincludes/shortcodes/ld_certificate.phpnuW+APKc\]]ɗGincludes/ld-autoupdate.phpnuW+APKc\!|  6Gincludes/admin/class-learndash-admin-import-export.phpnuW+APKc\إFF3DGincludes/admin/class-learndash-admin-menus-tabs.phpnuW+APKc\8L@Iincludes/admin/class-learndash-admin-binary-selector.phpnuW+APKc\661Iincludes/admin/class-learndash-admin-pointers.phpnuW+APKc\E(#8Iincludes/admin/ld-admin-columns.phpnuW+APKc\W;;6pJincludes/admin/class-learndash-admin-posts-listing.phpnuW+APKc\$[NBJincludes/admin/classes-builders/class-learndash-admin-quiz-builder-metabox.phpnuW+APKc\#cSPJincludes/admin/classes-builders/class-learndash-admin-course-builder-metabox.phpnuW+APKc\\AOKincludes/admin/classes-posts-listings/class-learndash-admin-courses-listing.phpnuW+APKc\+EEO(Kincludes/admin/classes-posts-listings/class-learndash-admin-lessons-listing.phpnuW+APKc\v))OKincludes/admin/classes-posts-listings/class-learndash-admin-quizzes-listing.phpnuW+APKc\x<<QoKincludes/admin/classes-posts-listings/class-learndash-admin-questions-listing.phpnuW+APKc\F 11NLincludes/admin/classes-posts-listings/class-learndash-admin-topics-listing.phpnuW+APKc\D ' '>)Lincludes/admin/class-learndash-admin-settings-data-reports.phpnuW+APKc\-£YdYd0QLincludes/admin/class-learndash-admin-builder.phpnuW+APKc\ ,993ɵLincludes/admin/class-learndash-admin-posts-edit.phpnuW+APKc\Dؑ!,!,fLincludes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list.phpnuW+APKc\&wsiibyMincludes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-quiz-questions.phpnuW+APKc\jMincludes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-activity-db-table.phpnuW+APKc\OOeiMincludes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-courses.phpnuW+APKc\ɗ##eMincludes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-group-leader-role.phpnuW+APKc\3A ;;eDMincludes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-user-meta-quizzes.phpnuW+APKc\5`u+Nincludes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-translations.phpnuW+APKc\3NNn3Nincludes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-course-access-list-convert.phpnuW+APKc\OORORk/Nincludes/admin/classes-data-uprades-actions/class-learndash-admin-data-upgrades-rename_wpproquiz-tables.phpnuW+APKc\|9Nincludes/admin/onboarding-templates/onboarding-groups.phpnuW+APKc\TB ?Nincludes/admin/onboarding-templates/onboarding-sfwd-lessons.phpnuW+APKc\hM@pNincludes/admin/onboarding-templates/onboarding-sfwd-question.phpnuW+APKc\pLlܸ =Nincludes/admin/onboarding-templates/onboarding-sfwd-topic.phpnuW+APKc\5E&DNincludes/admin/onboarding-templates/onboarding-sfwd-certificates.phpnuW+APKc\{ { ?Oincludes/admin/onboarding-templates/onboarding-sfwd-courses.phpnuW+APKc\ˑP P <Oincludes/admin/onboarding-templates/onboarding-sfwd-quiz.phpnuW+APKc\W9B))*Oincludes/admin/ld-quiz-builder-helpers.phpnuW+APKc\wa  D6Oincludes/admin/ld-gutenberg.phpnuW+APKc\o`f7h7h:9Oincludes/admin/class-learndash-admin-user-profile-edit.phpnuW+APKc\ȜrZ9Z9:>Oincludes/admin/class-learndash-admin-addons-list-table.phpnuW+APKc\114Oincludes/admin/class-learndash-admin-groups-edit.phpnuW+APKc\0Zx, Pincludes/admin/ld-course-builder-helpers.phpnuW+APKc\!FQ|Q|J"Pincludes/admin/classes-posts-edits/class-learndash-admin-question-edit.phpnuW+APKc\tÊGPincludes/admin/classes-posts-edits/class-learndash-admin-topic-edit.phpnuW+APKc\7|HPincludes/admin/classes-posts-edits/class-learndash-admin-course-edit.phpnuW+APKc\XFH7Pincludes/admin/classes-posts-edits/class-learndash-admin-lesson-edit.phpnuW+APKc\6NNFSPincludes/admin/classes-posts-edits/class-learndash-admin-quiz-edit.phpnuW+APKc\(R(R_KQincludes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-courses.phpnuW+APKc\ v![![_rQincludes/admin/classes-data-reports-actions/class-learndash-admin-data-reports-user-quizzes.phpnuW+APKc\u^D^D6Qincludes/admin/class-learndash-admin-data-upgrades.phpnuW+APKc\ >5>5vRincludes/admin/ld-admin.phpnuW+APKc\0u..:GSincludes/admin/class-learndash-admin-groups-users-list.phpnuW+APKc\0{#{#@_wSincludes/admin/class-learndash-admin-groups-users-list-table.phpnuW+APKc\JJSincludes/ld-groups.phpnuW+APKc\?=dd{ETincludes/gutenberg/index.phpnuW+APKc\օt@@-+NTincludes/gutenberg/assets/js/editor.blocks.jsnuW+APKc\Vׯ/\includes/gutenberg/assets/js/frontend.blocks.jsnuW+APKc\qa2$\includes/gutenberg/assets/css/blocks.style-rtl.cssnuW+APKc\/.#\includes/gutenberg/assets/css/blocks.style.cssnuW+APKc\^ /\includes/gutenberg/assets/css/blocks.editor.cssnuW+APKc\2)3Y\includes/gutenberg/assets/css/blocks.editor-rtl.cssnuW+APKc\1(l**)\includes/gutenberg/assets/editor.build.jsnuW+APKc\6)\includes/gutenberg/assets/style.build.cssnuW+APKc\p'Ar-\includes/gutenberg/blocks/ld-student/index.jsnuW+APKc\.}\includes/gutenberg/blocks/ld-student/index.phpnuW+APKc\zpb3\includes/gutenberg/blocks/ld-quiz-complete/index.jsnuW+APKc\h>4 ]includes/gutenberg/blocks/ld-quiz-complete/index.phpnuW+APKc\sډ"D$]includes/gutenberg/blocks/ldlms.jsnuW+APKc\Ɯ}1}113]includes/gutenberg/blocks/ld-lesson-list/index.jsnuW+APKc\t[2~~2e]includes/gutenberg/blocks/ld-lesson-list/index.phpnuW+APKc\N0dz]includes/gutenberg/blocks/ld-quiz-list/index.phpnuW+APKc\G22/K]includes/gutenberg/blocks/ld-quiz-list/index.jsnuW+APKc\B/]includes/gutenberg/blocks/ld-usermeta/index.phpnuW+APKc\Iʛ;yy.]includes/gutenberg/blocks/ld-usermeta/index.jsnuW+APKc\=Py y 9]includes/gutenberg/blocks/ld-user-course-points/index.phpnuW+APKc\I8]includes/gutenberg/blocks/ld-user-course-points/index.jsnuW+APKc\2!]includes/gutenberg/blocks/i18n.jsnuW+APKc\n-]includes/gutenberg/blocks/ld-profile/index.jsnuW+APKc\ <<.^includes/gutenberg/blocks/ld-profile/index.phpnuW+APKc\ƛ],{.^includes/gutenberg/blocks/ld-group/index.phpnuW+APKc\aؾ" " +t2^includes/gutenberg/blocks/ld-group/index.jsnuW+APKc\dd.?^includes/gutenberg/blocks/ld-visitor/index.phpnuW+APKc\?)22-C^includes/gutenberg/blocks/ld-visitor/index.jsnuW+APKc\bH))1BR^includes/gutenberg/blocks/ld-course-info/index.jsnuW+APKc\lI"2|^includes/gutenberg/blocks/ld-course-info/index.phpnuW+APKc\@B2^includes/gutenberg/blocks/ld-user-groups/index.phpnuW+APKc\1^includes/gutenberg/blocks/ld-user-groups/index.jsnuW+APKc\M,,5^includes/gutenberg/blocks/ld-course-progress/index.jsnuW+APKc\i 6^includes/gutenberg/blocks/ld-course-progress/index.phpnuW+APKc\:pp5^includes/gutenberg/blocks/ld-payment-buttons/index.jsnuW+APKc\`b6^includes/gutenberg/blocks/ld-payment-buttons/index.phpnuW+APKc\C""0/_includes/gutenberg/blocks/ld-courseinfo/index.jsnuW+APKc\d<£1Q4_includes/gutenberg/blocks/ld-courseinfo/index.phpnuW+APKc\B+;UJ_includes/gutenberg/blocks/ld-course-expire-status/index.phpnuW+APKc\e{:e_includes/gutenberg/blocks/ld-course-expire-status/index.jsnuW+APKc\u&u&1Mz_includes/gutenberg/blocks/ld-certificate/index.jsnuW+APKc\..2#_includes/gutenberg/blocks/ld-certificate/index.phpnuW+APKc\/+_includes/gutenberg/blocks/ld-login/index.jsnuW+APKc\eR,_includes/gutenberg/blocks/ld-login/index.phpnuW+APKc\~BB3_includes/gutenberg/blocks/ld-course-resume/index.jsnuW+APKc\e4`includes/gutenberg/blocks/ld-course-resume/index.phpnuW+APKc\8x664`includes/gutenberg/blocks/ld-course-content/index.jsnuW+APKc\}5*`includes/gutenberg/blocks/ld-course-content/index.phpnuW+APKc\`>% 3 30?`includes/gutenberg/blocks/ld-topic-list/index.jsnuW+APKc\է1^s`includes/gutenberg/blocks/ld-topic-list/index.phpnuW+APKc\7f`includes/gutenberg/blocks/ld-course-notstarted/index.jsnuW+APKc\r/D8S`includes/gutenberg/blocks/ld-course-notstarted/index.phpnuW+APKc\gX5`includes/gutenberg/blocks/ld-course-complete/index.jsnuW+APKc\i$6`includes/gutenberg/blocks/ld-course-complete/index.phpnuW+APKc\`;L8L81`includes/gutenberg/blocks/ld-course-list/index.jsnuW+APKc\1dX##2`includes/gutenberg/blocks/ld-course-list/index.phpnuW+APKc\@yU"aincludes/gutenberg/blocks/index.jsnuW+APKc\L!!%;aincludes/gutenberg/blocks/frontend.jsnuW+APKc\agk8aincludes/gutenberg/blocks/ld-course-inprogress/index.phpnuW+APKc\PEyy7 aincludes/gutenberg/blocks/ld-course-inprogress/index.jsnuW+APKc\_&&*aincludes/gutenberg/lib/enqueue-scripts.phpnuW+APKc\~ CAaincludes/gutenberg/lib/class-ld-rest-gutenberg-posts-controller.phpnuW+APKc\Oi99:Kaincludes/gutenberg/lib/class-learndash-gutenberg-block.phpnuW+APKc\~~aincludes/ld-users.phpnuW+APKc\Ldz# bincludes/class-ld-bitbucket-api.phpnuW+APKc\?_HmHm bincludes/class-ld-gdpr.phpnuW+APKc\m,dcincludes/course/ld-course-list-shortcode.phpnuW+APKc\sJݽ)Gdincludes/course/ld-course-info-widget.phpnuW+APKc\ XxXx' eincludes/course/ld-course-functions.phpnuW+APKc\/GG&ʁfincludes/course/ld-course-progress.phpnuW+APKc\8x8x# gincludes/course/ld-course-video.phpnuW+APKc\C_p_p(Bhincludes/course/ld-course-navigation.phpnuW+APKc\+@'Mhincludes/course/ld-course-metaboxes.phpnuW+APKc\V?2hincludes/ld-scripts.phpnuW+APKc\cVqq Ehincludes/class-ld-permalinks.phpnuW+APKc\">iincludes/ld-assignment-uploads.phpnuW+APKc\G0nn"jincludes/class-ld-translations.phpnuW+APKc\$\YFFTjincludes/ld-misc-functions.phpnuW+APKc\w0*CChkincludes/class-ld-cpt.phpnuW+APKc\帅$Hkincludes/class-ld-addons-updater.phpnuW+APKc\JJ(T2lincludes/quiz/ld-quiz-info-shortcode.phpnuW+APKc\v #|lincludes/quiz/ld-quiz-functions.phpnuW+APKc\aamincludes/quiz/ld-quiz-pro.phpnuW+APKc\3޺**#}mincludes/quiz/ld-quiz-migration.phpnuW+APKc\V mincludes/quiz/ld-quiz-essays.phpnuW+APKc\0dMM#nincludes/quiz/ld-quiz-metaboxes.phpnuW+APKc\ M;M;nincludes/ld-certificates.phpnuW+APKc\*'+"2*oincludes/class-ld-cpt-instance.phpnuW+APKc\QQ"Coincludes/class-ld-custom-label.phpnuW+APKc\``#gpincludes/class-ldlms-post-types.phpnuW+APKc\}ep'',pincludes/deprecated/deprecated-functions.phpnuW+APKc\"̆̆2(pincludes/lib/paypal/enhanced-paypal-shortcodes.phpnuW+APKc\8//˯pincludes/lib/paypal/ipn.phpnuW+APKc\ս #pincludes/lib/paypal/ipnlistener.phpnuW+APKc\X74qincludes/lib/wp-pro-quiz/js/wpProQuiz_toplist.min.jsnuW+APKc\PM]1 1 , qincludes/lib/wp-pro-quiz/js/jquery.cookie.jsnuW+APKc\0# 88.qincludes/lib/wp-pro-quiz/js/wpProQuiz_admin.jsnuW+APKd\#c0 Jrincludes/lib/wp-pro-quiz/js/jquery.cookie.min.jsnuW+APKd\#KK2FPrincludes/lib/wp-pro-quiz/js/wpProQuiz_front.min.jsnuW+APKd\~V=QQ.rincludes/lib/wp-pro-quiz/js/wpProQuiz_front.jsnuW+APKd\J0Dtincludes/lib/wp-pro-quiz/js/wpProQuiz_toplist.jsnuW+APKd\{1P8+Jtincludes/lib/wp-pro-quiz/js/jquery.ui.touch-punch.min.jsnuW+APKd\T"i29Otincludes/lib/wp-pro-quiz/js/wpProQuiz_admin.min.jsnuW+APKd\*( uincludes/lib/wp-pro-quiz/wp-pro-quiz.phpnuW+APKd\Ʒ>>>I uincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_StatisticRefMapper.phpnuW+APKd\'T^^>9`uincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_Toplist.phpnuW+APKd\$e;guincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_Lock.phpnuW+APKd\ل''?bkuincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_Question.phpnuW+APKd\E0LUuincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_StatisticFormOverview.phpnuW+APKd\fZ'=uincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_Mapper.phpnuW+APKd\rF88Euincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_GlobalSettings.phpnuW+APKd\& Huincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_StatisticRefModel.phpnuW+APKd\IPPHuincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_StatisticOverview.phpnuW+APKd\q00Ehuincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_QuestionMapper.phpnuW+APKd\n Fuincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_StatisticMapper.phpnuW+APKd\֊\ooKuincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_GlobalSettingsMapper.phpnuW+APKd\=W##A vincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_QuizMapper.phpnuW+APKd\T\8I I D.vincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_ToplistMapper.phpnuW+APKd\WWE9vincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_CategoryMapper.phpnuW+APKd\rRR?Ivincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_Template.phpnuW+APKd\W @bMvincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_Statistic.phpnuW+APKd\zpJYvincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_StatisticUserMapper.phpnuW+APKd\A`vincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_FormMapper.phpnuW+APKd\ Dhhvincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_StatisticUser.phpnuW+APKd\tEtvincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_TemplateMapper.phpnuW+APKd\PF88<|vincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_Model.phpnuW+APKd\a ;vincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_Form.phpnuW+APKd\A~/))Avincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_LockMapper.phpnuW+APKd\RS?vincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_Category.phpnuW+APKd\~j Gvincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_StatisticHistory.phpnuW+APKd\NUUE BIvincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_AnswerTypes.phpnuW+APKd\Vi Ivincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_PrerequisiteMapper.phpnuW+APKd\>\kk; vincludes/lib/wp-pro-quiz/lib/model/WpProQuiz_Model_Quiz.phpnuW+APKd\~IP(wincludes/lib/wp-pro-quiz/lib/plugin/WpProQuiz_Plugin_BpAchievementsV2.phpnuW+APKd\͒Ih/wincludes/lib/wp-pro-quiz/lib/plugin/WpProQuiz_Plugin_BpAchievementsV3.phpnuW+APKd\f5(5(F6wincludes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Admin.phpnuW+APKd\YI\_wincludes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Template.phpnuW+APKd\.3 - -Hbwincludes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Toplist.phpnuW+APKd\%H\wincludes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Request.phpnuW+APKd\)C Mwincludes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_ImportExport.phpnuW+APKd\dN^ ^ Owincludes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_GlobalSettings.phpnuW+APKd\unIبwincludes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Category.phpnuW+APKd\D Ewincludes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Ajax.phpnuW+APKd\Mwincludes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_StyleManager.phpnuW+APKd\WKJaaKwincludes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Controller.phpnuW+APKd\Efwincludes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Quiz.phpnuW+APKd\ C CIgxincludes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Question.phpnuW+APKd\]w%w%Nxincludes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_QuizCompleted.phpnuW+APKd\''Ftxincludes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Front.phpnuW+APKd\[z   Hlxincludes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Preview.phpnuW+APKd\piPkkKyincludes/lib/wp-pro-quiz/lib/controller/WpProQuiz_Controller_Statistics.phpnuW+APKd\~XAAB5qyincludes/lib/wp-pro-quiz/lib/helper/WpProQuiz_Helper_ExportXml.phpnuW+APKd\@iyincludes/lib/wp-pro-quiz/lib/helper/WpProQuiz_Helper_Captcha.phpnuW+APKd\FFBйyincludes/lib/wp-pro-quiz/lib/helper/WpProQuiz_Helper_ImportXml.phpnuW+APKd\z"00?&zincludes/lib/wp-pro-quiz/lib/helper/WpProQuiz_Helper_Import.phpnuW+APKd\G[ >zincludes/lib/wp-pro-quiz/lib/helper/WpProQuiz_Helper_Until.phpnuW+APKd\P33=,zincludes/lib/wp-pro-quiz/lib/helper/WpProQuiz_Helper_Form.phpnuW+APKd\m\HH@4zincludes/lib/wp-pro-quiz/lib/helper/WpProQuiz_Helper_Upgrade.phpnuW+APKd\*BUDzincludes/lib/wp-pro-quiz/lib/helper/WpProQuiz_Helper_DbUpgrade.phpnuW+APKd\ ?zincludes/lib/wp-pro-quiz/lib/helper/WpProQuiz_Helper_Export.phpnuW+APKd\Pd`d`B$zincludes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_GobalSettings.phpnuW+APKd\;xxA:{includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionEdit.phpnuW+APKd\o ;I{includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Import.phpnuW+APKd\}'#'#B:{includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsNew.phpnuW+APKd\A{includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontToplist.phpnuW+APKd\zs)s)>{includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_FrontQuiz.phpnuW+APKd\m A}includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StyleManager.phpnuW+APKd\)D }includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuestionOverall.phpnuW+APKd\`0@J9}includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizOverall.phpnuW+APKd\k=V}includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_QuizEdit.phpnuW+APKd\j#;6;6?=~includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_Statistics.phpnuW+APKd\As~includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_AdminToplist.phpnuW+APKd\:0rNtNtC+~includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_StatisticsAjax.phpnuW+APKd\gޓ[[9~includes/lib/wp-pro-quiz/lib/view/WpProQuiz_View_View.phpnuW+APKd\w&w&4includes/lib/wp-pro-quiz/css/wpProQuiz_front-rtl.cssnuW+APKd\8'includes/lib/wp-pro-quiz/css/wpProQuiz_front.min-rtl.cssnuW+APKd\F`s&s&0Fincludes/lib/wp-pro-quiz/css/wpProQuiz_front.cssnuW+APKd\x4mincludes/lib/wp-pro-quiz/css/wpProQuiz_front.min.cssnuW+APKd\=X%X%#includes/lib/wp-pro-quiz/readme.txtnuW+APKd\77&includes/lib/wp-pro-quiz/uninstall.phpnuW+APKd\5tt8,includes/lib/parsecsv-for-php/src/enums/AbstractEnum.phpnuW+APKd\ٗ 8includes/lib/parsecsv-for-php/src/enums/DatatypeEnum.phpnuW+APKd\UB{includes/lib/parsecsv-for-php/src/enums/FileProcessingModeEnum.phpnuW+APKd\5j4includes/lib/parsecsv-for-php/src/enums/SortEnum.phpnuW+APKd\6 W >includes/lib/parsecsv-for-php/src/extensions/DatatypeTrait.phpnuW+APKd\٬@)includes/lib/parsecsv-for-php/src/Csv.phpnuW+APKd\sҢZZ.includes/lib/parsecsv-for-php/parsecsv.lib.phpnuW+APKd\[r׸fincludes/lib/parsecsv.lib.phpnuW+APKd\ikincludes/lib/tcpdf/tcpdf.crtnuW+APKd\1includes/lib/tcpdf/tcpdf.fdfnuW+APKd\vpincludes/lib/tcpdf/tcpdf.p12nuW+APKd\,S66$includes/lib/tcpdf/tcpdf_filters.phpnuW+APKd\&|3?3?#gۀincludes/lib/tcpdf/tcpdf_parser.phpnuW+APKd\qVSttincludes/lib/tcpdf/LICENSE.TXTnuW+APKd\,.uQcc Łincludes/lib/tcpdf/CHANGELOG.TXTnuW+APKd\.!)includes/lib/tcpdf/datamatrix.phpnuW+APKd\8hσincludes/lib/tcpdf/tcpdf.phpnuW+APKd\ ]%includes/lib/tcpdf/fonts/pdfatimesi.znuW+APKd\S'tincludes/lib/tcpdf/fonts/freemono.ctg.znuW+APKd\%includes/lib/tcpdf/fonts/freesans.phpnuW+APKd\2*!5includes/lib/tcpdf/fonts/freeserifbi.ctg.znuW+APKd\3[A A &QHincludes/lib/tcpdf/fonts/pdfatimes.phpnuW+APKd\'O%Rincludes/lib/tcpdf/fonts/freemono.phpnuW+APKd\?+V V +ޕincludes/lib/tcpdf/fonts/pdfahelveticai.phpnuW+APKd\Gx̶**(includes/lib/tcpdf/fonts/freeserif.ctg.znuW+APKd\@"T T $includes/lib/tcpdf/fonts/freeserif.znuW+APKd\.LL&iincludes/lib/tcpdf/fonts/freemonob.phpnuW+APKd\۠ՔՔ%|includes/lib/tcpdf/fonts/pdfatimesb.znuW+APKd\JUL L *Kincludes/lib/tcpdf/fonts/pdfahelvetica.phpnuW+APKd\+X   &LVincludes/lib/tcpdf/fonts/helvetica.phpnuW+APKd\[jTO O '`includes/lib/tcpdf/fonts/pdfatimesb.phpnuW+APKd\/^ ^ ,Wkincludes/lib/tcpdf/fonts/pdfahelveticabi.phpnuW+APKd\  #vincludes/lib/tcpdf/fonts/timesb.phpnuW+APKd\QQ$uincludes/lib/tcpdf/fonts/freesansb.znuW+APKd\gbb(Oincludes/lib/tcpdf/fonts/pdfahelvetica.znuW+APKd\yvv%includes/lib/tcpdf/fonts/freesansbi.znuW+APKd\q((includes/lib/tcpdf/fonts/freesansb.ctg.znuW+APKd\nw( ( ';includes/lib/tcpdf/fonts/freesans.ctg.znuW+APKd\w͞͞&4\includes/lib/tcpdf/fonts/pdfatimesbi.znuW+APKd\"btt%Wincludes/lib/tcpdf/fonts/freemonobi.znuW+APKd\S ?*pincludes/lib/tcpdf/fonts/pdfahelveticabi.znuW+APKd\O^))$eincludes/lib/tcpdf/fonts/freesansi.znuW+APKd\FF)⢰includes/lib/tcpdf/fonts/freeserifb.ctg.znuW+APKd\Mȭȭ#includes/lib/tcpdf/fonts/freesans.znuW+APKd\ rr'gincludes/lib/tcpdf/fonts/freeserifb.phpnuW+APKd\bV<]<]&ڶincludes/lib/tcpdf/fonts/freesansb.phpnuW+APKd\YD+  '8includes/lib/tcpdf/fonts/helveticab.phpnuW+APKd\dx[[(Bincludes/lib/tcpdf/fonts/freemonoi.ctg.znuW+APKd\A, , )7Sincludes/lib/tcpdf/fonts/freemonobi.ctg.znuW+APKd\#~%%%`includes/lib/tcpdf/fonts/freeserifi.znuW+APKd\S)6includes/lib/tcpdf/fonts/freeserifi.ctg.znuW+APKd\هuquq)Hincludes/lib/tcpdf/fonts/pdfahelveticai.znuW+APKd\d:43_w_w#nincludes/lib/tcpdf/fonts/freemono.znuW+APKd\ᑼ)includes/lib/tcpdf/fonts/freesansbi.ctg.znuW+APKd\I I 'includes/lib/tcpdf/fonts/pdfatimesi.phpnuW+APKd\JT T (xincludes/lib/tcpdf/fonts/pdfatimesbi.phpnuW+APKd\^RR($ includes/lib/tcpdf/fonts/freemonob.ctg.znuW+APKd\TWRWR&includes/lib/tcpdf/fonts/freemonoi.phpnuW+APKd\?ev${oincludes/lib/tcpdf/fonts/freemonoi.znuW+APKd\6T T +2includes/lib/tcpdf/fonts/pdfahelveticab.phpnuW+APKd\28&V=includes/lib/tcpdf/fonts/freeserifbi.znuW+APKd\e``(*includes/lib/tcpdf/fonts/freeserifbi.phpnuW+APKd\bQcc):includes/lib/tcpdf/fonts/pdfahelveticab.znuW+APKd\.[ޘޘ%xincludes/lib/tcpdf/fonts/freeserifb.znuW+APKd\*ex(includes/lib/tcpdf/fonts/freesansi.ctg.znuW+APKd\bMrAA'includes/lib/tcpdf/fonts/freemonobi.phpnuW+APKd\+ c c$includes/lib/tcpdf/fonts/freemonob.znuW+APKd\2o "2Aincludes/lib/tcpdf/fonts/times.phpnuW+APKd\)`L^L^&Kincludes/lib/tcpdf/fonts/freesansi.phpnuW+APKd\Z~  $2includes/lib/tcpdf/fonts/timesbi.phpnuW+APKd\Dz  'includes/lib/tcpdf/fonts/helveticai.phpnuW+APKd\Pildd' includes/lib/tcpdf/fonts/freeserifi.phpnuW+APKd\v]~v;;$#includes/lib/tcpdf/fonts/pdfatimes.znuW+APKd\:!Z!Z'nincludes/lib/tcpdf/fonts/freesansbi.phpnuW+APKd\K &includes/lib/tcpdf/fonts/freeserif.phpnuW+APKd\  #7includes/lib/tcpdf/fonts/timesi.phpnuW+APKd\m"  (includes/lib/tcpdf/fonts/helveticabi.phpnuW+APKd\S##*includes/lib/tcpdf/config/tcpdf_config.phpnuW+APKd\2&+includes/lib/tcpdf/config/lang/fra.phpnuW+APKd\5&$0includes/lib/tcpdf/config/lang/est.phpnuW+APKd\6&=5includes/lib/tcpdf/config/lang/por.phpnuW+APKd\D&Z:includes/lib/tcpdf/config/lang/aze.phpnuW+APKd\HiT &{?includes/lib/tcpdf/config/lang/zho.phpnuW+APKd\ԟѾ&Dincludes/lib/tcpdf/config/lang/hye.phpnuW+APKd\!&Iincludes/lib/tcpdf/config/lang/rtl.phpnuW+APKd\Uڼ&Mincludes/lib/tcpdf/config/lang/slv.phpnuW+APKd\_1&Rincludes/lib/tcpdf/config/lang/chi.phpnuW+APKd\j(&Xincludes/lib/tcpdf/config/lang/mkd.phpnuW+APKd\,䀦&?]includes/lib/tcpdf/config/lang/swa.phpnuW+APKd\X0ֶ&Sbincludes/lib/tcpdf/config/lang/urd.phpnuW+APKd\k$&_gincludes/lib/tcpdf/config/lang/ron.phpnuW+APKd\c|ܽ&lincludes/lib/tcpdf/config/lang/heb.phpnuW+APKd\@U&qincludes/lib/tcpdf/config/lang/cat.phpnuW+APKd\z޻&vincludes/lib/tcpdf/config/lang/eng.phpnuW+APKd\5_&{includes/lib/tcpdf/config/lang/ltr.phpnuW+APKd\K&includes/lib/tcpdf/config/lang/mlt.phpnuW+APKd\ Ϲ&'includes/lib/tcpdf/config/lang/ces.phpnuW+APKd\? &6includes/lib/tcpdf/config/lang/nob.phpnuW+APKd\j&eincludes/lib/tcpdf/config/lang/gle.phpnuW+APKd\OD&vincludes/lib/tcpdf/config/lang/kor.phpnuW+APKd\M&includes/lib/tcpdf/config/lang/bel.phpnuW+APKd\ag&includes/lib/tcpdf/config/lang/msa.phpnuW+APKd\] &includes/lib/tcpdf/config/lang/ger.phpnuW+APKd\g&includes/lib/tcpdf/config/lang/bra.phpnuW+APKd\|&حincludes/lib/tcpdf/config/lang/cym.phpnuW+APKd\C8&includes/lib/tcpdf/config/lang/yid.phpnuW+APKd\J&includes/lib/tcpdf/config/lang/nld.phpnuW+APKd\'_&includes/lib/tcpdf/config/lang/jpn.phpnuW+APKd\Ż&Sincludes/lib/tcpdf/config/lang/swe.phpnuW+APKd\sCz&dincludes/lib/tcpdf/config/lang/hun.phpnuW+APKd\m&|includes/lib/tcpdf/config/lang/hat.phpnuW+APKd\Fh&includes/lib/tcpdf/config/lang/pol.phpnuW+APKd\R&includes/lib/tcpdf/config/lang/rus.phpnuW+APKd\ow{&includes/lib/tcpdf/config/lang/ita.phpnuW+APKd\YL|&includes/lib/tcpdf/config/lang/ind.phpnuW+APKd\ _"&includes/lib/tcpdf/config/lang/far.phpnuW+APKd\L& includes/lib/tcpdf/config/lang/sqi.phpnuW+APKd\B& includes/lib/tcpdf/config/lang/eus.phpnuW+APKd\.2&6includes/lib/tcpdf/config/lang/srp.phpnuW+APKd\< gi&Oincludes/lib/tcpdf/config/lang/kat.phpnuW+APKd\i"&qincludes/lib/tcpdf/config/lang/glg.phpnuW+APKd\bމ&includes/lib/tcpdf/config/lang/dan.phpnuW+APKd\& includes/lib/tcpdf/config/lang/afr.phpnuW+APKd\6_֝&includes/lib/tcpdf/config/lang/hrv.phpnuW+APKd\/h&includes/lib/tcpdf/config/lang/ara.phpnuW+APKd\;$J&includes/lib/tcpdf/config/lang/spa.phpnuW+APKd\ޠ-includes/lib/tcpdf/images/tcpdf_signature.pngnuW+APKd\. ]BB( includes/lib/tcpdf/images/tcpdf_logo.jpgnuW+APKd\QL__$Sincludes/lib/tcpdf/images/_blank.pngnuW+APKd\FΝ88Tincludes/lib/tcpdf/qrcode.phpnuW+APKd\ !includes/lib/tcpdf/spotcolors.phpnuW+APKd\  includes/lib/tcpdf/barcodes.phpnuW+APKd\r; hincludes/lib/tcpdf/sRGB.iccnuW+APKd\--=includes/lib/tcpdf/cache/img_6401f6baa01dae606337661c6d26a7a8nuW+APKd\"includes/lib/tcpdf/cache/emptyfilenuW+APKd\|YWW=Iincludes/lib/tcpdf/cache/img_7278d03497b61ff7e3d46cc6ebbc0e45nuW+APKd\]bXEXE=Bincludes/lib/tcpdf/cache/img_3f623071695252389068bbfee09f0c0enuW+APKd\ Y՛yy#eincludes/lib/tcpdf/unicode_data.phpnuW+APKd\; 1!includes/lib/tcpdf/htmlcolors.phpnuW+APKd\includes/lib/tcpdf/pdf417.phpnuW+APKd\\Hwuuincludes/lib/tcpdf/README.TXTnuW+APKd\goOoO%includes/lib/tcpdf/encodings_maps.phpnuW+APKd\>66!FLincludes/lib/tcpdf/2dbarcodes.phpnuW+APKd\^QBQB includes/class-ld-cpt-widget.phpnuW+APKd\<<5includes/ld-reports.phpnuW+APKd\MMincludes/class-ldlms-db.phpnuW+APKd\d Pincludes/ld-wp-editor.phpnuW+APKd\UĬ'bincludes/rest-api/class-ld-rest-api.phpnuW+APKd\>>9Sincludes/rest-api/v1/class-ld-rest-courses-controller.phpnuW+APKd\nѯ''8includes/rest-api/v1/class-ld-rest-topics-controller.phpnuW+APKd\(%a/a/@4 includes/rest-api/v1/class-ld-rest-courses-groups-controller.phpnuW+APKd\< 6Pincludes/rest-api/v1/class-ld-rest-echo-controller.phpnuW+APKd\J((@\includes/rest-api/v1/class-ld-rest-groups-leaders-controller.phpnuW+APKd\_:includes/rest-api/v1/class-ld-rest-sections-controller.phpnuW+APKd\ _(7includes/rest-api/v1/class-ld-rest-posts-controller.phpnuW+APKd\r))>includes/rest-api/v1/class-ld-rest-groups-users-controller.phpnuW+APKd\桒7includes/rest-api/v1/class-ld-rest-users-controller.phpnuW+APKd\i((?includes/rest-api/v1/class-ld-rest-courses-users-controller.phpnuW+APKd\...?Lincludes/rest-api/v1/class-ld-rest-users-courses-controller.phpnuW+APKd\7nLb''84includes/rest-api/v1/class-ld-rest-groups-controller.phpnuW+APKd\{w?2Kincludes/rest-api/v1/class-ld-rest-courses-steps-controller.phpnuW+APKd\[i..>Mhincludes/rest-api/v1/class-ld-rest-users-groups-controller.phpnuW+APKd\KGE~includes/rest-api/v1/class-ld-rest-users-quiz-attempts-controller.phpnuW+APKd\3::Grincludes/rest-api/v1/class-ld-rest-users-course-progress-controller.phpnuW+APKd\sgg@includes/rest-api/v1/class-ld-rest-courses-enroll-controller.phpnuW+APKd\?װ##9{includes/rest-api/v1/class-ld-rest-lessons-controller.phpnuW+APKd\85--@,includes/rest-api/v1/class-ld-rest-groups-courses-controller.phpnuW+APKd\T;Zincludes/rest-api/v1/class-ld-rest-questions-controller.phpnuW+APKd\]229uincludes/rest-api/v1/class-ld-rest-quizzes-controller.phpnuW+APKd\>+662Xincludes/settings/class-ld-shortcodes-sections.phpnuW+APKd\6[= = 2includes/settings/shortcodes-sections/ld_group.phpnuW+APKd\7KK5includes/settings/shortcodes-sections/user_groups.phpnuW+APKd\s s 1?includes/settings/shortcodes-sections/student.phpnuW+APKd\fJ J 8includes/settings/shortcodes-sections/course_content.phpnuW+APKd\D,,9includes/settings/shortcodes-sections/course_complete.phpnuW+APKd\L ##8Zincludes/settings/shortcodes-sections/ld_course_info.phpnuW+APKd\+}--4 includes/settings/shortcodes-sections/courseinfo.phpnuW+APKd\];+Nincludes/settings/shortcodes-sections/course_notstarted.phpnuW+APKd\Szz:s]includes/settings/shortcodes-sections/ld_quiz_complete.phpnuW+APKd\=(227Woincludes/settings/shortcodes-sections/ld_topic_list.phpnuW+APKd\'܎558zincludes/settings/shortcodes-sections/ld_course_list.phpnuW+APKd\bs.**8includes/settings/shortcodes-sections/ld_certificate.phpnuW+APKd\}qQ6 5 56Gincludes/settings/shortcodes-sections/ld_quiz_list.phpnuW+APKd\BV9includes/settings/shortcodes-sections/learndash_login.phpnuW+APKd\ Q0Q085includes/settings/shortcodes-sections/ld_lesson_list.phpnuW+APKd\ Ceincludes/settings/shortcodes-sections/learndash_course_progress.phpnuW+APKd\3+zAIqincludes/settings/shortcodes-sections/ld_course_expire_status.phpnuW+APKd\ N :includes/settings/shortcodes-sections/ld_course_resume.phpnuW+APKd\894includes/settings/shortcodes-sections/ld_profile.phpnuW+APKd\&(a2Īincludes/settings/shortcodes-sections/quizinfo.phpnuW+APKd\D  1includes/settings/shortcodes-sections/visitor.phpnuW+APKd\ujC!includes/settings/shortcodes-sections/learndash_payment_buttons.phpnuW+APKd\y9_?includes/settings/shortcodes-sections/ld_user_course_points.phpnuW+APKd\2includes/settings/shortcodes-sections/usermeta.phpnuW+APKd\,,2 includes/settings/shortcodes-sections/ld_video.phpnuW+APKd\ ;includes/settings/shortcodes-sections/course_inprogress.phpnuW+APKd\G441includes/settings/class-ld-shortcodes-tinymce.phpnuW+APKd\Q1,,Y2includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-access-settings.phpnuW+APKd\חb b Xq_includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-access-settings.phpnuW+APKd\|6|6W[includes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-access-settings.phpnuW+APKd\uFzMzMY^includes/settings/settings-metaboxes/class-ld-settings-metabox-course-display-content.phpnuW+APKd\p}ddWaincludes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-display-content.phpnuW+APKd\OLincludes/settings/settings-metaboxes/class-ld-settings-metabox-course-users.phpnuW+APKd\d4M4MYٴincludes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-progress-settings.phpnuW+APKd\Rdincludes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-admin-data-handling-settings.phpnuW+APKd\/qY֥includes/settings/settings-metaboxes/class-ld-settings-metabox-lesson-display-content.phpnuW+APKd\g?X+includes/settings/settings-metaboxes/class-ld-settings-metabox-topic-display-content.phpnuW+APKd\Yƃ+YY]1includes/settings/settings-metaboxes/class-ld-settings-metabox-course-navigation-settings.phpnuW+APKd\(Yincludes/settings/settings-metaboxes/class-ld-settings-metabox-course-access-settings.phpnuW+APKd\ __gCincludes/settings/settings-metaboxes/class-ld-settings-metabox-quiz-results-display-content-options.phpnuW+APKd\`O?QYQY1includes/settings/class-ld-settings-metaboxes.phpnuW+APKd\ii0includes/settings/class-ld-settings-sections.phpnuW+APKd\,;!!Lgincludes/settings/settings-sections/class-ld-settings-section-topics-cpt.phpnuW+APKd\QjT includes/settings/settings-sections/class-ld-settings-section-quizzes-taxonomies.phpnuW+APKd\hBt!!Yincludes/settings/settings-sections/class-ld-settings-section-support-database-tables.phpnuW+APKd\1tLL\includes/settings/settings-sections/class-ld-settings-section-courses-management-display.phpnuW+APKd\K Rincludes/settings/settings-sections/class-ld-settings-section-general-per-page.phpnuW+APKd\NCPT T R$includes/settings/settings-sections/class-ld-settings-section-side-quick-links.phpnuW+APKd\IWsLLT0includes/settings/settings-sections/class-ld-settings-section-lessons-taxonomies.phpnuW+APKd\w7''HEincludes/settings/settings-sections/class-ld-settings-section-paypal.phpnuW+APKd\@JJ[mincludes/settings/settings-sections/class-ld-settings-section-support-wordpress-plugins.phpnuW+APKd\8bMincludes/settings/settings-sections/class-ld-settings-section-side-submit.phpnuW+APKd\8P'  T5includes/settings/settings-sections/class-ld-settings-section-support-data-reset.phpnuW+APKd\:g ( (Pśincludes/settings/settings-sections/class-ld-settings-section-support-server.phpnuW+APKd\.g:U!!MPincludes/settings/settings-sections/class-ld-settings-section-lessons-cpt.phpnuW+APKd\1d Oincludes/settings/settings-sections/class-ld-settings-section-custom-labels.phpnuW+APKd\QZ Z Oincludes/settings/settings-sections/class-ld-settings-section-questions-cpt.phpnuW+APKd\Nw.Z|includes/settings/settings-sections/class-ld-settings-section-support-wordpress-themes.phpnuW+APKd\K}y y V%%includes/settings/settings-sections/class-ld-settings-section-translations-refresh.phpnuW+APKd\Ž^$/includes/settings/settings-sections/class-ld-settings-section-questions-management-display.phpnuW+APKd\੆ccOoIincludes/settings/settings-sections/class-ld-settings-section-data-upgrades.phpnuW+APKd\g,,LQOincludes/settings/settings-sections/class-ld-settings-section-permalinks.phpnuW+APKd\"1==S{includes/settings/settings-sections/class-ld-settings-section-topics-taxonomies.phpnuW+APKd\¨''Wincludes/settings/settings-sections/class-ld-settings-section-permalinks-taxonomies.phpnuW+APKd\^577X׸includes/settings/settings-sections/class-ld-settings-section-quizzes-email-settings.phpnuW+APKd\UX占!!M_includes/settings/settings-sections/class-ld-settings-section-quizzes-cpt.phpnuW+APKd\{| +]+]\|includes/settings/settings-sections/class-ld-settings-section-quizzes-management-display.phpnuW+APKd\>Q3pincludes/settings/settings-sections/class-ld-settings-section-assignments-cpt.phpnuW+APKd\rZTincludes/settings/settings-sections/class-ld-settings-section-general-admin-user.phpnuW+APKd\ZXincludes/settings/settings-sections/class-ld-settings-section-translations-learndash.phpnuW+APKd\/**VRincludes/settings/settings-sections/class-ld-settings-section-questions-taxonomies.phpnuW+APKd\kffRincludes/settings/settings-sections/class-ld-settings-section-general-rest-api.phpnuW+APKd\1pSincludes/settings/settings-sections/class-ld-settings-section-support-learndash.phpnuW+APKd\AϾPfincludes/settings/settings-sections/class-ld-settings-section-courses-themes.phpnuW+APKd\H_Z!!MExincludes/settings/settings-sections/class-ld-settings-section-courses-cpt.phpnuW+APKd\0b㹋 Zincludes/settings/settings-sections/class-ld-settings-section-support-copy-system-info.phpnuW+APKd\_--Sincludes/settings/settings-sections/class-ld-settings-section-support-templates.phpnuW+APKd\cHBB@3includes/settings/settings-sections/settings-sections-loader.phpnuW+APKd\$(uuTincludes/settings/settings-sections/class-ld-settings-section-courses-taxonomies.phpnuW+APKd\R$Sincludes/settings/settings-sections/class-ld-settings-section-support-wordpress.phpnuW+APKd\d\aincludes/settings/settings-sections/class-ld-settings-section-general-login-registration.phpnuW+APKd\ ~ I,includes/settings/settings-fields/class-ld-settings-fields-date-entry.phpnuW+APKd\ҹEFincludes/settings/settings-fields/class-ld-settings-fields-select.phpnuW+APKd\حˌJYincludes/settings/settings-fields/class-ld-settings-fields-colorpicker.phpnuW+APKd\j%R+ + Qbincludes/settings/settings-fields/class-ld-settings-fields-quiz-custom-fields.phpnuW+APKd\ Kincludes/settings/settings-fields/class-ld-settings-fields-input-select.phpnuW+APKd\h czzNincludes/settings/settings-fields/class-ld-settings-fields-checkbox-switch.phpnuW+APKd\ Qincludes/settings/settings-fields/class-ld-settings-fields-select-edit-delete.phpnuW+APKd\֤  Jincludes/settings/settings-fields/class-ld-settings-fields-timer-entry.phpnuW+APKd\~3rGgincludes/settings/settings-fields/class-ld-settings-fields-checkbox.phpnuW+APKd\! Eincludes/settings/settings-fields/class-ld-settings-fields-number.phpnuW+APKd\#^Jincludes/settings/settings-fields/class-ld-settings-fields-multiselect.phpnuW+APKd\VBincludes/settings/settings-fields/class-ld-settings-fields-url.phpnuW+APKd\;jjCincludes/settings/settings-fields/class-ld-settings-fields-html.phpnuW+APKd\KGVppE includes/settings/settings-fields/class-ld-settings-fields-hidden.phpnuW+APKd\EcECincludes/settings/settings-fields/class-ld-settings-fields-text.phpnuW+APKd\mRincludes/settings/settings-fields/class-ld-settings-fields-quiz-templates-load.phpnuW+APKd\X22R.5includes/settings/settings-fields/class-ld-settings-fields-quiz-templates-save.phpnuW+APKd\LttEGincludes/settings/settings-fields/class-ld-settings-fields-custom.phpnuW+APKd\#TKNincludes/settings/settings-fields/class-ld-settings-fields-media-upload.phpnuW+APKd\vee<%^includes/settings/settings-fields/settings-fields-loader.phpnuW+APKd\sDdincludes/settings/settings-fields/class-ld-settings-fields-radio.phpnuW+APKd\JED"xincludes/settings/settings-fields/class-ld-settings-fields-email.phpnuW+APKd\} } GZ}includes/settings/settings-fields/class-ld-settings-fields-textarea.phpnuW+APKd\r:! ! GNincludes/settings/settings-fields/class-ld-settings-fields-wpeditor.phpnuW+APKd\|MXBXB-includes/settings/class-ld-settings-pages.phpnuW+APKd\HiRincludes/settings/settings-pages/class-ld-settings-page-courses-builder-single.phpnuW+APKd\مiB!includes/settings/settings-pages/class-ld-settings-page-paypal.phpnuW+APKd\i$C|includes/settings/settings-pages/class-ld-settings-page-support.phpnuW+APKd\HvvK includes/settings/settings-pages/class-ld-settings-page-lessons-options.phpnuW+APKd\1\Cincludes/settings/settings-pages/class-ld-settings-page-license.phpnuW+APKd\(ZzzO includes/settings/settings-pages/class-ld-settings-page-assignments-options.phpnuW+APKd\0&>Kincludes/settings/settings-pages/class-ld-settings-page-courses-options.phpnuW+APKd\ir3||R2includes/settings/settings-pages/class-ld-settings-page-quizzes-builder-single.phpnuW+APKd\CMMI0;includes/settings/settings-pages/class-ld-settings-page-import-export.phpnuW+APKd\53RQincludes/settings/settings-pages/class-ld-settings-page-certificate-shortcodes.phpnuW+APKd\nRCincludes/settings/settings-pages/class-ld-settings-page-general.phpnuW+APKd\sI includes/settings/settings-pages/class-ld-settings-page-data-upgrades.phpnuW+APKd\>mmJrincludes/settings/settings-pages/class-ld-settings-page-topics-options.phpnuW+APKd\SMYincludes/settings/settings-pages/class-ld-settings-page-questions-options.phpnuW+APKd\)oDincludes/settings/settings-pages/class-ld-settings-page-overview.phpnuW+APKd\ orr:hincludes/settings/settings-pages/settings-pages-loader.phpnuW+APKd\Fh  IDincludes/settings/settings-pages/class-ld-settings-page-custom-labels.phpnuW+APKd\AźKincludes/settings/settings-pages/class-ld-settings-page-quizzes-options.phpnuW+APKd\s _ _Nincludes/settings/settings-pages/class-ld-settings-page-courses-shortcodes.phpnuW+APKd\TM%7includes/settings/settings-loader.phpnuW+APKd\Hڙ__.e:includes/settings/class-ld-settings-fields.phpnuW+APKd\;9SS \includes/ld-convert-post-pdf.phpnuW+APKd\zs``&includes/class-ld-semper-fi-module.phpnuW+APKd\M; ; (xincludes/import/class-ld-import-quiz.phpnuW+APKd\lo1 includes/import/class-ld-import-user-progress.phpnuW+APKd\$>(Aincludes/import/class-ld-import-post.phpnuW+APKd\z@O)includes/import/class-ld-import-topic.phpnuW+APKd\DĜ3includes/import/class-ld-import-quiz-statistics.phpnuW+APKd\!)includes/import/import-loader.phpnuW+APKd\[-ؿ1-includes/import/class-ld-import-quiz-question.phpnuW+APKd\;j  *!3includes/import/class-ld-import-course.phpnuW+APKd\X*Bincludes/import/class-ld-import-lesson.phpnuW+APKd\0*((+Fincludes/classes/class-ldlms-quiz-model.phpnuW+APKd\@A-_Hincludes/classes/class-ldlms-factory-post.phpnuW+APKd\B)X]includes/classes/abstract-ldlms-model.phpnuW+APKd\՝.\^includes/classes/abstract-ldlms-model-post.phpnuW+APKd\H\+N+N/W`includes/classes/class-ldlms-quiz-questions.phpnuW+APKd\v̟-includes/classes/class-ldlms-model-lesson.phpnuW+APKd\MXƆƆ-includes/classes/class-ldlms-course-steps.phpnuW+APKd\S] ] -;includes/classes/class-ldlms-model-course.phpnuW+APKd\Dқ--,Dincludes/classes/class-ldlms-topic-model.phpnuW+APKd\J&== IFsfwd_lms.phpnuW+APKd\|B |B languages/learndash.potnuW+APKa