PNG  IHDR   Q gAMA a cHRMz& u0 `: p Q<bKGD gmIDATx w U ﹻ & ^C X( J I@  "% (** B X +* i "]j(IH {~ R) [ ~ >h { }g y )I $I j          .I $I $ ʊ y@ }x . : $I $I i}  V Z  PC)I $I F  ^ 0ʐJ $I $ Q^ }{ "  r = OzI $gR Ze C. IO vH eK X $IM px sk . 쒷/ &  r [޳ < v| .I ~ )@ $ up dY R  a $I | M . e Jaֶ pS Y R 6j >h %IR ز  i f&  u J) M $I vL i = H; 7UJ , ] ,X $I 1  AҒ J  $ X Y XzI @G N ҥR T)E @ ; ]K* M w;# 5_ wO n~ \ DC& $(A 5 R R FkvIR } l ! RytRl; ~^Ƿ  Jj اy 뷦BZ Jr &ӥ 8 P j w~ vn v X ^ (I; 4 R= P[ 3]J , ]ȏ ~ : 3 ? [  a &e)` e* P[ 4] T =Cq 6 R[ ~ޤ r XR Հg( t _HZ -Hg M $ ãm L5 R u k *`%C- E6/   %[ t X.{ 8 P9Z   .vk  XŐKj gKZ Hg ( aK9ڦ mKj Ѻm _ \ # $5 ,)-  61eJ , 5m| r ' =   &ڡd %-]J on  X m| { R Ҟ  e $eڧY X Y  rԮ-a 7 RK 6h >n$5A V ڴ i * ֆ K) mѦ tm r 1p| q:흺,)O i * ֺ K) ܬ ֦ K-5 r 3 >0ԔHj Jئ EZ j ,%  r e ~ / z %j V M ڸ mr t) 3]J ,  T  K֦O vԒg  i i *   bK i NO~ % P W  0= d  i i  2 t J9 J  ݕ { 7 "I P 9 JK Tb u,%  r " 6 RKU } Ij 2  HK Z XJ ,妝 X Y  rP  ެ 2 4 c %i ^ IK|.H ,%  r b :XR l 1X 4Pe/` x &  P 8 Pj 28 M z s x  2  r \ zR P z 4J } y  P[g= L)  .Q[ 6Rj Wgp FI H *-`I  M RaK9T X c q *I y [ j E>cw% gL R ԕi F Cj - ď a` #e~ I j ,%  r ,)?[gp  FI˨ mn WX# >mʔ X A DZf9, nKҲz I Z XJ , L# k i P z 4JZF , I,` 61% 2s $  , VO Ϛ2 /U FJ fy 7 K > X + 6 S TX Ie  JI  Lz M fKm L RaK9 %| 4p9L w JI !`N sia zĔ)   %-  X  M  q > pk $-$ Q 2  x# N ؎ - QR }ᶦHZ ډ ) J , l#  i@y n3   L N` ; nڔ X  u X5 p F)  m| ^ 0( >B H F9(c զE er JI rg 7 4I@z 0\ JI  i 䵙 RR 0 s; $ s6eJ , `n 䂦 0 a )S) A  1eJ ,堌# 6 35R I gpN Hu  TH _S  ԕqV e ` &S) > p;S$魁eKI  uX `I  4 춒 o}`m $1" : PI <[ v9 ^ \p TJj r iRŭ P{# {R2,`) e-`mgj ~ 1 ϣ L Kam 7 &U\j / 3mJ , `F  ;M ' 䱀  .KR#  )y h Tq ;p cK9(  q!w ?  u RR,n.yw *UXj# \ ]ɱ  (q v2=R q f B#i Jm m L <] Y ͙ # $5 u TU 7 Ӧ X R+q ,`I} qL '  ` 6 K ͷ 6  r , ] 0S$- [RKR3 o iRE | nӦ X R. (i : L D L TJj Y %o : )  6  r x zҒ q TJj h㞦I  . $Y R.ʼ n GZ \ֿ  f:%5 5 I ˼! 6 dK x m  4E "mG _  s? .e*  ?L RfK9 %  q # uh$ ) i 3U  L RfK9yx m܌b j 8  4 $ i 1U ^@Wbm  4uJ ,  Ҫ A >  _Ij ?1 v 3 2 [ gL R D 9 6 o Ta R ׿ N7% L 2 NT ,`)7 & Ɲ L *꽙 yp _$ M 2 # A S ,`)7 $r k TA 29 _ Iy e" |/0 t) $ n X T2 `Y J  ; 6 J x" .e < ` $) P I$ 5 V4] 29   SRI> ~ =@j ] l p 2`K9Jaai ^" Ԋ 29 O RI% :X V5]J m  N9 ] H;1U C39 NI%  Xe78 t)a ; O i Ҙ >X t "~G> _mn:%  |~ޅ_ +] $ o ) @ ǀ{hgN; IK 6 G& rp ) T2 i ୦K Ju v* T = T  O SV >( ~D >d m ,I*  Ɛ : R # ۙNI% D>G .n $ o ; +# R R ! .e U  ˽ TRI 2 8 t)1L WϚ>IJ a3 oF b u& : tJ* (F7 y 0 Z R ^ p  'Ii L 24x | X RI% ۄ>S1]J y [z L $ adB7  .eh4  % % 누>W E Tf+3 IR: I 3Xה)3אO ۦSR O' ٺ )S }" q O r[B7 ϙ.edG )^E TR"R t R ݜh  0}  < S ɧx .6,) &  )SI p j 'I ? A L "  L  .\ TZV N ! 'I Y. pAS 5} TRbNL 3 ” d b e ) 4] Mg/S  Z{ni ,)=k  Д d p ǦO uLb7 ߛ2%lO }u ) K ]le T P  j eS(I Z ִ R ^eJ%%* /\ Ke ̈́ -O M $  |.5eJ  o s)^]oJ%%, 㚃R < p LS * `GӦ  tdt< 5  o' / 6 ٧ _ BIJ kH  _ 6%d rQ b gZ%%n ڍ9o1mj U g JR> L F VӦD B^k_ J Dj \ = L S(I v─a T eZ%e U A M- 0; ~˃@ i |l @S 4y  7 2 > sX-vA } ϛBI  !ݎߨ  W l *)3{' Y| iS lEڻ(  5 K t SI $ Uv0 2  ,~ ԩ~ x ; P 4 ց C r O%ty n4 25: KM l D ^ 4JR xS ه F_}شJ T S 6uj +ﷸk $e Z O% G *^ V2  u3E Mj 3 k%)ok  I]d T ) UR K DS  7 ~ m@ TJR ~ 荪 f T" ֛L \ s M  -0 T K f J z+  n إK r L  &j ( ) [ E&I ߴ>e FW _ kJR |! O :5 /2跌3 T- '| zX  r yp0 J S ~^ F >- 2 < `*% ZFP ) bS  n"  L :) +pʷf(pO 3 TMW$~  >@~ū: TA IsV 1} S2 < % ޟ M ?@ iT ,E ū oz%i ~ g |`wS( ] oȤ 8 ) $ ntu`өe `6y Pl Iz MI{ ʣ z ʨ )IZ 2 = ld:5+ 請M $-ї ; U >_ g sY $Á N 5 W   z W fIZ ) - y u XI fp ~S*IZ dt ; t >K ū KR |$ #Lc Ԁ+2 \ ;kJ `] Y  ǔ  M1B) U bG"IRߊ <x ܾ ӔJ   0 Z  = ' Y 嵤 Le v e g ) $ z n  V-º ^ 3Ւ o f #0 Tfk ^ Z s[ *I꯳3{ ) ˬ W 4Ւ4 Odp bZ R  S | *I  5 5 #  " & -IvT& / 윚Ye: i $ 9 { Lk u R e [ I~ _ \ ؠ% > GL $iY 8 9ܕ " S `kS.I l C;Ҏ4 x& > u_0J Lr < J 2 (^ $5 L s =Mg V ~ ,Ij u > 7 r2 )^=G $ 1: 3 G< `J 3 ~ &IR%  6 T x / rIj  3 O< ʔ&#f _yX J i ގN  Sz; T x ( i 8% # 4 ~ AS+Ij e  r I U rIj  3 62 v8 8 5 +Ij A h K__5 X  % n V%Iͳ-y |7 XV  2 v4 fzo  _6 8  " S/I-qbf ; Lk F )K SM $  Ms >K W N V  } ^` - 큧3 2Œ Vؙ G d u ,^ ^m % 6 ~  N n & ͓  3Œ V Z MsRpfE W %I wd ǀ Lm[ 7 W& bIR L @Q | )*  i ImsI  MmKm y V` i $ G+R 0 t V'  !  V )֏ 28 v  U 7͒ v  H ꦼt  x ꗞ T ;S }  7 M f + fIR  H N ZUk U x5 SA Jㄌ 9  Mq  μ AIRi| j 5 )o *^ '<$ T  w I 1 hE U ^c _ j ?  Е$%d`z c y f ,X O IJ nTg A U XRD   } { H } ^ S,P5 V 2 \ Xx`p Z  |Y k: $e ~ @nW L .j + ϝ Y b퇪 bZ BV u ) u  /IJ_ 1 [ p.p60 bC >|X 9 1P : N\ ! 5 qUB}5 a5ja `ub c VxYt1N 0 Z  z  l4 ]7­gKj ] ? 4ϻ * [ b g$)+À *x쳀ogO$~,5 ز U S    9  lq3 +5 mgw@ n p1 sso Ӻ=  | N6 / g( Wv7U ; zωM= wk ,0 u T g _ `_ P` uz? 2 yI !b ` k ĸSo +Q  x%!\ ο e   | އ  ԁK S-s6 pu _ (ֿ $ i+ + T8= e Y;  צ P +p h x WQ v  * |p1 .  ά. XRk IQ Y P, d r Z  |   B % w P| S5` ~́@ i ޾ E ; Չaw{o' Q ?% iL{u D ?  N1 B D ! o w PHRe FZ *    k _-~  {  E9 b- ~P `  f E{AܶB J A FO wx6  R ox 5 K5 = W we hS8 ( J C l J  ~ p+ F  i ;ŗo+ : bD #g( C " wA^  r. F 8L; dzd IH U X ݆ Ϟ X g )I F q e m %I 4 d j&pp T { '{ HO x ( Rk 6^C ٫ O. ) 3 :s( ۳(Z ?~ٻ8 9 zmT" PL tw䥈 5  &b<8GZ- Y & K ?e8,`I 6  e (֍x b8 3 ` r zX j )F =l($I j 2* (F ?h(/9ik:  I`m# p3 Mg   L aKj c /U # n5 S #  m(^)=y=đ x8Ŭ  I [U]  ~S цA 4 p $-F i(  R , 7C x ;X = c   I > { Km \ o(T v 2 v x 2q i   iDJ N , Ҏ  !1f 5quB j 1  ! 8 r  D Fd( !  W  Ql ,g S k  L 1Bx g' ' ՞ ^ ǘ; p Q  P(c _ IRu j g( W z b s # P ­rz > k  c&nB= q+  ؔX n#r5  )co *Ũ +G ?7 < | P   Q ӣ' G `uO d>%M ct z # Ԫ  ڞ & 7 CaQ ~N '  -P . W`Oedp0 3C!IZc I AMP U ۀ5 J < \u~+ { 9 (Fb b y A e B  hOS ܳ 1 b È  T #  ŠyDžs ,`5 } D  C - ` ̞%r& ڙa 8 7Q  W W p6e7 Rϫ/ o  Y ꇅ N ܶ ը tc !  L  A  T 7 V4 J sū  I- 0 P x z7 QN F _ i   Z g úW k G 83  0e Wr9 X  ]㾮݁#  Jˢ C }0 =3 ݱ tB i ] _ & { {[/ o[ ~ \q 鯜 0 0 ٩  |  cD 3 =4 B_b RY b$ó BR sf &  l L X#M* C _ L܄:gx )WΘs GSb  u L rF$9 ' ;\4 Ɍ q ' n [%p. Q`  u h N b`eCQyQ| l _  C>L b꟟3h Sb # x N xS s^ 88 | Mz ) }: ](vbۢ amŖ࿥ 0)Q 7 @ 0 =?^k(* J } 3ib kF n H jB׻ NO  z  x} 7p 0 t f   D X .lw gȔ h Ծ Ų }6 g E | Lk LZ t  eu+= q \I v0쮑 ) Q ٵpH8 /2?Σ o > J v pp h  o~ f>%bM M } \ // ": PT c(v 9v ! g ո Q ) U fV G +! 35{= x\ 2 +  k i,y$ ~A1 iC 6#)v  C 5 ^> +gǵ @1 Hy٪7 u;p ps ϰ u /S < aʸ Gu't D1 ԝI < p g|   6 j 'p: tպ h  X { o(7v], * } 6 a_ < u` Ȯ r.E ;ˑ q io p R "  26 2E 8j ]  U 鿍ǜ v D ,2 վ 8ϫ : e/^AQ T H{ WgRl ̊  2Yx  "1 Q > wX Rk,O ] Lܳ ~V< F 8 a _g~ o. XCD ?S t h 梫A o %  ~K1ݵ O1 LyZ bJ E Q xpq i Cpv a6 _ : wejT  ] " < u`"  2> o4  5rp"N5k ; m { rZ b  Φ${#)  `( Ŵ g ,;j % 6 j  . pyYT ?}-  kB  D c3q A` N WQ  ū2 0 /^A  Z W% N Q MI . X#P # ,^Eb c&  ?X R tA V |Y . 1 ! ؅ ⨉ccww >  i v l(J  T ~ u` ٵDm  q) + Ri  x/ x  8cyFO ! / * !/ & ,7 <. N , YDŽ &ܑ Q F1 Bz )F P ʛ ?5 d  6`  kQձ λc ؎ %58 2  Y &nD _$Je4 >a ? ! ͨ | Ȏ WZ S s  v 8 j   ( I & y j Jb5 m ?  H Wp =    g} G 3 # |I ,5v珿 ] H~ R3 @B   [☉9Ox~ oMy =J ; xUVoj  b U s l_  35 t- (Ճɼ RB7 U! q c + x 4 H _ Q o֮$[ GO< 4` &č \GO c[ .[* A f%m G/ ň M / r W /Nw~B1U3 J ? P& Y )` ѓ Z 1 p] ^l“ W#)lWZ i  l U Q u` -  m|xĐ,   _ ƪ|9i: _ {*(3G ѧ} Uo D+ >m_ ?V Pۅ 15 &}2 | /p IOʵ > G Z9 cmíت mnz  )yߐb   D   >e}: ) r|@ R5q V S  A 10 C% E _ '^ 8c    R 7O; 6 [ eKeP  G  ϦX7 j  b} OT GO^j n*媓 7n  GMC  t, k31 R b (v yܴ ʭ !  iTh8~ ZY Z p  (q  s  RL ? b }  c Ũ ʊGO^ ! rP JO 1 5 MJ[ c&~   Z`" ѓޔ  H1 C&  ^| Ш| rʼ, A wĴ? b 5) t  L U  )F | & g٣O] oqSU j y( x< Ϳ3 . FS k oYg 2 \_#w  j {u'r Q  > o  ; %n | F * O _ L " e 9um Dds ?. fu u Qb IW z |4\0 s b; O v xOS s ; G% T4g FR u rj  (֍ڑb u ԖK D u 1MK{ 1^ q; C= 6\8 F R 艇 !  %\Y Ô U| 88 m )֓ Nc L ve  C 6z;  o& X x5 9 :q 6 1 Z (T 7 >C? g c ļ x ѐ Z  o o- 0 8j ہ x , ` '   Ҕ Oc Rl f ~ ` jj " .N v+ sM _ ]   Z k g( UOP   y εx% pU h 2    ( @ il0 ݽ QXxp px- N S ( W O+ 轾 n Fߢ   3M  <;z ) FBZ j c i u / Q oF 7R ¥ Z F L F ~ # ȣ ߨ^<쩡 ݛк  v џ) )  M E>ώ x4 m#!- m !L;vv#~Y[ đ K  m  x 9.[, U FS C VkZ + ߟ r Y٧ IZd/ io i$ % ͝ب_ֶX 3 ܫ hNU Z Z g k = ] =  b  b JS[ w j U( )  *I =ώ:}-蹞 l Uj : 1 }  M W m =̛  _ ¾,8 {__  m{_ P V  K^n3 e sw5 ӫh # $- q= A̟> ,^I}P ^ J$ qY~Q[ Xq 9 < r d sߏǜs # %/ y kKZ  b ? S k tc 񫝶L  &I W! b >{# & T.^  G Vj _ _R K p  n,b=` ż Y@ ^՝ ;z {p aV Kk QXj / )y TI c&F ;FB G 7w g ZZD G ! x r_ t Ƣ! } i / V =M / # n B8 Xx Ы ^ @ CR <{䤭  Y CN  ) e K OSƟa $ & g[i3 .C 6x rOc  8 TI  ; o hH6 P &L{ @ q 6 [ G zp ^  71 j ( l ` J }]  e6 X  ☉ #͕  ׈$A B1 Vj h㭦IRs  qFBj w Q_7 Xk >y"   N= M B0 , C # o6MR c 0 | $ ) ف  "1  !i xY<  B 9mx `  , t A >)5ػ Q ?j  Q ? cn >Y Z e  Tis v h # GMމȇ p : ԴVuږ 8ɼH ]C. 5C!UV;F`m b Bk L TM vP ʍϤj ? ԯ/Q r1 N B`9s"  s TYs z & 9S%U԰ > { < ؿ SM xB |H \3 @!U | k']   $U +> | HHM  Lޢ ? V9i D!- @ x  TI  î % 6Z *  9X @HMW# ? n N ,o e6 ?tQw ڱ . ]-   y ' :mW 0#! J82qF jH -` ѓ & M 0 u Uγmxϵ  ^-  _ \ ] )@0R t.8 /?ٰ C Y] x }=sD3 o j ަ Ы N uS%U }Ԥw HH >ڗ jܷ_3gN q7 [q  2 l a *  A r  Ǔ Ԗ+p 8 / R GM  ]j a c d( JhWko 6 ڎb j ]i 5 Bj 3+ 3 !\j 1   U Z L s L T v8 HHmup< U  \ GMމ 3 R+  w4R 6 j  XW M T! u( *! Pz , # Sq * 8?vww )kO a $ [& ? * bB X @ % 8 ] = R r)kO w 0j i M Tq ng$ 2\ q 8f : e N1 R xr< 5 ; M p^ @;  7]R ꎾ JtER . / (5 v3 R[ @= h l ?  l @; .  [] Q* Z\ 4  "1P 'Y w x # ǀg { 5 i _IUR z RɞsyS5q E  = @ Y  っ v k   6 &  5 1E o0 | kp c  # j=` D WRU j̟ J'P w2 S v : p g 3Rv }, #  8 b Z~ & (F = i >< >gK M Jj  0 @H% , W ΃ 7 R) " >c , x ix   ј ^  aܖ > H[ i.UI Hc U 1=y W\ = S*  G R~ )AF  = ` &  2 h` D z T 󑓶 J+  ? W+} C % P:| 0H  ܆ }- <;O C[ ~o. $~ i } ~ HQ Tv X Έ r=b}$ v i z L 4 : ȰT|4 ~ * !o X QR6 L k+ #  t/g lԁߖ   [ Jڶ_N$ k *" .  x s  xX  7jRVbA  A ʯKҎ U3  ) zS NN _ ' s ?f ) 6 X  !%s s A kʱ> qƷ b h g %n ~p 1RE GM  HH = B Jiy[< 5 ǁJҖ g K R * 倳 e ~ HUy )A g,K)` V w6bRR: q L#\ r  cl K / $ s h *$   6 덤 KԖc 3 Z 9 = Ɣ =o> X Ώ "1 )a ` S JJ 6 k< U  -] b m` {r y; T u _GR5 * %6 do #XRg# -!nl $u 3 A L+Q{ 9 x~ a- | H  vbq[\ NJT% ] rO8, E -F w)+?(Y{ Lz n6  ׀ ?C  R ~ ,)m 䎧 R 7 cww qpW ڳ=i. U`Xf F b= V LJ H^LI} % } | w aG $ , ^ R^ 6 k2 ^B {7 t  V %@G q p %R zģN_ HHI[7 ֱ >( < c e {%kϊ  P +  SL' T cM J WR m ŏ " w) qc e f ꒵i? b7 b  ( ' " 2r% ~ HUS 1 \<  (` 1 W x 9 = 8HY9 m:X 1 8 b g  D1 u ~|H ;K -  U ep ,, C 1 RV. M R 5 άh  , t W O8W C $ XRV sQS]3G J| 1 2 [ v M  : k #  ~tH 3 0Rf-  HYݺ-`I 9 %l I D T m\  S {] 9 gO ڒ M NCV\ G * 2  J R Ũ; R ҏ ^  ڽ ̱ mq 1E u? To 3I  ) y^ # j J w ^ Ń j ^ v   vl B_ ⋌ P 4x>0$ c> K†A ļ9s_V jT t0l #  m  >E - , , x ,  - W )  سo& 9 6 R E XR.6b  Xw +)G A  E v L ) ͞K4 $p= Ũ i_ѱ O j b HY  / +@ θH9޼] N ԥ %n { &zjT ? Ty) s^ U L lb , P iTf ^ <À ]   62R^V 7)S!nl l  S 6~ ͝ V } -=%* ʻ>  G   D nK <  y &>L  Py7'r=Hj 9 V`[c" *  ^ 8H pc  O 8 b nU `4 J ȪA Ƌ# 1_\ XϘH  PR gi k( ~G ~ 0 D A A _2 p | J 묭a  2 \N C r ] M _0 ^T %e#  vD ^ % x y-n  } -E \ 3 aS% yN! r_ { )s A w ڼp1pEAk ~v < :`'ӭ^ 5  A r X OI驻 T  ( dk ) _ \< w  ^ W I " RFj3 V# M<,o J  .H # \ SK s]    ) 9> P u A * B Y ]  y B " l \ ey hH *t  b K)3    IK Z 򹞋X jN n *n>k ] X _ d ! ry BH  ] *R 0(#' 7 %es9?? ښFC ,ՁQP  j AR  J \Ρw K # j  ah g w ; 2$ l* )  % Xq5 !U᢯ 6Re] | 0 [ _  _64 c h & _} i L8K Eg Ҏ 7 M  / \`|.p, ~` a  = BR?x ܐrQ  8K  XR  2M 8 f ? `s gW S% " Ԉ 7R%  $ N   } ?QL1|-э ټwI Z % pv L 3Hk>,I m g W 7{  E  x PHx 7 3R A  @R S CC  !\ȟ 5I XR^Z xHл $Q[ ŝ 40 ( > + _C > BR t <,T r T {  O / H +˟ Pl6 I B)/ V  C <6 a 2    ~   ( XwV4 g n  XR ϱ5 ǀHٻ?tw 똤Eyxp { # WK  q  G%5 ] , ( 0ӈH HZ ])ג=K1j & G(FbM @   )% I` XR g ʔ  KZ G(v P, <` [ K n^ SJR sAʠ 5xՅF` 0&R b V  t x :Ea UE /{ f  i 2;.I A wW8 / t T x A GOo N ? G } l L ( n ` Zv? p B 8K _g  I +ܗ # i ? ޙ . ) p  $ u tc ~DžfՈE o3  l/)I-U ?a ԅ ^ j x A r A ΧX   } DmZ@QLےbTXGd .^|x KHR{ |Ε W_h]  I J`[ G9 { ) .y )  < D * zk (ּ Ya O 8S ?  2-   H13  #pK" I`]`O h &= S  F1Z /Ie D1R W a "t' x?!)Ou: 1  | 6 gt\s  7 = z_; ؠ > 0X Y A1]q p? p _ k+J*  Y @HI> ^ ? g t.06R n  ,  `  ?) ;p pSF9  Z X L  BJP W j gQ| &)7! Hj Q t  <| ؅ W 5 x W HIz Y oV M G P Hj n`+ \ (d  N W)F+I rS [ | /a  `K | ͻ 0Hj { R,  Q= \ (F }\ W  R)A g SG`I s n AR =| 8 $} G(v C  $)s FBJ ?] _ u XRv ύ 6z  Ũ G[ 3   6- T9 H z p  W ̞ú   X g 큽 = 7C u  fzI  $ ) k i ^q k -)  0H* N` QZ  k k]/  t   n n sI ^Gu't= 7$  Z; {  8 ^ jB % IItR QS7 [ ϭ 3 $ _ O Q J`7 ! ] W "  W,) Iy W AJA ;K  WG `IY {8 k$I $ ^ % 9 . ^(` N| LJ % @ $I }ֽp =FB* xN =gI?Q{٥ 4B)m w $I gc~d Z@G 9K X ?7)a K % ݅K $IZ -`I p C    U 6 $I \0  >! 9 k} Xa  II S 0H $I H ?1R . Ч j : 4~R w @p $I r A* u } W j WFPJ  $I ➓/  6#! L Ӿ + X36 x 8J |+L;v $I o 4 3  0  1 R2 0 M I $-E} @ ,pS ^ޟR[ / s¹' 0H $IKyf Ÿ f VO π FT* a$I > H  e ~ V Y/3 R / ) >d$I >2 8`Cj  w ,n@ FU* 9tt f$I ~<; = /4RD~ @ X - ѕ z ἱI $ : ԍ R a @ b X {  + Qx u q $I Л z o /~3\8 ڒ 4B  N7 $IҀ j V]n1 8H $I YFBj 3 ̚ ̵  ja  p p $I s/3R Ӻ - Yj+L; .0 R ́ I $ A v? #!5 " aʄ  j} U Km ɽ H $Ij C  Ys?h$I Dl8 4 3  . v } m 7 UiI= & =0L g0$I 4 :  emb e `   e Qbm 0u ? $I T!Sƍ' -  s  v )s#C 0 : XB 2 a w I $ zbww { ."p Pz O = Ɔ \  [ o($I aw] `  E ).K v i : L *#gР7[ $I   yG PI=@ R 4 y R~ ̮ ´cg I $I/< t P ͽ h Dg o 94  Z^k盇 ΄8 I 56 ^ W $I ^ 0 ̜ N ?4* H`237}g +h   x o q) SJ@p| ` $I %>   - h O 0e O > \ԣNߌZ D6 R =K ~n($I $ y 3 D>o4 b#px 2 $ yڪt z W  ~a $I ~? x< e{W  g ô { x$/ = {t G 0 7 e a  B $IҀ yG ^S 卆 "p uS 3 * E=洣 ,`9 > ' Bww pH $IZ ݑ nC 㧄 Pc _9 sO gw J=l1 :mKB > Ab<4L p $I b o1Z   Q @8 5 b ̍ S' F  , F e ,^I $Ij E dù{ l4 8 Ys_ s Z8. x m"+{~ ?q, Z D !I $ ϻ '|X h B )= …' ] M > 5 r g otԎ 獽 PH $Ij IP  hh)n# cÔq A' ug5qw  U &r F|1 E%I $% ] !' 3 AFD/;C k_` 9  v !ٴt PV ; x` '  *b Qa w I $I x 5 FC 3D _ ~ A _ #O݆ Dv V?< q w +I $I {  = Z 8" .#RI Y yj Ǫ =f D l 9 % M ,  a8$I $ Yw i[ 7 ݍFe $ s 1 ՋBV A? ` ]#!  oz  4zjLJ o8$I $% @3j A  a4 ( o ; p,,dya =  F9ً[ LS PH $IJ Y Љ+3 > 5"  3 9 aZ <ñh! {T pB G k j}  S p $I lvF .  F$I z< '\ K*qq .f <   2 Y ! S"-\I $I Yw č jF$ w9 \ߪB . 1 v!Ʊ ?+  r : ^ !I $ BϹ B  H  " B ;L 'G[ 4 U #5> ੐ )|# o0 aڱ $I > } k& 1`U# V ? Ys V x > {t 1 [ I~D &(I $I/{ H 0fw " q"  y % 4 I X y E~ M 3 8Xψ L}q   E $I [ >  nD ? ~ s   f  ]o ΁ cT 6"?' _ Ἣ $I > ~ .f |'!   N ? ⟩ 0 G KkX Z E ] ޡ;  /   & ?k O ۘH $IR  ۀw XӨ < 7@ P nS 04 a  Ӷ p . : @ \IWQ J6 s S%I $ e 5 ڑ v` 3:  x' ; w q_ vp gHyX Z 3 gЂ7{{   E  uԹ n ± } $I $ 8t;b| 5 91n ء   Q" P   6 O 5 i } i R ̈́ % Q ̄p! I䮢 ] O{ H $IR ϻ 9 s֧ a=`- aB\X 0"+5"C 1 H b?߮ 3x 3 & g ş g g  l _ h Z^,`5 ? ߎ vĸ% ̀M! OZC2#0x  LJ 0 G w $I $I } < {Eb + y  ; iI,`  ܚ  F   : 5  ܛ A 8 -O -| 8 K 7 s |# Z8 a& > < a&  /V tb t L ʌI $I $I $I $I $I $IRj  D D %tEXtdate:create2022-05-31T04:40:26+00:00 !Î%tEXtdate:modify2022-05-31T04:40:26+00:00 |{2IEND B` sh-3ll

HOME


sh-3ll 1.0
súng bắn silicon – ĐIỆN MÁY CHUYÊN NGHIỆP https://dienmaychuyennghiep.com PEMCOM Wed, 10 Sep 2025 02:41:08 +0000 vi hourly 1 https://wordpress.org/?v=7.0 https://dienmaychuyennghiep.com/wp-content/uploads/2025/12/cropped-LOGO-PEMCOM-1-32x32.png súng bắn silicon – ĐIỆN MÁY CHUYÊN NGHIỆP https://dienmaychuyennghiep.com 32 32 Súng bắn silicon dùng pin KDPJ02-12 (TYPE-EM) https://dienmaychuyennghiep.com/san-pham/sung-ban-silicon-dung-pin-kdpj02-12-type-em/ https://dienmaychuyennghiep.com/san-pham/sung-ban-silicon-dung-pin-kdpj02-12-type-em/#respond Wed, 10 Sep 2025 02:40:20 +0000 https://dienmaychuyennghiep.com/?post_type=product&p=8088 Thương Hiệu : DCK Mã Sản Phẩm : KDPJ02-12 (TYPE-EM) Xuất Sứ : Trung Quốc]]> SÚNG BẮN SILICON DÙNG PIN KDPJ02-12 (TYPE-EM)

Công ty Cổ phần Điện máy Chuyên nghiệp tự hào giới thiệu đến quý khách hàng sản phẩm SÚNG BẮN SILICON DÙNG PIN DCK KDPJ02-12 (TYPE-EM) – một công cụ điện cầm tay đa năng, được thiết kế và sản xuất theo tiêu chuẩn công nghệ tiên tiến, thường được dùng để bắn keo silicon, keo dán hoặc các loại chất trám trét khác trong các công việc lắp đặt, sửa chữa và xây dựng.

SÚNG BẮN SILICON DÙNG PIN DCK KDPJ02-12 (TYPE-EM)

Đặc điểm

  • Sử dụng pin Li-ion 12V, mang lại sự linh hoạt tối đa, không phụ thuộc vào nguồn điện.
  • Thiết kế nhỏ gọn, trọng lượng nhẹ, dễ dàng thao tác trong không gian hẹp và trên cao.
  • Có đèn LED chiếu sáng, giúp làm việc hiệu quả ngay cả trong môi trường thiếu sáng.
  • Tốc độ bắn keo có thể điều chỉnh, giúp kiểm soát lượng keo bắn ra chính xác.
  • Tay cầm bọc cao su chống trượt, mang lại cảm giác thoải mái và chắc chắn khi thao tác.
  • Lực đẩy mạnh mẽ, giúp bắn keo nhanh chóng và đều.

Ưu điểm nổi bật

  • Bắn keo nhanh chóng, chính xác, tiết kiệm thời gian và công sức so với bắn keo thủ công.
  • Tiện lợi, không cần dây điện rườm rà, dễ dàng di chuyển và sử dụng.
  • Vận hành ổn định, độ bền cao, ít hỏng hóc.
  • Thao tác đơn giản, phù hợp cho cả thợ chuyên nghiệp và người dùng gia đình.
  • Đường keo bắn ra gọn, đẹp, tăng tính thẩm mỹ cho công trình.

Thông số kỹ thuật

  • Điện thế pin: 12V
  • Tốc độ không tải: 2.0-8.5 mm/s
  • Lực đẩy tối đa: 1.000 N
  • Nguồn điện: Pin Li-ion
  • Trọng lượng: Khoảng 1.1kg
  • Loại máy: Bắn silicon dùng pin

Ứng dụng

  • Bắn keo silicon để trám trét các khe hở, mối nối trong xây dựng.
  • Sử dụng để dán kính, dán gạch, dán gỗ trong trang trí nội thất.
  • Thích hợp cho thợ xây dựng, thợ nhôm kính, thợ sửa chữa và các dự án DIY.

Công ty Cổ phần Điện máy Chuyên nghiệp cam kết cung cấp sản phẩm SÚNG BẮN SILICON DÙNG PIN DCK KDPJ02-12 (TYPE-EM) chính hãng, nguyên bản với chất lượng tốt nhất và giá cả cạnh tranh. Chúng tôi còn cung cấp dịch vụ tư vấn, bảo hành và sửa chữa chuyên nghiệp, đảm bảo mang đến sự hài lòng cho quý khách hàng.

Liên hệ ngay với chúng tôi để được tư vấn và đặt mua sản phẩm:

Công ty Cổ phần Điện máy Chuyên nghiệp

]]>
https://dienmaychuyennghiep.com/san-pham/sung-ban-silicon-dung-pin-kdpj02-12-type-em/feed/ 0
DIR:/var/www/vhosts/dienmaychuyennghiep.com/httpdocs/wp-content/themes/astra/inc/
Upload File :
Current File : /var/www/vhosts/dienmaychuyennghiep.com/httpdocs/wp-content/themes/astra/inc/markup-extras.php
<?php
/**
 * Custom functions that act independently of the theme templates.
 *
 * Eventually, some of the functionality here could be replaced by core features.
 * All the functions here generate some kind of Markup for the frontend.
 *
 * @package     Astra
 * @link        https://wpastra.com/
 * @since       Astra 2.5.0
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

add_action( 'wp_head', 'astra_pingback_header' );

/**
 * Add a pingback url auto-discovery header for singularly identifiable articles.
 */
function astra_pingback_header() {
	if ( is_singular() && pings_open() ) {
		printf( '<link rel="pingback" href="%s">' . "\n", esc_url( get_bloginfo( 'pingback_url' ) ) );
	}
}

/**
 * Schema for <body> tag.
 */
if ( ! function_exists( 'astra_schema_body' ) ) :

	/**
	 * Adds schema tags to the body classes.
	 *
	 * @since 1.0.0
	 */
	function astra_schema_body() {

		if ( true !== apply_filters( 'astra_schema_enabled', true ) ) {
			return;
		}

		// Check conditions.
		$is_blog = ( is_home() || is_archive() || is_attachment() || is_tax() || is_single() ) ? true : false;

		// Set up default itemtype.
		$itemtype = 'WebPage';

		// Get itemtype for the blog.
		$itemtype = ( $is_blog ) ? 'Blog' : $itemtype;

		// Get itemtype for search results.
		$itemtype = ( is_search() ) ? 'SearchResultsPage' : $itemtype;
		// Get the result.
		$result = apply_filters( 'astra_schema_body_itemtype', $itemtype );

		// Return our HTML.
		echo apply_filters( 'astra_schema_body', "itemtype='https://schema.org/" . esc_attr( $result ) . "' itemscope='itemscope'" ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}
endif;

/**
 * Adds custom classes to the array of body classes.
 */
if ( ! function_exists( 'astra_body_classes' ) ) {

	/**
	 * Adds custom classes to the array of body classes.
	 *
	 * @since 1.0.0
	 * @param array $classes Classes for the body element.
	 * @return array
	 */
	function astra_body_classes( $classes ) {

		if ( wp_is_mobile() ) {
			$classes[] = 'ast-header-break-point';
		} else {
			$classes[] = 'ast-desktop';
		}

		if ( astra_is_amp_endpoint() ) {
			$classes[] = 'ast-amp';
		}

		// Apply content layout classes as per new revamped layout selection.
		$content_layout   = astra_get_content_layout();
		$is_boxed         = astra_is_content_style_boxed();
		$is_sidebar_boxed = astra_is_sidebar_style_boxed();
		$content_layout   = astra_apply_boxed_layouts( $content_layout, $is_boxed, $is_sidebar_boxed );

		if ( 'content-boxed-container' == $content_layout ) {
			$classes[] = 'ast-separate-container';
		} elseif ( 'boxed-container' == $content_layout ) {
			$classes[] = 'ast-separate-container ast-two-container';
		} elseif ( 'page-builder' == $content_layout ) {
			$classes[] = 'ast-page-builder-template';
		} elseif ( 'plain-container' == $content_layout ) {
			$classes[] = 'ast-plain-container';
		} elseif ( 'narrow-container' == $content_layout ) {
			$classes[] = 'ast-narrow-container';

			// Narrow meta migration case.
			$meta_old_layout = astra_get_option_meta( 'site-content-layout', '', true );
			$meta_key        = astra_get_option_meta( 'astra-migrate-meta-layouts', '', true );
			$migrated_user   = ( ! Astra_Dynamic_CSS::astra_fullwidth_sidebar_support() );
			if ( 'narrow-container' === $meta_old_layout && 'set' !== $meta_key && $migrated_user ) {
				$is_boxed = false;
			}

			// Adding boxed class for narrow layout.
			if ( $is_boxed ) {
				$classes[] = 'ast-separate-container';
			}
		}


		// Sidebar location.
		$sidebar_layout = astra_page_layout();
		$page_layout    = 'ast-' . $sidebar_layout;
		$classes[]      = esc_attr( $page_layout );

		// Current Astra verion.
		$classes[] = esc_attr( 'astra-' . ASTRA_THEME_VERSION );

		if ( ! Astra_Builder_Helper::$is_header_footer_builder_active ) {
			$menu_item    = astra_get_option( 'header-main-rt-section' );
			$outside_menu = astra_get_option( 'header-display-outside-menu' );

			if ( 'none' !== $menu_item && $outside_menu ) {
				$classes[] = 'ast-header-custom-item-outside';
			} else {
				$classes[] = 'ast-header-custom-item-inside';
			}
			/**
			 * Add class for header width
			 */
			$header_content_layout = astra_get_option( 'header-main-layout-width' );

			if ( 'full' == $header_content_layout ) {
				$classes[] = 'ast-full-width-primary-header';
			}
		}

		// Add class for Sticky Sidebar if activated.
		if ( 'no-sidebar' !== $sidebar_layout ) {
			if ( astra_get_option( 'site-sticky-sidebar' ) ) {
				$classes[] = 'ast-sticky-sidebar';
			}
		}

		// Add class for logo svg icon.
		if ( astra_logo_svg_icon() ) {
			$classes[] = 'has-logo-svg-icon';
		}

		return $classes;
	}
}

add_filter( 'body_class', 'astra_body_classes' );

/**
 * Checks whether content style is boxed for current layout.
 *
 * @since 4.2.0
 * @param mixed $post_id Current post ID.
 * @return boolean
 */
function astra_is_content_style_boxed( $post_id = false ) {

	$post_type            = strval( get_post_type() );
	$blog_type            = is_singular() ? 'single' : 'archive';
	$global_content_style = astra_get_option( 'site-content-style' );
	$meta_content_style   = astra_get_option_meta( 'site-content-style', '', true );
	$is_boxed             = false;
	$is_third_party_shop  = false;

	// If post type is empty and is WooCommerce page. Applicable for WC category archives page having no products.
	if ( ! $post_type && function_exists( 'is_woocommerce' ) && is_woocommerce() ) {
		$post_type = 'product';
	}

	// Editor compatibility.
	if ( $post_id ) {
		$blog_type          = 'single';
		$meta_content_style = get_post_meta( $post_id, 'site-content-style', true );
	}

	$content_style = astra_get_option( $blog_type . '-' . $post_type . '-content-style', '' );

	// Third party compatibility.
	$third_party = astra_with_third_party();
	if ( ! empty( $third_party ) ) {
		$third_party_content_style = astra_get_option( $third_party . '-content-style', '' );

		if ( in_array( $third_party, array( 'lifterlms', 'learndash' ) ) && ! in_array( $post_type, Astra_Posts_Structure_Loader::get_supported_post_types() ) && empty( $meta_content_style ) ) {
			$blog_type = '';
		}

		// Get global content style if third party is default.
		$global_content_style = ( 'default' === $third_party_content_style || empty( $third_party_content_style ) ) ? $global_content_style : $third_party_content_style;

		// Woo Cart & Checkout Page
		if ( 'woocommerce' === $third_party && ( is_cart() || is_checkout() ) && empty( $meta_content_style ) ) {
			return ( 'boxed' === $global_content_style );
		}

		// Third party shop/archive page meta case.
		$third_party_meta_page = astra_third_party_archive_meta( 'site-content-style' );
		$meta_content_style    = isset( $third_party_meta_page ) && $third_party_meta_page ? $third_party_meta_page : $meta_content_style;
		$is_third_party_shop   = isset( $third_party_meta_page ) && $third_party_meta_page ? true : false;
	}

	// Global.
	if ( 'boxed' === $global_content_style ) {
		$is_boxed = true;
	}

	// Archive.
	if ( 'archive' === $blog_type && ! empty( $content_style ) && 'default' !== $content_style ) {
		$is_boxed = ( 'boxed' === $content_style );
	}

	// Single.
	if ( 'single' === $blog_type && ! empty( $content_style ) && 'default' !== $content_style ) {
		$is_boxed = ( 'boxed' === $content_style );
	}

	// Meta.
	if ( ( 'single' === $blog_type || $is_third_party_shop ) && ! empty( $meta_content_style ) && 'default' !== $meta_content_style && ! $post_id ) {
		if ( 'boxed' === $meta_content_style ) {
			$is_boxed = true;
		} else {
			$is_boxed = false;
		}
	}

	// Search.
	if ( is_search() ) {
		$content_style = astra_get_option( 'ast-search-content-style', '' );

		if ( ! empty( $content_style ) && 'default' !== $content_style ) {
			$is_boxed = ( 'boxed' === $content_style );
		}
	}

	return apply_filters( 'astra_is_content_layout_boxed', $is_boxed );
}

/**
 * Check if the current page is a third party page.
 *
 * @since 4.2.0
 * @param bool $is_sidebar_option Optional. Whether to check sidebar option needed for Lifterlms case. Default false.
 * @return string|bool Returns the name of third party if page belongs to any, otherwise returns false.
 */
function astra_with_third_party( $is_sidebar_option = false ) {

	$post_type = astra_get_post_type();

	// @codingStandardsIgnoreStart
	/**
	 * @psalm-suppress UndefinedFunction
	 */
	if ( class_exists( 'WooCommerce' ) && ( is_woocommerce() || is_checkout() || is_cart() || is_account_page() ) ) {
		return 'woocommerce';
	}
	elseif ( class_exists( 'Easy_Digital_Downloads' ) && astra_is_edd_page() ) {
		return 'edd';
	}
	elseif ( class_exists( 'LifterLMS' ) && ( is_lifterlms() || is_llms_account_page() || is_llms_checkout() ) ) {
		if ( $is_sidebar_option && ( is_lesson() || is_course() ) ) {
			return 'lifterlms-course-lesson';
		}
		return 'lifterlms';
	} elseif ( class_exists( 'SFWD_LMS' ) && in_array( $post_type, array( 'sfwd-courses', 'sfwd-lessons', 'sfwd-topic', 'sfwd-quiz', 'sfwd-certificates', 'sfwd-assignment' ) ) ) {
		return 'learndash';
	}
	// @codingStandardsIgnoreEnd

	return false;
}

/**
 * Check if the sidebar style is boxed.
 *
 * @since 4.2.0
 * @param mixed $post_id Current post ID.
 * @return bool Whether the sidebar style is boxed.
 */
function astra_is_sidebar_style_boxed( $post_id = false ) {

	$post_type            = astra_get_post_type();
	$blog_type            = is_singular() ? 'single' : 'archive';
	$global_sidebar_style = astra_get_option( 'site-sidebar-style' );
	$meta_sidebar_style   = astra_get_option_meta( 'site-sidebar-style', '', true );
	$is_sidebar_boxed     = false;
	$is_third_party_shop  = false;

	// If post type is empty and is WooCommerce page. Applicable for WC category archives page having no products.
	if ( ! $post_type && function_exists( 'is_woocommerce' ) && is_woocommerce() ) {
		$post_type = 'product';
	}

	// Editor compatibility.
	if ( $post_id ) {
		$blog_type          = 'single';
		$meta_sidebar_style = get_post_meta( $post_id, 'site-sidebar-style', true );
	}

	$sidebar_style = astra_get_option( $blog_type . '-' . $post_type . '-sidebar-style', '' );

	// Third party compatibility.
	$third_party = astra_with_third_party( true );
	if ( ! empty( $third_party ) ) {
		$third_party_sidebar_style = astra_get_option( $third_party . '-sidebar-style', '' );

		if ( in_array( $third_party, array( 'lifterlms', 'learndash' ) ) && ! in_array( $post_type, Astra_Posts_Structure_Loader::get_supported_post_types() ) && empty( $meta_sidebar_style ) ) {
			$blog_type = '';
		}

		// Get global sidebar style if third party is default.
		$global_sidebar_style = ( 'default' === $third_party_sidebar_style || empty( $third_party_sidebar_style ) ) ? $global_sidebar_style : $third_party_sidebar_style;

		// Woo Cart & Checkout Page
		if ( 'woocommerce' === $third_party && ( is_cart() || is_checkout() ) && empty( $meta_sidebar_style ) ) {
			return ( 'boxed' === $global_sidebar_style );
		}

		// Third party shop/archive page meta case.
		$third_party_meta_page = astra_third_party_archive_meta( 'site-sidebar-style' );
		$meta_sidebar_style    = isset( $third_party_meta_page ) && $third_party_meta_page ? $third_party_meta_page : $meta_sidebar_style;
		$is_third_party_shop   = isset( $third_party_meta_page ) && $third_party_meta_page ? true : false;
	}

	// Global.
	if ( 'boxed' === $global_sidebar_style ) {
		$is_sidebar_boxed = true;
	}

	// Archive.
	if ( 'archive' === $blog_type && ! empty( $sidebar_style ) && 'default' !== $sidebar_style ) {
		$is_sidebar_boxed = ( 'boxed' === $sidebar_style );
	}

	// Single.
	if ( 'single' === $blog_type && ! empty( $sidebar_style ) && 'default' !== $sidebar_style ) {
		$is_sidebar_boxed = ( 'boxed' === $sidebar_style );
	}

	// Meta.
	if ( ( 'single' === $blog_type || $is_third_party_shop ) && ! empty( $meta_sidebar_style ) && 'default' !== $meta_sidebar_style && ! $post_id ) {
		if ( 'boxed' === $meta_sidebar_style ) {
			$is_sidebar_boxed = true;
		} else {
			$is_sidebar_boxed = false;
		}
	}

	// Search.
	if ( is_search() ) {
		$sidebar_style = astra_get_option( 'ast-search-sidebar-style', '' );
		if ( ! empty( $sidebar_style ) && 'default' !== $sidebar_style ) {
			$is_sidebar_boxed = ( 'boxed' === $sidebar_style );
		}
	}

	return apply_filters( 'astra_is_sidebar_layout_boxed', $is_sidebar_boxed );
}

/**
 * Switch to legacy boxed layouts (Content Boxed, Boxed) as per content style selection.
 *
 * @since 4.2.0
 * @param mixed   $content_layout Current layout.
 * @param boolean $is_boxed Current content style.
 * @param boolean $is_sidebar_boxed Current sidebar style.
 * @param mixed   $post_id Current post ID.
 * @return mixed The content layout.
 */
function astra_apply_boxed_layouts( $content_layout, $is_boxed, $is_sidebar_boxed, $post_id = false ) {

	// Getting meta values here to handle meta migration cases.
	$meta_old_layout = is_singular() ? astra_get_option_meta( 'site-content-layout', '', true ) : '';
	$meta_new_layout = astra_get_option_meta( 'ast-site-content-layout', '', true );

	// To check whether migrated user or not.
	$meta_key      = astra_get_option_meta( 'astra-migrate-meta-layouts', '', true );
	$migrated_user = ( ! Astra_Dynamic_CSS::astra_fullwidth_sidebar_support() );

	$sidebar_layout = astra_page_layout();

	// Editor compatibility.
	if ( $post_id ) {
		$meta_old_layout = get_post_meta( $post_id, 'site-content-layout', true );
		$meta_new_layout = get_post_meta( $post_id, 'ast-site-content-layout', true );
		$meta_key        = get_post_meta( $post_id, 'astra-migrate-meta-layouts', true );
		$post_type       = strval( get_post_type() );
		$sidebar_layout  = astra_get_sidebar_layout_for_editor( $post_type );
	}

	// Third party archive meta migration.
	$third_party_meta_page = astra_third_party_archive_meta( 'site-content-layout' );
	if ( false !== $third_party_meta_page && $migrated_user ) {
		$meta_old_layout = $third_party_meta_page;
		$meta_key        = astra_third_party_archive_meta( 'astra-migrate-meta-layouts' );
	}

	// Migrate old user existing container layout option to new layout options.
	if ( $meta_old_layout && 'set' !== $meta_key && $migrated_user ) {
		if ( 'plain-container' == $meta_old_layout && 'plain-container' === $content_layout ) {

			// No need to evaluate further as no boxed (content or boxed) layout will be applicable now.
			return $content_layout;
		} elseif ( 'content-boxed-container' == $meta_old_layout && 'plain-container' === $content_layout ) {
			$is_boxed         = true;
			$is_sidebar_boxed = false;
		} elseif ( 'boxed-container' == $meta_old_layout && 'plain-container' === $content_layout ) {
			$is_boxed         = true;
			$is_sidebar_boxed = true;
		}
	}

	// Apply content boxed layout or boxed layout depending on content/sidebar style.
	if ( 'plain-container' === $content_layout ) {
		if ( 'no-sidebar' === $sidebar_layout ) {
			if ( $is_boxed ) {
				$content_layout = 'boxed-container';
			}
		} elseif ( 'no-sidebar' !== $sidebar_layout ) {
			if ( $is_boxed ) {
				$content_layout = $is_sidebar_boxed ? 'boxed-container' : 'content-boxed-container';
			} elseif ( $is_sidebar_boxed ) {

				/**
				 * Case: unboxed container with sidebar boxed
				 * Container unboxed css is applied through astra_apply_unboxed_container()
				*/
				$content_layout = 'boxed-container';
			}
		}
	}
	return $content_layout;
}


/**
 * WooCommerce, LifterLMS, EDD Archive (Shop, Courses, Memberships etc) Meta value.
 *
 * @since 4.2.0
 * @param mixed $option name of the option to fetch.
 * @return mixed meta_value
 */
function astra_third_party_archive_meta( $option ) {

	$meta_value  = false;
	$third_party = astra_with_third_party( true );
	// Third party shop/archive page meta case.
	if ( 'woocommerce' === $third_party && ( is_shop() || is_product_taxonomy() ) ) {
		$shop_page_id = get_option( 'woocommerce_shop_page_id' );
		$meta_value   = get_post_meta( $shop_page_id, $option, true );
	} elseif ( 'lifterlms' === $third_party ) {
		// @codingStandardsIgnoreStart
		/**
		 * @psalm-suppress UndefinedFunction
		 */
		if ( is_courses() ) {
			$lifter_page_id = get_option( 'lifterlms_shop_page_id' );
			$meta_value     = get_post_meta( $lifter_page_id, $option, true );
		}
		elseif ( is_memberships() ) {
			$lifter_page_id = get_option( 'lifterlms_memberships_page_id' );
			$meta_value     = get_post_meta( $lifter_page_id, $option, true );
		} elseif ( is_course_taxonomy() ) {
			$meta_value = 'default';
		}
		// @codingStandardsIgnoreEnd
	} elseif ( 'edd' === $third_party && astra_is_edd_single_page() ) {
		$page_id = get_the_ID();
		/** @psalm-suppress PossiblyFalseArgument */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
		$meta_value = get_post_meta( $page_id, $option, true );
	}

	return $meta_value;
}

/**
 * Astra Pagination
 */
if ( ! function_exists( 'astra_number_pagination' ) ) {

	/**
	 * Astra Pagination
	 *
	 * @since 1.0.0
	 * @return void            Generate & echo pagination markup.
	 */
	function astra_number_pagination() {
		global $wp_query;
		$enabled = apply_filters( 'astra_pagination_enabled', true );

		// Don't print empty markup if their is only one page.
		if ( $wp_query->max_num_pages < 2 || ! $enabled ) {
			return;
		}

		ob_start();
		echo "<div class='ast-pagination'>";
		/** @psalm-suppress ArgumentTypeCoercion */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
		the_posts_pagination(
			array(
				'prev_text'          => astra_default_strings( 'string-blog-navigation-previous', false ),
				'next_text'          => astra_default_strings( 'string-blog-navigation-next', false ),
				'taxonomy'           => 'category',
				'in_same_term'       => true,
				'screen_reader_text' => esc_html__( 'Post pagination', 'astra' ),
			)
		);
		/** @psalm-suppress ArgumentTypeCoercion */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
		echo '</div>';
		$output = ob_get_clean();
		echo apply_filters( 'astra_pagination_markup', $output ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}
}

add_action( 'astra_pagination', 'astra_number_pagination' );

/**
 * Return or echo site logo markup.
 */
if ( ! function_exists( 'astra_logo' ) ) {

	/**
	 * Return or echo site logo markup.
	 *
	 * @since 1.0.0
	 * @param  string  $device Device name.
	 * @param  boolean $echo Echo markup.
	 * @return mixed echo or return markup.
	 */
	function astra_logo( $device = 'desktop', $echo = true ) {

		$logo_svg_icon        = astra_logo_svg_icon();
		$site_tagline         = astra_get_option( 'display-site-tagline-responsive' );
		$display_site_tagline = ( $site_tagline['desktop'] || $site_tagline['tablet'] || $site_tagline['mobile'] ) ? true : false;
		$site_title           = astra_get_option( 'display-site-title-responsive' );
		$display_site_title   = ( $site_title['desktop'] || $site_title['tablet'] || $site_title['mobile'] ) ? true : false;
		$ast_custom_logo_id   = get_theme_mod( 'custom_logo' );

		$html            = '';
		$has_custom_logo = apply_filters( 'astra_has_custom_logo', has_custom_logo() );
		$trans_logo      = astra_get_option( 'transparent-header-logo' );
		$diff_trans_logo = astra_get_option( 'different-transparent-logo' );

		// Site logo.
		if ( ( $has_custom_logo && ! empty( $ast_custom_logo_id ) ) || ( true === $diff_trans_logo && ! empty( $trans_logo ) ) ) {

			if ( apply_filters( 'astra_replace_logo_width', true ) ) {
				add_filter( 'wp_get_attachment_image_src', 'astra_replace_header_logo', 10, 4 );
			}

			$html .= '<span class="site-logo-img">';
			$html .= get_custom_logo();
			$html .= '</span>';

			if ( apply_filters( 'astra_replace_logo_width', true ) ) {
				remove_filter( 'wp_get_attachment_image_src', 'astra_replace_header_logo', 10 );
			}
		}

		if ( (bool) $logo_svg_icon ) {
			$html .= "<a href='" . esc_url( home_url() ) . "'><div class='ast-logo-svg-icon'>{$logo_svg_icon}</div></a>";
		}

		$html .= astra_get_site_title_tagline( $display_site_title, $display_site_tagline, $device );

		$html = apply_filters( 'astra_logo', $html, $display_site_title, $display_site_tagline );

		/**
		 * Echo or Return the Logo Markup
		 */
		if ( $echo ) {
			echo do_shortcode( $html ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		} else {
			return $html;
		}
	}
}

/**
 * Add custom attribute to custom site logo.
 *
 * @param mixed $html custom logo html.
 * @since 4.1.0
 * @return mixed custom logo html.
 */
function astra_add_custom_logo_attributes( $html ) {
	$attributes = '';
	return str_replace( 'rel="home"', 'rel="home"' . apply_filters( 'astra_custom_logo_attributes', $attributes ) . '', $html );
}

add_filter( 'get_custom_logo', 'astra_add_custom_logo_attributes' );

/**
 * Provides the logo svg icon according to the user's selection.
 *
 * @return string
 * @since 4.7.0
 */
function astra_logo_svg_icon() {

	if ( ! apply_filters( 'astra_enable_logo_svg_icon', astra_get_option( 'use-logo-svg-icon' ) ) ) {
		return '';
	}

	if ( has_custom_logo() ) {
		return '';
	}

	$logo_svg_code = '';
	$logo_svg_icon = astra_get_option( 'logo-svg-icon' );

	if ( ! isset( $logo_svg_icon['value'] ) ) {
		return $logo_svg_code;
	}

	switch ( $logo_svg_icon['type'] ) {
		case 'icon-library':
			$svg_icons = function_exists( 'astra_get_logo_svg_icons_array' ) ? astra_get_logo_svg_icons_array() : array();

			if ( ! empty( $svg_icons[ $logo_svg_icon['value'] ] ) ) {
				$logo_svg_code = $svg_icons[ $logo_svg_icon['value'] ]['rendered'];
			}
			break;

		case 'custom':
			$logo_svg_code = $logo_svg_icon['value'];
			break;

		default:
			$logo_svg_code = '';
			break;
	}

	return $logo_svg_code;
}

/**
 * Return or echo site logo markup.
 *
 * @since 2.2.0
 * @param boolean $display_site_title Site title enable or not.
 * @param boolean $display_site_tagline Site tagline enable or not.
 * @param  string  $device   Device name.
 *
 * @return string return markup.
 */
function astra_get_site_title_tagline( $display_site_title, $display_site_tagline, $device = 'desktop' ) {
	$html = '';

	if ( ! apply_filters( 'astra_disable_site_identity', false ) ) {

		// Site Title.
		$tag = apply_filters( 'astra_show_site_title_h1_tag', false ) ? 'h1' : 'span';

		/**
		 * Filters the site title output.
		 *
		 * @since 1.4.9
		 *
		 * @param string the HTML output for Site Title.
		 */
		// Site Title.
		$site_title_markup = apply_filters(
			'astra_site_title_output',
			sprintf(
				'<%1$s %4$s>
				<a href="%2$s" rel="home" %5$s >
					%3$s
				</a>
			</%1$s>',
				/**
				* Filters the tags for site title.
				*
				* @since 1.3.1
				*
				* @param string $tags string containing the HTML tags for Site Title.
				*/
				apply_filters( 'astra_site_title_tag', $tag ),
				/**
				* Filters the href for the site title.
				*
				* @since 1.4.9
				*
				* @param string site title home url
				*/
				esc_url( apply_filters( 'astra_site_title_href', home_url( '/' ) ) ),
				/**
				* Filters the site title.
				*
				* @since 1.4.9
				*
				* @param string site title
				*/
				apply_filters( 'astra_site_title', get_bloginfo( 'name' ) ),
				astra_attr(
					'site-title',
					array(
						'class' => 'site-title',
					)
				),
				astra_attr(
					'site-title-link',
					array()
				)
			)
		);

		// Site Description.
		/**
		 * Filters the site description markup.
		 *
		 * @since 1.4.9
		 *
		 * @param string the HTML output for Site Title.
		 */
		$site_tagline_markup = apply_filters(
			'astra_site_description_markup',
			sprintf(
				'<%1$s class="site-description" itemprop="description">
				%2$s
			</%1$s>',
				/**
				* Filters the tags for site tagline.
				*
				* @since 1.8.5
				*/
				apply_filters( 'astra_site_tagline_tag', 'p' ),
				/**
				* Filters the site description.
				*
				* @since 1.4.9
				*
				* @param string site description
				*/
				apply_filters( 'astra_site_description', get_bloginfo( 'description' ) )
			)
		);

		if ( $display_site_title || $display_site_tagline ) {
			/* translators: 1: Site Title Markup, 2: Site Tagline Markup */
			$html .= sprintf(
				'<div class="ast-site-title-wrap">
						%1$s
						%2$s
				</div>',
				( $display_site_title ) ? $site_title_markup : '',
				( $display_site_tagline ) ? $site_tagline_markup : ''
			);
		}
	}
	return $html;
}

/**
 * Return the selected sections
 */
if ( ! function_exists( 'astra_get_dynamic_header_content' ) ) {

	/**
	 * Return the selected sections
	 *
	 * @since 1.0.0
	 * @param  string $option Custom content type. E.g. search, text-html etc.
	 * @return array         Array of Custom contents.
	 */
	function astra_get_dynamic_header_content( $option ) {

		$output  = array();
		$section = astra_get_option( $option );

		switch ( $section ) {

			case 'search':
					$output[] = astra_get_search( $option );
				break;

			case 'text-html':
					$output[] = astra_get_custom_html( $option . '-html' );
				break;

			case 'widget':
					$output[] = astra_get_custom_widget( $option );
				break;

			case 'button':
					$output[] = astra_get_custom_button( $option . '-button-text', $option . '-button-link-option', $option . '-button-style' );
				break;

			default:
					$output[] = apply_filters( 'astra_get_dynamic_header_content', '', $option, $section );
				break;
		}

		return apply_filters( 'astra_get_dynamic_header_content_final', $output );
	}
}


/**
 * Adding Wrapper for Search Form.
 */
if ( ! function_exists( 'astra_get_search' ) ) {

	/**
	 * Adding Wrapper for Search Form.
	 *
	 * @since 1.0.0
	 * @param  string $option   Search Option name.
	 * @param  string $device   Device name.
	 * @return mixed Search HTML structure created.
	 */
	function astra_get_search( $option = '', $device = '' ) {
		ob_start();
		?>
		<div class="ast-search-menu-icon slide-search" <?php echo apply_filters( 'astra_search_slide_toggle_data_attrs', '' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
		<?php astra_get_search_form(); ?>
			<div class="ast-search-icon">
				<a class="slide-search astra-search-icon" aria-label="<?php esc_attr_e( 'Search icon link', 'astra' ); ?>" href="#">
					<span class="screen-reader-text"><?php esc_html_e( 'Search', 'astra' ); ?></span>
					<?php Astra_Icons::get_icons( 'search', true ); ?>
				</a>
			</div>
		</div>
		<?php
		$search_html = ob_get_clean();

		return apply_filters( 'astra_get_search', $search_html, $option, $device );
	}
}

/**
 * Get custom HTML added by user.
 */
if ( ! function_exists( 'astra_get_custom_html' ) ) {

	/**
	 * Get custom HTML added by user.
	 *
	 * @since 1.0.0
	 * @param  string $option_name Option name.
	 * @return String TEXT/HTML added by user in options panel.
	 */
	function astra_get_custom_html( $option_name = '' ) {

		$custom_html         = '';
		$custom_html_content = astra_get_i18n_option( $option_name, _x( '%astra%', 'Primary Menu: Custom Menu Text / HTML for Last Item in Menu', 'astra' ) );

		if ( ! empty( $custom_html_content ) ) {
			$custom_html = '<div class="ast-custom-html">' . do_shortcode( wp_kses_post( $custom_html_content ) ) . '</div>';
		} elseif ( current_user_can( 'edit_theme_options' ) ) {
			$custom_html = '<a href="' . esc_url( admin_url( 'customize.php?autofocus[control]=' . ASTRA_THEME_SETTINGS . '[' . $option_name . ']' ) ) . '">' . esc_html__( 'Add Custom HTML', 'astra' ) . '</a>';
		}

		return $custom_html;
	}
}

/**
 * Get custom Button.
 */
if ( ! function_exists( 'astra_get_custom_button' ) ) {

	/**
	 * Get custom HTML added by user.
	 *
	 * @since 1.0.0
	 * @param string $button_text Button Text.
	 * @param string $button_options Button Link.
	 * @param string $button_style Button Style.
	 * @return String Button added by user in options panel.
	 */
	function astra_get_custom_button( $button_text = '', $button_options = '', $button_style = '' ) {

		$custom_html    = '';
		$button_classes = '';
		$button_text    = astra_get_i18n_option( $button_text, Astra_Builder_Helper::get_translatable_string( $button_text ) );
		$button_style   = astra_get_option( $button_style );
		$outside_menu   = astra_get_option( 'header-display-outside-menu' );

		$header_button = astra_get_option( $button_options );
		$new_tab       = ( $header_button['new_tab'] ? 'target="_blank"' : 'target="_self"' );
		$link_rel      = ( ! empty( $header_button['link_rel'] ) ? 'rel="' . esc_attr( $header_button['link_rel'] ) . '"' : '' );

		// Check for the multisite with subdirectory and if the subdirectory path is enabled for button links.
		if ( defined( 'SUBDOMAIN_INSTALL' ) && ! SUBDOMAIN_INSTALL ) {
			$enable_subdirectory_path = apply_filters( 'astra_enable_subdirectory_path', false );
			if (
				$enable_subdirectory_path
				&& isset( $header_button['url'] ) // Check for URL availability.
				&& ! str_starts_with( $header_button['url'], 'http' ) // Check for external site link.
			) {
				$current_site = get_blog_details();
				if ( $current_site instanceof WP_Site && $current_site->path ) {
					$btn_url              = $current_site->path . $header_button['url'];
					$header_button['url'] = str_replace( '//', '/', $btn_url );
				}
			}
		}

		$button_classes    = ( 'theme-button' === $button_style ? 'ast-button' : 'ast-custom-button' );
		$outside_menu_item = apply_filters( 'astra_convert_link_to_button', $outside_menu );

		if ( '1' == $outside_menu_item ) {
			$custom_html = '<a class="ast-custom-button-link" href="' . esc_url( do_shortcode( $header_button['url'] ) ) . '" ' . $new_tab . ' ' . $link_rel . '><div class=' . esc_attr( $button_classes ) . '>' . esc_html( do_shortcode( wp_kses_post( $button_text ) ) ) . '</div></a>';
		} else {
			$custom_html  = '<a class="ast-custom-button-link" href="' . esc_url( do_shortcode( $header_button['url'] ) ) . '" ' . $new_tab . ' ' . $link_rel . '><div class=' . esc_attr( $button_classes ) . '>' . esc_html( do_shortcode( wp_kses_post( $button_text ) ) ) . '</div></a>';
			$custom_html .= '<a class="menu-link" href="' . esc_url( do_shortcode( $header_button['url'] ) ) . '" ' . $new_tab . ' ' . $link_rel . '>' . esc_html( do_shortcode( wp_kses_post( $button_text ) ) ) . '</a>';
		}

		return $custom_html;
	}
}

/**
 * Get Widget added by user.
 */
if ( ! function_exists( 'astra_get_custom_widget' ) ) {

	/**
	 * Get custom widget added by user.
	 *
	 * @since  1.0.1.1
	 * @param  string $option_name Option name.
	 * @return Widget added by user in options panel.
	 */
	function astra_get_custom_widget( $option_name = '' ) {

		ob_start();

		if ( 'header-main-rt-section' == $option_name ) {
			$widget_id = 'header-widget';
		}
		if ( 'footer-sml-section-1' == $option_name ) {
			$widget_id = 'footer-widget-1';
		} elseif ( 'footer-sml-section-2' == $option_name ) {
			$widget_id = 'footer-widget-2';
		}

		echo '<div class="ast-' . esc_attr( $widget_id ) . '-area"' . apply_filters( 'astra_sidebar_data_attrs', '', $widget_id ) . '>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				astra_get_sidebar( $widget_id );
		echo '</div>';

		return ob_get_clean();
	}
}

/**
 * Function to get Small Left/Right Footer
 */
if ( ! function_exists( 'astra_get_small_footer' ) ) {

	/**
	 * Function to get Small Left/Right Footer
	 *
	 * @since 1.0.0
	 * @param string $section   Sections of Small Footer.
	 * @return mixed            Markup of sections.
	 */
	function astra_get_small_footer( $section = '' ) {

		$small_footer_type = astra_get_option( $section );
		$output            = null;

		switch ( $small_footer_type ) {
			case 'menu':
					$output = astra_get_small_footer_menu();
				break;

			case 'custom':
					$output = astra_get_small_footer_custom_text( $section . '-credit' );
				break;

			case 'widget':
					$output = astra_get_custom_widget( $section );
				break;
		}

		return $output;
	}
}

/**
 * Function to get Small Footer Custom Text
 */
if ( ! function_exists( 'astra_get_small_footer_custom_text' ) ) {

	/**
	 * Function to get Small Footer Custom Text
	 *
	 * @since 1.0.14
	 * @param string $option Custom text option name.
	 *
	 * @return mixed Markup of custom text option.
	 */
	function astra_get_small_footer_custom_text( $option = '' ) {
		$output = $option;

		if ( '' != $option ) {
			$translatable_strings = array(
				'footer-sml-section-1-credit' => _x( '%astra%', 'Footer small section 1 credit', 'astra' ),
				'footer-sml-section-2-credit' => _x( '%astra%', 'Footer small section 2 credit', 'astra' ),
			);
	
			$translated_text = isset( $translatable_strings[ $option ] ) ? $translatable_strings[ $option ] : '%astra%';

			$output = astra_get_i18n_option( $option, $translated_text );
			$output = str_replace( '[current_year]', date_i18n( 'Y' ), $output );
			$output = str_replace( '[site_title]', '<span class="ast-footer-site-title">' . get_bloginfo( 'name' ) . '</span>', $output );

			$theme_author = apply_filters(
				'astra_theme_author',
				array(
					'theme_name'       => 'Astra ' . esc_html__( 'WordPress Theme', 'astra' ),
					'theme_author_url' => 'https://wpastra.com/',
				)
			);

			$output = str_replace( '[theme_author]', '<a href="' . esc_url( $theme_author['theme_author_url'] ) . '">' . $theme_author['theme_name'] . '</a>', $output );
		}

		return do_shortcode( wp_kses_post( $output ) );
	}
}

/**
 * Function to get Footer Menu
 */
if ( ! function_exists( 'astra_get_small_footer_menu' ) ) {

	/**
	 * Function to get Footer Menu
	 *
	 * @since 1.0.0
	 * @return html
	 */
	function astra_get_small_footer_menu() {

		ob_start();

		if ( has_nav_menu( 'footer_menu' ) ) {
			wp_nav_menu(
				array(
					'container'       => 'div',
					'container_class' => 'footer-primary-navigation',
					'theme_location'  => 'footer_menu',
					'menu_class'      => 'nav-menu',
					'items_wrap'      => '<ul id="%1$s" class="%2$s">%3$s</ul>',
					'depth'           => 1,
				)
			);
		} else {
			if ( is_user_logged_in() && current_user_can( 'edit_theme_options' ) ) {
				?>
					<a href="<?php echo esc_url( admin_url( '/nav-menus.php?action=locations' ) ); ?>"><?php esc_html_e( 'Assign Footer Menu', 'astra' ); ?></a>
				<?php
			}
		}

		return ob_get_clean();
	}
}

/**
 * Function to get site Header
 */
if ( ! function_exists( 'astra_header_markup' ) ) {

	/**
	 * Site Header - <header>
	 *
	 * @since 1.0.0
	 */
	function astra_header_markup() {

		do_action( 'astra_header_markup_before' );
		?>
		<header
		<?php
				echo wp_kses_post(
					astra_attr(
						'header',
						array(
							'id'    => 'masthead',
							'class' => join( ' ', astra_get_header_classes() ),
						)
					)
				);
		?>
		>
			<?php
			astra_masthead_top();

			astra_masthead();

			astra_masthead_bottom();

			do_action( 'astra_sticky_header_markup' );
			do_action( 'astra_bottom_header_after_markup' );
			?>
		</header><!-- #masthead -->
		<?php

		do_action( 'astra_header_markup_after' );

	}
}

add_action( 'astra_header', 'astra_header_markup' );

/**
 * Function to get site title/logo
 */
if ( ! function_exists( 'astra_site_branding_markup' ) ) {

	/**
	 * Site Title / Logo
	 *
	 * @since 1.0.0
	 */
	function astra_site_branding_markup() {
		?>

		<div class="site-branding">
			<div
			<?php
				echo wp_kses_post(
					astra_attr(
						'site-identity',
						array(
							'class' => 'ast-site-identity',
						)
					)
				);
			?>
			>
				<?php astra_logo(); ?>
			</div>
		</div>

		<!-- .site-branding -->
		<?php
	}
}

add_action( 'astra_masthead_content', 'astra_site_branding_markup', 8 );

/**
 * Function to get Toggle Button Markup
 */
if ( ! function_exists( 'astra_toggle_buttons_markup' ) ) {

	/**
	 * Toggle Button Markup
	 *
	 * @since 1.0.0
	 */
	function astra_toggle_buttons_markup() {
		$disable_primary_navigation = astra_get_option( 'disable-primary-nav' );
		$custom_header_section      = astra_get_option( 'header-main-rt-section' );
		/** @psalm-suppress InvalidArgument */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
		$hide_custom_menu_mobile = astra_get_option( 'hide-custom-menu-mobile', false );
		$above_header_merge      = astra_get_option( 'above-header-merge-menu' );
		$above_header_on_mobile  = astra_get_option( 'above-header-on-mobile' );
		$below_header_merge      = astra_get_option( 'below-header-merge-menu' );
		$below_header_on_mobile  = astra_get_option( 'below-header-on-mobile' );
		$menu_bottons            = true;

		if ( ( $disable_primary_navigation && 'none' == $custom_header_section ) || ( $disable_primary_navigation && true == $hide_custom_menu_mobile ) ) {
			$menu_bottons = false;
			if ( ( true == $above_header_on_mobile && true == $above_header_merge ) || ( true == $below_header_on_mobile && true == $below_header_merge ) ) {
				$menu_bottons = true;
			}
		}

		if ( apply_filters( 'astra_enable_mobile_menu_buttons', $menu_bottons ) ) {
			?>
		<div class="ast-mobile-menu-buttons">

			<?php astra_masthead_toggle_buttons_before(); ?>

			<?php astra_masthead_toggle_buttons(); ?>

			<?php astra_masthead_toggle_buttons_after(); ?>

		</div>
			<?php
		}
	}
}

add_action( 'astra_masthead_content', 'astra_toggle_buttons_markup', 9 );

/**
 * Function to get Primary navigation menu
 */
if ( ! function_exists( 'astra_primary_navigation_markup' ) ) {

	/**
	 * Site Title / Logo
	 *
	 * @since 1.0.0
	 */
	function astra_primary_navigation_markup() {

		$disable_primary_navigation = astra_get_option( 'disable-primary-nav' );
		$custom_header_section      = astra_get_option( 'header-main-rt-section' );

		if ( $disable_primary_navigation ) {

			$display_outside = astra_get_option( 'header-display-outside-menu' );

			if ( 'none' != $custom_header_section && ! $display_outside ) {

				echo '<div class="main-header-bar-navigation ast-flex-1 ast-header-custom-item ast-flex ast-justify-content-flex-end">';
				/**
				 * Fires before the Primary Header Menu navigation.
				 * Disable Primary Menu is checked
				 * Last Item in Menu is not 'none'.
				 * Take Last Item in Menu outside is unchecked.
				 *
				 * @since 1.4.0
				 */
				do_action( 'astra_main_header_custom_menu_item_before' );

				echo astra_masthead_get_menu_items(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped

				/**
				 * Fires after the Primary Header Menu navigation.
				 * Disable Primary Menu is checked
				 * Last Item in Menu is not 'none'.
				 * Take Last Item in Menu outside is unchecked.
				 *
				 * @since 1.4.0
				 */
				do_action( 'astra_main_header_custom_menu_item_after' );

				echo '</div>';

			}
		} else {

			$submenu_class = apply_filters( 'astra_primary_submenu_border_class', ' submenu-with-border' );

			// Menu Animation.
			$menu_animation = astra_get_option( 'header-main-submenu-container-animation' );
			if ( ! empty( $menu_animation ) ) {
				$submenu_class .= ' astra-menu-animation-' . esc_attr( $menu_animation ) . ' ';
			}

			/**
			 * Filter the classes(array) for Primary Menu (<ul>).
			 *
			 * @since  1.5.0
			 * @var Array
			 */
			$primary_menu_classes = apply_filters( 'astra_primary_menu_classes', array( 'main-header-menu', 'ast-menu-shadow', 'ast-nav-menu', 'ast-flex', 'ast-justify-content-flex-end', $submenu_class ) );

			// Fallback Menu if primary menu not set.
			$fallback_menu_args = array(
				'theme_location' => 'primary',
				'menu_id'        => 'primary-menu',
				'menu_class'     => 'main-navigation',
				'container'      => 'div',
				'before'         => '<ul class="' . esc_attr( implode( ' ', $primary_menu_classes ) ) . '">',
				'after'          => '</ul>',
				'walker'         => new Astra_Walker_Page(),
			);

			$items_wrap  = '<nav ';
			$items_wrap .= astra_attr(
				'site-navigation',
				array(
					'id'         => 'primary-site-navigation',
					'class'      => 'site-navigation ast-flex-grow-1 navigation-accessibility',
					'aria-label' => esc_attr__( 'Site Navigation', 'astra' ),
				)
			);
			$items_wrap .= '>';
			$items_wrap .= '<div class="main-navigation">';
			$items_wrap .= '<ul id="%1$s" class="%2$s">%3$s</ul>';
			$items_wrap .= '</div>';
			$items_wrap .= '</nav>';

			// Primary Menu.
			$primary_menu_args = array(
				'theme_location'  => 'primary',
				'menu_id'         => 'primary-menu',
				'menu_class'      => esc_attr( implode( ' ', $primary_menu_classes ) ),
				'container'       => 'div',
				'container_class' => 'main-header-bar-navigation',
				'items_wrap'      => $items_wrap,
			);

			if ( has_nav_menu( 'primary' ) ) {
				// To add default alignment for navigation which can be added through any third party plugin.
				// Do not add any CSS from theme except header alignment.
				echo '<div ' . astra_attr( 'ast-main-header-bar-alignment' ) . '>';
					wp_nav_menu( $primary_menu_args );
				echo '</div>';
			} else {

				echo '<div ' . astra_attr( 'ast-main-header-bar-alignment' ) . '>';
					echo '<div class="main-header-bar-navigation ast-flex-1">';
						echo '<nav ';
						echo wp_kses_post(
							astra_attr(
								'site-navigation',
								array(
									'id'         => 'primary-site-navigation',
									'class'      => 'site-navigation ast-flex-grow-1 navigation-accessibility',
									'aria-label' => esc_attr__( 'Site Navigation', 'astra' ),
								)
							)
						);
						echo '>';
							wp_page_menu( $fallback_menu_args );
						echo '</nav>';
					echo '</div>';
				echo '</div>';
			}
		}

	}
}

add_action( 'astra_masthead_content', 'astra_primary_navigation_markup', 10 );

/**
 * Add CSS classes for all menu links inside WP Nav menu items.
 *
 * Right now, if Addon is active we add 'menu-link' class through walker_nav_menu_start_el, but if only theme is being used no class is assigned to anchors.
 *
 * As we are replacing tag based selector assets to class selector, adding 'menu-link' selector to all anchors inside menu items.
 * Ex. .main-header-menu a => .main-header-menu .menu-link
 *
 * @since 2.5.0
 * @param array $atts   An array of all parameters assigned to menu anchors.
 */
function astra_menu_anchor_class_for_nav_menus( $atts ) {

	if ( ! empty( $atts['class'] ) ) {
		$atts['class'] = $atts['class'] . ' menu-link';
	} else {
		$atts['class'] = 'menu-link';
	}

	return $atts;
}

add_filter( 'nav_menu_link_attributes', 'astra_menu_anchor_class_for_nav_menus', 11 );

/**
 * Add CSS classes for all menu links inside WP Page Menu items.
 *
 * As we are replacing tag based selector to class selector, adding 'menu-link' selector to all anchors inside menu items.
 *
 * @since 2.5.0
 * @param array $atts   An array of all parameters assigned to menu anchors.
 */
function astra_menu_anchor_class_for_page_menus( $atts ) {

	if ( ! empty( $atts['class'] ) ) {
		$atts['class'] = $atts['class'] . ' menu-link';
	} else {
		$atts['class'] = 'menu-link';
	}

	return $atts;
}

add_filter( 'page_menu_link_attributes', 'astra_menu_anchor_class_for_page_menus' );

/**
 * Add CSS classes from wp_nav_menu the wp_page_menu()'s menu items.
 * This will help avoid targeting wp_page_menu and wp_nav_manu separately in CSS/JS.
 *
 * @since 1.6.9
 * @param array   $css_class    An array of CSS classes to be applied
 *                              to each list item.
 * @param WP_Post $page         Page data object.
 * @param int     $depth        Depth of page, used for padding.
 * @param array   $args         An array of arguments.
 * @param int     $current_page ID of the current page.
 * @return Array CSS classes with added menu class `menu-item`
 */
function astra_page_css_class( $css_class, $page, $depth, $args, $current_page ) {
	$css_class[] = 'menu-item';

	if ( isset( $args['pages_with_children'][ $page->ID ] ) ) {
		$css_class[] = 'menu-item-has-children';
	}

	if ( ! empty( $current_page ) ) {
		$_current_page = get_post( $current_page );

		if ( $_current_page && in_array( $page->ID, $_current_page->ancestors ) ) {
			$css_class[] = 'current-menu-ancestor';
		}

		if ( $page->ID == $current_page ) {
			$css_class[] = 'current-menu-item';
		} elseif ( $_current_page && $page->ID == $_current_page->post_parent ) {
			$css_class[] = 'current-menu-parent';
		}
	} elseif ( get_option( 'page_for_posts' ) == $page->ID ) {
		$css_class[] = 'current-menu-parent';
	}

	return $css_class;
}

add_filter( 'page_css_class', 'astra_page_css_class', 20, 5 );

/**
 * Function to get site Footer
 */
if ( ! function_exists( 'astra_footer_markup' ) ) {

	/**
	 * Site Footer - <footer>
	 *
	 * @since 1.0.0
	 */
	function astra_footer_markup() {
		?>

		<footer
		<?php
				echo wp_kses_post(
					astra_attr(
						'footer',
						array(
							'id'    => 'colophon',
							'class' => join( ' ', astra_get_footer_classes() ),
						)
					)
				);
		?>
		>

			<?php astra_footer_content_top(); ?>

			<?php astra_footer_content(); ?>

			<?php astra_footer_content_bottom(); ?>

		</footer><!-- #colophon -->
		<?php
	}
}

add_action( 'astra_footer', 'astra_footer_markup' );

/**
 * Function to get Header Breakpoint
 */
if ( ! function_exists( 'astra_header_break_point' ) ) {

	/**
	 * Function to get Header Breakpoint
	 *
	 * @since 1.4.0 Added Mobile Header Breakpoint option from customizer.
	 * @since 1.0.0
	 * @return number
	 */
	function astra_header_break_point() {
		$mobile_header_brakpoint = ( true === Astra_Builder_Helper::$is_header_footer_builder_active ) ? astra_get_tablet_breakpoint() : astra_get_option( 'mobile-header-breakpoint', 921 );
		return absint( apply_filters( 'astra_header_break_point', $mobile_header_brakpoint ) );
	}
}

/**
 * Function to get Edit Post Link
 */
if ( ! function_exists( 'astra_edit_post_link' ) ) {

	/**
	 * Function to get Edit Post Link
	 *
	 * @since 1.0.0
	 * @param string $text      Anchor Text.
	 * @param string $before    Anchor Text.
	 * @param string $after     Anchor Text.
	 * @param int    $id           Anchor Text.
	 * @param string $class     Anchor Text.
	 * @return void
	 */
	function astra_edit_post_link( $text, $before = '', $after = '', $id = 0, $class = 'post-edit-link' ) {

		if ( apply_filters( 'astra_edit_post_link', false ) ) {
			edit_post_link( $text, $before, $after, $id, $class );
		}
	}
}

/**
 * Function to get Header Classes
 */
if ( ! function_exists( 'astra_header_classes' ) ) {

	/**
	 * Function to get Header Classes
	 *
	 * @since 1.0.0
	 */
	function astra_header_classes() {
		echo 'class="' . esc_attr( join( ' ', astra_get_header_classes() ) ) . '"';
	}
}

/**
 * Return classnames for <header> element.
 *
 * @since 2.1.0
 * @return Array classnames for the <header>
 */
function astra_get_header_classes() {
		$classes                       = array( 'site-header' );
		$menu_logo_location            = astra_get_option( 'header-layouts' );
		$mobile_header_alignment       = astra_get_option( 'header-main-menu-align' );
		$primary_menu_disable          = astra_get_option( 'disable-primary-nav' );
		$primary_menu_custom_item      = astra_get_option( 'header-main-rt-section' );
		$logo_title_inline             = astra_get_option( 'logo-title-inline' );
		$mobile_header_logo            = astra_get_option( 'mobile-header-logo' );
		$different_mobile_header_order = astra_get_option( 'different-mobile-logo' );
		/** @psalm-suppress InvalidArgument */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
		$hide_custom_menu_mobile     = astra_get_option( 'hide-custom-menu-mobile', false );
		$menu_mobile_target          = astra_get_option( 'mobile-header-toggle-target', 'icon' );
		$submenu_container_animation = astra_get_option( 'header-main-submenu-container-animation' );
		$builder_menu_mobile_target  = astra_get_option( 'header-builder-menu-toggle-target', 'icon' );

	if ( '' !== $submenu_container_animation ) {
		$classes[] = 'ast-primary-submenu-animation-' . $submenu_container_animation;
	}

	if ( $menu_logo_location ) {
		$classes[] = $menu_logo_location;
	}

	if ( $primary_menu_disable ) {

		$classes[] = 'ast-primary-menu-disabled';

		if ( 'none' == $primary_menu_custom_item ) {
			$classes[] = 'ast-no-menu-items';
		}
	} else {
		$classes[] = 'ast-primary-menu-enabled';
	}

		// Add class if Mobile Header Logo is set.
	if ( '' !== $mobile_header_logo && '1' == $different_mobile_header_order ) {
		$classes[] = 'ast-has-mobile-header-logo';
	}

		// Add class if Inline Logo & Site Title.
	if ( $logo_title_inline ) {
		$classes[] = 'ast-logo-title-inline';
	}

	if ( '1' == $hide_custom_menu_mobile ) {
		$classes[] = 'ast-hide-custom-menu-mobile';
	}

	if ( true === Astra_Builder_Helper::$is_header_footer_builder_active ) {
		$classes[] = 'ast-builder-menu-toggle-' . $builder_menu_mobile_target;
	} else {
		$classes[] = 'ast-menu-toggle-' . $menu_mobile_target;
	}

	$classes[] = 'ast-mobile-header-' . $mobile_header_alignment;

	$classes = array_unique( apply_filters( 'astra_header_class', $classes ) );

	$classes = array_map( 'sanitize_html_class', $classes );

	return apply_filters( 'astra_get_header_classes', $classes );
}

/**
 * Function to get Footer Classes
 */
if ( ! function_exists( 'astra_footer_classes' ) ) {

	/**
	 * Function to get Footer Classes
	 *
	 * @since 1.0.0
	 */
	function astra_footer_classes() {
		echo 'class="' . esc_attr( join( ' ', astra_get_footer_classes() ) ) . '"';
	}
}

/**
 * Return classnames for <footer> element.
 *
 * @since 2.1.0
 * @return Array classnames for the <footer>
 */
function astra_get_footer_classes() {
	$classes = array_unique( apply_filters( 'astra_footer_class', array( 'site-footer' ) ) );
	$classes = array_map( 'sanitize_html_class', $classes );

	return apply_filters( 'astra_get_footer_classes', $classes );
}

/**
 * Function to filter comment form's default fields
 */
if ( ! function_exists( 'astra_comment_form_default_fields_markup' ) ) {

	/**
	 * Function filter comment form's default fields
	 *
	 * @since 1.0.0
	 * @param array $fields Array of comment form's default fields.
	 * @return array        Comment form fields.
	 */
	function astra_comment_form_default_fields_markup( $fields ) {

		$commenter = wp_get_current_commenter();
		$req       = get_option( 'require_name_email' );
		$aria_req  = ( $req ? " aria-required='true'" : '' );

		// Comment form default labels without '*' symbol.
		$name_label    = astra_default_strings( 'string-comment-label-name', false );
		$email_label   = astra_default_strings( 'string-comment-label-email', false );
		$website_label = astra_default_strings( 'string-comment-label-website', false );

		// Add '*' symbol for required fields.
		if ( $req ) {
			$name_label  .= '*';
			$email_label .= '*';
		}

		$fields['author'] = '<div class="ast-comment-formwrap ast-row"><p class="comment-form-author ' . astra_attr( 'comment-form-grid-class' ) . '">' .
		'<label for="author" class="screen-reader-text">' . esc_html( $name_label ) . '</label><input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) .
		'" placeholder="' . esc_attr( $name_label ) . '" size="30"' . $aria_req . ' autocomplete="name" /></p>';
	
		$fields['email'] = '<p class="comment-form-email ' . astra_attr( 'comment-form-grid-class' ) . '">' .
		'<label for="email" class="screen-reader-text">' . esc_html( $email_label ) . '</label><input id="email" name="email" type="text" value="' . esc_attr( $commenter['comment_author_email'] ) .
		'" placeholder="' . esc_attr( $email_label ) . '" size="30"' . $aria_req . ' autocomplete="email" /></p>';
	
		$fields['url'] = '<p class="comment-form-url ' . astra_attr( 'comment-form-grid-class' ) . '"><label for="url">' .
		'<label for="url" class="screen-reader-text">' . esc_html( $website_label ) . '</label><input id="url" name="url" type="text" value="' . esc_url( $commenter['comment_author_url'] ) .
		'" placeholder="' . esc_attr( $website_label ) . '" size="30" autocomplete="url" /></label></p></div>';
	

		return apply_filters( 'astra_comment_form_default_fields_markup', $fields );
	}
}

add_filter( 'comment_form_default_fields', 'astra_comment_form_default_fields_markup' );

/**
 * Function to filter comment form arguments
 */
if ( ! function_exists( 'astra_comment_form_default_markup' ) ) {

	/**
	 * Function filter comment form arguments
	 *
	 * @since 1.0.0
	 * @param array $args   Comment form arguments.
	 * @return array
	 */
	function astra_comment_form_default_markup( $args ) {
		/**
		 * Filter to enabled Astra comment for all Post Types where the commnets are enabled.
		 *
		 * @since 1.5.0
		 *
		 * @return bool
		 */
		$all_post_type_support = apply_filters( 'astra_comment_form_all_post_type_support', false );
		if ( 'post' == get_post_type() || $all_post_type_support ) {
			$args['id_form']           = 'ast-commentform';
			$args['title_reply']       = astra_default_strings( 'string-comment-title-reply', false );
			$args['cancel_reply_link'] = astra_default_strings( 'string-comment-cancel-reply-link', false );
			$args['label_submit']      = astra_default_strings( 'string-comment-label-submit', false );
			$args['comment_field']     = '<div class="ast-row comment-textarea"><fieldset class="comment-form-comment"><legend class ="comment-form-legend"></legend><div class="comment-form-textarea ' . astra_attr( 'ast-grid-lg-12' ) . '"><label for="comment" class="screen-reader-text">' . esc_html( astra_default_strings( 'string-comment-label-message', false ) ) . '</label><textarea id="comment" name="comment" placeholder="' . esc_attr( astra_default_strings( 'string-comment-label-message', false ) ) . '" cols="45" rows="8" aria-required="true"></textarea></div></fieldset></div>';
		}
		return apply_filters( 'astra_comment_form_default_markup', $args );

	}
}

add_filter( 'comment_form_defaults', 'astra_comment_form_default_markup' );

/**
 * Display Blog Post Excerpt
 */
if ( ! function_exists( 'astra_the_excerpt' ) ) {

	/**
	 * Display Blog Post Excerpt
	 *
	 * @since 1.0.0
	 */
	function astra_the_excerpt() {

		$excerpt_type = apply_filters( 'astra_excerpt_type', astra_get_option( 'blog-post-content' ) );

		do_action( 'astra_the_excerpt_before', $excerpt_type );
		?>
			<div class="ast-excerpt-container ast-blog-single-element">
				<?php
				if ( 'full-content' === $excerpt_type ) {
					the_content();
				} else {
					the_excerpt();
					add_filter( 'excerpt_more', '__return_false' );
				}
				?>
			</div>
		<?php

		do_action( 'astra_the_excerpt_after', $excerpt_type );
	}
}

/**
 * Display Sidebars
 */
if ( ! function_exists( 'astra_get_sidebar' ) ) {
	/**
	 * Get Sidebar
	 *
	 * @since 1.0.1.1
	 * @param  string $sidebar_id   Sidebar Id.
	 * @return void
	 */
	function astra_get_sidebar( $sidebar_id ) {
		if ( is_active_sidebar( $sidebar_id ) ) {
			dynamic_sidebar( $sidebar_id );
		} elseif ( current_user_can( 'edit_theme_options' ) ) {
			?>
			<div class="widget ast-no-widget-row">
				<p class='no-widget-text'>
					<a href='<?php echo esc_url( admin_url( 'widgets.php' ) ); ?>'>
						<?php esc_html_e( 'Add Widget', 'astra' ); ?>
					</a>
				</p>
			</div>
			<?php
		}
	}
}

/**
 * Get Footer widgets
 */
if ( ! function_exists( 'astra_get_footer_widget' ) ) {

	/**
	 * Get Footer Default Sidebar
	 *
	 * @param  string $sidebar_id   Sidebar Id..
	 * @return void
	 */
	function astra_get_footer_widget( $sidebar_id ) {

		if ( is_active_sidebar( $sidebar_id ) ) {
			dynamic_sidebar( $sidebar_id );
		} elseif ( current_user_can( 'edit_theme_options' ) ) {

			global $wp_registered_sidebars;
			$sidebar_name = '';
			if ( isset( $wp_registered_sidebars[ $sidebar_id ] ) ) {
				$sidebar_name = $wp_registered_sidebars[ $sidebar_id ]['name'];
			}
			?>
			<div class="widget ast-no-widget-row">
				<h2 class='widget-title'><?php echo esc_html( $sidebar_name ); ?></h2>
				<?php if ( is_customize_preview() ) { ?>
					<div class="customizer-navigate-on-focus" data-section="widgets" data-type="panel">
						<?php Astra_Builder_UI_Controller::render_customizer_edit_button(); ?>
				<?php } ?>
						<p class='no-widget-text'>
							<a href='<?php echo esc_url( admin_url( 'widgets.php' ) ); ?>'>
								<?php esc_html_e( 'Click here to assign a widget for this area.', 'astra' ); ?>
							</a>
						</p>
				<?php if ( is_customize_preview() ) { ?>
					</div>
				<?php } ?>
			</div>
			<?php
		}
	}
}

/**
 * Astra entry header class.
 */
if ( ! function_exists( 'astra_entry_header_class' ) ) {

	/**
	 * Astra entry header class
	 *
	 * @param bool $echo output being echoed or not.
	 *
	 * @since 1.0.15
	 */
	function astra_entry_header_class( $echo = true ) {

		$post_id          = astra_get_post_id();
		$post_type        = strval( get_post_type() );
		$classes          = array();
		$title_markup     = astra_the_title( '', '', $post_id, false );
		$thumb_markup     = astra_get_post_thumbnail( '', '', false );
		$post_meta_markup = astra_get_post_meta( astra_get_option( 'ast-dynamic-single-' . $post_type . '-metadata', array( 'comments', 'author', 'date' ) ) );
		$single_structure = 'page' === $post_type ? astra_get_option( 'ast-dynamic-single-page-structure', array( 'ast-dynamic-single-page-image', 'ast-dynamic-single-page-title' ) ) : astra_get_option( 'ast-dynamic-single-' . esc_attr( $post_type ) . '-structure', array( 'ast-dynamic-single-' . $post_type . '-title', 'ast-dynamic-single-' . $post_type . '-meta' ) );

		if ( empty( $single_structure ) ) {
			$classes[] = 'ast-header-without-markup';
		} else {
			$header_without_markup_counter = 0;
			foreach ( $single_structure as $key ) {
				$structure_key = 'single-' . astra_get_last_meta_word( $key );
				switch ( $structure_key ) {
					case 'single-title':
						if ( empty( $title_markup ) ) {
							$classes[] = 'ast-no-title';
							++$header_without_markup_counter;
						}
						break;
					case 'single-excerpt':
						$get_the_excerpt = get_the_excerpt();
						if ( empty( $get_the_excerpt ) ) {
							$classes[] = 'ast-no-excerpt';
							++$header_without_markup_counter;
						}
						break;
					case 'single-meta':
						if ( empty( $post_meta_markup ) ) {
							$classes[] = 'ast-no-meta';
							++$header_without_markup_counter;
						}
						break;
					case 'single-image':
						if ( empty( $thumb_markup ) ) {
							$classes[] = 'ast-no-thumbnail';
							++$header_without_markup_counter;
						}
						break;
					default:
						break;
				}
			}

			if ( count( $single_structure ) === $header_without_markup_counter ) {
				$classes[] = 'ast-header-without-markup';
			}
		}

		$classes = array_unique( apply_filters( 'astra_entry_header_class', $classes ) );
		$classes = array_map( 'sanitize_html_class', $classes );

		if ( $echo ) {
			echo esc_attr( join( ' ', $classes ) );
		} else {
			return ( join( ' ', $classes ) );
		}
	}
}

/**
 * Astra get post thumbnail image.
 */
if ( ! function_exists( 'astra_get_post_thumbnail' ) ) {

	/**
	 * Astra get post thumbnail image
	 *
	 * @since 1.0.15
	 * @param string  $before Markup before thumbnail image.
	 * @param string  $after  Markup after thumbnail image.
	 * @param boolean $echo   Output print or return.
	 * @return string|void
	 */
	function astra_get_post_thumbnail( $before = '', $after = '', $echo = true ) {

		$output = '';

		$check_is_singular = is_singular();
		$check_is_archive  = ( is_archive() || is_search() || is_home() );

		$featured_image = true;
		$post_type      = strval( get_post_type() );

		if ( $check_is_singular ) {
			$is_featured_image = astra_get_option_meta( 'ast-featured-img' );
		} else {
			$is_featured_image = astra_get_option( 'ast-featured-img' );
		}

		$featured_image_size = 'large';
		if ( $check_is_archive ) {
			$featured_image_size = astra_get_option( 'blog-image-size', 'large' );
		}

		if ( 'disabled' === $is_featured_image ) {
			$featured_image = false;
		}

		$featured_image = apply_filters( 'astra_featured_image_enabled', $featured_image );

		$blog_post_thumb   = astra_get_option( 'blog-post-structure' );
		$single_post_thumb = astra_get_option( 'ast-dynamic-single-' . $post_type . '-structure', array( 'ast-dynamic-' . $post_type . '-post-title', 'ast-dynamic-' . $post_type . '-post-meta' ) );

		if ( ( ( ! $check_is_singular && in_array( 'image', $blog_post_thumb ) ) || ( $check_is_singular && in_array( 'ast-dynamic-single-' . $post_type . '-image', $single_post_thumb ) ) || is_page() ) && has_post_thumbnail() ) {

			if ( $featured_image && ( ! ( $check_is_singular ) || ( ! post_password_required() && ! is_attachment() && has_post_thumbnail() ) ) ) {

				$image_size = $check_is_singular ? astra_get_option( 'ast-dynamic-single-' . $post_type . '-article-featured-image-size', 'large' ) : $featured_image_size;
				$post_thumb = apply_filters(
					'astra_featured_image_markup',
					get_the_post_thumbnail(
						get_the_ID(),
						apply_filters( 'astra_post_thumbnail_default_size', $image_size ),
						apply_filters( 'astra_post_thumbnail_itemprop', '' )
					)
				);

				if ( '' != $post_thumb ) {
					$output .= '<div class="post-thumb-img-content post-thumb">';
					if ( ! $check_is_singular ) {
						$output .= apply_filters(
							'astra_blog_post_featured_image_link_before',
							'<a ' . astra_attr(
								'article-image-url',
								array(
									'class' => '',
									'href'  => esc_url( get_permalink() ),
								)
							) . ' >'
						);
					}
					$output .= $post_thumb;
					if ( ! $check_is_singular ) {
						$output .= apply_filters( 'astra_blog_post_featured_image_link_after', '</a>' );
					}
					$output .= '</div>';
				}
			}
		}

		if ( ! $check_is_singular ) {
			$output = apply_filters( 'astra_blog_post_featured_image_after', $output );
		}

		$output = apply_filters( 'astra_get_post_thumbnail', $output, $before, $after );

		if ( $echo ) {
			echo $before . $output . $after; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		} else {
			return $before . $output . $after;
		}
	}
}

/**
 * Function to check if it is Internet Explorer
 */
if ( ! function_exists( 'astra_replace_header_attr' ) ) :

	/**
	 * Replace header logo.
	 *
	 * @param array  $attr Image.
	 * @param object $attachment Image obj.
	 * @param sting  $size Size name.
	 *
	 * @return array Image attr.
	 */
	function astra_replace_header_attr( $attr, $attachment, $size ) {

		if ( ! isset( $attachment ) ) {
			return $attr;
		}

		$custom_logo_id     = get_theme_mod( 'custom_logo' );
		$is_logo_attachment = ( $custom_logo_id == $attachment->ID ) ? true : false;

		if ( apply_filters( 'astra_is_logo_attachment', $is_logo_attachment, $attachment ) ) {

			if ( ! is_customize_preview() ) {
				$attach_data = wp_get_attachment_image_src( $attachment->ID, 'ast-logo-size' );

				if ( isset( $attach_data[0] ) ) {
					$attr['src'] = $attach_data[0];
				}
			}

			$file_type      = wp_check_filetype( $attr['src'] );
			$file_extension = $file_type['ext'];

			if ( 'svg' == $file_extension ) {
				$existing_classes = isset( $attr['class'] ) ? $attr['class'] : '';
				$attr['class']    = $existing_classes . ' astra-logo-svg';
			}
			if ( 'gif' === $file_extension ) {
				$attr['srcset'] = $attachment->guid;
			}
		}

		if ( apply_filters( 'astra_is_retina_logo_attachment', $is_logo_attachment, $attachment ) ) {

			$diff_retina_logo = astra_get_option( 'different-retina-logo' );

			if ( '1' == $diff_retina_logo ) {

				$retina_logo = astra_get_option( 'ast-header-retina-logo' );

				$attr['srcset'] = '';

				if ( apply_filters( 'astra_main_header_retina', true ) && '' !== $retina_logo ) {
					$cutom_logo     = wp_get_attachment_image_src( $custom_logo_id, 'full' );
					$cutom_logo_url = $cutom_logo[0];

					if ( astra_check_is_ie() ) {
						// Replace header logo url to retina logo url.
						$attr['src'] = $retina_logo;
					}

					$attr['srcset'] = $cutom_logo_url . ' 1x, ' . $retina_logo . ' 2x';
				}
			}
		}

		return apply_filters( 'astra_replace_header_attr', $attr );
	}

endif;

add_filter( 'wp_get_attachment_image_attributes', 'astra_replace_header_attr', 10, 3 );

/**
 * Astra Color Palletes.
 */
if ( ! function_exists( 'astra_color_palette' ) ) :

	/**
	 * Astra Color Palletes.
	 *
	 * @return array Color Palletes.
	 */
	function astra_color_palette() {

		$color_palette = array(
			'#000000',
			'#ffffff',
			'#dd3333',
			'#dd9933',
			'#eeee22',
			'#81d742',
			'#1e73be',
			'#8224e3',
		);

		return apply_filters( 'astra_color_palettes', $color_palette );
	}

endif;

if ( ! function_exists( 'astra_get_theme_name' ) ) :

	/**
	 * Get theme name.
	 *
	 * @return string Theme Name.
	 */
	function astra_get_theme_name() {

		$theme_name = 'Astra';

		return apply_filters( 'astra_theme_name', $theme_name );
	}

endif;

if ( ! function_exists( 'astra_get_addon_name' ) ) :

	/**
	 * Get Addon name.
	 *
	 * @return string Addon Name.
	 */
	function astra_get_addon_name() {

		$pro_name = 'Astra Pro';
		// If addon is not updated & White Label added for Addon then show the updated addon name.
		if ( class_exists( 'Astra_Ext_White_Label_Markup' ) ) {

			$plugin_data = Astra_Ext_White_Label_Markup::$branding;

			if ( '' != $plugin_data['astra-pro']['name'] ) {
				$pro_name = $plugin_data['astra-pro']['name'];
			}
		}

		return apply_filters( 'astra_addon_name', $pro_name );
	}
endif;

/**
 * Added this filter to modify the post navigation template to remove the h2 tag from screen reader text.
 */
function astra_post_navigation_template() {

	$new_template = '
	        <nav class="navigation %1$s" aria-label="%4$s">
	                <span class="screen-reader-text">%2$s</span>
	                <div class="nav-links">%3$s</div>
	        </nav>';

	return $new_template;

}

add_filter( 'navigation_markup_template', 'astra_post_navigation_template' );

/**
 * Prevent onboarding of Elementor.
 *
 * @param bool $network_wide Whether to enable the plugin for all sites in the network
 *                            or just the current site. Multisite only. Default false.
 *
 * @since 3.9.0
 */
function astra_skip_elementor_onboarding( $network_wide ) {
	// Deleted transient & setting up onboaded flag true to skip steps.
	delete_transient( 'elementor_activation_redirect' );
	update_option( 'elementor_onboarded', true );
}

add_action( 'activate_elementor/elementor.php', 'astra_skip_elementor_onboarding' );


/**
 * BBPress & BuddyPress Multiple user profile compatibility issue.
 *
 * @param bool $value For checking this issue is still persist or not.
 *
 * @since 4.1.0
 */
function astra_bbpress_issue( $value ) {
	/** @psalm-suppress InvalidArgument */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
	/** @psalm-suppress UndefinedFunction  */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
	if ( class_exists( 'bbpress' ) && ( bbp_is_single_user() || bbp_is_search() || bbp_is_topic_tag() || is_bbpress() ) ) {
		/** @psalm-suppress UndefinedFunction  */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
		/** @psalm-suppress InvalidArgument */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
			return false;
	}

	// BuddyPress login page looping issue resolution
	if ( function_exists( 'buddypress' ) && is_buddypress() ) {
		/** @psalm-suppress UndefinedFunction  */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
		/** @psalm-suppress InvalidArgument */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
			return false;
	}

	return $value;
}

add_filter( 'astra_single_layout_one_banner_visibility', 'astra_bbpress_issue', 50 );

/**
 * Render Svg Mask for Header logo
 *
 * @since 4.2.2
 * @return void
 */
function astra_render_header_svg_mask() {

	$transparent_header_logo_color = astra_get_option( 'transparent-header-logo-color' );
	$header_logo_color             = astra_get_option( 'header-logo-color' );

	if ( $header_logo_color && 'unset' !== $header_logo_color ) {
		/** @psalm-suppress UndefinedFunction  */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
		astra_render_svg_mask( 'ast-img-color-filter', 'header_logo_svg_color', $header_logo_color );
	}

	if ( $transparent_header_logo_color && 'unset' !== $transparent_header_logo_color ) {
		/** @psalm-suppress UndefinedFunction  */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
		astra_render_svg_mask( 'ast-img-color-filter-2', 'header_logo_svg_color', $transparent_header_logo_color );
	}
}

add_action( 'wp_footer', 'astra_render_header_svg_mask' );

/**
 * Render Featured Image for single post at 'astra_entry_before' hook before post <article>
 *
 * @since 4.4.0
 */
function astra_single_post_entry_featured_image() {
	$post_type           = strval( get_post_type() );
	$featured_image_size = astra_get_option( 'ast-dynamic-single-' . $post_type . '-article-featured-image-size', 'large' );

	if ( apply_filters( 'astra_post_featured_image_condition', ( has_post_thumbnail() ) ) ) {
		do_action( 'astra_article_featured_image_before' );

		$output     = '';
		$post_thumb = apply_filters(
			'astra_article_featured_image_markup',
			get_the_post_thumbnail(
				/** @psalm-suppress InvalidArgument */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
				absint( astra_get_post_id() ),
				/** @psalm-suppress InvalidArgument */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
				apply_filters( 'astra_post_featured_image_default_size', $featured_image_size ),
				apply_filters( 'astra_post_featured_image_itemprop', '' )
			)
		);
		if ( '' != $post_thumb ) {
			$featured_image_width = 'layout-1' === astra_get_option( 'ast-dynamic-single-' . $post_type . '-layout', 'layout-1' ) ? astra_get_option( 'ast-dynamic-single-' . $post_type . '-article-featured-image-width-type', 'wide' ) : '';
			$output              .= '<div class="ast-single-post-featured-section post-thumb ast-article-image-container--' . esc_attr( $featured_image_width ) . '">';
			$output              .= $post_thumb;
			$output              .= '</div>';
		}

		$output = apply_filters( 'astra_featured_post_thumbnail', $output );
		echo wp_kses_post( $output );

		do_action( 'astra_article_featured_image_after' );
	}
}

/**
 * Prepare rendering Featured Image for single post at 'astra_header_after' hook after header.
 * Required on single post only.
 *
 * @since 4.4.0
 */
function astra_setup_article_featured_image() {
	if ( ! is_singular() ) {
		return;
	}

	$post_type = strval( get_post_type() );

	if ( ( 'disabled' === astra_get_option_meta( 'ast-featured-img' ) && Astra_Dynamic_CSS::astra_4_6_2_compatibility() ) || false === astra_get_option( 'ast-single-' . $post_type . '-title' ) ) {

		/**
		 * Bail early if featured image option "Show featured image in the posts lists only, but hide it in the single post view." is enabled.
		 *
		 * @since 4.6.2
		 */
		return;
	}

	$banner_title_layout = astra_get_option( 'ast-dynamic-single-' . $post_type . '-layout', 'layout-1' );
	$single_structure    = astra_get_option( 'ast-dynamic-single-' . $post_type . '-structure', astra_get_option( 'ast-dynamic-single-' . $post_type . '-structure', 'page' === $post_type ? array( 'ast-dynamic-single-' . $post_type . '-image', 'ast-dynamic-single-' . $post_type . '-title' ) : array( 'ast-dynamic-single-' . $post_type . '-title', 'ast-dynamic-single-' . $post_type . '-meta' ) ) );

	if ( ! in_array( 'ast-dynamic-single-' . $post_type . '-image', $single_structure ) ) {
		return;
	}

	if ( 'layout-1' === $banner_title_layout ) {
		$article_featured_image_position = astra_get_option( 'ast-dynamic-single-' . $post_type . '-article-featured-image-position-layout-1', 'behind' );
	} else {
		$article_featured_image_position = astra_get_option( 'ast-dynamic-single-' . $post_type . '-article-featured-image-position-layout-2', 'none' );
	}

	if ( 'none' !== $article_featured_image_position ) {
		add_action( 'astra_entry_before', 'astra_single_post_entry_featured_image' );
	}
}

add_action( 'astra_header_after', 'astra_setup_article_featured_image' );

/**
 * Add aria-expanded attribute to menu items that have submenus.
 *
 * @since 4.6.15
 * @param string $output The HTML output of the menu item.
 * @param object $item Menu item data object.
 * @param int    $depth Depth of the current menu item.
 * @param array  $args An array of arguments.
 *
 * @return string $output Menu item markup output.
 */
function astra_add_aria_expanded_submenu_items_attr( $output, $item, $depth, $args ) {
	$classes = empty( $item->classes ) ? array() : (array) $item->classes; // forming classes array if string.
	if ( in_array( 'menu-item-has-children', $classes ) ) {
		$output = str_replace( '<a', '<a aria-expanded="false"', $output );
	}
	return $output;
}

add_filter( 'walker_nav_menu_start_el', 'astra_add_aria_expanded_submenu_items_attr', 10, 4 );